BUG #13269: "alter constraint child_parent deferrable initially deferred" sometimes does not make FK deferred

Started by Nonamealmost 11 years ago2 messagesbugs
Jump to latest
#1Noname
piotr.findeisen@gmail.com

The following bug has been logged on the website:

Bug reference: 13269
Logged by: Piotr Findeisen
Email address: piotr.findeisen@gmail.com
PostgreSQL version: 9.4.1
Operating system: Ubuntu 14.04.1
Description:

I experienced the problem in different configurations, originally using
JDBC. I managed to repro using just psql, but it may be a bit different
problem that originally experienced in my Java program.

Below follows SQL that in my opinion should fail at 'commit', i.e. after 6 s
sleep. However, when run with psql, it fails immediately, as if FK was not
made deferred.

----------------------------
create table parent (parent_id bigint primary key);

create table child (
child_id bigint primary key,
parent_id bigint constraint child_parent references parent (parent_id)
--deferrable initially deferred
);

insert into parent (parent_id) values (1);
insert into child (child_id, parent_id) values (2, 1);

alter table child alter constraint child_parent deferrable initially
deferred;

-- commit; -- helps in pgadmin

begin transaction;

delete from parent;

select pg_sleep(6);

commit;

----------------------------

Additional note: when I run the script with pgadmin, if tails immediately
too.
However, if I ad 'commit' after 'alter table', it fails after 6 s (as
expected). Strange, as "there is no transaction in progress" warning is
issued suggesting that commit did not change anything.

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: BUG #13269: "alter constraint child_parent deferrable initially deferred" sometimes does not make FK deferred

piotr.findeisen@gmail.com writes:

Below follows SQL that in my opinion should fail at 'commit', i.e. after 6 s
sleep. However, when run with psql, it fails immediately, as if FK was not
made deferred.

This example works for me in current sources. I think it's probably a
duplicate of bug #13224 which was fixed last week.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs