From 1723df6e4ad4d6b0daeb3d917d3b6261af2ec379 Mon Sep 17 00:00:00 2001
From: Joe Conway <mail@joeconway.com>
Date: Sun, 9 Jun 2013 17:31:26 -0700
Subject: [PATCH] Fix ordering of obj id for Rules and EventTriggers in
 pg_dump.

getSchemaData() must identify extension member objects and mark them
as not to be dumped. This must happen after reading all objects that can be
direct members of extensions, but before we begin to process table subsidiary
objects. Both rules and event triggers were wrong in this regard.

Backport rules portion of patch to 9.1 -- event triggers do not exist prior to 9.3.
Suggested fix by Tom Lane, initial complaint and patch by me.
---
 src/bin/pg_dump/common.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c
index b02217e81d5..1fcc39fcb87 100644
--- a/src/bin/pg_dump/common.c
+++ b/src/bin/pg_dump/common.c
@@ -202,10 +202,6 @@ getSchemaData(Archive *fout, int *numTablesPtr)
 		write_msg(NULL, "reading table inheritance information\n");
 	inhinfo = getInherits(fout, &numInherits);
 
-	if (g_verbose)
-		write_msg(NULL, "reading rewrite rules\n");
-	getRules(fout, &numRules);
-
 	/*
 	 * Identify extension member objects and mark them as not to be dumped.
 	 * This must happen after reading all objects that can be direct members
@@ -240,6 +236,10 @@ getSchemaData(Archive *fout, int *numTablesPtr)
 		write_msg(NULL, "reading triggers\n");
 	getTriggers(fout, tblinfo, numTables);
 
+	if (g_verbose)
+		write_msg(NULL, "reading rewrite rules\n");
+	getRules(fout, &numRules);
+
 	*numTablesPtr = numTables;
 	return tblinfo;
 }
-- 
GitLab