From 1865fb66fab30457917e19723afbc91bbecdac30 Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Wed, 26 Apr 2006 18:56:56 +0000 Subject: [PATCH] Add missing ControlFile.checkPointCopy.ThisTimeLineID line for 'guess' pg_resetxlog. Simon --- src/bin/pg_resetxlog/pg_resetxlog.c | 25 +++++++++++++++---------- 1 file 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) { -- GitLab