]> granicus.if.org Git - postgresql/commitdiff
Reverse out XLogDir/-X write-ahead log handling, per discussion.
authorBruce Momjian <bruce@momjian.us>
Sat, 17 Aug 2002 15:12:07 +0000 (15:12 +0000)
committerBruce Momjian <bruce@momjian.us>
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);