From 2411fbdac448045a23eebf4f0dbfd5790ebad720 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 15 Aug 2011 22:39:31 -0400
Subject: [PATCH] In pg_upgrade, avoid dumping orphaned temporary tables.  This
 makes the pg_upgrade schema matching pattern match pg_dump/pg_dumpall.

Fix for 9.0, 9.1, and 9.2.
---
 contrib/pg_upgrade/info.c            |  4 +++-
 contrib/pg_upgrade/version_old_8_3.c | 14 +++++++++-----
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c
index 72bc489d0e8..3ef342911eb 100644
--- a/contrib/pg_upgrade/info.c
+++ b/contrib/pg_upgrade/info.c
@@ -266,7 +266,9 @@ get_rel_infos(ClusterInfo *cluster, DbInfo *dbinfo)
 			 "  LEFT OUTER JOIN pg_catalog.pg_tablespace t "
 			 "	   ON c.reltablespace = t.oid "
 			 "WHERE relkind IN ('r','t', 'i'%s) AND "
-			 "  ((n.nspname NOT IN ('pg_catalog', 'information_schema', 'binary_upgrade') AND "
+			 /* exclude pg_catalog and pg_temp_ (could be orphaned tables) */
+			 "  ((n.nspname !~ '^pg_' AND "
+			"     n.nspname NOT IN ('information_schema', 'binary_upgrade') AND "
 			 "	  c.oid >= %u) "
 			 "  OR (n.nspname = 'pg_catalog' AND "
 	"    relname IN ('pg_largeobject', 'pg_largeobject_loid_pn_index'%s) )) "
diff --git a/contrib/pg_upgrade/version_old_8_3.c b/contrib/pg_upgrade/version_old_8_3.c
index 43bfdc1dba4..1c736d256f9 100644
--- a/contrib/pg_upgrade/version_old_8_3.c
+++ b/contrib/pg_upgrade/version_old_8_3.c
@@ -59,7 +59,8 @@ old_8_3_check_for_name_data_type_usage(ClusterInfo *cluster)
 								"		NOT a.attisdropped AND "
 								"		a.atttypid = 'pg_catalog.name'::pg_catalog.regtype AND "
 								"		c.relnamespace = n.oid AND "
-							  "		n.nspname != 'pg_catalog' AND "
+							 /* exclude pg_catalog and pg_temp_ (could be orphaned tables) */
+								"   n.nspname !~ '^pg_' AND "
 						 "		n.nspname != 'information_schema'");
 
 		ntups = PQntuples(res);
@@ -148,7 +149,8 @@ old_8_3_check_for_tsquery_usage(ClusterInfo *cluster)
 								"		NOT a.attisdropped AND "
 								"		a.atttypid = 'pg_catalog.tsquery'::pg_catalog.regtype AND "
 								"		c.relnamespace = n.oid AND "
-							  "		n.nspname != 'pg_catalog' AND "
+							 /* exclude pg_catalog and pg_temp_ (could be orphaned tables) */
+								"   n.nspname !~ '^pg_' AND "
 						 "		n.nspname != 'information_schema'");
 
 		ntups = PQntuples(res);
@@ -245,7 +247,8 @@ old_8_3_rebuild_tsvector_tables(ClusterInfo *cluster, bool check_mode)
 								"		NOT a.attisdropped AND "
 								"		a.atttypid = 'pg_catalog.tsvector'::pg_catalog.regtype AND "
 								"		c.relnamespace = n.oid AND "
-							  "		n.nspname != 'pg_catalog' AND "
+							 /* exclude pg_catalog and pg_temp_ (could be orphaned tables) */
+								"   n.nspname !~ '^pg_' AND "
 						 "		n.nspname != 'information_schema'");
 
 /*
@@ -263,7 +266,7 @@ old_8_3_rebuild_tsvector_tables(ClusterInfo *cluster, bool check_mode)
 								"		NOT a.attisdropped AND "		\
 								"		a.atttypid = 'pg_catalog.tsvector'::pg_catalog.regtype AND " \
 								"		c.relnamespace = n.oid AND "	\
-								"		n.nspname != 'pg_catalog' AND " \
+								"       n.nspname !~ '^pg_' AND "		\
 								"		n.nspname != 'information_schema') "
 
 		ntups = PQntuples(res);
@@ -616,7 +619,8 @@ old_8_3_create_sequence_script(ClusterInfo *cluster)
 								"		pg_catalog.pg_namespace n "
 								"WHERE	c.relkind = 'S' AND "
 								"		c.relnamespace = n.oid AND "
-							  "		n.nspname != 'pg_catalog' AND "
+							 /* exclude pg_catalog and pg_temp_ (could be orphaned tables) */
+								"   n.nspname !~ '^pg_' AND "
 						 "		n.nspname != 'information_schema'");
 
 		ntups = PQntuples(res);
-- 
GitLab