aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2006-04-26 18:56:56 +0000
committerBruce Momjian <bruce@momjian.us>2006-04-26 18:56:56 +0000
commit1865fb66fab30457917e19723afbc91bbecdac30 (patch)
treebd4977ed532d2862fee0ff445d1fced2c4dce35a
parent0a646e801ca1e00f204b503aadd4fa2c6a866f4e (diff)
downloadpostgresql-1865fb66fab30457917e19723afbc91bbecdac30.tar.gz
postgresql-1865fb66fab30457917e19723afbc91bbecdac30.zip
Add missing ControlFile.checkPointCopy.ThisTimeLineID line for 'guess'
pg_resetxlog. Simon
-rw-r--r--src/bin/pg_resetxlog/pg_resetxlog.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c
index 318dae29611..d1060023f9e 100644
--- a/src/bin/pg_resetxlog/pg_resetxlog.c
+++ b/src/bin/pg_resetxlog/pg_resetxlog.c
@@ -565,7 +565,7 @@ RestoreControlValues(int mode)
{
struct timeval tv;
char *localeptr;
- bool successed=true;
+ bool successed = true;
/*
* Set up a completely default set of pg_control values.
@@ -579,27 +579,30 @@ RestoreControlValues(int mode)
* update the checkpoint value in control file,by searching
* xlog segment file, or just guessing it.
*/
- if (mode == WAL)
- {
+ if (mode == WAL)
+ {
int result = SearchLastCheckpoint();
- if ( result > 0 ) /* The last checkpoint had been found. */
+
+ if (result > 0) /* The last checkpoint had been found. */
{
ControlFile.checkPointCopy = lastcheckpoint;
+ ControlFile.checkPointCopy.ThisTimeLineID = LastXLogFile->tli;
ControlFile.checkPoint = lastchkp;
ControlFile.prevCheckPoint = prevchkp;
+
ControlFile.logId = LastXLogFile->logid;
ControlFile.logSeg = LastXLogFile->seg + 1;
- ControlFile.checkPointCopy.ThisTimeLineID = LastXLogFile->tli;
ControlFile.state = state;
- } else successed = false;
+ }
+ else
+ successed = false;
/* Clean up the list. */
CleanUpList(xlogfilelist);
-
- }
-
- if (mode == GUESS)
+ }
+ else /* GUESS */
{
+ ControlFile.checkPointCopy.ThisTimeLineID = 2;
ControlFile.checkPointCopy.redo.xlogid = 0;
ControlFile.checkPointCopy.redo.xrecoff = SizeOfXLogLongPHD;
ControlFile.checkPointCopy.undo = ControlFile.checkPointCopy.redo;
@@ -609,6 +612,7 @@ RestoreControlValues(int mode)
ControlFile.checkPointCopy.nextMultiOffset = 0;
ControlFile.checkPointCopy.time = time(NULL);
ControlFile.checkPoint = ControlFile.checkPointCopy.redo;
+
/*
* Create a new unique installation identifier, since we can no longer
* use any old XLOG records. See notes in xlog.c about the algorithm.
@@ -644,6 +648,7 @@ RestoreControlValues(int mode)
exit(1);
}
StrNCpy(ControlFile.lc_collate, localeptr, LOCALE_NAME_BUFLEN);
+
localeptr = setlocale(LC_CTYPE, "");
if (!localeptr)
{