* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.29 2000/11/21 02:11:06 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.30 2000/11/21 09:39:56 vadim Exp $
*
*-------------------------------------------------------------------------
*/
if (len == 0 || len > MAXLOGRECSZ)
elog(STOP, "XLogInsert: invalid record len %u", len);
- if (IsBootstrapProcessingMode())
+ if (IsBootstrapProcessingMode() && rmid != RM_XLOG_ID)
{
RecPtr.xlogid = 0;
RecPtr.xrecoff = SizeOfXLogPHD; /* start of 1st checkpoint record */
fflush(stderr);
}
- if (IsBootstrapProcessingMode() || InRedo)
+ if (InRedo)
return;
if (XLByteLE(record, LgwrResult.Flush))
return;
#endif
- memset(buffer, 0, BLCKSZ);
- ControlFile = (ControlFileData *) buffer;
+ memset(ControlFile, 0, BLCKSZ);
ControlFile->logId = 0;
ControlFile->logSeg = 1;
ControlFile->checkPoint = checkPoint.redo;
ControlFile->relseg_size = RELSEG_SIZE;
ControlFile->catalog_version_no = CATALOG_VERSION_NO;
- if (write(fd, buffer, BLCKSZ) != BLCKSZ)
+ if (write(fd, ControlFile, BLCKSZ) != BLCKSZ)
elog(STOP, "BootStrapXLOG failed to write control file: %d", errno);
if (fsync(fd) != 0)
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.98 2000/11/09 11:25:58 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.99 2000/11/21 09:39:57 vadim Exp $
*
*-------------------------------------------------------------------------
*/
/*
* XLOG operations
*/
- if (xlogop != BS_XLOG_NOP)
+ snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
+ snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
+ SetProcessingMode(NormalProcessing);
+ if (xlogop == BS_XLOG_NOP)
+ StartupXLOG();
+ else if (xlogop == BS_XLOG_BOOTSTRAP)
{
- snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
- snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
- if (xlogop == BS_XLOG_BOOTSTRAP)
- BootStrapXLOG();
- else
+ BootStrapXLOG();
+ StartupXLOG();
+ }
+ else
+ {
+ if (xlogop == BS_XLOG_CHECKPOINT)
{
- SetProcessingMode(NormalProcessing);
- if (xlogop == BS_XLOG_STARTUP)
- StartupXLOG();
- else if (xlogop == BS_XLOG_CHECKPOINT)
- {
-#ifdef XLOG
- extern void CreateDummyCaches(void);
- CreateDummyCaches();
-#endif
- CreateCheckPoint(false);
- }
- else if (xlogop == BS_XLOG_SHUTDOWN)
- ShutdownXLOG();
- else
- elog(STOP, "Unsupported XLOG op %d", xlogop);
- proc_exit(0);
+ extern void CreateDummyCaches(void);
+ CreateDummyCaches();
+ CreateCheckPoint(false);
}
+ else if (xlogop == BS_XLOG_STARTUP)
+ StartupXLOG();
+ else if (xlogop == BS_XLOG_SHUTDOWN)
+ ShutdownXLOG();
+ else
+ elog(STOP, "Unsupported XLOG op %d", xlogop);
+ proc_exit(0);
}
+ SetProcessingMode(BootstrapProcessing);
/*
* backend initialization
*/
Int_yyparse();
-#ifdef XLOG
- FlushBufferPool();
-#endif
+ SetProcessingMode(NormalProcessing);
+ CreateCheckPoint(true);
+ SetProcessingMode(BootstrapProcessing);
/* clean up processing */
StartTransactionCommand();