]> granicus.if.org Git - postgresql/commitdiff
Fix incorrect pattern-match processing in psql's \det command.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Jan 2016 09:28:02 +0000 (10:28 +0100)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Jan 2016 09:28:02 +0000 (10:28 +0100)
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.

contrib/postgres_fdw/expected/postgres_fdw.out
contrib/postgres_fdw/sql/postgres_fdw.sql
src/bin/psql/describe.c

index b471c674af6c629b32b7f7748320720ee2075c12..2390e61c2c4798a314e2306dd9280c15069e795e 100644 (file)
@@ -3734,7 +3734,7 @@ CREATE TABLE import_source."x 5" (c1 float8);
 ALTER TABLE import_source."x 5" DROP COLUMN c1;
 CREATE SCHEMA import_dest1;
 IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest1;
-\det+ import_dest1
+\det+ import_dest1.*
                                      List of foreign tables
     Schema    | Table |  Server  |                   FDW Options                   | Description 
 --------------+-------+----------+-------------------------------------------------+-------------
@@ -3790,7 +3790,7 @@ FDW Options: (schema_name 'import_source', table_name 'x 5')
 CREATE SCHEMA import_dest2;
 IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest2
   OPTIONS (import_default 'true');
-\det+ import_dest2
+\det+ import_dest2.*
                                      List of foreign tables
     Schema    | Table |  Server  |                   FDW Options                   | Description 
 --------------+-------+----------+-------------------------------------------------+-------------
@@ -3845,7 +3845,7 @@ FDW Options: (schema_name 'import_source', table_name 'x 5')
 CREATE SCHEMA import_dest3;
 IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest3
   OPTIONS (import_collate 'false', import_not_null 'false');
-\det+ import_dest3
+\det+ import_dest3.*
                                      List of foreign tables
     Schema    | Table |  Server  |                   FDW Options                   | Description 
 --------------+-------+----------+-------------------------------------------------+-------------
@@ -3901,7 +3901,7 @@ FDW Options: (schema_name 'import_source', table_name 'x 5')
 CREATE SCHEMA import_dest4;
 IMPORT FOREIGN SCHEMA import_source LIMIT TO (t1, nonesuch)
   FROM SERVER loopback INTO import_dest4;
-\det+ import_dest4
+\det+ import_dest4.*
                                      List of foreign tables
     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)
   FROM SERVER loopback INTO import_dest4;
-\det+ import_dest4
+\det+ import_dest4.*
                                      List of foreign tables
     Schema    | Table |  Server  |                   FDW Options                   | Description 
 --------------+-------+----------+-------------------------------------------------+-------------
index 73fa9f6de098580d091734afdca7e5396e3b768b..5c6ead1967dd1ae6263d3763706b69360734fcc5 100644 (file)
@@ -879,29 +879,29 @@ ALTER TABLE import_source."x 5" DROP COLUMN c1;
 
 CREATE SCHEMA import_dest1;
 IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest1;
-\det+ import_dest1
+\det+ import_dest1.*
 \d import_dest1.*
 
 -- Options
 CREATE SCHEMA import_dest2;
 IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest2
   OPTIONS (import_default 'true');
-\det+ import_dest2
+\det+ import_dest2.*
 \d import_dest2.*
 CREATE SCHEMA import_dest3;
 IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest3
   OPTIONS (import_collate 'false', import_not_null 'false');
-\det+ import_dest3
+\det+ import_dest3.*
 \d import_dest3.*
 
 -- Check LIMIT TO and EXCEPT
 CREATE SCHEMA import_dest4;
 IMPORT FOREIGN SCHEMA import_source LIMIT TO (t1, nonesuch)
   FROM SERVER loopback INTO import_dest4;
-\det+ import_dest4
+\det+ import_dest4.*
 IMPORT FOREIGN SCHEMA import_source EXCEPT (t1, "x 4", nonesuch)
   FROM SERVER loopback INTO import_dest4;
-\det+ import_dest4
+\det+ import_dest4.*
 
 -- Assorted error cases
 IMPORT FOREIGN SCHEMA import_source FROM SERVER loopback INTO import_dest4;
index 85e3aa5dddd7d21c8f9cf29eec99d9c0889a9dc7..fd8dc9122d464878a9771e63ceffcad627234cdd 100644 (file)
@@ -4412,7 +4412,8 @@ listForeignTables(const char *pattern, bool verbose)
                                                         "d.objoid = c.oid AND d.objsubid = 0\n");
 
        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;");