@ -2728,8 +2728,8 @@ COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ',';
-- Check COPY TO as user with permissions.
-- Check COPY TO as user with permissions.
SET SESSION AUTHORIZATION rls_regress_user1;
SET SESSION AUTHORIZATION rls_regress_user1;
SET row_security TO OFF;
SET row_security TO OFF;
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - insufficient to bypass rls
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - would be affected by RLS
ERROR: insufficient privilege to bypass row-level security
ERROR: query would be affected by row-level security policy for table "copy_t"
SET row_security TO ON;
SET row_security TO ON;
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --ok
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --ok
0,cfcd208495d565ef66e7dff9f98764da
0,cfcd208495d565ef66e7dff9f98764da
@ -2769,8 +2769,8 @@ COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --ok
-- Check COPY TO as user without permissions. SET row_security TO OFF;
-- Check COPY TO as user without permissions. SET row_security TO OFF;
SET SESSION AUTHORIZATION rls_regress_user2;
SET SESSION AUTHORIZATION rls_regress_user2;
SET row_security TO OFF;
SET row_security TO OFF;
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - insufficient to bypass rls
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - would be affected by RLS
ERROR: insufficient privilege to bypass row-level security
ERROR: query would be affected by row-level security policy for table "copy_t"
SET row_security TO ON;
SET row_security TO ON;
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - permission denied
COPY (SELECT * FROM copy_t ORDER BY a ASC) TO STDOUT WITH DELIMITER ','; --fail - permission denied
ERROR: permission denied for relation copy_t
ERROR: permission denied for relation copy_t
@ -2793,8 +2793,8 @@ COPY copy_rel_to TO STDOUT WITH DELIMITER ',';
-- Check COPY TO as user with permissions.
-- Check COPY TO as user with permissions.
SET SESSION AUTHORIZATION rls_regress_user1;
SET SESSION AUTHORIZATION rls_regress_user1;
SET row_security TO OFF;
SET row_security TO OFF;
COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --fail - insufficient to bypass rls
COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --fail - would be affected by RLS
ERROR: insufficient privilege to bypass row-level security
ERROR: query would be affected by row-level security policy for table "copy_rel_to"
SET row_security TO ON;
SET row_security TO ON;
COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --ok
COPY copy_rel_to TO STDOUT WITH DELIMITER ','; --ok
-- Check COPY TO as user with permissions and BYPASSRLS
-- Check COPY TO as user with permissions and BYPASSRLS
@ -2822,8 +2822,8 @@ COPY copy_t FROM STDIN; --ok
-- Check COPY FROM as user with permissions.
-- Check COPY FROM as user with permissions.
SET SESSION AUTHORIZATION rls_regress_user1;
SET SESSION AUTHORIZATION rls_regress_user1;
SET row_security TO OFF;
SET row_security TO OFF;
COPY copy_t FROM STDIN; --fail - insufficient privilege to bypass rls .
COPY copy_t FROM STDIN; --fail - would be affected by RLS .
ERROR: insufficient privilege to bypass row-level security
ERROR: query would be affected by row-level security policy for table "copy_t"
SET row_security TO ON;
SET row_security TO ON;
COPY copy_t FROM STDIN; --fail - COPY FROM not supported by RLS.
COPY copy_t FROM STDIN; --fail - COPY FROM not supported by RLS.
ERROR: COPY FROM not supported with row-level security
ERROR: COPY FROM not supported with row-level security
@ -3181,8 +3181,7 @@ SET SESSION AUTHORIZATION rls_regress_user0;
DROP TABLE r1;
DROP TABLE r1;
DROP TABLE r2;
DROP TABLE r2;
--
--
-- FORCE ROW LEVEL SECURITY applies RLS to owners but
-- FORCE ROW LEVEL SECURITY applies RLS to owners too
-- only when row_security = on
--
--
SET SESSION AUTHORIZATION rls_regress_user0;
SET SESSION AUTHORIZATION rls_regress_user0;
SET row_security = on;
SET row_security = on;
@ -3215,30 +3214,16 @@ TABLE r1;
(0 rows)
(0 rows)
SET row_security = off;
SET row_security = off;
-- Shows all rows
-- these all fail, would be affected by RLS
TABLE r1;
TABLE r1;
a
ERROR: query would be affected by row-level security policy for table "r1"
----
HINT: To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW LEVEL SECURITY.
10
20
(2 rows)
-- Update all rows
UPDATE r1 SET a = 1;
UPDATE r1 SET a = 1;
TABLE r1;
ERROR: query would be affected by row-level security policy for table "r1"
a
HINT: To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW LEVEL SECURITY.
---
1
1
(2 rows)
-- Delete all rows
DELETE FROM r1;
DELETE FROM r1;
TABLE r1;
ERROR: query would be affected by row-level security policy for table "r1"
a
HINT: To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW LEVEL SECURITY.
---
(0 rows)
DROP TABLE r1;
DROP TABLE r1;
--
--
-- FORCE ROW LEVEL SECURITY does not break RI
-- FORCE ROW LEVEL SECURITY does not break RI
@ -3349,14 +3334,10 @@ TABLE r1;
(0 rows)
(0 rows)
SET row_security = off;
SET row_security = off;
-- Rows shown now
-- fail, would be affected by RLS
TABLE r1;
TABLE r1;
a
ERROR: query would be affected by row-level security policy for table "r1"
----
HINT: To disable the policy for the table's owner, use ALTER TABLE NO FORCE ROW LEVEL SECURITY.
10
20
(2 rows)
SET row_security = on;
SET row_security = on;
-- Error
-- Error
INSERT INTO r1 VALUES (10), (20) RETURNING *;
INSERT INTO r1 VALUES (10), (20) RETURNING *;
@ -3377,7 +3358,7 @@ ALTER TABLE r1 FORCE ROW LEVEL SECURITY;
-- Works fine
-- Works fine
UPDATE r1 SET a = 30;
UPDATE r1 SET a = 30;
-- Show updated rows
-- Show updated rows
SET row_security = off ;
ALTER TABLE r1 NO FORCE ROW LEVEL SECURITY ;
TABLE r1;
TABLE r1;
a
a
----
----
@ -3393,7 +3374,7 @@ TABLE r1;
10
10
(1 row)
(1 row)
SET row_security = on ;
ALTER TABLE r1 FORCE ROW LEVEL SECURITY ;
-- Error
-- Error
UPDATE r1 SET a = 30 RETURNING *;
UPDATE r1 SET a = 30 RETURNING *;
ERROR: new row violates row-level security policy for table "r1"
ERROR: new row violates row-level security policy for table "r1"