mirror of
https://github.com/postgres/postgres.git
synced 2025-05-05 09:19:17 +03:00
Stabilize query plans in rowsecurity regression test.
Some recent buildfarm failures can be explained by supposing that autovacuum or autoanalyze fired on the tables created by this test, resulting in plan changes. Do a proactive VACUUM ANALYZE on the test's principal tables to try to forestall such changes.
This commit is contained in:
parent
232cd63b1f
commit
5cdf25e168
@ -68,6 +68,8 @@ INSERT INTO document VALUES
|
|||||||
( 6, 22, 1, 'rls_regress_user2', 'great science fiction'),
|
( 6, 22, 1, 'rls_regress_user2', 'great science fiction'),
|
||||||
( 7, 33, 2, 'rls_regress_user2', 'great technology book'),
|
( 7, 33, 2, 'rls_regress_user2', 'great technology book'),
|
||||||
( 8, 44, 1, 'rls_regress_user2', 'great manga');
|
( 8, 44, 1, 'rls_regress_user2', 'great manga');
|
||||||
|
VACUUM ANALYZE category;
|
||||||
|
VACUUM ANALYZE document;
|
||||||
ALTER TABLE document ENABLE ROW LEVEL SECURITY;
|
ALTER TABLE document ENABLE ROW LEVEL SECURITY;
|
||||||
-- user's security level must be higher than or equal to document's
|
-- user's security level must be higher than or equal to document's
|
||||||
CREATE POLICY p1 ON document
|
CREATE POLICY p1 ON document
|
||||||
@ -184,20 +186,19 @@ EXPLAIN (COSTS OFF) SELECT * FROM document WHERE f_leak(dtitle);
|
|||||||
(7 rows)
|
(7 rows)
|
||||||
|
|
||||||
EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle);
|
EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dtitle);
|
||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Hash Join
|
Nested Loop
|
||||||
Hash Cond: (category.cid = document.cid)
|
Join Filter: (document.cid = category.cid)
|
||||||
|
-> Subquery Scan on document
|
||||||
|
Filter: f_leak(document.dtitle)
|
||||||
|
-> Seq Scan on document document_1
|
||||||
|
Filter: (dlevel <= $0)
|
||||||
|
InitPlan 1 (returns $0)
|
||||||
|
-> Index Scan using uaccount_pkey on uaccount
|
||||||
|
Index Cond: (pguser = "current_user"())
|
||||||
-> Seq Scan on category
|
-> Seq Scan on category
|
||||||
-> Hash
|
(10 rows)
|
||||||
-> Subquery Scan on document
|
|
||||||
Filter: f_leak(document.dtitle)
|
|
||||||
-> Seq Scan on document document_1
|
|
||||||
Filter: (dlevel <= $0)
|
|
||||||
InitPlan 1 (returns $0)
|
|
||||||
-> Index Scan using uaccount_pkey on uaccount
|
|
||||||
Index Cond: (pguser = "current_user"())
|
|
||||||
(11 rows)
|
|
||||||
|
|
||||||
-- only owner can change policies
|
-- only owner can change policies
|
||||||
ALTER POLICY p1 ON document USING (true); --fail
|
ALTER POLICY p1 ON document USING (true); --fail
|
||||||
@ -275,12 +276,12 @@ EXPLAIN (COSTS OFF) SELECT * FROM document NATURAL JOIN category WHERE f_leak(dt
|
|||||||
QUERY PLAN
|
QUERY PLAN
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
Nested Loop
|
Nested Loop
|
||||||
|
Join Filter: (document.cid = category.cid)
|
||||||
-> Subquery Scan on document
|
-> Subquery Scan on document
|
||||||
Filter: f_leak(document.dtitle)
|
Filter: f_leak(document.dtitle)
|
||||||
-> Seq Scan on document document_1
|
-> Seq Scan on document document_1
|
||||||
Filter: (dauthor = "current_user"())
|
Filter: (dauthor = "current_user"())
|
||||||
-> Index Scan using category_pkey on category
|
-> Seq Scan on category
|
||||||
Index Cond: (cid = document.cid)
|
|
||||||
(7 rows)
|
(7 rows)
|
||||||
|
|
||||||
-- interaction of FK/PK constraints
|
-- interaction of FK/PK constraints
|
||||||
@ -295,12 +296,12 @@ SET SESSION AUTHORIZATION rls_regress_user1;
|
|||||||
SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid;
|
SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid;
|
||||||
did | cid | dlevel | dauthor | dtitle | cid | cname
|
did | cid | dlevel | dauthor | dtitle | cid | cname
|
||||||
-----+-----+--------+-------------------+--------------------+-----+------------
|
-----+-----+--------+-------------------+--------------------+-----+------------
|
||||||
2 | 11 | 2 | rls_regress_user1 | my second novel | 11 | novel
|
|
||||||
1 | 11 | 1 | rls_regress_user1 | my first novel | 11 | novel
|
1 | 11 | 1 | rls_regress_user1 | my first novel | 11 | novel
|
||||||
| | | | | 33 | technology
|
2 | 11 | 2 | rls_regress_user1 | my second novel | 11 | novel
|
||||||
5 | 44 | 2 | rls_regress_user1 | my second manga | |
|
|
||||||
4 | 44 | 1 | rls_regress_user1 | my first manga | |
|
|
||||||
3 | 22 | 2 | rls_regress_user1 | my science fiction | |
|
3 | 22 | 2 | rls_regress_user1 | my science fiction | |
|
||||||
|
4 | 44 | 1 | rls_regress_user1 | my first manga | |
|
||||||
|
5 | 44 | 2 | rls_regress_user1 | my second manga | |
|
||||||
|
| | | | | 33 | technology
|
||||||
(6 rows)
|
(6 rows)
|
||||||
|
|
||||||
DELETE FROM category WHERE cid = 33; -- fails with FK violation
|
DELETE FROM category WHERE cid = 33; -- fails with FK violation
|
||||||
@ -312,8 +313,8 @@ SELECT * FROM document d FULL OUTER JOIN category c on d.cid = c.cid;
|
|||||||
did | cid | dlevel | dauthor | dtitle | cid | cname
|
did | cid | dlevel | dauthor | dtitle | cid | cname
|
||||||
-----+-----+--------+-------------------+-----------------------+-----+-----------------
|
-----+-----+--------+-------------------+-----------------------+-----+-----------------
|
||||||
6 | 22 | 1 | rls_regress_user2 | great science fiction | 22 | science fiction
|
6 | 22 | 1 | rls_regress_user2 | great science fiction | 22 | science fiction
|
||||||
8 | 44 | 1 | rls_regress_user2 | great manga | 44 | manga
|
|
||||||
7 | 33 | 2 | rls_regress_user2 | great technology book | |
|
7 | 33 | 2 | rls_regress_user2 | great technology book | |
|
||||||
|
8 | 44 | 1 | rls_regress_user2 | great manga | 44 | manga
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
INSERT INTO document VALUES (10, 33, 1, current_user, 'hoge');
|
INSERT INTO document VALUES (10, 33, 1, current_user, 'hoge');
|
||||||
|
@ -82,6 +82,9 @@ INSERT INTO document VALUES
|
|||||||
( 7, 33, 2, 'rls_regress_user2', 'great technology book'),
|
( 7, 33, 2, 'rls_regress_user2', 'great technology book'),
|
||||||
( 8, 44, 1, 'rls_regress_user2', 'great manga');
|
( 8, 44, 1, 'rls_regress_user2', 'great manga');
|
||||||
|
|
||||||
|
VACUUM ANALYZE category;
|
||||||
|
VACUUM ANALYZE document;
|
||||||
|
|
||||||
ALTER TABLE document ENABLE ROW LEVEL SECURITY;
|
ALTER TABLE document ENABLE ROW LEVEL SECURITY;
|
||||||
|
|
||||||
-- user's security level must be higher than or equal to document's
|
-- user's security level must be higher than or equal to document's
|
||||||
|
Loading…
x
Reference in New Issue
Block a user