mirror of
https://github.com/postgres/postgres.git
synced 2025-05-17 06:41:24 +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. This was originally applied as c3315a7da57b in 16~, but it is possible to see this test fail depending on the concurrent activity for older active branches. Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/20221003234111.4ob7yph6r4g4ywhu@awork3.anarazel.de Backpatch-through: 12
This commit is contained in:
parent
9db4598c9c
commit
f232d7c682
@ -1,6 +1,7 @@
|
||||
--
|
||||
-- ADVISORY LOCKS
|
||||
--
|
||||
SELECT oid AS datoid FROM pg_database WHERE datname = current_database() \gset
|
||||
BEGIN;
|
||||
SELECT
|
||||
pg_advisory_xact_lock(1), pg_advisory_xact_lock_shared(2),
|
||||
@ -11,7 +12,7 @@ SELECT
|
||||
(1 row)
|
||||
|
||||
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;
|
||||
locktype | classid | objid | objsubid | mode | granted
|
||||
----------+---------+-------+----------+---------------+---------
|
||||
@ -28,7 +29,7 @@ SELECT pg_advisory_unlock_all();
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
count
|
||||
-------
|
||||
4
|
||||
@ -49,7 +50,7 @@ WARNING: you don't own a lock of type ShareLock
|
||||
|
||||
-- automatically release xact locks at commit
|
||||
COMMIT;
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
count
|
||||
-------
|
||||
0
|
||||
@ -66,7 +67,7 @@ SELECT
|
||||
(1 row)
|
||||
|
||||
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;
|
||||
locktype | classid | objid | objsubid | mode | granted
|
||||
----------+---------+-------+----------+---------------+---------
|
||||
@ -86,7 +87,7 @@ SELECT
|
||||
|
||||
ROLLBACK;
|
||||
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;
|
||||
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
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
count
|
||||
-------
|
||||
0
|
||||
@ -128,7 +129,7 @@ SELECT
|
||||
(1 row)
|
||||
|
||||
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;
|
||||
locktype | classid | objid | objsubid | mode | granted
|
||||
----------+---------+-------+----------+---------------+---------
|
||||
@ -148,7 +149,7 @@ SELECT
|
||||
|
||||
ROLLBACK;
|
||||
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;
|
||||
locktype | classid | objid | objsubid | mode | granted
|
||||
----------+---------+-------+----------+---------------+---------
|
||||
@ -165,7 +166,7 @@ SELECT pg_advisory_unlock_all();
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
count
|
||||
-------
|
||||
0
|
||||
@ -184,7 +185,7 @@ SELECT
|
||||
(1 row)
|
||||
|
||||
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;
|
||||
locktype | classid | objid | objsubid | mode | granted
|
||||
----------+---------+-------+----------+---------------+---------
|
||||
@ -195,7 +196,7 @@ SELECT locktype, classid, objid, objsubid, mode, granted
|
||||
(4 rows)
|
||||
|
||||
COMMIT;
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
count
|
||||
-------
|
||||
0
|
||||
@ -213,7 +214,7 @@ SELECT
|
||||
(1 row)
|
||||
|
||||
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;
|
||||
locktype | classid | objid | objsubid | mode | granted
|
||||
----------+---------+-------+----------+---------------+---------
|
||||
@ -233,7 +234,7 @@ SELECT
|
||||
t | t | t | t | t | t | t | t
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
count
|
||||
-------
|
||||
0
|
||||
@ -251,7 +252,7 @@ SELECT
|
||||
(1 row)
|
||||
|
||||
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;
|
||||
locktype | classid | objid | objsubid | mode | granted
|
||||
----------+---------+-------+----------+---------------+---------
|
||||
@ -267,7 +268,7 @@ SELECT pg_advisory_unlock_all();
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
count
|
||||
-------
|
||||
0
|
||||
|
@ -2,6 +2,8 @@
|
||||
-- ADVISORY LOCKS
|
||||
--
|
||||
|
||||
SELECT oid AS datoid FROM pg_database WHERE datname = current_database() \gset
|
||||
|
||||
BEGIN;
|
||||
|
||||
SELECT
|
||||
@ -9,14 +11,14 @@ SELECT
|
||||
pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2);
|
||||
|
||||
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;
|
||||
|
||||
|
||||
-- pg_advisory_unlock_all() shouldn't release xact locks
|
||||
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
|
||||
@ -28,7 +30,7 @@ SELECT
|
||||
-- automatically release xact locks at commit
|
||||
COMMIT;
|
||||
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
|
||||
|
||||
BEGIN;
|
||||
@ -39,7 +41,7 @@ SELECT
|
||||
pg_advisory_xact_lock(1, 1), pg_advisory_xact_lock_shared(2, 2);
|
||||
|
||||
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;
|
||||
|
||||
SELECT
|
||||
@ -49,7 +51,7 @@ SELECT
|
||||
ROLLBACK;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
@ -60,7 +62,7 @@ SELECT
|
||||
pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1),
|
||||
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;
|
||||
@ -71,7 +73,7 @@ SELECT
|
||||
pg_advisory_lock(1, 1), pg_advisory_lock_shared(2, 2);
|
||||
|
||||
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;
|
||||
|
||||
SELECT
|
||||
@ -81,14 +83,14 @@ SELECT
|
||||
ROLLBACK;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
-- releasing all session locks
|
||||
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;
|
||||
@ -102,12 +104,12 @@ SELECT
|
||||
pg_advisory_xact_lock_shared(2, 2), pg_advisory_xact_lock_shared(2, 2);
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
|
||||
@ -118,7 +120,7 @@ SELECT
|
||||
pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2);
|
||||
|
||||
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;
|
||||
|
||||
SELECT
|
||||
@ -127,7 +129,7 @@ SELECT
|
||||
pg_advisory_unlock(1, 1), pg_advisory_unlock(1, 1),
|
||||
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
|
||||
|
||||
@ -138,9 +140,9 @@ SELECT
|
||||
pg_advisory_lock_shared(2, 2), pg_advisory_lock_shared(2, 2);
|
||||
|
||||
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;
|
||||
|
||||
SELECT pg_advisory_unlock_all();
|
||||
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory';
|
||||
SELECT count(*) FROM pg_locks WHERE locktype = 'advisory' AND database = :datoid;
|
||||
|
Loading…
x
Reference in New Issue
Block a user