Created
November 24, 2016 11:45
-
-
Save benjie/9d4f8df41ebf7a0fb78788c00c75561a to your computer and use it in GitHub Desktop.
Reproduce error in PG that "should not happen" https://github.com/postgres/postgres/blob/6fa391be4e83139cd134d5ccfc1499809bb8c98c/src/backend/commands/trigger.c#L4027-L4029
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
begin; | |
create table a(foo varchar not null primary key); | |
create table b(foo varchar not null primary key, constraint qux foreign key (foo) references a deferrable initially deferred); | |
create function bar() returns trigger as $$ | |
begin | |
if TG_OP = 'INSERT' then | |
insert into b(foo) values(new.foo); | |
elsif TG_OP = 'DELETE' then | |
delete from b where foo = old.foo; | |
end if; | |
return new; | |
end; | |
$$ language plpgsql; | |
create trigger bar after insert or delete on a for each row execute procedure bar(); | |
commit; | |
insert into a values('baz'); | |
begin; | |
delete from a where foo = 'baz'; | |
drop trigger bar on a; | |
drop function bar(); | |
alter table b drop constraint qux; | |
commit; |
Author
benjie
commented
Nov 24, 2016
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment