diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/rowsecurity.out | 18 | ||||
-rw-r--r-- | src/test/regress/expected/rowtypes.out | 20 | ||||
-rw-r--r-- | src/test/regress/expected/subselect.out | 24 | ||||
-rw-r--r-- | src/test/regress/expected/updatable_views.out | 32 | ||||
-rw-r--r-- | src/test/regress/sql/rangefuncs.sql | 4 |
5 files changed, 66 insertions, 32 deletions
diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out index 6a6492f3fb..2a40b072ab 100644 --- a/src/test/regress/expected/rowsecurity.out +++ b/src/test/regress/expected/rowsecurity.out @@ -1275,9 +1275,7 @@ CREATE VIEW rec1v AS SELECT * FROM rec1; CREATE VIEW rec2v AS SELECT * FROM rec2; SET SESSION AUTHORIZATION regress_rls_alice; ALTER POLICY r1 ON rec1 USING (x = (SELECT a FROM rec2v WHERE b = y)); -ERROR: relation "rec2v" does not exist ALTER POLICY r2 ON rec2 USING (a = (SELECT x FROM rec1v WHERE y = b)); -ERROR: relation "rec1v" does not exist SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rec1; -- fail, mutual recursion via views ERROR: infinite recursion detected in policy for relation "rec1" @@ -1287,14 +1285,13 @@ ERROR: infinite recursion detected in policy for relation "rec1" SET SESSION AUTHORIZATION regress_rls_bob; \set VERBOSITY terse \\ -- suppress cascade details DROP VIEW rec1v, rec2v CASCADE; +NOTICE: drop cascades to 2 other objects \set VERBOSITY default CREATE VIEW rec1v WITH (security_barrier) AS SELECT * FROM rec1; CREATE VIEW rec2v WITH (security_barrier) AS SELECT * FROM rec2; SET SESSION AUTHORIZATION regress_rls_alice; CREATE POLICY r1 ON rec1 USING (x = (SELECT a FROM rec2v WHERE b = y)); -ERROR: policy "r1" for table "rec1" already exists CREATE POLICY r2 ON rec2 USING (a = (SELECT x FROM rec1v WHERE y = b)); -ERROR: policy "r2" for table "rec2" already exists SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rec1; -- fail, mutual recursion via s.b. views ERROR: infinite recursion detected in policy for relation "rec1" @@ -1343,13 +1340,12 @@ EXPLAIN (COSTS OFF) SELECT * FROM only s1 WHERE f_leak(b); SET SESSION AUTHORIZATION regress_rls_alice; ALTER POLICY p1 ON s1 USING (a in (select x from v2)); -- using VIEW in RLS policy -ERROR: relation "v2" does not exist SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM s1 WHERE f_leak(b); -- OK - a | b ----+---------------------------------- - 2 | c81e728d9d4c2f636f067f89cc14862c - 4 | a87ff679a2f3e71d9181a67b7542122c + a | b +----+---------------------------------- + -4 | 0267aaf632e87a63288a08331f22c7c3 + 6 | 1679091c5a880faf6fb5e6087eb1b2dc (2 rows) EXPLAIN (COSTS OFF) SELECT * FROM s1 WHERE f_leak(b); @@ -1361,7 +1357,7 @@ EXPLAIN (COSTS OFF) SELECT * FROM s1 WHERE f_leak(b); SubPlan 1 -> Remote Subquery Scan on all (datanode_1,datanode_2) -> Seq Scan on s2 - Filter: (((x % 2) = 0) AND (y ~~ '%2f%'::text)) + Filter: (((x % 2) = 0) AND (y ~~ '%af%'::text)) (7 rows) SELECT (SELECT x FROM s1 LIMIT 1) xx, * FROM s2 WHERE y like '%28%'; @@ -1387,7 +1383,7 @@ EXPLAIN (COSTS OFF) SELECT (SELECT x FROM s1 LIMIT 1) xx, * FROM s2 WHERE y like SubPlan 1 -> Remote Subquery Scan on all (datanode_1,datanode_2) -> Seq Scan on s2 s2_1 - Filter: (((x % 2) = 0) AND (y ~~ '%2f%'::text)) + Filter: (((x % 2) = 0) AND (y ~~ '%af%'::text)) (13 rows) SET SESSION AUTHORIZATION regress_rls_alice; diff --git a/src/test/regress/expected/rowtypes.out b/src/test/regress/expected/rowtypes.out index 635039fac9..86df2bcc2d 100644 --- a/src/test/regress/expected/rowtypes.out +++ b/src/test/regress/expected/rowtypes.out @@ -525,9 +525,25 @@ select row_to_json(i) from int8_tbl i(x,y); create temp view vv1 as select * from int8_tbl; select row_to_json(i) from vv1 i; -ERROR: cache lookup failed for type 0 + row_to_json +------------------------------------------------ + {"q1":123,"q2":456} + {"q1":123,"q2":4567890123456789} + {"q1":4567890123456789,"q2":123} + {"q1":4567890123456789,"q2":4567890123456789} + {"q1":4567890123456789,"q2":-4567890123456789} +(5 rows) + select row_to_json(i) from vv1 i(x,y); -ERROR: cache lookup failed for type 0 + row_to_json +---------------------------------------------- + {"x":123,"y":456} + {"x":123,"y":4567890123456789} + {"x":4567890123456789,"y":123} + {"x":4567890123456789,"y":4567890123456789} + {"x":4567890123456789,"y":-4567890123456789} +(5 rows) + select row_to_json(ss) from (select q1, q2 from int8_tbl) as ss; row_to_json diff --git a/src/test/regress/expected/subselect.out b/src/test/regress/expected/subselect.out index c355f10c4c..a5d78d029d 100644 --- a/src/test/regress/expected/subselect.out +++ b/src/test/regress/expected/subselect.out @@ -650,13 +650,29 @@ create temp table table_a(id integer); insert into table_a values (42); create temp view view_a as select * from table_a; select view_a from view_a; -ERROR: cache lookup failed for type 0 + view_a +-------- + (42) +(1 row) + select (select view_a) from view_a; -ERROR: cache lookup failed for type 0 + view_a +-------- + (42) +(1 row) + select (select (select view_a)) from view_a; -ERROR: cache lookup failed for type 0 + view_a +-------- + (42) +(1 row) + select (select (a.*)::text) from view_a a; -ERROR: cache lookup failed for type 0 + a +------ + (42) +(1 row) + -- -- Check that whole-row Vars reading the result of a subselect don't include -- any junk columns therein diff --git a/src/test/regress/expected/updatable_views.out b/src/test/regress/expected/updatable_views.out index 647d8cf3f7..b9a54376ac 100644 --- a/src/test/regress/expected/updatable_views.out +++ b/src/test/regress/expected/updatable_views.out @@ -911,32 +911,38 @@ INSERT INTO base_tbl SELECT i, 'Row ' || i FROM generate_series(-2, 2) g(i); CREATE VIEW rw_view1 AS SELECT b AS bb, a AS aa FROM base_tbl; CREATE FUNCTION rw_view1_aa(x rw_view1) RETURNS int AS $$ SELECT x.aa $$ LANGUAGE sql; -ERROR: type rw_view1 does not exist UPDATE rw_view1 v SET bb='Updated row 2' WHERE rw_view1_aa(v)=2 RETURNING rw_view1_aa(v), v.bb; -ERROR: function rw_view1_aa(rw_view1) does not exist -LINE 1: UPDATE rw_view1 v SET bb='Updated row 2' WHERE rw_view1_aa(v... - ^ -HINT: No function matches the given name and argument types. You might need to add explicit type casts. + rw_view1_aa | bb +-------------+--------------- + 2 | Updated row 2 +(1 row) + SELECT * FROM base_tbl; - a | b -----+-------- + a | b +----+--------------- -2 | Row -2 -1 | Row -1 0 | Row 0 1 | Row 1 - 2 | Row 2 + 2 | Updated row 2 (5 rows) EXPLAIN (costs off, nodes off) UPDATE rw_view1 v SET bb='Updated row 2' WHERE rw_view1_aa(v)=2 RETURNING rw_view1_aa(v), v.bb; -ERROR: function rw_view1_aa(rw_view1) does not exist -LINE 2: UPDATE rw_view1 v SET bb='Updated row 2' WHERE rw_view1_aa(v... - ^ -HINT: No function matches the given name and argument types. You might need to add explicit type casts. + QUERY PLAN +-------------------------------------------------------- + Remote Subquery Scan on any + -> Update on base_tbl + -> Index Scan using base_tbl_pkey on base_tbl + Index Cond: (a = 2) +(4 rows) + DROP TABLE base_tbl CASCADE; -NOTICE: drop cascades to view rw_view1 +NOTICE: drop cascades to 2 other objects +DETAIL: drop cascades to view rw_view1 +drop cascades to function rw_view1_aa(rw_view1) -- permissions checks CREATE USER regress_view_user1; CREATE USER regress_view_user2; diff --git a/src/test/regress/sql/rangefuncs.sql b/src/test/regress/sql/rangefuncs.sql index e309f4f838..4e30a02fa0 100644 --- a/src/test/regress/sql/rangefuncs.sql +++ b/src/test/regress/sql/rangefuncs.sql @@ -228,8 +228,8 @@ DROP TABLE foo2; DROP TABLE foo; -- Rescan tests -- -CREATE TEMPORARY SEQUENCE foo_rescan_seq1; -CREATE TEMPORARY SEQUENCE foo_rescan_seq2; +CREATE SEQUENCE foo_rescan_seq1; +CREATE SEQUENCE foo_rescan_seq2; CREATE TYPE foo_rescan_t AS (i integer, s bigint); CREATE FUNCTION foo_sql(int,int) RETURNS setof foo_rescan_t AS 'SELECT i, nextval(''foo_rescan_seq1'') FROM generate_series($1,$2) i;' LANGUAGE SQL; |