From: | Jeroen van Vianen <jeroen(dot)van(dot)vianen(at)satama(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Patch for Bug in RI |
Date: | 2000-09-22 11:08:17 |
Message-ID: | 4.3.2.7.2.20000922130516.00b1cd00@imap.satama.nl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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
Attachment | Content-Type | Size |
---|---|---|
ri_triggers.patch.gz | application/x-gzip | 379 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Karel Zak | 2000-09-22 12:38:42 | crash: SET DateStyle TO DEFAULT |
Previous Message | Jeroen van Vianen | 2000-09-22 08:08:12 | Re: Bug in RI |