Reverse out XLogDir/-X write-ahead log handling, per discussion.
authorBruce Momjian
Sat, 17 Aug 2002 15:12:07 +0000 (15:12 +0000)
committerBruce Momjian
Sat, 17 Aug 2002 15:12:07 +0000 (15:12 +0000)
Original patch from Thomas.

src/backend/access/transam/xlog.c
src/backend/bootstrap/bootstrap.c
src/backend/postmaster/postmaster.c
src/backend/tcop/postgres.c
src/bin/initdb/initdb.sh
src/bin/pg_ctl/pg_ctl.sh
src/bin/pg_resetxlog/pg_resetxlog.c
src/include/access/xlog.h

index fbe61e5691c47a231bf35476c368ca8beb9437ce..de963ccbd49ff4c906ebfcb8e5da2737943ae2fe 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.101 2002/08/06 02:36:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.102 2002/08/17 15:12:06 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -398,8 +398,7 @@ static ControlFileData *ControlFile = NULL;
 
 
 /* File path names */
-char *XLogDir = NULL;
-
+static char XLogDir[MAXPGPATH];
 static char ControlFilePath[MAXPGPATH];
 
 /*
@@ -2075,29 +2074,11 @@ ValidXLOGHeader(XLogPageHeader hdr, int emode, bool checkSUI)
  * I/O and compatibility-check functions, but there seems no need currently.
  */
 
-void
-SetXLogDir(char *path)
-{
-   char *xsubdir = "/pg_xlog";
-
-   if (path != NULL)
-   {
-       XLogDir = malloc(strlen(path)+1);
-       strcpy(XLogDir, path);
-   }
-   else
-   {
-       XLogDir = malloc(strlen(DataDir)+strlen(xsubdir)+1);
-       snprintf(XLogDir, MAXPGPATH, "%s%s", DataDir, xsubdir);
-   }
-}
-
 void
 XLOGPathInit(void)
 {
    /* Init XLOG file paths */
-   if (XLogDir == NULL)
-       SetXLogDir(NULL);
+   snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
    snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
 }
 
index d2afa647688b2b5c36777239d452533e5f41a552..ae4a86d1d4298d7496af783a549252de4f686c32 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.137 2002/08/10 20:29:17 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.138 2002/08/17 15:12:06 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -222,7 +222,6 @@ BootstrapMain(int argc, char *argv[])
    int         flag;
    int         xlogop = BS_XLOG_NOP;
    char       *potential_DataDir = NULL;
-   char       *potential_XLogDir = NULL;
 
    /*
     * initialize globals
@@ -249,22 +248,17 @@ BootstrapMain(int argc, char *argv[])
    if (!IsUnderPostmaster)
    {
        InitializeGUCOptions();
-       /* Null if no PGDATA variable */
-       potential_DataDir = getenv("PGDATA");
-       /* Null if no PGXLOG variable */
-       potential_XLogDir = getenv("PGXLOG");
+       potential_DataDir = getenv("PGDATA");   /* Null if no PGDATA
+                                                * variable */
    }
 
-   while ((flag = getopt(argc, argv, "B:d:D:X:Fo:px:")) != -1)
+   while ((flag = getopt(argc, argv, "B:d:D:Fo:px:")) != -1)
    {
        switch (flag)
        {
            case 'D':
                potential_DataDir = optarg;
                break;
-           case 'X':
-               potential_XLogDir = optarg;
-               break;
            case 'd':
            {
                /* Turn on debugging for the bootstrap process. */
@@ -319,7 +313,6 @@ BootstrapMain(int argc, char *argv[])
            proc_exit(1);
        }
        SetDataDir(potential_DataDir);
-       SetXLogDir(potential_XLogDir);
    }
 
    /* Validate we have been given a reasonable-looking DataDir */
index 1c70c4f0ecd7a0ef759143a100a582ed44795c56..f67a8b64a349067d7bd6bcd5890d5e4d6520c7ce 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.283 2002/08/10 20:29:18 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.284 2002/08/17 15:12:06 momjian Exp $
  *
  * NOTES
  *
@@ -346,7 +346,6 @@ PostmasterMain(int argc, char *argv[])
    int         status;
    char        original_extraoptions[MAXPGPATH];
    char       *potential_DataDir = NULL;
-   char       *potential_XLogDir = NULL;
 
    *original_extraoptions = '\0';
 
@@ -404,11 +403,10 @@ PostmasterMain(int argc, char *argv[])
    InitializeGUCOptions();
 
    potential_DataDir = getenv("PGDATA");       /* default value */
-   potential_XLogDir = getenv("PGXLOG");       /* default value */
 
    opterr = 1;
 
-   while ((opt = getopt(argc, argv, "A:a:B:b:c:D:X:d:Fh:ik:lm:MN:no:p:Ss-:")) != -1)
+   while ((opt = getopt(argc, argv, "A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:Ss-:")) != -1)
    {
        switch (opt)
        {
@@ -431,9 +429,6 @@ PostmasterMain(int argc, char *argv[])
            case 'D':
                potential_DataDir = optarg;
                break;
-           case 'X':
-               potential_XLogDir = optarg;
-               break;
            case 'd':
            {
                /* Turn on debugging for the postmaster. */
@@ -568,7 +563,6 @@ PostmasterMain(int argc, char *argv[])
 
    checkDataDir(potential_DataDir);    /* issues error messages */
    SetDataDir(potential_DataDir);
-   SetXLogDir(potential_XLogDir);
 
    ProcessConfigFile(PGC_POSTMASTER);
 
index 5c0a07bfaa9fff315d9883803bca6846c9f14b27..605f44ba70b9f7ac9c5a50f598219f407f4341e8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.282 2002/08/15 16:36:05 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.283 2002/08/17 15:12:07 momjian Exp $
  *
  * NOTES
  *   this is the "main" module of the postgres backend and
@@ -1120,7 +1120,6 @@ PostgresMain(int argc, char *argv[], const char *username)
    StringInfo  parser_input;
 
    char       *potential_DataDir = NULL;
-   char       *potential_XLogDir = NULL;
 
    /*
     * Catch standard options before doing much else.  This even works on
@@ -1164,7 +1163,6 @@ PostgresMain(int argc, char *argv[], const char *username)
    {
        InitializeGUCOptions();
        potential_DataDir = getenv("PGDATA");
-       potential_XLogDir = getenv("PGXLOG");
    }
 
    /* ----------------
@@ -1189,7 +1187,7 @@ PostgresMain(int argc, char *argv[], const char *username)
    ctx = PGC_POSTMASTER;
    gucsource = PGC_S_ARGV;     /* initial switches came from command line */
 
-   while ((flag = getopt(argc, argv, "A:B:c:CD:X:d:Eef:FiNOPo:p:S:st:v:W:x:-:")) != -1)
+   while ((flag = getopt(argc, argv, "A:B:c:CD:d:Eef:FiNOPo:p:S:st:v:W:x:-:")) != -1)
        switch (flag)
        {
            case 'A':
@@ -1221,11 +1219,6 @@ PostgresMain(int argc, char *argv[], const char *username)
                    potential_DataDir = optarg;
                break;
 
-           case 'X':           /* PGXLOG directory */
-               if (secure)
-                   potential_XLogDir = optarg;
-               break;
-
            case 'd':           /* debug level */
                {
                    /* Set server debugging level. */
@@ -1517,7 +1510,6 @@ PostgresMain(int argc, char *argv[], const char *username)
            proc_exit(1);
        }
        SetDataDir(potential_DataDir);
-       SetXLogDir(potential_XLogDir);
    }
    Assert(DataDir);
 
@@ -1674,7 +1666,7 @@ PostgresMain(int argc, char *argv[], const char *username)
    if (!IsUnderPostmaster)
    {
        puts("\nPOSTGRES backend interactive interface ");
-       puts("$Revision: 1.282 $ $Date: 2002/08/15 16:36:05 $\n");
+       puts("$Revision: 1.283 $ $Date: 2002/08/17 15:12:07 $\n");
    }
 
    /*
index 37249c1f79c0eac0d0183211ed1d7cd68c931eea..f361d0ace75e4a0caf0283d10f42087c1b815d01 100644 (file)
@@ -27,7 +27,7 @@
 # Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.167 2002/08/17 13:04:15 momjian Exp $
+# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.168 2002/08/17 15:12:07 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -252,19 +252,6 @@ do
         -D*)
                 PGDATA=`echo $1 | sed 's/^-D//'`
                 ;;
-# Directory to hold WAL log files.
-        --pgxlog|-X)
-                PGXLOG="$2"
-                defined_pgxlog=yes
-                shift;;
-        --pgxlog=*)
-                PGXLOG=`echo $1 | sed 's/^--pgxlog=//'`
-                defined_pgxlog=yes
-                ;;
-        -X*)
-                PGXLOG=`echo $1 | sed 's/^-X//'`
-                defined_pgxlog=yes
-                ;;
 # The directory where the .bki input files are stored. Normally
 # they are in PREFIX/share and this option should be unnecessary.
         -L)
@@ -354,7 +341,6 @@ if [ "$usage" ]; then
     echo
     echo "Options:"
     echo " [-D, --pgdata] DATADIR       Location for this database cluster"
-    echo " [-X, --pgxlog] XLOGDIR       Location for the cluster transaction logs"
     echo "  -W, --pwprompt              Prompt for a password for the new superuser"
     if [ -n "$MULTIBYTE" ] ; then 
         echo "  -E, --encoding ENCODING     Set default encoding for new databases"
@@ -415,11 +401,6 @@ then
     exit 1
 fi
 
-if [ -z "$PGXLOG" ]
-then
-    PGXLOG="$PGDATA"/pg_xlog
-fi
-
 
 #-------------------------------------------------------------------------
 # Find the input files
@@ -437,7 +418,7 @@ then
   (
     echo
     echo "initdb variables:"
-    for var in PGDATA PGXLOG datadir PGPATH MULTIBYTE MULTIBYTEID \
+    for var in PGDATA datadir PGPATH MULTIBYTE MULTIBYTEID \
         POSTGRES_SUPERUSERNAME POSTGRES_BKI \
         POSTGRES_DESCR POSTGRESQL_CONF_SAMPLE \
    PG_HBA_SAMPLE PG_IDENT_SAMPLE ; do
@@ -522,61 +503,44 @@ then
       echo "$CMDNAME: The directory $PGDATA exists but is not empty."
       echo "If you want to create a new database system, either remove or empty"
       echo "the directory $PGDATA or run initdb with"
-      echo "an argument for -D other than $PGDATA."
+      echo "an argument other than $PGDATA."
     ) 1>&2
     exit 1
-fi
-
-# find out if transaction log directory is empty
-pgxlog_contents=`ls -A "$PGXLOG" 2>/dev/null`
-if [ x"$pgxlog_contents" != x ]
-then
-    (
-      echo "$CMDNAME: The directory $PGXLOG exists but is not empty."
-      echo "If you want to create a new transaction log, either remove or empty"
-      echo "the directory $PGXLOG or run initdb with"
-      echo "an argument for -X other than $PGXLOG."
-    ) 1>&2
-    exit 1
-fi
-
-if [ ! -d "$PGDATA" ]; then
-    $ECHO_N "creating directory $PGDATA... "$ECHO_C
-    mkdir -p "$PGDATA" >/dev/null 2>&1 || mkdir "$PGDATA" || exit_nicely
-    made_new_pgdata=yes
-else
-    $ECHO_N "Fixing permissions on existing directory $PGDATA... "$ECHO_C
-chmod go-rwx "$PGDATA" || exit_nicely
-fi
-echo "ok"
-
-if [ ! -d "$PGXLOG" ]; then
-    $ECHO_N "creating directory $PGXLOG... "$ECHO_C
-    mkdir -p "$PGXLOG" >/dev/null 2>&1 || mkdir "$PGXLOG" || exit_nicely
-    made_new_pgxlog=yes
 else
-    $ECHO_N "Fixing permissions on existing directory $PGXLOG... "$ECHO_C
-chmod go-rwx "$PGXLOG" || exit_nicely
-fi
-echo "ok"
+    if [ ! -d "$PGDATA" ]; then
+        $ECHO_N "creating directory $PGDATA... "$ECHO_C
+        mkdir -p "$PGDATA" >/dev/null 2>&1 || mkdir "$PGDATA" || exit_nicely
+        made_new_pgdata=yes
+    else
+        $ECHO_N "Fixing permissions on existing directory $PGDATA... "$ECHO_C
+   chmod go-rwx "$PGDATA" || exit_nicely
+    fi
+    echo "ok"
 
-if [ ! -d "$PGDATA"/base ]
-then
-    $ECHO_N "creating directory $PGDATA/base... "$ECHO_C
-    mkdir "$PGDATA"/base || exit_nicely
-echo "ok"
-fi
-if [ ! -d "$PGDATA"/global ]
-then
-    $ECHO_N "creating directory $PGDATA/global... "$ECHO_C
-    mkdir "$PGDATA"/global || exit_nicely
-echo "ok"
-fi
-if [ ! -d "$PGDATA"/pg_clog ]
-then
-    $ECHO_N "creating directory $PGDATA/pg_clog... "$ECHO_C
-    mkdir "$PGDATA"/pg_clog || exit_nicely
-echo "ok"
+    if [ ! -d "$PGDATA"/base ]
+   then
+        $ECHO_N "creating directory $PGDATA/base... "$ECHO_C
+        mkdir "$PGDATA"/base || exit_nicely
+   echo "ok"
+    fi
+    if [ ! -d "$PGDATA"/global ]
+    then
+        $ECHO_N "creating directory $PGDATA/global... "$ECHO_C
+        mkdir "$PGDATA"/global || exit_nicely
+   echo "ok"
+    fi
+    if [ ! -d "$PGDATA"/pg_xlog ]
+    then
+        $ECHO_N "creating directory $PGDATA/pg_xlog... "$ECHO_C
+        mkdir "$PGDATA"/pg_xlog || exit_nicely
+   echo "ok"
+    fi
+    if [ ! -d "$PGDATA"/pg_clog ]
+    then
+        $ECHO_N "creating directory $PGDATA/pg_clog... "$ECHO_C
+        mkdir "$PGDATA"/pg_clog || exit_nicely
+   echo "ok"
+    fi
 fi
 
 
@@ -585,7 +549,7 @@ fi
 # RUN BKI SCRIPT IN BOOTSTRAP MODE TO CREATE TEMPLATE1
 
 # common backend options
-PGSQL_OPT="-F -D$PGDATA -X$PGXLOG"
+PGSQL_OPT="-F -D$PGDATA"
 
 if [ "$debug" = yes ]
 then
@@ -1130,24 +1094,14 @@ echo "ok"
 #
 # FINISHED
 
-postmaster_startup="$PGPATH/postmaster -D $PGDATA"
-if [ x"$defined_pgxlog" != x ]; then
-    postmaster_startup="$postmaster_startup -X $PGXLOG"
-fi
-pg_ctl_startup="$PGPATH/pg_ctl -D $PGDATA"
-if [ x"$defined_pgxlog" != x ]; then
-    pg_ctl_startup="$pg_ctl_startup -X $PGXLOG"
-fi
-pg_ctl_startup="$pg_ctl_startup -l logfile start"
-
 echo
 echo "Success. You can now start the database server using:"
 echo ""
-echo "    $postmaster_startup"
+echo "    $PGPATH/postmaster -D $PGDATA"
 echo "or"
 # (Advertise -l option here, otherwise we have a background
 #  process writing to the terminal.)
-echo "    $pg_ctl_startup"
+echo "    $PGPATH/pg_ctl -D $PGDATA -l logfile start"
 echo
 
 exit 0
index 28459274d6c67dca1dddcf7639cc50e25aa6204e..467c56774f4c9525e8a7d4e8305952642ad45238 100755 (executable)
@@ -8,7 +8,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.28 2002/08/04 06:26:38 thomas Exp $
+#    $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.29 2002/08/17 15:12:07 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -19,23 +19,20 @@ $CMDNAME is a utility to start, stop, restart, reload configuration files,
 or report the status of a PostgreSQL server.
 
 Usage:
-  $CMDNAME start   [-w] [-D DATADIR] [-s] [-X PGXLOG] [-l FILENAME] [-o \"OPTIONS\"]
+  $CMDNAME start   [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]
   $CMDNAME stop    [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]
-  $CMDNAME restart [-w] [-D DATADIR] [-s] [-X PGXLOG] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]
+  $CMDNAME restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]
   $CMDNAME reload  [-D DATADIR] [-s]
   $CMDNAME status  [-D DATADIR]
 
 Common options:
   -D DATADIR            Location of the database storage area
-  -X XLOGDIR            Location of the WAL log file storage area
   -s                    Only print errors, no informational messages
   -w                    Wait until operation completes
   -W                    Do not wait until operation completes
 (The default is to wait for shutdown, but not for start or restart.)
 
 If the -D option is omitted, the environment variable PGDATA is used.
-If the -X option is omitted, the environment variable PGXLOG is used
-or the postmaster defaults to looking in $PGDATA/pg_xlog.
 
 Options for start or restart:
   -l FILENAME           Write (or append) server log to FILENAME.  The
@@ -135,12 +132,6 @@ do
        PGDATA="$1"
        export PGDATA
        ;;
-   -X)
-       shift
-       # pass environment into new postmaster
-       PGXLOG="$1"
-       export PGXLOG
-       ;;
    -l)
        logfile="$2"
        shift;;
index 72488f87ddc8a9254421a3bba8d1d33e3bae650e..adf5650798f7219c3f99dc6fa48d2e37302e0cba 100644 (file)
@@ -23,7 +23,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.1 2002/08/17 02:44:24 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.2 2002/08/17 15:12:07 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -67,7 +67,7 @@
 
 
 static char *DataDir;          /* locations of important stuff */
-static char *XLogDir;
+static char XLogDir[MAXPGPATH];
 static char ControlFilePath[MAXPGPATH];
 
 static ControlFileData ControlFile;        /* pg_control values */
@@ -527,7 +527,6 @@ main(int argc, char **argv)
 
    DataDir = argv[argn++];
 
-   XLogDir=malloc(MAXPGPATH);
    snprintf(XLogDir, MAXPGPATH, "%s/pg_xlog", DataDir);
 
    snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
index 132fef26c882d7529b9ff527aaace3bb13e7fc5b..d249df47b6e9adb37a5df32cfb1323de32d56a2f 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: xlog.h,v 1.34 2002/08/06 02:36:35 tgl Exp $
+ * $Id: xlog.h,v 1.35 2002/08/17 15:12:07 momjian Exp $
  */
 #ifndef XLOG_H
 #define XLOG_H
@@ -175,9 +175,6 @@ typedef struct XLogRecData
    struct XLogRecData *next;
 } XLogRecData;
 
-/* XLOG directory name */
-extern char *XLogDir;
-
 extern StartUpID ThisStartUpID; /* current SUI */
 extern bool InRecovery;
 extern XLogRecPtr MyLastRecPtr;
@@ -193,7 +190,6 @@ extern int  XLOG_DEBUG;
 extern char *XLOG_sync_method;
 extern const char XLOG_sync_method_default[];
 
-extern void SetXLogDir(char *path);
 
 extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata);
 extern void XLogFlush(XLogRecPtr RecPtr);