Advisory Locks and Prepared Transactions

Started by Stephen Reesalmost 14 years ago2 messagesgeneral
Jump to latest
#1Stephen Rees
srees@pandora.com

Code that works on Pg8.3 raises an error on Pg9.1, is this a bug?

PostgreSQL 8.3.7 on x86_64-unknown-linux-gnu, compiled by GCC
gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2
select pg_try_advisory_lock(123);
pg_try_advisory_lock
----------------------
t
(1 row)

postgres=# begin transaction;
BEGIN
postgres=# prepare transaction 'tran1';
PREPARE TRANSACTION
postgres=# commit prepared 'tran1';
COMMIT PREPARED

PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc-4.3.real
(Debian 4.3.2-1.1) 4.3.2, 64-bit
select pg_try_advisory_lock(123);
pg_try_advisory_lock
----------------------
t
(1 row)

postgres=# begin transaction;
BEGIN
postgres=# prepare transaction 'tran1';
ERROR: cannot PREPARE when session locks exist

- Steve

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Stephen Rees (#1)
Re: Advisory Locks and Prepared Transactions

[ sorry for slow response ]

Stephen Rees <srees@pandora.com> writes:

Code that works on Pg8.3 raises an error on Pg9.1, is this a bug?

Yes, it sure looks that way. Somebody decided they could mark userlocks
as transactional, which was probably a bad idea altogether, and
certainly wasn't followed up on adequately.

regards, tom lane