Re: pg_resetxlog to clear backup start/end locations. - Mailing list pgsql-hackers

From Kyotaro HORIGUCHI
Subject Re: pg_resetxlog to clear backup start/end locations.
Date
Msg-id 20140627.122911.07964379.horiguchi.kyotaro@lab.ntt.co.jp
Whole thread Raw
In response to Re: pg_resetxlog to clear backup start/end locations.  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Responses Re: pg_resetxlog to clear backup start/end locations.
List pgsql-hackers
Hello, I have finished the patches for all of 9.x.

> I dont' touch what '-n' option shows and rewrite documents for
> the option a bit. And '-n' won't show the changes of backup
> location.

-8.4: does not have backup locations in ControlFileData.

9.0-9.1: resetxlog_backuploc_9_0-9.1.patch: Add clearance of backupStartPoint.

9.2: resetxlog_backuploc_9_2.patch: Add clearance of          backupStart/EndPoint and backupEndRequired

9.3: resetxlog_backuploc_9_3.patch: Ditto. (format of XLogRecPtr changed)

9.4-master: resetxlog_backuploc_9_4-master.patch: Add clearance of          backupPoints. help message and html doc
changed.

With these patches, pg_resetxlog saves the stuck after recovery
failure with wrongly placed backup label.

regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center
diff --git a/doc/src/sgml/ref/pg_resetxlog.sgml b/doc/src/sgml/ref/pg_resetxlog.sgml
index 34b0606..b543f04 100644
--- a/doc/src/sgml/ref/pg_resetxlog.sgml
+++ b/doc/src/sgml/ref/pg_resetxlog.sgml
@@ -175,12 +175,14 @@ PostgreSQL documentation  </para>  <para>
+   The <option>-n</> (no operation) option instructs   <command>pg_resetxlog</command> to print the values
reconstructedfrom
 
-   <filename>pg_control</> and values about to be changed, and then exit
-   without modifying anything. This is mainly a debugging tool, but can be
-   useful as a sanity check before allowing <command>pg_resetxlog</command>
-   to proceed for real.
+
+   <filename>pg_control</> and significant values about to be changed, and
+   then exit without modifying anything. This is mainly a debugging tool, but
+   can be useful as a sanity check before allowing
+   <command>pg_resetxlog</command> to proceed for real.  </para>  <para>
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c
index 915a1ed..9a80775 100644
--- a/src/bin/pg_resetxlog/pg_resetxlog.c
+++ b/src/bin/pg_resetxlog/pg_resetxlog.c
@@ -354,6 +354,10 @@ main(int argc, char *argv[])    if (minXlogSegNo > newXlogSegNo)        newXlogSegNo =
minXlogSegNo;
+    ControlFile.backupStartPoint = InvalidXLogRecPtr;
+    ControlFile.backupEndPoint = InvalidXLogRecPtr;
+    ControlFile.backupEndRequired = false;
+    /*     * If we had to guess anything, and -f was not given, just print the     * guessed values and exit.  Also
printif -n is given.
 
@@ -1083,7 +1087,7 @@ usage(void)    printf(_("  -f               force update to be done\n"));    printf(_("  -l
XLOGFILE     force minimum WAL starting location for new transaction log\n"));    printf(_("  -m MXID,MXID     set next
andoldest multitransaction ID\n"));
 
-    printf(_("  -n               no update, just show what would be done (for testing)\n"));
+    printf(_("  -n               no update, just show significant changes which would be done\n                   (for
testing)\n"));   printf(_("  -o OID           set next OID\n"));    printf(_("  -O OFFSET        set next
multitransactionoffset\n"));    printf(_("  -V, --version    output version information, then exit\n")); 
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c
index 38d03a3..e25ad64 100644
--- a/src/bin/pg_resetxlog/pg_resetxlog.c
+++ b/src/bin/pg_resetxlog/pg_resetxlog.c
@@ -350,6 +350,10 @@ main(int argc, char *argv[])    if (minXlogSegNo > newXlogSegNo)        newXlogSegNo =
minXlogSegNo;
+    ControlFile.backupStartPoint = InvalidXLogRecPtr;
+    ControlFile.backupEndPoint = InvalidXLogRecPtr;
+    ControlFile.backupEndRequired = false;
+    /*     * If we had to guess anything, and -f was not given, just print the     * guessed values and exit.  Also
printif -n is given. 
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c
index 92d98fc..dd1930c 100644
--- a/src/bin/pg_resetxlog/pg_resetxlog.c
+++ b/src/bin/pg_resetxlog/pg_resetxlog.c
@@ -341,6 +341,12 @@ main(int argc, char *argv[])        newXlogSeg = minXlogSeg;    }
+    ControlFile.backupStartPoint.xlogid = 0;
+    ControlFile.backupStartPoint.xrecoff = 0;
+    ControlFile.backupEndPoint.xlogid = 0;
+    ControlFile.backupEndPoint.xrecoff = 0;
+    ControlFile.backupEndRequired = false;
+    /*     * If we had to guess anything, and -f was not given, just print the     * guessed values and exit.  Also
printif -n is given. 
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c
index a120c6f..8ca1e2b 100644
--- a/src/bin/pg_resetxlog/pg_resetxlog.c
+++ b/src/bin/pg_resetxlog/pg_resetxlog.c
@@ -341,6 +341,9 @@ main(int argc, char *argv[])        newXlogSeg = minXlogSeg;    }
+    ControlFile.backupStartPoint.xlogid = 0;
+    ControlFile.backupStartPoint.xrecoff = 0;
+    /*     * If we had to guess anything, and -f was not given, just print the     * guessed values and exit.  Also
printif -n is given. 

pgsql-hackers by date:

Previous
From: Stephen Frost
Date:
Subject: Re: Window function optimisation, allow pushdowns of items matching PARTITION BY clauses
Next
From: Amit Kapila
Date:
Subject: Re: postgresql.auto.conf and reload