Thread: pgsql: pg_upgrade: preserve database and relation minmxid values
pg_upgrade: preserve database and relation minmxid values Also set these values for pre-9.3 old clusters that don't have values to preserve. Analysis by Alvaro Backpatch through 9.3 Branch ------ REL9_4_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/b446a384b7c231e3fa10dfb0fbc9247a6b329348 Modified Files -------------- contrib/pg_upgrade/pg_upgrade.c | 68 +++++++++++++------- contrib/pg_upgrade/server.c | 13 ++-- src/bin/pg_dump/pg_dump.c | 132 ++++++++++++++++++++++++++------------- src/bin/pg_dump/pg_dump.h | 2 + src/bin/pg_dump/pg_dumpall.c | 39 +++++++----- 5 files changed, 171 insertions(+), 83 deletions(-)
Hi, On 2014-07-02 19:29:43 +0000, Bruce Momjian wrote: > pg_upgrade: preserve database and relation minmxid values > > Also set these values for pre-9.3 old clusters that don't have values to > preserve. > > Analysis by Alvaro > > Backpatch through 9.3 My compiler quite correctly complains about misleading indentation introduced by this commit: /home/andres/src/postgresql-9.3/src/bin/pg_dump/pg_dump.c:2475:4: warning: statement is indented as if it were guarded by...[-Wmisleading-indentation] lo_res = ExecuteSqlQueryForSingleRow(fout, loFrozenQry->data); ^~~~~~ /home/andres/src/postgresql-9.3/src/bin/pg_dump/pg_dump.c:2469:3: note: ...this 'else' clause, but it is not else ^~~~ The code in question is: /* * pg_largeobject_metadata */ if (fout->remoteVersion >= 90000) { resetPQExpBuffer(loFrozenQry); resetPQExpBuffer(loOutQry); if (fout->remoteVersion >= 90300) appendPQExpBuffer(loFrozenQry, "SELECT relfrozenxid, relminmxid\n" "FROM pg_catalog.pg_class\n" "WHERE oid = %u;\n", LargeObjectMetadataRelationId); else appendPQExpBuffer(loFrozenQry, "SELECT relfrozenxid, 0 AS relminmxid\n" "FROM pg_catalog.pg_class\n" "WHERE oid = %u;\n", LargeObjectMetadataRelationId); lo_res = ExecuteSqlQueryForSingleRow(fout, loFrozenQry->data); This appears to have been the result of a somewhat incorrectly resolved conflict in 9.3/9.4 (master/9.5 don't show the problem). Regards, Andres
On Sun, Mar 27, 2016 at 05:44:51PM +0200, Andres Freund wrote: > Hi, > > On 2014-07-02 19:29:43 +0000, Bruce Momjian wrote: > > pg_upgrade: preserve database and relation minmxid values > > > > Also set these values for pre-9.3 old clusters that don't have values to > > preserve. > > > > Analysis by Alvaro > > > > Backpatch through 9.3 > > My compiler quite correctly complains about misleading indentation > introduced by this commit: > > /home/andres/src/postgresql-9.3/src/bin/pg_dump/pg_dump.c:2475:4: warning: statement is indented as if it were guardedby... [-Wmisleading-indentation] > lo_res = ExecuteSqlQueryForSingleRow(fout, loFrozenQry->data); > ^~~~~~ > /home/andres/src/postgresql-9.3/src/bin/pg_dump/pg_dump.c:2469:3: note: ...this 'else' clause, but it is not > else > ^~~~ > > The code in question is: > /* > * pg_largeobject_metadata > */ > if (fout->remoteVersion >= 90000) > { > resetPQExpBuffer(loFrozenQry); > resetPQExpBuffer(loOutQry); > > if (fout->remoteVersion >= 90300) > appendPQExpBuffer(loFrozenQry, "SELECT relfrozenxid, relminmxid\n" > "FROM pg_catalog.pg_class\n" > "WHERE oid = %u;\n", > LargeObjectMetadataRelationId); > else > appendPQExpBuffer(loFrozenQry, "SELECT relfrozenxid, 0 AS relminmxid\n" > "FROM pg_catalog.pg_class\n" > "WHERE oid = %u;\n", > LargeObjectMetadataRelationId); > > lo_res = ExecuteSqlQueryForSingleRow(fout, loFrozenQry->data); > > This appears to have been the result of a somewhat incorrectly resolved > conflict in 9.3/9.4 (master/9.5 don't show the problem). Thanks, indentation fixed. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + As you are, so once was I. As I am, so you will be. + + Ancient Roman grave inscription +