Обсуждение: Bug with CREATE CONSRAINT TRIGGER and attisdropped

Поиск
Список
Период
Сортировка

Bug with CREATE CONSRAINT TRIGGER and attisdropped

От
"Christopher Kings-Lynne"
Дата:
CREATE CONSTRAINT TRIGGER doesn't respect attisdropped.  Unfortunately I
really don't have the time to submit a patch at the moment - sorry :(

ctest=# create table master (x int unique, y int4 unique);
NOTICE:  CREATE TABLE / UNIQUE will create implicit index 'master_x_key' for
table 'master'
NOTICE:  CREATE TABLE / UNIQUE will create implicit index 'master_y_key' for
table 'master'
CREATE TABLE
test=# create table slave (a int);
CREATE TABLE
test=# alter table master drop x;
ALTER TABLE
test=# create constraint trigger "$1" after insert or update on "slave" from
master not deferrable initially immediate for each row execute procedure
"RI_FKey_check_ins" ('$1', 'slave', 'master', 'UNSPECIFIED', 'a', 'x');
CREATE TRIGGER
test=# insert into master values (1);
INSERT 16982 1
test=# insert into slave values (2);
ERROR:  constraint $1: table master does not have an attribute x

Chris



Re: Bug with CREATE CONSRAINT TRIGGER and attisdropped

От
Tom Lane
Дата:
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
> CREATE CONSTRAINT TRIGGER doesn't respect attisdropped.  Unfortunately I
> really don't have the time to submit a patch at the moment - sorry :(

> test=# create constraint trigger "$1" after insert or update on "slave" from
> master not deferrable initially immediate for each row execute procedure
> "RI_FKey_check_ins" ('$1', 'slave', 'master', 'UNSPECIFIED', 'a', 'x');

I'm not sure this is a bug.  For CREATE CONSTRAINT TRIGGER to complain
at trigger creation time, you'd have to make it assume that it
understood the contents of the parameters passed to the trigger.
That seems like a bad idea; I'm willing to settle for run-time
detection instead.
        regards, tom lane