diff options
Diffstat (limited to 'contrib/postgres_fdw/sql/postgres_fdw.sql')
-rw-r--r-- | contrib/postgres_fdw/sql/postgres_fdw.sql | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql index bb92189b0e6..5f65d9d966c 100644 --- a/contrib/postgres_fdw/sql/postgres_fdw.sql +++ b/contrib/postgres_fdw/sql/postgres_fdw.sql @@ -1181,6 +1181,30 @@ UPDATE ft1 SET c2 = c2 + 1 WHERE c1 = 1; ALTER FOREIGN TABLE ft1 DROP CONSTRAINT ft1_c2negative; -- =================================================================== +-- test WITH CHECK OPTION constraints +-- =================================================================== + +CREATE TABLE base_tbl (a int, b int); +CREATE FOREIGN TABLE foreign_tbl (a int, b int) + SERVER loopback OPTIONS(table_name 'base_tbl'); +CREATE VIEW rw_view AS SELECT * FROM foreign_tbl + WHERE a < b WITH CHECK OPTION; +\d+ rw_view + +INSERT INTO rw_view VALUES (0, 10); -- ok +INSERT INTO rw_view VALUES (10, 0); -- should fail +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE rw_view SET b = 20 WHERE a = 0; -- not pushed down +UPDATE rw_view SET b = 20 WHERE a = 0; -- ok +EXPLAIN (VERBOSE, COSTS OFF) +UPDATE rw_view SET b = -20 WHERE a = 0; -- not pushed down +UPDATE rw_view SET b = -20 WHERE a = 0; -- should fail +SELECT * FROM foreign_tbl; + +DROP FOREIGN TABLE foreign_tbl CASCADE; +DROP TABLE base_tbl; + +-- =================================================================== -- test serial columns (ie, sequence-based defaults) -- =================================================================== create table loc1 (f1 serial, f2 text); |