diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 3e542f7..a1f0d8e 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -2536,13 +2536,24 @@ describeOneTableDetails(const char *schemaname, if (pset.sversion >= 100000) { printfPQExpBuffer(&buf, + "WITH pub_oids AS(\n" + " SELECT c.oid\n" + " FROM pg_catalog.pg_class c\n" + " LEFT JOIN pg_catalog.pg_namespace n\n" + " ON (c.relnamespace = n.oid)\n" + " WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')\n" + " AND c.relpersistence = 'p'\n" + ")\n" "SELECT pub.pubname\n" " FROM pg_catalog.pg_publication pub\n" " LEFT JOIN pg_catalog.pg_publication_rel pr\n" " ON (pr.prpubid = pub.oid)\n" - "WHERE pr.prrelid = '%s' OR pub.puballtables\n" + "WHERE (pr.prrelid = '%s'\n" + " AND EXISTS (SELECT * FROM pub_oids WHERE oid = pr.prrelid))\n" + " OR (pub.puballtables\n" + " AND EXISTS(SELECT * FROM pub_oids WHERE oid = '%s'))\n" "ORDER BY 1;", - oid); + oid, oid); result = PSQLexec(buf.data); if (!result)