Make the 'wal_debug' GUC variable a boolean (rather than an integer), and
authorNeil Conway
Tue, 6 Jan 2004 17:26:23 +0000 (17:26 +0000)
committerNeil Conway
Tue, 6 Jan 2004 17:26:23 +0000 (17:26 +0000)
hide it behind #ifdef WAL_DEBUG blocks.

doc/src/sgml/ref/show.sgml
doc/src/sgml/runtime.sgml
doc/src/sgml/wal.sgml
src/backend/access/transam/xlog.c
src/backend/utils/misc/guc.c
src/include/access/xlog.h
src/include/pg_config_manual.h

index 3087c92d9e66d662e481b2cb7d8e9075bd3506a2..85dbfdcedcc911b65b408abdd9861a19f024abcd 100644 (file)
@@ -1,5 +1,5 @@
 
 
@@ -172,7 +172,7 @@ SHOW ALL;
     .
     .
     .
- wal_debug                     | 0
+ wal_debug                     | off
  wal_sync_method               | fdatasync
 (94 rows)
 
index 6caf5dd93acd74cdc2d6e49a69d9937612cda748..5ec155d24d9f886740c7a081102f51f1497a8ac8 100644 (file)
@@ -1,5 +1,5 @@
 
 
 
@@ -2667,10 +2667,13 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
      
 
      
-      wal_debug (integer)
+      wal_debug (boolean)
       
        
-        If nonzero, turn on WAL-related debugging output.
+        If true, emit WAL-related debugging output. This option is
+        only available if the WAL_DEBUG macro was
+        defined when PostgreSQL was
+        compiled.
        
       
      
index 0883f2024225b13c0031a5738ddf008383645ccb..8d0127b9f94a614e9999f91ac265dde21fc61aee 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
 
  Write-Ahead Logging (<acronym>WAL</acronym>)
    transaction processing. Briefly, WAL's central
    concept is that changes to data files (where tables and indexes
    reside) must be written only after those changes have been logged,
-   that is, when log records have been flushed to permanent
-   storage. If we follow this procedure, we do not need to flush
-   data pages to disk on every transaction commit, because we know
-   that in the event of a crash we will be able to recover the
+   that is, when log records describing the changes have been flushed
+   to permanent storage. If we follow this procedure, we do not need
+   to flush data pages to disk on every transaction commit, because we
+   know that in the event of a crash we will be able to recover the
    database using the log: any changes that have not been applied to
    the data pages will first be redone from the log records (this is
    roll-forward recovery, also known as REDO) and then changes made by
   
    There will be at least one 16 MB segment file, and will normally
    not be more than 2 * checkpoint_segments + 1
-   files.  You can use this to estimate space requirements for WAL.
+   files.  You can use this to estimate space requirements for WAL.
    Ordinarily, when old log segment files are no longer needed, they
    are recycled (renamed to become the next segments in the numbered
    sequence). If, due to a short-term peak of log output rate, there
   
    The wal_sync_method parameter determines how
    PostgreSQL will ask the kernel to force
-    WAL updates out to disk. 
+    WAL updates out to disk. 
    All the options should be the same as far as reliability goes,
    but it's quite platform-specific which one will be the fastest.
    Note that this parameter is irrelevant if fsync
   
 
   
-   Setting the wal_debug parameter to any nonzero
-   value will result in each LogInsert and
+   Enabling the wal_debug configuration parameter
+   will result in each LogInsert and
    LogFlush WAL call being
-   logged to the server log.  At present, it makes no difference what
-   the nonzero value is.  This option may be replaced by a more
+   logged to the server log. This option may be replaced by a more
    general mechanism in the future.
   
  
index 1f8eb50795a57e688db7f9b1c07c881ac5286cd0..f630fca7d7eb1283e9183041bf22a073cb2bc6a8 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.129 2003/12/20 17:31:20 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.130 2004/01/06 17:26:23 neilc Exp $
  *
  *-------------------------------------------------------------------------
  */
 /* User-settable parameters */
 int            CheckPointSegments = 3;
 int            XLOGbuffers = 8;
-int            XLOG_DEBUG = 0;
 char      *XLOG_sync_method = NULL;
 const char XLOG_sync_method_default[] = DEFAULT_SYNC_METHOD_STR;
 char       XLOG_archive_dir[MAXPGPATH];        /* null string means
                                                 * delete 'em */
 
+#ifdef WAL_DEBUG
+bool       XLOG_DEBUG = false;
+#endif
+
 /*
  * XLOGfileslop is used in the code as the allowed "fuzz" in the number of
  * preallocated XLOG segments --- we try to have at least XLOGfiles advance
@@ -766,6 +769,7 @@ begin:;
        MyProc->logRec = RecPtr;
    }
 
+#ifdef WAL_DEBUG
    if (XLOG_DEBUG)
    {
        char        buf[8192];
@@ -779,6 +783,7 @@ begin:;
        }
        elog(LOG, "%s", buf);
    }
+#endif
 
    /* Record begin of record in appropriate places */
    if (!no_tran)
@@ -1074,8 +1079,10 @@ XLogWrite(XLogwrtRqst WriteRqst)
                     openLogSeg >= (RedoRecPtr.xrecoff / XLogSegSize) +
                     (uint32) CheckPointSegments))
                {
+#ifdef WAL_DEBUG
                    if (XLOG_DEBUG)
                        elog(LOG, "time for a checkpoint, signaling postmaster");
+#endif
                    SendPostmasterSignal(PMSIGNAL_DO_CHECKPOINT);
                }
            }
@@ -1214,11 +1221,13 @@ XLogFlush(XLogRecPtr record)
    if (XLByteLE(record, LogwrtResult.Flush))
        return;
 
+#ifdef WAL_DEBUG
    if (XLOG_DEBUG)
        elog(LOG, "xlog flush request %X/%X; write %X/%X; flush %X/%X",
             record.xlogid, record.xrecoff,
             LogwrtResult.Write.xlogid, LogwrtResult.Write.xrecoff,
             LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff);
+#endif
 
    START_CRIT_SECTION();
 
@@ -2613,8 +2622,10 @@ StartupXLOG(void)
 
    /* This is just to allow attaching to startup process with a debugger */
 #ifdef XLOG_REPLAY_DELAY
+#ifdef WAL_DEBUG
    if (XLOG_DEBUG && ControlFile->state != DB_SHUTDOWNED)
        sleep(60);
+#endif
 #endif
 
    /*
@@ -2742,6 +2753,8 @@ StartupXLOG(void)
                    ShmemVariableCache->nextXid = record->xl_xid;
                    TransactionIdAdvance(ShmemVariableCache->nextXid);
                }
+
+#ifdef WAL_DEBUG
                if (XLOG_DEBUG)
                {
                    char        buf[8192];
@@ -2755,6 +2768,7 @@ StartupXLOG(void)
                                record->xl_info, XLogRecGetData(record));
                    elog(LOG, "%s", buf);
                }
+#endif
 
                if (record->xl_info & XLR_BKP_BLOCK_MASK)
                    RestoreBkpBlocks(record, EndRecPtr);
index 705dd166e4a0ceb830e4d76a73fec7c228beaf24..f0a0a88dd60c3062da2dbcc28c25598054254240 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut .
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.175 2003/12/03 18:52:00 joe Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.176 2004/01/06 17:26:23 neilc Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -336,17 +336,18 @@ const char *const config_type_names[] =
  * TO ADD AN OPTION:
  *
  * 1. Declare a global variable of type bool, int, double, or char*
- * and make use of it.
+ *    and make use of it.
  *
  * 2. Decide at what times it's safe to set the option. See guc.h for
- * details.
+ *    details.
  *
  * 3. Decide on a name, a default value, upper and lower bounds (if
- * applicable), etc.
+ *    applicable), etc.
  *
  * 4. Add a record below.
  *
- * 5. Add it to src/backend/utils/misc/postgresql.conf.sample.
+ * 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
+ *    appropriate
  *
  * 6. Add it to src/bin/psql/tab-complete.c, if it's a USERSET option.
  *
@@ -862,6 +863,18 @@ static struct config_bool ConfigureNamesBool[] =
 #endif
    },
 
+#ifdef WAL_DEBUG
+   {
+       {"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
+           gettext_noop("Emit WAL-related debugging output."),
+           NULL,
+           GUC_NOT_IN_SAMPLE
+       },
+       &XLOG_DEBUG,
+       false, NULL, NULL
+   },
+#endif
+
    /* End-of-list marker */
    {
        {NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL
@@ -1171,16 +1184,6 @@ static struct config_int ConfigureNamesInt[] =
        8, 4, INT_MAX, NULL, NULL
    },
 
-   {
-       {"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
-           gettext_noop("If nonzero, WAL-related debugging output is logged."),
-           NULL,
-           GUC_NOT_IN_SAMPLE
-       },
-       &XLOG_DEBUG,
-       0, 0, 16, NULL, NULL
-   },
-
    {
        {"commit_delay", PGC_USERSET, WAL_CHECKPOINTS,
            gettext_noop("Sets the delay in microseconds between transaction commit and "
index 751e880320288f781b0f515c3aaeeb4237231274..e4f5b7182c24b30444713d164ab3c3ef89c46b01 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.46 2003/12/12 18:45:10 petere Exp $
+ * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.47 2004/01/06 17:26:23 neilc Exp $
  */
 #ifndef XLOG_H
 #define XLOG_H
@@ -189,10 +189,12 @@ extern XLogRecPtr ProcLastRecEnd;
 extern int CheckPointSegments;
 extern int CheckPointWarning;
 extern int XLOGbuffers;
-extern int XLOG_DEBUG;
 extern char *XLOG_sync_method;
 extern const char XLOG_sync_method_default[];
 
+#ifdef WAL_DEBUG
+extern bool    XLOG_DEBUG;
+#endif
 
 extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata);
 extern void XLogFlush(XLogRecPtr RecPtr);
index be80abfdc4add999991585225a42ef9c763256d2..3722798ccee7a23c887b37e4ea876b76620842cf 100644 (file)
@@ -6,7 +6,7 @@
  * for developers. If you edit any of these, be sure to do a *full*
  * rebuild (and an initdb if noted).
  *
- * $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.8 2003/11/29 22:40:53 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.9 2004/01/06 17:26:23 neilc Exp $
  *------------------------------------------------------------------------
  */
 
  */
 /* #define LOCK_DEBUG */
 
+/*
+ * Enable debugging print statements for WAL-related operations; see
+ * also the wal_debug GUC var.
+ */
+/* #define WAL_DEBUG */
+
 /*
  * Other debug #defines (documentation, anyone?)
  */