aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-11-07 12:08:19 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2016-11-07 12:08:19 -0500
commit5ee3a7453a428890ed4c0a1061c367e510b8253b (patch)
treecb9c288c3af2d0c9a483c914159b436b7386ec64 /src/test
parent674f7015caa044bed73a5883f1d4b088ac0adf22 (diff)
downloadpostgresql-5ee3a7453a428890ed4c0a1061c367e510b8253b.tar.gz
postgresql-5ee3a7453a428890ed4c0a1061c367e510b8253b.zip
Band-aid fix for incorrect use of view options as StdRdOptions.
We really ought to make StdRdOptions and the other decoded forms of reloptions self-identifying, but for the moment, assume that only plain relations could possibly be user_catalog_tables. Fixes problem with bogus "ON CONFLICT is not supported on table ... used as a catalog table" error when target is a view with cascade option. Discussion: <26681.1477940227@sss.pgh.pa.us>
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/insert_conflict.out24
-rw-r--r--src/test/regress/sql/insert_conflict.sql18
2 files changed, 42 insertions, 0 deletions
diff --git a/src/test/regress/expected/insert_conflict.out b/src/test/regress/expected/insert_conflict.out
index 8d8d69b1ad8..63859c53acb 100644
--- a/src/test/regress/expected/insert_conflict.out
+++ b/src/test/regress/expected/insert_conflict.out
@@ -471,6 +471,30 @@ on conflict (b) where coalesce(a, 1) > 0 do nothing;
insert into insertconflict values (1, 2)
on conflict (b) where coalesce(a, 1) > 1 do nothing;
drop table insertconflict;
+--
+-- test insertion through view
+--
+create table insertconflict (f1 int primary key, f2 text);
+create view insertconflictv as
+ select * from insertconflict with cascaded check option;
+insert into insertconflictv values (1,'foo')
+ on conflict (f1) do update set f2 = excluded.f2;
+select * from insertconflict;
+ f1 | f2
+----+-----
+ 1 | foo
+(1 row)
+
+insert into insertconflictv values (1,'bar')
+ on conflict (f1) do update set f2 = excluded.f2;
+select * from insertconflict;
+ f1 | f2
+----+-----
+ 1 | bar
+(1 row)
+
+drop view insertconflictv;
+drop table insertconflict;
-- ******************************************************************
-- * *
-- * Test inheritance (example taken from tutorial) *
diff --git a/src/test/regress/sql/insert_conflict.sql b/src/test/regress/sql/insert_conflict.sql
index 81c4a7ca4ba..116cf763f95 100644
--- a/src/test/regress/sql/insert_conflict.sql
+++ b/src/test/regress/sql/insert_conflict.sql
@@ -283,6 +283,24 @@ on conflict (b) where coalesce(a, 1) > 1 do nothing;
drop table insertconflict;
+--
+-- test insertion through view
+--
+
+create table insertconflict (f1 int primary key, f2 text);
+create view insertconflictv as
+ select * from insertconflict with cascaded check option;
+
+insert into insertconflictv values (1,'foo')
+ on conflict (f1) do update set f2 = excluded.f2;
+select * from insertconflict;
+insert into insertconflictv values (1,'bar')
+ on conflict (f1) do update set f2 = excluded.f2;
+select * from insertconflict;
+
+drop view insertconflictv;
+drop table insertconflict;
+
-- ******************************************************************
-- * *