Skip to content

Commit bc028be

Browse files
author
Neil Conway
committed
Make the 'wal_debug' GUC variable a boolean (rather than an integer), and
hide it behind #ifdef WAL_DEBUG blocks.
1 parent b0c4a50 commit bc028be

File tree

7 files changed

+63
-36
lines changed

7 files changed

+63
-36
lines changed

doc/src/sgml/ref/show.sgml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
$PostgreSQL: pgsql/doc/src/sgml/ref/show.sgml,v 1.34 2003/11/29 19:51:39 pgsql Exp $
2+
$PostgreSQL: pgsql/doc/src/sgml/ref/show.sgml,v 1.35 2004/01/06 17:26:23 neilc Exp $
33
PostgreSQL documentation
44
-->
55

@@ -172,7 +172,7 @@ SHOW ALL;
172172
.
173173
.
174174
.
175-
wal_debug | 0
175+
wal_debug | off
176176
wal_sync_method | fdatasync
177177
(94 rows)
178178
</programlisting>

doc/src/sgml/runtime.sgml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.228 2004/01/05 20:37:51 neilc Exp $
2+
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.229 2004/01/06 17:26:22 neilc Exp $
33
-->
44

55
<Chapter Id="runtime">
@@ -2667,10 +2667,13 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
26672667
</varlistentry>
26682668

26692669
<varlistentry>
2670-
<term><varname>wal_debug</varname> (<type>integer</type>)</term>
2670+
<term><varname>wal_debug</varname> (<type>boolean</type>)</term>
26712671
<listitem>
26722672
<para>
2673-
If nonzero, turn on WAL-related debugging output.
2673+
If true, emit WAL-related debugging output. This option is
2674+
only available if the <symbol>WAL_DEBUG</symbol> macro was
2675+
defined when <productname>PostgreSQL</productname> was
2676+
compiled.
26742677
</para>
26752678
</listitem>
26762679
</varlistentry>

doc/src/sgml/wal.sgml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.26 2003/11/29 19:51:38 pgsql Exp $ -->
1+
<!-- $PostgreSQL: pgsql/doc/src/sgml/wal.sgml,v 1.27 2004/01/06 17:26:23 neilc Exp $ -->
22

33
<chapter id="wal">
44
<title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>
@@ -19,10 +19,10 @@
1919
transaction processing. Briefly, <acronym>WAL</acronym>'s central
2020
concept is that changes to data files (where tables and indexes
2121
reside) must be written only after those changes have been logged,
22-
that is, when log records have been flushed to permanent
23-
storage. If we follow this procedure, we do not need to flush
24-
data pages to disk on every transaction commit, because we know
25-
that in the event of a crash we will be able to recover the
22+
that is, when log records describing the changes have been flushed
23+
to permanent storage. If we follow this procedure, we do not need
24+
to flush data pages to disk on every transaction commit, because we
25+
know that in the event of a crash we will be able to recover the
2626
database using the log: any changes that have not been applied to
2727
the data pages will first be redone from the log records (this is
2828
roll-forward recovery, also known as REDO) and then changes made by
@@ -187,7 +187,7 @@
187187
<para>
188188
There will be at least one 16 MB segment file, and will normally
189189
not be more than 2 * <varname>checkpoint_segments</varname> + 1
190-
files. You can use this to estimate space requirements for WAL.
190+
files. You can use this to estimate space requirements for <acronym>WAL</acronym>.
191191
Ordinarily, when old log segment files are no longer needed, they
192192
are recycled (renamed to become the next segments in the numbered
193193
sequence). If, due to a short-term peak of log output rate, there
@@ -254,19 +254,18 @@
254254
<para>
255255
The <varname>wal_sync_method</varname> parameter determines how
256256
<productname>PostgreSQL</productname> will ask the kernel to force
257-
WAL updates out to disk.
257+
<acronym>WAL</acronym> updates out to disk.
258258
All the options should be the same as far as reliability goes,
259259
but it's quite platform-specific which one will be the fastest.
260260
Note that this parameter is irrelevant if <varname>fsync</varname>
261261
has been turned off.
262262
</para>
263263

264264
<para>
265-
Setting the <varname>wal_debug</varname> parameter to any nonzero
266-
value will result in each <function>LogInsert</function> and
265+
Enabling the <varname>wal_debug</varname> configuration parameter
266+
will result in each <function>LogInsert</function> and
267267
<function>LogFlush</function> <acronym>WAL</acronym> call being
268-
logged to the server log. At present, it makes no difference what
269-
the nonzero value is. This option may be replaced by a more
268+
logged to the server log. This option may be replaced by a more
270269
general mechanism in the future.
271270
</para>
272271
</sect1>

src/backend/access/transam/xlog.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.129 2003/12/20 17:31:20 momjian Exp $
10+
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.130 2004/01/06 17:26:23 neilc Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -86,12 +86,15 @@
8686
/* User-settable parameters */
8787
int CheckPointSegments = 3;
8888
int XLOGbuffers = 8;
89-
int XLOG_DEBUG = 0;
9089
char *XLOG_sync_method = NULL;
9190
const char XLOG_sync_method_default[] = DEFAULT_SYNC_METHOD_STR;
9291
char XLOG_archive_dir[MAXPGPATH]; /* null string means
9392
* delete 'em */
9493

94+
#ifdef WAL_DEBUG
95+
bool XLOG_DEBUG = false;
96+
#endif
97+
9598
/*
9699
* XLOGfileslop is used in the code as the allowed "fuzz" in the number of
97100
* preallocated XLOG segments --- we try to have at least XLOGfiles advance
@@ -766,6 +769,7 @@ begin:;
766769
MyProc->logRec = RecPtr;
767770
}
768771

772+
#ifdef WAL_DEBUG
769773
if (XLOG_DEBUG)
770774
{
771775
char buf[8192];
@@ -779,6 +783,7 @@ begin:;
779783
}
780784
elog(LOG, "%s", buf);
781785
}
786+
#endif
782787

783788
/* Record begin of record in appropriate places */
784789
if (!no_tran)
@@ -1074,8 +1079,10 @@ XLogWrite(XLogwrtRqst WriteRqst)
10741079
openLogSeg >= (RedoRecPtr.xrecoff / XLogSegSize) +
10751080
(uint32) CheckPointSegments))
10761081
{
1082+
#ifdef WAL_DEBUG
10771083
if (XLOG_DEBUG)
10781084
elog(LOG, "time for a checkpoint, signaling postmaster");
1085+
#endif
10791086
SendPostmasterSignal(PMSIGNAL_DO_CHECKPOINT);
10801087
}
10811088
}
@@ -1214,11 +1221,13 @@ XLogFlush(XLogRecPtr record)
12141221
if (XLByteLE(record, LogwrtResult.Flush))
12151222
return;
12161223

1224+
#ifdef WAL_DEBUG
12171225
if (XLOG_DEBUG)
12181226
elog(LOG, "xlog flush request %X/%X; write %X/%X; flush %X/%X",
12191227
record.xlogid, record.xrecoff,
12201228
LogwrtResult.Write.xlogid, LogwrtResult.Write.xrecoff,
12211229
LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff);
1230+
#endif
12221231

12231232
START_CRIT_SECTION();
12241233

@@ -2613,8 +2622,10 @@ StartupXLOG(void)
26132622

26142623
/* This is just to allow attaching to startup process with a debugger */
26152624
#ifdef XLOG_REPLAY_DELAY
2625+
#ifdef WAL_DEBUG
26162626
if (XLOG_DEBUG && ControlFile->state != DB_SHUTDOWNED)
26172627
sleep(60);
2628+
#endif
26182629
#endif
26192630

26202631
/*
@@ -2742,6 +2753,8 @@ StartupXLOG(void)
27422753
ShmemVariableCache->nextXid = record->xl_xid;
27432754
TransactionIdAdvance(ShmemVariableCache->nextXid);
27442755
}
2756+
2757+
#ifdef WAL_DEBUG
27452758
if (XLOG_DEBUG)
27462759
{
27472760
char buf[8192];
@@ -2755,6 +2768,7 @@ StartupXLOG(void)
27552768
record->xl_info, XLogRecGetData(record));
27562769
elog(LOG, "%s", buf);
27572770
}
2771+
#endif
27582772

27592773
if (record->xl_info & XLR_BKP_BLOCK_MASK)
27602774
RestoreBkpBlocks(record, EndRecPtr);

src/backend/utils/misc/guc.c

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* Written by Peter Eisentraut <peter_e@gmx.net>.
1111
*
1212
* IDENTIFICATION
13-
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.175 2003/12/03 18:52:00 joe Exp $
13+
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.176 2004/01/06 17:26:23 neilc Exp $
1414
*
1515
*--------------------------------------------------------------------
1616
*/
@@ -336,17 +336,18 @@ const char *const config_type_names[] =
336336
* TO ADD AN OPTION:
337337
*
338338
* 1. Declare a global variable of type bool, int, double, or char*
339-
* and make use of it.
339+
* and make use of it.
340340
*
341341
* 2. Decide at what times it's safe to set the option. See guc.h for
342-
* details.
342+
* details.
343343
*
344344
* 3. Decide on a name, a default value, upper and lower bounds (if
345-
* applicable), etc.
345+
* applicable), etc.
346346
*
347347
* 4. Add a record below.
348348
*
349-
* 5. Add it to src/backend/utils/misc/postgresql.conf.sample.
349+
* 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
350+
* appropriate
350351
*
351352
* 6. Add it to src/bin/psql/tab-complete.c, if it's a USERSET option.
352353
*
@@ -862,6 +863,18 @@ static struct config_bool ConfigureNamesBool[] =
862863
#endif
863864
},
864865

866+
#ifdef WAL_DEBUG
867+
{
868+
{"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
869+
gettext_noop("Emit WAL-related debugging output."),
870+
NULL,
871+
GUC_NOT_IN_SAMPLE
872+
},
873+
&XLOG_DEBUG,
874+
false, NULL, NULL
875+
},
876+
#endif
877+
865878
/* End-of-list marker */
866879
{
867880
{NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL
@@ -1171,16 +1184,6 @@ static struct config_int ConfigureNamesInt[] =
11711184
8, 4, INT_MAX, NULL, NULL
11721185
},
11731186

1174-
{
1175-
{"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
1176-
gettext_noop("If nonzero, WAL-related debugging output is logged."),
1177-
NULL,
1178-
GUC_NOT_IN_SAMPLE
1179-
},
1180-
&XLOG_DEBUG,
1181-
0, 0, 16, NULL, NULL
1182-
},
1183-
11841187
{
11851188
{"commit_delay", PGC_USERSET, WAL_CHECKPOINTS,
11861189
gettext_noop("Sets the delay in microseconds between transaction commit and "

src/include/access/xlog.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
77
* Portions Copyright (c) 1994, Regents of the University of California
88
*
9-
* $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.46 2003/12/12 18:45:10 petere Exp $
9+
* $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.47 2004/01/06 17:26:23 neilc Exp $
1010
*/
1111
#ifndef XLOG_H
1212
#define XLOG_H
@@ -189,10 +189,12 @@ extern XLogRecPtr ProcLastRecEnd;
189189
extern int CheckPointSegments;
190190
extern int CheckPointWarning;
191191
extern int XLOGbuffers;
192-
extern int XLOG_DEBUG;
193192
extern char *XLOG_sync_method;
194193
extern const char XLOG_sync_method_default[];
195194

195+
#ifdef WAL_DEBUG
196+
extern bool XLOG_DEBUG;
197+
#endif
196198

197199
extern XLogRecPtr XLogInsert(RmgrId rmid, uint8 info, XLogRecData *rdata);
198200
extern void XLogFlush(XLogRecPtr RecPtr);

src/include/pg_config_manual.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* for developers. If you edit any of these, be sure to do a *full*
77
* rebuild (and an initdb if noted).
88
*
9-
* $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.8 2003/11/29 22:40:53 pgsql Exp $
9+
* $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.9 2004/01/06 17:26:23 neilc Exp $
1010
*------------------------------------------------------------------------
1111
*/
1212

@@ -224,6 +224,12 @@
224224
*/
225225
/* #define LOCK_DEBUG */
226226

227+
/*
228+
* Enable debugging print statements for WAL-related operations; see
229+
* also the wal_debug GUC var.
230+
*/
231+
/* #define WAL_DEBUG */
232+
227233
/*
228234
* Other debug #defines (documentation, anyone?)
229235
*/

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy