Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4e03b82

Browse files
committed
Properly restore pg_largeobject.relfozenxid in binary upgrade mode.
Backpatch to 8.4.X.
1 parent396a493 commit4e03b82

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

‎src/bin/pg_dump/pg_dump.c

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*by PostgreSQL
1313
*
1414
* IDENTIFICATION
15-
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.540 2009/07/02 21:34:32 tgl Exp $
15+
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.541 2009/07/20 20:53:40 momjian Exp $
1616
*
1717
*-------------------------------------------------------------------------
1818
*/
@@ -34,6 +34,7 @@
3434
#include"access/sysattr.h"
3535
#include"catalog/pg_cast.h"
3636
#include"catalog/pg_class.h"
37+
#include"catalog/pg_largeobject.h"
3738
#include"catalog/pg_proc.h"
3839
#include"catalog/pg_trigger.h"
3940
#include"catalog/pg_type.h"
@@ -1739,6 +1740,7 @@ dumpDatabase(Archive *AH)
17391740
frozenxid);
17401741
appendStringLiteralAH(creaQry,datname,AH);
17411742
appendPQExpBuffer(creaQry,";\n");
1743+
17421744
}
17431745

17441746
appendPQExpBuffer(delQry,"DROP DATABASE %s;\n",
@@ -1764,6 +1766,51 @@ dumpDatabase(Archive *AH)
17641766
NULL,/* Dumper */
17651767
NULL);/* Dumper Arg */
17661768

1769+
/*
1770+
*pg_largeobject comes from the old system intact, so set
1771+
*its relfrozenxid.
1772+
*/
1773+
if (binary_upgrade)
1774+
{
1775+
PGresult*lo_res;
1776+
PQExpBufferloFrozenQry=createPQExpBuffer();
1777+
PQExpBufferloOutQry=createPQExpBuffer();
1778+
inti_relfrozenxid;
1779+
1780+
appendPQExpBuffer(loFrozenQry,"SELECT relfrozenxid\n"
1781+
"FROM pg_catalog.pg_class\n"
1782+
"WHERE oid = %d;\n",
1783+
LargeObjectRelationId);
1784+
1785+
lo_res=PQexec(g_conn,loFrozenQry->data);
1786+
check_sql_result(lo_res,g_conn,loFrozenQry->data,PGRES_TUPLES_OK);
1787+
1788+
if (PQntuples(lo_res)!=1)
1789+
{
1790+
write_msg(NULL,"dumpDatabase(): could not find pg_largeobject.relfrozenxid\n");
1791+
exit_nicely();
1792+
}
1793+
1794+
i_relfrozenxid=PQfnumber(lo_res,"relfrozenxid");
1795+
1796+
appendPQExpBuffer(loOutQry,"\n-- For binary upgrade, set pg_largeobject relfrozenxid.\n");
1797+
appendPQExpBuffer(loOutQry,"UPDATE pg_catalog.pg_class\n"
1798+
"SET relfrozenxid = '%u'\n"
1799+
"WHERE oid = %d;\n",
1800+
atoi(PQgetvalue(lo_res,0,i_relfrozenxid)),
1801+
LargeObjectRelationId);
1802+
ArchiveEntry(AH,nilCatalogId,createDumpId(),
1803+
"pg_largeobject",NULL,NULL,"",
1804+
false,"pg_largeobject",SECTION_PRE_DATA,
1805+
loOutQry->data,"",NULL,
1806+
NULL,0,
1807+
NULL,NULL);
1808+
1809+
PQclear(lo_res);
1810+
destroyPQExpBuffer(loFrozenQry);
1811+
destroyPQExpBuffer(loOutQry);
1812+
}
1813+
17671814
/* Dump DB comment if any */
17681815
if (g_fout->remoteVersion >=80200)
17691816
{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp