diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/modules/test_rls_hooks/expected/test_rls_hooks.out | 24 | ||||
-rw-r--r-- | src/test/regress/expected/jsonb.out | 6 | ||||
-rw-r--r-- | src/test/regress/expected/matview.out | 2 | ||||
-rw-r--r-- | src/test/regress/expected/rowsecurity.out | 40 | ||||
-rw-r--r-- | src/test/regress/expected/updatable_views.out | 42 |
5 files changed, 57 insertions, 57 deletions
diff --git a/src/test/modules/test_rls_hooks/expected/test_rls_hooks.out b/src/test/modules/test_rls_hooks/expected/test_rls_hooks.out index 88854641be5..159b6043f0a 100644 --- a/src/test/modules/test_rls_hooks/expected/test_rls_hooks.out +++ b/src/test/modules/test_rls_hooks/expected/test_rls_hooks.out @@ -62,7 +62,7 @@ SELECT * FROM rls_test_permissive; INSERT INTO rls_test_permissive VALUES ('r1','s1',10); -- failure INSERT INTO rls_test_permissive VALUES ('r4','s4',10); -ERROR: new row violates row level security policy for "rls_test_permissive" +ERROR: new row violates row-level security policy for table "rls_test_permissive" SET ROLE s1; -- With only the hook's policies, restrictive -- hook's policy is current_user = supervisor @@ -83,7 +83,7 @@ SELECT * FROM rls_test_restrictive; INSERT INTO rls_test_restrictive VALUES ('r1','s1',10); -- failure INSERT INTO rls_test_restrictive VALUES ('r4','s4',10); -ERROR: new row violates row level security policy "extension policy" for "rls_test_restrictive" +ERROR: new row violates row-level security policy "extension policy" for table "rls_test_restrictive" SET ROLE s1; -- With only the hook's policies, both -- permissive hook's policy is current_user = username @@ -103,13 +103,13 @@ SELECT * FROM rls_test_both; -- failure INSERT INTO rls_test_both VALUES ('r1','s1',10); -ERROR: new row violates row level security policy for "rls_test_both" +ERROR: new row violates row-level security policy for table "rls_test_both" -- failure INSERT INTO rls_test_both VALUES ('r4','s1',10); -ERROR: new row violates row level security policy for "rls_test_both" +ERROR: new row violates row-level security policy for table "rls_test_both" -- failure INSERT INTO rls_test_both VALUES ('r4','s4',10); -ERROR: new row violates row level security policy for "rls_test_both" +ERROR: new row violates row-level security policy for table "rls_test_both" RESET ROLE; -- Create "internal" policies, to check that the policies from -- the hooks are combined correctly. @@ -141,7 +141,7 @@ INSERT INTO rls_test_permissive VALUES ('r1','s1',7); INSERT INTO rls_test_permissive VALUES ('r3','s3',10); -- failure INSERT INTO rls_test_permissive VALUES ('r4','s4',7); -ERROR: new row violates row level security policy for "rls_test_permissive" +ERROR: new row violates row-level security policy for table "rls_test_permissive" SET ROLE s1; -- With both internal and hook policies, restrictive EXPLAIN (costs off) SELECT * FROM rls_test_restrictive; @@ -163,13 +163,13 @@ SELECT * FROM rls_test_restrictive; INSERT INTO rls_test_restrictive VALUES ('r1','s1',8); -- failure INSERT INTO rls_test_restrictive VALUES ('r3','s3',10); -ERROR: new row violates row level security policy "extension policy" for "rls_test_restrictive" +ERROR: new row violates row-level security policy "extension policy" for table "rls_test_restrictive" -- failure INSERT INTO rls_test_restrictive VALUES ('r1','s1',7); -ERROR: new row violates row level security policy for "rls_test_restrictive" +ERROR: new row violates row-level security policy for table "rls_test_restrictive" -- failure INSERT INTO rls_test_restrictive VALUES ('r4','s4',7); -ERROR: new row violates row level security policy for "rls_test_restrictive" +ERROR: new row violates row-level security policy for table "rls_test_restrictive" -- With both internal and hook policies, both permissive -- and restrictive hook policies EXPLAIN (costs off) SELECT * FROM rls_test_both; @@ -190,13 +190,13 @@ SELECT * FROM rls_test_both; INSERT INTO rls_test_both VALUES ('r1','s1',8); -- failure INSERT INTO rls_test_both VALUES ('r3','s3',10); -ERROR: new row violates row level security policy "extension policy" for "rls_test_both" +ERROR: new row violates row-level security policy "extension policy" for table "rls_test_both" -- failure INSERT INTO rls_test_both VALUES ('r1','s1',7); -ERROR: new row violates row level security policy for "rls_test_both" +ERROR: new row violates row-level security policy for table "rls_test_both" -- failure INSERT INTO rls_test_both VALUES ('r4','s4',7); -ERROR: new row violates row level security policy for "rls_test_both" +ERROR: new row violates row-level security policy for table "rls_test_both" RESET ROLE; DROP TABLE rls_test_restrictive; DROP TABLE rls_test_permissive; diff --git a/src/test/regress/expected/jsonb.out b/src/test/regress/expected/jsonb.out index bd06a0e49a8..58c2ab02736 100644 --- a/src/test/regress/expected/jsonb.out +++ b/src/test/regress/expected/jsonb.out @@ -1375,11 +1375,11 @@ SELECT jsonb_build_object(1,2); SELECT jsonb_build_object(null,2); ERROR: arg 1: key cannot be null SELECT jsonb_build_object(r,2) FROM (SELECT 1 AS a, 2 AS b) r; -ERROR: key value must be scalar, not array, composite or json +ERROR: key value must be scalar, not array, composite, or json SELECT jsonb_build_object(json '{"a":1,"b":2}', 3); -ERROR: key value must be scalar, not array, composite or json +ERROR: key value must be scalar, not array, composite, or json SELECT jsonb_build_object('{1,2,3}'::int[], 3); -ERROR: key value must be scalar, not array, composite or json +ERROR: key value must be scalar, not array, composite, or json -- handling of NULL values SELECT jsonb_object_agg(1, NULL::jsonb); jsonb_object_agg diff --git a/src/test/regress/expected/matview.out b/src/test/regress/expected/matview.out index eb13ea75fb0..91c0957f0c3 100644 --- a/src/test/regress/expected/matview.out +++ b/src/test/regress/expected/matview.out @@ -411,7 +411,7 @@ REFRESH MATERIALIZED VIEW mv; ERROR: could not create unique index "mv_a_idx" DETAIL: Key (a)=(1) is duplicated. REFRESH MATERIALIZED VIEW CONCURRENTLY mv; -ERROR: new data for "mv" contains duplicate rows without any null columns +ERROR: new data for materialized view "mv" contains duplicate rows without any null columns DETAIL: Row: (1,10) DROP TABLE foo CASCADE; NOTICE: drop cascades to materialized view mv diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out index c8444999e13..1d8609f3527 100644 --- a/src/test/regress/expected/rowsecurity.out +++ b/src/test/regress/expected/rowsecurity.out @@ -330,9 +330,9 @@ SELECT * FROM document WHERE did = 8; -- and confirm we can't see it -- RLS policies are checked before constraints INSERT INTO document VALUES (8, 44, 1, 'rls_regress_user2', 'my third manga'); -- Should fail with RLS check violation, not duplicate key violation -ERROR: new row violates row level security policy for "document" +ERROR: new row violates row-level security policy for table "document" UPDATE document SET did = 8, dauthor = 'rls_regress_user2' WHERE did = 5; -- Should fail with RLS check violation, not duplicate key violation -ERROR: new row violates row level security policy for "document" +ERROR: new row violates row-level security policy for table "document" -- database superuser does bypass RLS policy when enabled RESET SESSION AUTHORIZATION; SET row_security TO ON; @@ -1453,9 +1453,9 @@ NOTICE: f_leak => d3d9446802a44259755d38e6d163e820 (5 rows) INSERT INTO bv1 VALUES (-1, 'xxx'); -- should fail view WCO -ERROR: new row violates row level security policy for "b1" +ERROR: new row violates row-level security policy for table "b1" INSERT INTO bv1 VALUES (11, 'xxx'); -- should fail RLS check -ERROR: new row violates row level security policy for "b1" +ERROR: new row violates row-level security policy for table "b1" INSERT INTO bv1 VALUES (12, 'xxx'); -- ok EXPLAIN (COSTS OFF) UPDATE bv1 SET b = 'yyy' WHERE a = 4 AND f_leak(b); QUERY PLAN @@ -1534,7 +1534,7 @@ SELECT * FROM document WHERE did = 2; -- alternative UPDATE path happens to be taken): INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'novel'), 1, 'rls_regress_user2', 'my first novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, dauthor = EXCLUDED.dauthor; -ERROR: new row violates row level security policy for "document" +ERROR: new row violates row-level security policy for table "document" -- Violates USING qual for UPDATE policy p3. -- -- UPDATE path is taken, but UPDATE fails purely because *existing* row to be @@ -1543,7 +1543,7 @@ ERROR: new row violates row level security policy for "document" INSERT INTO document VALUES (33, 22, 1, 'rls_regress_user1', 'okay science fiction'); -- preparation for next statement INSERT INTO document VALUES (33, (SELECT cid from category WHERE cname = 'novel'), 1, 'rls_regress_user1', 'Some novel, replaces sci-fi') -- takes UPDATE path ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle; -ERROR: new row violates row level security policy (USING expression) for "document" +ERROR: new row violates row-level security policy (USING expression) for table "document" -- Fine (we UPDATE, since INSERT WCOs and UPDATE security barrier quals + WCOs -- not violated): INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'novel'), 1, 'rls_regress_user1', 'my first novel') @@ -1574,7 +1574,7 @@ INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel' -- passing quals: INSERT INTO document VALUES (78, (SELECT cid from category WHERE cname = 'novel'), 1, 'rls_regress_user1', 'some technology novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33 RETURNING *; -ERROR: new row violates row level security policy (USING expression) for "document" +ERROR: new row violates row-level security policy (USING expression) for table "document" -- Don't fail just because INSERT doesn't satisfy WITH CHECK option that -- originated as a barrier/USING() qual from the UPDATE. Note that the UPDATE -- path *isn't* taken, and so UPDATE-related policy does not apply: @@ -1591,7 +1591,7 @@ INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'techno -- irrelevant, in fact. INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'rls_regress_user1', 'technology book, can only insert') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *; -ERROR: new row violates row level security policy (USING expression) for "document" +ERROR: new row violates row-level security policy (USING expression) for table "document" -- Test default USING qual enforced as WCO SET SESSION AUTHORIZATION rls_regress_user0; DROP POLICY p1 ON document; @@ -1613,14 +1613,14 @@ SET SESSION AUTHORIZATION rls_regress_user1; -- UPDATE to make this fail: INSERT INTO document VALUES (79, (SELECT cid from category WHERE cname = 'technology'), 1, 'rls_regress_user1', 'technology book, can only insert') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle RETURNING *; -ERROR: new row violates row level security policy for "document" +ERROR: new row violates row-level security policy for table "document" -- UPDATE path is taken here. Existing tuple passes, since it's cid -- corresponds to "novel", but default USING qual is enforced against -- post-UPDATE tuple too (as always when updating with a policy that lacks an -- explicit WCO), and so this fails: INSERT INTO document VALUES (2, (SELECT cid from category WHERE cname = 'technology'), 1, 'rls_regress_user1', 'my first novel') ON CONFLICT (did) DO UPDATE SET cid = EXCLUDED.cid, dtitle = EXCLUDED.dtitle RETURNING *; -ERROR: new row violates row level security policy for "document" +ERROR: new row violates row-level security policy for table "document" SET SESSION AUTHORIZATION rls_regress_user0; DROP POLICY p3_with_default ON document; -- @@ -1634,16 +1634,16 @@ SET SESSION AUTHORIZATION rls_regress_user1; -- Fails, since ALL WCO is enforced in insert path: INSERT INTO document VALUES (80, (SELECT cid from category WHERE cname = 'novel'), 1, 'rls_regress_user2', 'my first novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle, cid = 33; -ERROR: new row violates row level security policy for "document" +ERROR: new row violates row-level security policy for table "document" -- Fails, since ALL policy USING qual is enforced (existing, target tuple is in -- violation, since it has the "manga" cid): INSERT INTO document VALUES (4, (SELECT cid from category WHERE cname = 'novel'), 1, 'rls_regress_user1', 'my first novel') ON CONFLICT (did) DO UPDATE SET dtitle = EXCLUDED.dtitle; -ERROR: new row violates row level security policy (USING expression) for "document" +ERROR: new row violates row-level security policy (USING expression) for table "document" -- Fails, since ALL WCO are enforced: INSERT INTO document VALUES (1, (SELECT cid from category WHERE cname = 'novel'), 1, 'rls_regress_user1', 'my first novel') ON CONFLICT (did) DO UPDATE SET dauthor = 'rls_regress_user2'; -ERROR: new row violates row level security policy for "document" +ERROR: new row violates row-level security policy for table "document" -- -- ROLE/GROUP -- @@ -2249,7 +2249,7 @@ EXPLAIN (COSTS OFF) WITH cte1 AS (SELECT * FROM t1 WHERE f_leak(b)) SELECT * FRO (6 rows) WITH cte1 AS (UPDATE t1 SET a = a + 1 RETURNING *) SELECT * FROM cte1; --fail -ERROR: new row violates row level security policy for "t1" +ERROR: new row violates row-level security policy for table "t1" WITH cte1 AS (UPDATE t1 SET a = a RETURNING *) SELECT * FROM cte1; --ok a | b ----+---------------------------------- @@ -2267,7 +2267,7 @@ WITH cte1 AS (UPDATE t1 SET a = a RETURNING *) SELECT * FROM cte1; --ok (11 rows) WITH cte1 AS (INSERT INTO t1 VALUES (21, 'Fail') RETURNING *) SELECT * FROM cte1; --fail -ERROR: new row violates row level security policy for "t1" +ERROR: new row violates row-level security policy for table "t1" WITH cte1 AS (INSERT INTO t1 VALUES (20, 'Success') RETURNING *) SELECT * FROM cte1; --ok a | b ----+--------- @@ -2675,7 +2675,7 @@ ERROR: insufficient privilege to bypass row security. SET row_security TO ON; COPY copy_t FROM STDIN; --fail - COPY FROM not supported by RLS. ERROR: COPY FROM not supported with row level security. -HINT: Use direct INSERT statements instead. +HINT: Use INSERT statements instead. -- Check COPY FROM as user with permissions and BYPASSRLS SET SESSION AUTHORIZATION rls_regress_exempt_user; SET row_security TO ON; @@ -2978,7 +2978,7 @@ SELECT * FROM r2; -- r2 is read-only INSERT INTO r2 VALUES (2); -- Not allowed -ERROR: new row violates row level security policy for "r2" +ERROR: new row violates row-level security policy for table "r2" UPDATE r2 SET a = 2 RETURNING *; -- Updates nothing a --- @@ -3047,7 +3047,7 @@ TABLE r1; -- RLS error INSERT INTO r1 VALUES (1); -ERROR: new row violates row level security policy for "r1" +ERROR: new row violates row-level security policy for table "r1" -- No error (unable to see any rows to update) UPDATE r1 SET a = 1; TABLE r1; @@ -3208,7 +3208,7 @@ TABLE r1; SET row_security = on; -- Error INSERT INTO r1 VALUES (10), (20) RETURNING *; -ERROR: new row violates row level security policy for "r1" +ERROR: new row violates row-level security policy for table "r1" DROP TABLE r1; -- -- Test UPDATE+RETURNING applies SELECT policies as @@ -3244,7 +3244,7 @@ TABLE r1; SET row_security = on; -- Error UPDATE r1 SET a = 30 RETURNING *; -ERROR: new row violates row level security policy for "r1" +ERROR: new row violates row-level security policy for table "r1" DROP TABLE r1; -- -- Clean up objects diff --git a/src/test/regress/expected/updatable_views.out b/src/test/regress/expected/updatable_views.out index 7eb92612d73..8e5463a28da 100644 --- a/src/test/regress/expected/updatable_views.out +++ b/src/test/regress/expected/updatable_views.out @@ -1456,18 +1456,18 @@ SELECT * FROM information_schema.views WHERE table_name = 'rw_view1'; INSERT INTO rw_view1 VALUES(3,4); -- ok INSERT INTO rw_view1 VALUES(4,3); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (4, 3). INSERT INTO rw_view1 VALUES(5,null); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (5, null). UPDATE rw_view1 SET b = 5 WHERE a = 3; -- ok UPDATE rw_view1 SET b = -5 WHERE a = 3; -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (3, -5). INSERT INTO rw_view1(a) VALUES (9); -- ok INSERT INTO rw_view1(a) VALUES (10); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (10, 10). SELECT * FROM base_tbl; a | b @@ -1506,11 +1506,11 @@ SELECT * FROM information_schema.views WHERE table_name = 'rw_view2'; (1 row) INSERT INTO rw_view2 VALUES (-5); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (-5). INSERT INTO rw_view2 VALUES (5); -- ok INSERT INTO rw_view2 VALUES (15); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view2" +ERROR: new row violates check option for view "rw_view2" DETAIL: Failing row contains (15). SELECT * FROM base_tbl; a @@ -1519,10 +1519,10 @@ SELECT * FROM base_tbl; (1 row) UPDATE rw_view2 SET a = a - 10; -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (-5). UPDATE rw_view2 SET a = a + 10; -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view2" +ERROR: new row violates check option for view "rw_view2" DETAIL: Failing row contains (15). CREATE OR REPLACE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a < 10 WITH LOCAL CHECK OPTION; @@ -1547,7 +1547,7 @@ SELECT * FROM information_schema.views WHERE table_name = 'rw_view2'; INSERT INTO rw_view2 VALUES (-10); -- ok, but not in view INSERT INTO rw_view2 VALUES (20); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view2" +ERROR: new row violates check option for view "rw_view2" DETAIL: Failing row contains (20). SELECT * FROM base_tbl; a @@ -1561,10 +1561,10 @@ ERROR: invalid value for "check_option" option DETAIL: Valid values are "local" and "cascaded". ALTER VIEW rw_view1 SET (check_option=local); INSERT INTO rw_view2 VALUES (-20); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (-20). INSERT INTO rw_view2 VALUES (30); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view2" +ERROR: new row violates check option for view "rw_view2" DETAIL: Failing row contains (30). ALTER VIEW rw_view2 RESET (check_option); \d+ rw_view2 @@ -1620,7 +1620,7 @@ INSERT INTO rw_view1 VALUES (1); -- ok INSERT INTO rw_view2 VALUES (-2); -- ok, but not in view INSERT INTO rw_view2 VALUES (2); -- ok INSERT INTO rw_view3 VALUES (-3); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view2" +ERROR: new row violates check option for view "rw_view2" DETAIL: Failing row contains (-3). INSERT INTO rw_view3 VALUES (3); -- ok DROP TABLE base_tbl CASCADE; @@ -1634,16 +1634,16 @@ CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a = ANY (b) WITH CHECK OPTION; INSERT INTO rw_view1 VALUES (1, ARRAY[1,2,3]); -- ok INSERT INTO rw_view1 VALUES (10, ARRAY[4,5]); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (10, {4,5}). UPDATE rw_view1 SET b[2] = -b[2] WHERE a = 1; -- ok UPDATE rw_view1 SET b[1] = -b[1] WHERE a = 1; -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (1, {-1,-2,3}). PREPARE ins(int, int[]) AS INSERT INTO rw_view1 VALUES($1, $2); EXECUTE ins(2, ARRAY[1,2,3]); -- ok EXECUTE ins(10, ARRAY[4,5]); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (10, {4,5}). DEALLOCATE PREPARE ins; DROP TABLE base_tbl CASCADE; @@ -1658,11 +1658,11 @@ CREATE VIEW rw_view1 AS WITH CHECK OPTION; INSERT INTO rw_view1 VALUES (5); -- ok INSERT INTO rw_view1 VALUES (15); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (15). UPDATE rw_view1 SET a = a + 5; -- ok UPDATE rw_view1 SET a = a + 5; -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (15). EXPLAIN (costs off) INSERT INTO rw_view1 VALUES (5); QUERY PLAN @@ -1710,10 +1710,10 @@ CREATE TRIGGER base_tbl_trig BEFORE INSERT OR UPDATE ON base_tbl CREATE VIEW rw_view1 AS SELECT * FROM base_tbl WHERE a < b WITH CHECK OPTION; INSERT INTO rw_view1 VALUES (5,0); -- ok INSERT INTO rw_view1 VALUES (15, 20); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (15, 10). UPDATE rw_view1 SET a = 20, b = 30; -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view1" +ERROR: new row violates check option for view "rw_view1" DETAIL: Failing row contains (20, 10). DROP TABLE base_tbl CASCADE; NOTICE: drop cascades to view rw_view1 @@ -1744,12 +1744,12 @@ CREATE TRIGGER rw_view1_trig CREATE VIEW rw_view2 AS SELECT * FROM rw_view1 WHERE a > 0 WITH LOCAL CHECK OPTION; INSERT INTO rw_view2 VALUES (-5); -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view2" +ERROR: new row violates check option for view "rw_view2" DETAIL: Failing row contains (-5). INSERT INTO rw_view2 VALUES (5); -- ok INSERT INTO rw_view2 VALUES (50); -- ok, but not in view UPDATE rw_view2 SET a = a - 10; -- should fail -ERROR: new row violates WITH CHECK OPTION for "rw_view2" +ERROR: new row violates check option for view "rw_view2" DETAIL: Failing row contains (-5). SELECT * FROM base_tbl; a | b |