Hi,

What's the difference between below two queue implementations?

  --
  -- With advisory locks.
  --
  BEGIN;
  SELECT pg_advisory_lock((SELECT oid
                             FROM pg_class
                            WHERE relname = 'queue'));
  DELETE FROM queue
        WHERE id = (SELECT MIN(id) FROM queue)
    RETURNING id, val;
  SELECT pg_advisory_unlock((SELECT oid
                               FROM pg_class
                              WHERE relname = 'queue'));
  COMMIT;
  
  --
  -- With LOCK table command.
  --
  BEGIN;
  LOCK TABLE queue;
  DELETE FROM queue
        WHERE id = (SELECT MIN(id) FROM queue)
    RETURNING id, val;
  COMMIT;

Any helps will be appreciated. (BTW, yep, I'm aware of PGQ module of
skyytools[1].)


Regards.

[1] http://skytools.projects.postgresql.org/

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

Reply via email to