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)
