Index: src/bin/pg_dump/pg_dump.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v
retrieving revision 1.540
diff -c -c -r1.540 pg_dump.c
*** src/bin/pg_dump/pg_dump.c	2 Jul 2009 21:34:32 -0000	1.540
--- src/bin/pg_dump/pg_dump.c	14 Jul 2009 02:58:32 -0000
***************
*** 34,39 ****
--- 34,40 ----
  #include "access/sysattr.h"
  #include "catalog/pg_cast.h"
  #include "catalog/pg_class.h"
+ #include "catalog/pg_largeobject.h"
  #include "catalog/pg_proc.h"
  #include "catalog/pg_trigger.h"
  #include "catalog/pg_type.h"
***************
*** 1732,1737 ****
--- 1733,1743 ----
  
  	if (binary_upgrade)
  	{
+ 		PGresult   *lo_res;
+ 		PQExpBuffer loFrozenQry = createPQExpBuffer();
+ 		PQExpBuffer loOutQry = createPQExpBuffer();
+ 		int			i_relfrozenxid;
+ 		
  		appendPQExpBuffer(creaQry, "\n-- For binary upgrade, set datfrozenxid.\n");
  		appendPQExpBuffer(creaQry, "UPDATE pg_catalog.pg_database\n"
  						  "SET datfrozenxid = '%u'\n"
***************
*** 1739,1744 ****
--- 1745,1788 ----
  						  frozenxid);
  		appendStringLiteralAH(creaQry, datname, AH);
  		appendPQExpBuffer(creaQry, ";\n");
+ 
+ 		/*
+ 		 *	pg_largeobject comes from the old system intact, so set
+ 		 *	its relfrozenxid.
+ 		 */
+ 
+ 		appendPQExpBuffer(loFrozenQry, "SELECT relfrozenxid\n"
+ 							"FROM pg_catalog.pg_class\n"
+ 							"WHERE oid = %d;\n",
+ 							LargeObjectRelationId);
+ 
+ 		lo_res = PQexec(g_conn, loFrozenQry->data);
+ 		check_sql_result(lo_res, g_conn, loFrozenQry->data, PGRES_TUPLES_OK);
+ 
+ 		if (PQntuples(lo_res) != 1)
+ 		{
+ 			write_msg(NULL, "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n");
+ 			exit_nicely();
+ 		}
+ 
+ 		i_relfrozenxid = PQfnumber(lo_res, "relfrozenxid");
+ 
+ 		appendPQExpBuffer(loOutQry, "\n-- For binary upgrade, set pg_largeobject relfrozenxid.\n");
+ 		appendPQExpBuffer(loOutQry, "UPDATE pg_catalog.pg_class\n"
+ 						  "SET relfrozenxid = '%u'\n"
+ 						  "WHERE oid = %d;\n",
+ 						  atoi(PQgetvalue(lo_res, 0, i_relfrozenxid)),
+ 						  LargeObjectRelationId);
+ 		ArchiveEntry(AH, nilCatalogId, createDumpId(),
+ 					 "pg_largeobject", NULL, NULL, "",
+ 					 false, "pg_largeobject", SECTION_PRE_DATA,
+ 					 loOutQry->data, "", NULL,
+ 					 NULL, 0,
+ 					 NULL, NULL);
+ 						  
+ 		PQclear(lo_res);
+ 		destroyPQExpBuffer(loFrozenQry);
+ 		destroyPQExpBuffer(loOutQry);
  	}
  
  	appendPQExpBuffer(delQry, "DROP DATABASE %s;\n",
