From: | Andreas Joseph Krogh <andreas(at)visena(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Inconsistent behaviour calling pg_try_advisory_xact_lock with sub-query and when JOIN'ing |
Date: | 2015-08-07 17:27:46 |
Message-ID: | VisenaEmail.6.7024d6d4139fd6c4.14f0932cb5d@tc7-visena |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi all.
The following query returns and locks 1 row as expected (only one row in
pg_locks with locktype='advisory' and objid=sequence_id):
begin; select qe.entity_id, qe.version, qe.queue_id, qe.sequence_id, qe.tx_id
fromorigo_queue_entry qe WHERE qe.queue_id = (SELECT q.entity_id FROM
origo_queue qWHERE q.name = 'EMAIL_IMPORT_STORE') AND pg_try_advisory_xact_lock(
sequence_id) ORDER BY qe.sequence_id ASC LIMIT 1 FOR UPDATE ;
But when JOIN'ing with origo_queue instead of using a sub-query:
begin; select qe.entity_id, qe.version, qe.queue_id, qe.sequence_id, qe.tx_id
fromorigo_queue_entry qe JOIN origo_queue q ON q.entity_id = qe.queue_id WHERE
q.name = 'EMAIL_IMPORT_STORE' AND pg_try_advisory_xact_lock(sequence_id) ORDER
BYqe.sequence_id ASC LIMIT 1 FOR UPDATE ;
it returns 1 row, but locks all of them; pg_locks is now full af
advisory-locks for all "sequence_id" in origo_queue_entry
Is this by design?
Thanks.
-- Andreas Joseph Krogh
CTO / Partner - Visena AS
Mobile: +47 909 56 963
andreas(at)visena(dot)com <mailto:andreas(at)visena(dot)com>
www.visena.com <https://www.visena.com>
<https://www.visena.com>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2015-08-07 18:55:28 | Re: Inconsistent behaviour calling pg_try_advisory_xact_lock with sub-query and when JOIN'ing |
Previous Message | Alvaro Herrera | 2015-08-07 15:50:00 | Re: pg_start_backup: file has vanished from pg_subtrans/ |