isolate-schema_get_xml_visible_tables.patch

text/x-patch

Filename: isolate-schema_get_xml_visible_tables.patch
Type: text/x-patch
Part: 0
Message: Re: BUG #18014: Releasing catcache entries makes schema_to_xmlschema() fail when parallel workers are used

Patch

Format: unified
File+
src/backend/utils/adt/xml.c 4 3
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);