Hi, Following my bug report yesterday about a bug in RI, I'll first show a reproducible example: create table t1 ( a int4 primary key, b varchar(5) ); create table t2 ( b varchar(5) primary key ); alter table t1 add constraint fk_t1__b foreign key (b) references t2 (b); insert into t2 values ( 'abc' ); insert into t2 values ( 'def' ); insert into t1 values ( 1, 'abc' ); -- This statement fails, which is correct insert into t1 values ( 2, 'xyz' ); insert into t1 values ( 3, 'def' ); -- Now, do the rename table alter table t2 rename to t3; -- This statement crashes the backend insert into t1 values ( 4, 'abc' ); With the attached patch for src/backend/utils/adt/ri_triggers.c, you'll get the following error message instead: ERROR: RI constraint fk_t1__b cannot find table t2 Of course, the long-time solution would be to update the pg_triggers table on alter table X rename to Y. However, I do not feel qualified to implement this. I have not executed all different elog()'s that I've added, but I feel confident they'll work. Please review my patch, Jeroen
This oversight (lack of check for heap_open failure) was already fixed
in another way for 7.1 --- heap_open itself always checks now.
regards, tom lane
At 10:58 22-9-00 -0400, Tom Lane wrote: >This oversight (lack of check for heap_open failure) was already fixed >in another way for 7.1 --- heap_open itself always checks now. Cool, I'll wait eagerly for 7.1 ;-) Jeroen
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера