50
50
#include "catalog/pg_class.h"
51
51
#include "catalog/pg_default_acl.h"
52
52
#include "catalog/pg_largeobject.h"
53
+ #include "catalog/pg_largeobject_metadata.h"
53
54
#include "catalog/pg_proc.h"
54
55
#include "catalog/pg_trigger.h"
55
56
#include "catalog/pg_type.h"
@@ -1920,8 +1921,8 @@ dumpDatabase(Archive *AH)
1920
1921
NULL ); /* Dumper Arg */
1921
1922
1922
1923
/*
1923
- * pg_largeobject comes from the old system intact, so set its
1924
- * relfrozenxid .
1924
+ * pg_largeobject and pg_largeobject_metadata come from the old system
1925
+ * intact, so set their relfrozenxids .
1925
1926
*/
1926
1927
if (binary_upgrade )
1927
1928
{
@@ -1930,6 +1931,9 @@ dumpDatabase(Archive *AH)
1930
1931
PQExpBuffer loOutQry = createPQExpBuffer ();
1931
1932
int i_relfrozenxid ;
1932
1933
1934
+ /*
1935
+ * pg_largeobject
1936
+ */
1933
1937
appendPQExpBuffer (loFrozenQry , "SELECT relfrozenxid\n"
1934
1938
"FROM pg_catalog.pg_class\n"
1935
1939
"WHERE oid = %u;\n" ,
@@ -1946,7 +1950,7 @@ dumpDatabase(Archive *AH)
1946
1950
1947
1951
i_relfrozenxid = PQfnumber (lo_res , "relfrozenxid" );
1948
1952
1949
- appendPQExpBuffer (loOutQry , "\n-- For binary upgrade, set pg_largeobject relfrozenxid. \n" );
1953
+ appendPQExpBuffer (loOutQry , "\n-- For binary upgrade, set pg_largeobject.relfrozenxid \n" );
1950
1954
appendPQExpBuffer (loOutQry , "UPDATE pg_catalog.pg_class\n"
1951
1955
"SET relfrozenxid = '%u'\n"
1952
1956
"WHERE oid = %u;\n" ,
@@ -1960,6 +1964,47 @@ dumpDatabase(Archive *AH)
1960
1964
NULL , NULL );
1961
1965
1962
1966
PQclear (lo_res );
1967
+
1968
+ /*
1969
+ * pg_largeobject_metadata
1970
+ */
1971
+ if (g_fout -> remoteVersion >= 90000 )
1972
+ {
1973
+ resetPQExpBuffer (loFrozenQry );
1974
+ resetPQExpBuffer (loOutQry );
1975
+
1976
+ appendPQExpBuffer (loFrozenQry , "SELECT relfrozenxid\n"
1977
+ "FROM pg_catalog.pg_class\n"
1978
+ "WHERE oid = %u;\n" ,
1979
+ LargeObjectMetadataRelationId );
1980
+
1981
+ lo_res = PQexec (g_conn , loFrozenQry -> data );
1982
+ check_sql_result (lo_res , g_conn , loFrozenQry -> data , PGRES_TUPLES_OK );
1983
+
1984
+ if (PQntuples (lo_res ) != 1 )
1985
+ {
1986
+ write_msg (NULL , "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" );
1987
+ exit_nicely ();
1988
+ }
1989
+
1990
+ i_relfrozenxid = PQfnumber (lo_res , "relfrozenxid" );
1991
+
1992
+ appendPQExpBuffer (loOutQry , "\n-- For binary upgrade, set pg_largeobject_metadata.relfrozenxid\n" );
1993
+ appendPQExpBuffer (loOutQry , "UPDATE pg_catalog.pg_class\n"
1994
+ "SET relfrozenxid = '%u'\n"
1995
+ "WHERE oid = %u;\n" ,
1996
+ atoi (PQgetvalue (lo_res , 0 , i_relfrozenxid )),
1997
+ LargeObjectMetadataRelationId );
1998
+ ArchiveEntry (AH , nilCatalogId , createDumpId (),
1999
+ "pg_largeobject_metadata" , NULL , NULL , "" ,
2000
+ false, "pg_largeobject_metadata" , SECTION_PRE_DATA ,
2001
+ loOutQry -> data , "" , NULL ,
2002
+ NULL , 0 ,
2003
+ NULL , NULL );
2004
+
2005
+ PQclear (lo_res );
2006
+ }
2007
+
1963
2008
destroyPQExpBuffer (loFrozenQry );
1964
2009
destroyPQExpBuffer (loOutQry );
1965
2010
}
@@ -12176,7 +12221,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
12176
12221
}
12177
12222
}
12178
12223
12179
- appendPQExpBuffer (q , "\n-- For binary upgrade, set relfrozenxid. \n" );
12224
+ appendPQExpBuffer (q , "\n-- For binary upgrade, set relfrozenxid\n" );
12180
12225
appendPQExpBuffer (q , "UPDATE pg_catalog.pg_class\n"
12181
12226
"SET relfrozenxid = '%u'\n"
12182
12227
"WHERE oid = " ,
0 commit comments