diff options
author | Tomas Vondra | 2017-07-17 21:26:25 +0000 |
---|---|---|
committer | Tomas Vondra | 2017-07-17 21:26:25 +0000 |
commit | 8d0dc1a57e4439f4bcbf9c34b1c2587d7bc63b28 (patch) | |
tree | 8aef5764a5dd4c36eeb5c5e9c58adbd8315c37b7 | |
parent | caf4f0156726f6364ee7e665dcd3eaef0243ed00 (diff) |
Resolve failures related to pg_node_tree type input
The input function for pg_node_tree pseudotype simply returns an error,
essentially disabling input from text. Some of the regression tests do
CREATE TABLE t AS SELECT * FROM pg_class;
or something like that, which works fine on PostgreSQL, but it fails on
Postgres-XL as we need to send data between nodes. Unfortunately the
pg_class now contains pg_node_tree column (relpartbound), causing falure
when reading the column on the remote node.
So instead use another catalogue, for example pg_attribute, which does
not contain any such column.
-rw-r--r-- | src/test/regress/expected/create_table.out | 6 | ||||
-rw-r--r-- | src/test/regress/expected/select_into.out | 4 | ||||
-rw-r--r-- | src/test/regress/sql/create_table.sql | 6 | ||||
-rw-r--r-- | src/test/regress/sql/select_into.sql | 4 |
4 files changed, 10 insertions, 10 deletions
diff --git a/src/test/regress/expected/create_table.out b/src/test/regress/expected/create_table.out index c63a0bacac..bccf20d604 100644 --- a/src/test/regress/expected/create_table.out +++ b/src/test/regress/expected/create_table.out @@ -252,10 +252,10 @@ ERROR: cannot create temporary relation in non-temporary schema LINE 1: CREATE TEMP TABLE public.temp_to_perm (a int primary key); ^ DROP TABLE unlogged1, public.unlogged2; -CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; -CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; +CREATE TABLE as_select1 AS SELECT * FROM pg_attribute WHERE attstorage = 'p'; +CREATE TABLE as_select1 AS SELECT * FROM pg_attribute WHERE attstorage = 'p'; ERROR: relation "as_select1" already exists -CREATE TABLE IF NOT EXISTS as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; +CREATE TABLE IF NOT EXISTS as_select1 AS SELECT * FROM pg_attribute WHERE attstorage = 'p'; NOTICE: relation "as_select1" already exists, skipping DROP TABLE as_select1; -- check that the oid column is added before the primary key is checked diff --git a/src/test/regress/expected/select_into.out b/src/test/regress/expected/select_into.out index 11b61b592c..2afc70fdb2 100644 --- a/src/test/regress/expected/select_into.out +++ b/src/test/regress/expected/select_into.out @@ -21,7 +21,7 @@ ALTER DEFAULT PRIVILEGES FOR ROLE regress_selinto_user GRANT ALL ON SCHEMA selinto_schema TO public; SET SESSION AUTHORIZATION regress_selinto_user; SELECT * INTO TABLE selinto_schema.tmp1 - FROM pg_class WHERE relname like '%a%'; -- Error + FROM pg_attribute WHERE attname like '%a%'; -- Error ERROR: permission denied for relation tmp1 SELECT oid AS clsoid, relname, relnatts + 10 AS x INTO selinto_schema.tmp2 @@ -36,7 +36,7 @@ ALTER DEFAULT PRIVILEGES FOR ROLE regress_selinto_user GRANT INSERT ON TABLES TO regress_selinto_user; SET SESSION AUTHORIZATION regress_selinto_user; SELECT * INTO TABLE selinto_schema.tmp1 - FROM pg_class WHERE relname like '%a%'; -- OK + FROM pg_attribute WHERE attname like '%a%'; -- OK SELECT oid AS clsoid, relname, relnatts + 10 AS x INTO selinto_schema.tmp2 FROM pg_class WHERE relname like '%b%'; -- OK diff --git a/src/test/regress/sql/create_table.sql b/src/test/regress/sql/create_table.sql index 62328353e9..1e68213b0a 100644 --- a/src/test/regress/sql/create_table.sql +++ b/src/test/regress/sql/create_table.sql @@ -268,9 +268,9 @@ CREATE TEMP TABLE pg_temp.doubly_temp (a int primary key); -- also OK CREATE TEMP TABLE public.temp_to_perm (a int primary key); -- not OK DROP TABLE unlogged1, public.unlogged2; -CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; -CREATE TABLE as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; -CREATE TABLE IF NOT EXISTS as_select1 AS SELECT * FROM pg_class WHERE relkind = 'r'; +CREATE TABLE as_select1 AS SELECT * FROM pg_attribute WHERE attstorage = 'p'; +CREATE TABLE as_select1 AS SELECT * FROM pg_attribute WHERE attstorage = 'p'; +CREATE TABLE IF NOT EXISTS as_select1 AS SELECT * FROM pg_attribute WHERE attstorage = 'p'; DROP TABLE as_select1; -- check that the oid column is added before the primary key is checked diff --git a/src/test/regress/sql/select_into.sql b/src/test/regress/sql/select_into.sql index 5cb7ce0922..9adfbdc09e 100644 --- a/src/test/regress/sql/select_into.sql +++ b/src/test/regress/sql/select_into.sql @@ -27,7 +27,7 @@ GRANT ALL ON SCHEMA selinto_schema TO public; SET SESSION AUTHORIZATION regress_selinto_user; SELECT * INTO TABLE selinto_schema.tmp1 - FROM pg_class WHERE relname like '%a%'; -- Error + FROM pg_attribute WHERE attname like '%a%'; -- Error SELECT oid AS clsoid, relname, relnatts + 10 AS x INTO selinto_schema.tmp2 FROM pg_class WHERE relname like '%b%'; -- Error @@ -41,7 +41,7 @@ ALTER DEFAULT PRIVILEGES FOR ROLE regress_selinto_user SET SESSION AUTHORIZATION regress_selinto_user; SELECT * INTO TABLE selinto_schema.tmp1 - FROM pg_class WHERE relname like '%a%'; -- OK + FROM pg_attribute WHERE attname like '%a%'; -- OK SELECT oid AS clsoid, relname, relnatts + 10 AS x INTO selinto_schema.tmp2 FROM pg_class WHERE relname like '%b%'; -- OK |