diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c
index 866d0d649a..5b6291c6c9 100644
--- a/src/backend/utils/adt/xml.c
+++ b/src/backend/utils/adt/xml.c
@@ -2723,12 +2723,13 @@ schema_get_xml_visible_tables(Oid nspid)
 	StringInfoData query;
 
 	initStringInfo(&query);
-	appendStringInfo(&query, "SELECT oid FROM pg_catalog.pg_class"
+	appendStringInfo(&query, "SELECT oid FROM "
+					 " (SELECT oid, relname FROM pg_catalog.pg_class"
 					 " WHERE relnamespace = %u AND relkind IN ("
 					 CppAsString2(RELKIND_RELATION) ","
 					 CppAsString2(RELKIND_MATVIEW) ","
-					 CppAsString2(RELKIND_VIEW) ")"
-					 " AND pg_catalog.has_table_privilege (oid, 'SELECT')"
+					 CppAsString2(RELKIND_VIEW) ") OFFSET 0) c"
+					 " WHERE pg_catalog.has_table_privilege (oid, 'SELECT')"
 					 " ORDER BY relname;", nspid);
 
 	return query_to_oid_list(query.data);
