Fix OID bootstraping.
authorVadim B. Mikheev
Tue, 21 Nov 2000 09:39:57 +0000 (09:39 +0000)
committerVadim B. Mikheev
Tue, 21 Nov 2000 09:39:57 +0000 (09:39 +0000)
src/backend/access/transam/xlog.c
src/backend/bootstrap/bootstrap.c

index 22f93190f70cd8e45bc84830690b567eac20ee86..6d6d8edbda5249bb19e5c66513779411bdc9aaa2 100644 (file)
@@ -6,7 +6,7 @@
  * 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 $
  *
  *-------------------------------------------------------------------------
  */
@@ -251,7 +251,7 @@ XLogInsert(RmgrId rmid, uint8 info, char *hdr, uint32 hdrlen, char *buf, uint32
    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 */
@@ -506,7 +506,7 @@ XLogFlush(XLogRecPtr record)
        fflush(stderr);
    }
 
-   if (IsBootstrapProcessingMode() || InRedo)
+   if (InRedo)
        return;
    if (XLByteLE(record, LgwrResult.Flush))
        return;
@@ -1326,8 +1326,7 @@ BootStrapXLOG()
 
 #endif
 
-   memset(buffer, 0, BLCKSZ);
-   ControlFile = (ControlFileData *) buffer;
+   memset(ControlFile, 0, BLCKSZ);
    ControlFile->logId = 0;
    ControlFile->logSeg = 1;
    ControlFile->checkPoint = checkPoint.redo;
@@ -1337,7 +1336,7 @@ BootStrapXLOG()
    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)
index e40dc7d7ca7bbd185662e120c293d79a3e9fb3eb..fe3ca265e9f48988b33b73d8a0ed2f3e32673e20 100644 (file)
@@ -8,7 +8,7 @@
  * 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 $
  *
  *-------------------------------------------------------------------------
  */
@@ -341,32 +341,33 @@ BootstrapMain(int argc, char *argv[])
    /*
     * 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
@@ -407,9 +408,9 @@ BootstrapMain(int argc, char *argv[])
     */
    Int_yyparse();
 
-#ifdef XLOG
-   FlushBufferPool();
-#endif
+   SetProcessingMode(NormalProcessing);
+   CreateCheckPoint(true);
+   SetProcessingMode(BootstrapProcessing);
 
    /* clean up processing */
    StartTransactionCommand();