diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out new file mode 100644 index 35541ce..14495ef *** a/src/test/regress/expected/rowsecurity.out --- b/src/test/regress/expected/rowsecurity.out *************** EXPLAIN (COSTS OFF) SELECT a, b, oid FRO *** 664,670 **** RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); ! NOTICE: f_leak => aaa NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd --- 664,670 ---- RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); ! NOTICE: f_leak => aba NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd *************** NOTICE: f_leak => yyy *** 677,683 **** NOTICE: f_leak => zzz a | b ---+----- ! 1 | aaa 2 | bbb 3 | ccc 4 | ddd --- 677,683 ---- NOTICE: f_leak => zzz a | b ---+----- ! 1 | aba 2 | bbb 3 | ccc 4 | ddd *************** EXPLAIN (COSTS OFF) SELECT * FROM t1 WHE *** 706,712 **** SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); ! NOTICE: f_leak => aaa NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd --- 706,712 ---- SET SESSION AUTHORIZATION regress_rls_exempt_user; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); ! NOTICE: f_leak => aba NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd *************** NOTICE: f_leak => yyy *** 719,725 **** NOTICE: f_leak => zzz a | b ---+----- ! 1 | aaa 2 | bbb 3 | ccc 4 | ddd --- 719,725 ---- NOTICE: f_leak => zzz a | b ---+----- ! 1 | aba 2 | bbb 3 | ccc 4 | ddd *************** EXPLAIN (COSTS OFF) EXECUTE p1(2); *** 952,958 **** RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); ! NOTICE: f_leak => aaa NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd --- 952,958 ---- RESET SESSION AUTHORIZATION; SET row_security TO OFF; SELECT * FROM t1 WHERE f_leak(b); ! NOTICE: f_leak => aba NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd *************** NOTICE: f_leak => yyy *** 965,971 **** NOTICE: f_leak => zzz a | b ---+----- ! 1 | aaa 2 | bbb 3 | ccc 4 | ddd --- 965,971 ---- NOTICE: f_leak => zzz a | b ---+----- ! 1 | aba 2 | bbb 3 | ccc 4 | ddd *************** EXPLAIN (COSTS OFF) SELECT * FROM t1 WHE *** 994,1000 **** EXECUTE p1(2); a | b ---+----- ! 1 | aaa 2 | bbb 1 | abc 2 | bcd --- 994,1000 ---- EXECUTE p1(2); a | b ---+----- ! 1 | aba 2 | bbb 1 | abc 2 | bcd *************** SET row_security TO OFF; *** 1345,1351 **** SELECT * FROM t1 ORDER BY a,b; a | b ---+------------- ! 1 | aaa 1 | abc 1 | xxx 2 | bbbbbb_updt --- 1345,1351 ---- SELECT * FROM t1 ORDER BY a,b; a | b ---+------------- ! 1 | aba 1 | abc 1 | xxx 2 | bbbbbb_updt *************** CREATE TABLE z2 (a int, b text); *** 1653,1659 **** GRANT SELECT ON z1,z2 TO regress_rls_group1, regress_rls_group2, regress_rls_bob, regress_rls_carol; INSERT INTO z1 VALUES ! (1, 'aaa'), (2, 'bbb'), (3, 'ccc'), (4, 'ddd'); --- 1653,1659 ---- GRANT SELECT ON z1,z2 TO regress_rls_group1, regress_rls_group2, regress_rls_bob, regress_rls_carol; INSERT INTO z1 VALUES ! (1, 'aba'), (2, 'bbb'), (3, 'ccc'), (4, 'ddd'); *************** EXPLAIN (COSTS OFF) EXECUTE plancache_te *** 1777,1787 **** SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM z1 WHERE f_leak(b); ! NOTICE: f_leak => aaa NOTICE: f_leak => ccc a | b ---+----- ! 1 | aaa 3 | ccc (2 rows) --- 1777,1787 ---- SET SESSION AUTHORIZATION regress_rls_carol; SELECT * FROM z1 WHERE f_leak(b); ! NOTICE: f_leak => aba NOTICE: f_leak => ccc a | b ---+----- ! 1 | aba 3 | ccc (2 rows) *************** EXPLAIN (COSTS OFF) EXECUTE plancache_te *** 1833,1843 **** SET ROLE regress_rls_group2; SELECT * FROM z1 WHERE f_leak(b); ! NOTICE: f_leak => aaa NOTICE: f_leak => ccc a | b ---+----- ! 1 | aaa 3 | ccc (2 rows) --- 1833,1843 ---- SET ROLE regress_rls_group2; SELECT * FROM z1 WHERE f_leak(b); ! NOTICE: f_leak => aba NOTICE: f_leak => ccc a | b ---+----- ! 1 | aba 3 | ccc (2 rows) *************** GRANT SELECT ON rls_view TO regress_rls_ *** 1897,1909 **** -- Query as role that is not owner of view or table. Should return all records. SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rls_view; ! NOTICE: f_leak => aaa NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd a | b ---+----- ! 1 | aaa 2 | bbb 3 | ccc 4 | ddd --- 1897,1909 ---- -- Query as role that is not owner of view or table. Should return all records. SET SESSION AUTHORIZATION regress_rls_bob; SELECT * FROM rls_view; ! NOTICE: f_leak => aba NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd a | b ---+----- ! 1 | aba 2 | bbb 3 | ccc 4 | ddd *************** EXPLAIN (COSTS OFF) SELECT * FROM rls_vi *** 1919,1931 **** -- Query as view/table owner. Should return all records. SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM rls_view; ! NOTICE: f_leak => aaa NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd a | b ---+----- ! 1 | aaa 2 | bbb 3 | ccc 4 | ddd --- 1919,1931 ---- -- Query as view/table owner. Should return all records. SET SESSION AUTHORIZATION regress_rls_alice; SELECT * FROM rls_view; ! NOTICE: f_leak => aba NOTICE: f_leak => bbb NOTICE: f_leak => ccc NOTICE: f_leak => ddd a | b ---+----- ! 1 | aba 2 | bbb 3 | ccc 4 | ddd diff --git a/src/test/regress/sql/rowsecurity.sql b/src/test/regress/sql/rowsecurity.sql new file mode 100644 index a142923..785ac84 *** a/src/test/regress/sql/rowsecurity.sql --- b/src/test/regress/sql/rowsecurity.sql *************** ALTER TABLE t1 DROP COLUMN junk1; -- *** 200,206 **** GRANT ALL ON t1 TO public; COPY t1 FROM stdin WITH (oids); ! 101 1 aaa 102 2 bbb 103 3 ccc 104 4 ddd --- 200,206 ---- GRANT ALL ON t1 TO public; COPY t1 FROM stdin WITH (oids); ! 101 1 aba 102 2 bbb 103 3 ccc 104 4 ddd *************** GRANT SELECT ON z1,z2 TO regress_rls_gro *** 635,641 **** regress_rls_bob, regress_rls_carol; INSERT INTO z1 VALUES ! (1, 'aaa'), (2, 'bbb'), (3, 'ccc'), (4, 'ddd'); --- 635,641 ---- regress_rls_bob, regress_rls_carol; INSERT INTO z1 VALUES ! (1, 'aba'), (2, 'bbb'), (3, 'ccc'), (4, 'ddd');