Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix incorrect pattern-match processing in psql's \det command.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Jan 2016 09:28:03 +0000 (10:28 +0100)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Jan 2016 09:28:03 +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.

src/bin/psql/describe.c

index fcbd268d2c91a5bbd128700c3417f84b44c513d4..3e19ce4386cc14df4f8dd9ae07e078fe972e26c2 100644 (file)
@@ -4028,7 +4028,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)");
 
    appendPQExpBuffer(&buf, "ORDER BY 1, 2;");