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 andr...@visena.com <mailto:andr...@visena.com> www.visena.com <https://www.visena.com> <https://www.visena.com>