From 58d8584eeaf0d02476c1dfdcde365a66397ecdfc Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 3 Jun 1999 04:01:16 +0000
Subject: [PATCH] pg_dump failed on any database containing large objects,
 because it ignored the LOs themselves but failed to ignore the indexes on the
 LOs.  How long has this been broken??

---
 src/bin/pg_dump/pg_dump.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 0e1aaa1fc03..0353d101c2b 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -21,7 +21,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.114 1999/05/29 10:25:31 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.115 1999/06/03 04:01:16 tgl Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -1419,7 +1419,9 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
 	 * ordering by oid is important so that we always process the parent
 	 * tables before the child tables when traversing the tblinfo*
 	 *
-	 * we ignore tables that start with xinv
+	 * we ignore tables that are not type 'r' (ordinary relation)
+	 * or 'S' (sequence) --- in particular, Large Object relations
+	 * (type 'l') are ignored.
 	 */
 
 	sprintf(query,
@@ -1918,7 +1920,7 @@ getIndices(int *numIndices)
 	 * find all the user-defined indices. We do not handle partial
 	 * indices.
 	 *
-	 * skip 'xinx*' - indices on inversion objects
+	 * Notice we skip indices on inversion objects (relkind 'l')
 	 *
 	 * this is a 4-way join !!
 	 */
@@ -1930,7 +1932,7 @@ getIndices(int *numIndices)
 			"from pg_index i, pg_class t1, pg_class t2, pg_am a "
 			"where t1.oid = i.indexrelid and t2.oid = i.indrelid "
 			"and t1.relam = a.oid and i.indexrelid > '%u'::oid "
-			"and t2.relname !~ '^pg_' and t1.relkind != 'l'",
+			"and t2.relname !~ '^pg_' and t2.relkind != 'l'",
 			g_last_builtin_oid);
 
 	res = PQexec(g_conn, query);
-- 
GitLab