Fix incorrect pattern-match processing in psql's \det command.
listForeignTables' invocation of processSQLNamePattern did not match up with the other ones that handle potentially-schema-qualified names; it failed to make use of pg_table_is_visible() and also passed the name arguments in the wrong order. Bug seems to have been aboriginal in commit 0d692a0dc9f0e532. It accidentally sort of worked as long as you didn't inquire too closely into the behavior, although the silliness was later exposed by inconsistencies in the test queries added by 59efda3e50ca4de6 (which I probably should have questioned at the time, but didn't). Per bug #13899 from Reece Hart. Patch by Reece Hart and Tom Lane. Back-patch to all affected branches.
This commit is contained in:
parent
c35c4ec454
commit
7e22470471
@ -3734,7 +3734,7 @@ CREATE TABLE import_source."x 5" (c1 float8);
|
|||||||
ALTER TABLE import_source."x 5" DROP COLUMN c1;
|
ALTER TABLE import_source."x 5" DROP COLUMN c1;
|
||||||
CREATE SCHEMA import_dest1;
|
CREATE SCHEMA import_dest1;
|
||||||
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest1;
|
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest1;
|
||||||
\det+ import_dest1
|
\det+ import_dest1.*
|
||||||
List of foreign tables
|
List of foreign tables
|
||||||
Schema | Table | Server | FDW Options | Description
|
Schema | Table | Server | FDW Options | Description
|
||||||
--------------+-------+----------+-------------------------------------------------+-------------
|
--------------+-------+----------+-------------------------------------------------+-------------
|
||||||
@ -3790,7 +3790,7 @@ FDW Options: (schema_name 'import_source', table_name 'x 5')
|
|||||||
CREATE SCHEMA import_dest2;
|
CREATE SCHEMA import_dest2;
|
||||||
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest2
|
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest2
|
||||||
OPTIONS (import_default 'true');
|
OPTIONS (import_default 'true');
|
||||||
\det+ import_dest2
|
\det+ import_dest2.*
|
||||||
List of foreign tables
|
List of foreign tables
|
||||||
Schema | Table | Server | FDW Options | Description
|
Schema | Table | Server | FDW Options | Description
|
||||||
--------------+-------+----------+-------------------------------------------------+-------------
|
--------------+-------+----------+-------------------------------------------------+-------------
|
||||||
@ -3845,7 +3845,7 @@ FDW Options: (schema_name 'import_source', table_name 'x 5')
|
|||||||
CREATE SCHEMA import_dest3;
|
CREATE SCHEMA import_dest3;
|
||||||
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest3
|
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest3
|
||||||
OPTIONS (import_collate 'false', import_not_null 'false');
|
OPTIONS (import_collate 'false', import_not_null 'false');
|
||||||
\det+ import_dest3
|
\det+ import_dest3.*
|
||||||
List of foreign tables
|
List of foreign tables
|
||||||
Schema | Table | Server | FDW Options | Description
|
Schema | Table | Server | FDW Options | Description
|
||||||
--------------+-------+----------+-------------------------------------------------+-------------
|
--------------+-------+----------+-------------------------------------------------+-------------
|
||||||
@ -3901,7 +3901,7 @@ FDW Options: (schema_name 'import_source', table_name 'x 5')
|
|||||||
CREATE SCHEMA import_dest4;
|
CREATE SCHEMA import_dest4;
|
||||||
IMPORT FOREIGN SCHEMA import_source LIMIT TO (t1, nonesuch)
|
IMPORT FOREIGN SCHEMA import_source LIMIT TO (t1, nonesuch)
|
||||||
FROM SERVER loopback INTO import_dest4;
|
FROM SERVER loopback INTO import_dest4;
|
||||||
\det+ import_dest4
|
\det+ import_dest4.*
|
||||||
List of foreign tables
|
List of foreign tables
|
||||||
Schema | Table | Server | FDW Options | Description
|
Schema | Table | Server | FDW Options | Description
|
||||||
--------------+-------+----------+------------------------------------------------+-------------
|
--------------+-------+----------+------------------------------------------------+-------------
|
||||||
@ -3910,7 +3910,7 @@ IMPORT FOREIGN SCHEMA import_source LIMIT TO (t1, nonesuch)
|
|||||||
|
|
||||||
IMPORT FOREIGN SCHEMA import_source EXCEPT (t1, "x 4", nonesuch)
|
IMPORT FOREIGN SCHEMA import_source EXCEPT (t1, "x 4", nonesuch)
|
||||||
FROM SERVER loopback INTO import_dest4;
|
FROM SERVER loopback INTO import_dest4;
|
||||||
\det+ import_dest4
|
\det+ import_dest4.*
|
||||||
List of foreign tables
|
List of foreign tables
|
||||||
Schema | Table | Server | FDW Options | Description
|
Schema | Table | Server | FDW Options | Description
|
||||||
--------------+-------+----------+-------------------------------------------------+-------------
|
--------------+-------+----------+-------------------------------------------------+-------------
|
||||||
|
@ -879,29 +879,29 @@ ALTER TABLE import_source."x 5" DROP COLUMN c1;
|
|||||||
|
|
||||||
CREATE SCHEMA import_dest1;
|
CREATE SCHEMA import_dest1;
|
||||||
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest1;
|
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest1;
|
||||||
\det+ import_dest1
|
\det+ import_dest1.*
|
||||||
\d import_dest1.*
|
\d import_dest1.*
|
||||||
|
|
||||||
-- Options
|
-- Options
|
||||||
CREATE SCHEMA import_dest2;
|
CREATE SCHEMA import_dest2;
|
||||||
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest2
|
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest2
|
||||||
OPTIONS (import_default 'true');
|
OPTIONS (import_default 'true');
|
||||||
\det+ import_dest2
|
\det+ import_dest2.*
|
||||||
\d import_dest2.*
|
\d import_dest2.*
|
||||||
CREATE SCHEMA import_dest3;
|
CREATE SCHEMA import_dest3;
|
||||||
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest3
|
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest3
|
||||||
OPTIONS (import_collate 'false', import_not_null 'false');
|
OPTIONS (import_collate 'false', import_not_null 'false');
|
||||||
\det+ import_dest3
|
\det+ import_dest3.*
|
||||||
\d import_dest3.*
|
\d import_dest3.*
|
||||||
|
|
||||||
-- Check LIMIT TO and EXCEPT
|
-- Check LIMIT TO and EXCEPT
|
||||||
CREATE SCHEMA import_dest4;
|
CREATE SCHEMA import_dest4;
|
||||||
IMPORT FOREIGN SCHEMA import_source LIMIT TO (t1, nonesuch)
|
IMPORT FOREIGN SCHEMA import_source LIMIT TO (t1, nonesuch)
|
||||||
FROM SERVER loopback INTO import_dest4;
|
FROM SERVER loopback INTO import_dest4;
|
||||||
\det+ import_dest4
|
\det+ import_dest4.*
|
||||||
IMPORT FOREIGN SCHEMA import_source EXCEPT (t1, "x 4", nonesuch)
|
IMPORT FOREIGN SCHEMA import_source EXCEPT (t1, "x 4", nonesuch)
|
||||||
FROM SERVER loopback INTO import_dest4;
|
FROM SERVER loopback INTO import_dest4;
|
||||||
\det+ import_dest4
|
\det+ import_dest4.*
|
||||||
|
|
||||||
-- Assorted error cases
|
-- Assorted error cases
|
||||||
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest4;
|
IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest4;
|
||||||
|
@ -4412,7 +4412,8 @@ listForeignTables(const char *pattern, bool verbose)
|
|||||||
"d.objoid = c.oid AND d.objsubid = 0\n");
|
"d.objoid = c.oid AND d.objsubid = 0\n");
|
||||||
|
|
||||||
processSQLNamePattern(pset.db, &buf, pattern, false, false,
|
processSQLNamePattern(pset.db, &buf, pattern, false, false,
|
||||||
NULL, "n.nspname", "c.relname", NULL);
|
"n.nspname", "c.relname", NULL,
|
||||||
|
"pg_catalog.pg_table_is_visible(c.oid)");
|
||||||
|
|
||||||
appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
|
appendPQExpBufferStr(&buf, "ORDER BY 1, 2;");
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user