1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-09 17:03:00 +03:00

tests: Restrict pg_locks queries in advisory_locks.sql to current database

Otherwise testing an existing installation can fail, if there are other locks,
e.g. from one of the isolation tests.

Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/20221003234111.4ob7yph6r4g4ywhu@awork3.anarazel.de
This commit is contained in:
Andres Freund
2022-10-05 10:44:38 -07:00
parent 6a20b04f04
commit c3315a7da5
2 changed files with 33 additions and 30 deletions

View File

@@ -1,6 +1,7 @@
-- --
-- ADVISORY LOCKS -- ADVISORY LOCKS
-- --
SELECT oid AS datoid FROM pg_database WHERE datname = current_database() \gset
BEGIN; BEGIN;
SELECT SELECT
pg_advisory_xact_lock(1), pg_advisory_xact_lock_shared(2), pg_advisory_xact_lock(1), pg_advisory_xact_lock_shared(2),
@@ -11,7 +12,7 @@ SELECT
(1 row) (1 row)
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -28,7 +29,7 @@ SELECT pg_advisory_unlock_all();
(1 row) (1 row)
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
count count
------- -------
4 4
@@ -49,7 +50,7 @@ WARNING: you don't own a lock of type ShareLock
-- automatically release xact locks at commit -- automatically release xact locks at commit
COMMIT; COMMIT;
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
count count
------- -------
0 0
@@ -66,7 +67,7 @@ SELECT
(1 row) (1 row)
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -86,7 +87,7 @@ SELECT
ROLLBACK; ROLLBACK;
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -111,7 +112,7 @@ WARNING: you don't own a lock of type ShareLock
t | f | t | f | t | f | t | f t | f | t | f | t | f | t | f
(1 row) (1 row)
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
count count
------- -------
0 0
@@ -128,7 +129,7 @@ SELECT
(1 row) (1 row)
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -148,7 +149,7 @@ SELECT
ROLLBACK; ROLLBACK;
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -165,7 +166,7 @@ SELECT pg_advisory_unlock_all();
(1 row) (1 row)
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
count count
------- -------
0 0
@@ -184,7 +185,7 @@ SELECT
(1 row) (1 row)
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -195,7 +196,7 @@ SELECT locktype, classid, objid, objsubid, mode, granted
(4 rows) (4 rows)
COMMIT; COMMIT;
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
count count
------- -------
0 0
@@ -213,7 +214,7 @@ SELECT
(1 row) (1 row)
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -233,7 +234,7 @@ SELECT
t | t | t | t | t | t | t | t t | t | t | t | t | t | t | t
(1 row) (1 row)
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
count count
------- -------
0 0
@@ -251,7 +252,7 @@ SELECT
(1 row) (1 row)
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
locktype | classid | objid | objsubid | mode | granted locktype | classid | objid | objsubid | mode | granted
----------+---------+-------+----------+---------------+--------- ----------+---------+-------+----------+---------------+---------
@@ -267,7 +268,7 @@ SELECT pg_advisory_unlock_all();
(1 row) (1 row)
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
count count
------- -------
0 0

View File

@@ -2,6 +2,8 @@
-- ADVISORY LOCKS -- ADVISORY LOCKS
-- --
SELECT oid AS datoid FROM pg_database WHERE datname = current_database() \gset
BEGIN; BEGIN;
SELECT SELECT
@@ -9,14 +11,14 @@ SELECT
pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2); pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2);
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
-- pg_advisory_unlock_all() shouldn't release xact locks -- pg_advisory_unlock_all() shouldn't release xact locks
SELECT pg_advisory_unlock_all(); SELECT pg_advisory_unlock_all();
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
-- can't unlock xact locks -- can't unlock xact locks
@@ -28,7 +30,7 @@ SELECT
-- automatically release xact locks at commit -- automatically release xact locks at commit
COMMIT; COMMIT;
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
BEGIN; BEGIN;
@@ -39,7 +41,7 @@ SELECT
pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2); pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2);
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
SELECT SELECT
@@ -49,7 +51,7 @@ SELECT
ROLLBACK; ROLLBACK;
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
@@ -60,7 +62,7 @@ SELECT
pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1),
pg_advisory_unlock_shared(2, 2), pg_advisory_unlock_shared(2, 2); pg_advisory_unlock_shared(2, 2), pg_advisory_unlock_shared(2, 2);
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
BEGIN; BEGIN;
@@ -71,7 +73,7 @@ SELECT
pg_advisory_lock(1, 1), pg_advisory_lock_shared(2, 2); pg_advisory_lock(1, 1), pg_advisory_lock_shared(2, 2);
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
SELECT SELECT
@@ -81,14 +83,14 @@ SELECT
ROLLBACK; ROLLBACK;
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
-- releasing all session locks -- releasing all session locks
SELECT pg_advisory_unlock_all(); SELECT pg_advisory_unlock_all();
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
BEGIN; BEGIN;
@@ -102,12 +104,12 @@ SELECT
pg_advisory_xact_lock_shared(2, 2), pg_advisory_xact_lock_shared(2, 2); pg_advisory_xact_lock_shared(2, 2), pg_advisory_xact_lock_shared(2, 2);
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
COMMIT; COMMIT;
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
-- grabbing session locks multiple times -- grabbing session locks multiple times
@@ -118,7 +120,7 @@ SELECT
pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2); pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2);
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
SELECT SELECT
@@ -127,7 +129,7 @@ SELECT
pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1),
pg_advisory_unlock_shared(2, 2), pg_advisory_unlock_shared(2, 2); pg_advisory_unlock_shared(2, 2), pg_advisory_unlock_shared(2, 2);
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
-- .. and releasing them all at once -- .. and releasing them all at once
@@ -138,9 +140,9 @@ SELECT
pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2); pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2);
SELECT locktype, classid, objid, objsubid, mode, granted SELECT locktype, classid, objid, objsubid, mode, granted
FROM pg_locks WHERE locktype = 'advisory' FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid
ORDER BY classid, objid, objsubid; ORDER BY classid, objid, objsubid;
SELECT pg_advisory_unlock_all(); SELECT pg_advisory_unlock_all();
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory'; SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;