Add unchangeable GUC "variables" segment_size, wal_block_size, and

wal_segment_size to make those configuration parameters available to clients,
in the same way that block_size was previously exposed.  Bernd Helmle, with
comments from Abhijit Menon-Sen and some further tweaking by me.
This commit is contained in:
Tom Lane 2008-07-10 22:08:17 +00:00
parent eaf1b5d348
commit 7a97abe818
2 changed files with 85 additions and 3 deletions

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.182 2008/07/01 21:49:04 momjian Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.183 2008/07/10 22:08:17 tgl Exp $ -->
<chapter Id="runtime-config">
<title>Server Configuration</title>
@ -4865,6 +4865,22 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
</listitem>
</varlistentry>
<varlistentry id="guc-segment-size" xreflabel="segment_size">
<term><varname>segment_size</varname> (<type>integer</type>)</term>
<indexterm>
<primary><varname>segment_size</> configuration parameter</primary>
</indexterm>
<listitem>
<para>
Reports the number of blocks (pages) that can be stored within a file
segment. It is determined by the value of <literal>RELSEG_SIZE</>
when building the server. The maximum size of a segment file in bytes
is equal to <varname>segment_size</> multiplied by
<varname>block_size</>; by default this is 1GB.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-server-encoding" xreflabel="server_encoding">
<term><varname>server_encoding</varname> (<type>string</type>)</term>
<indexterm>
@ -4901,12 +4917,42 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
</indexterm>
<listitem>
<para>
Reports the version number of the server as an integer. It is determined
Reports the version number of the server as an integer. It is determined
by the value of <literal>PG_VERSION_NUM</> when building the server.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-wal-block-size" xreflabel="wal_block_size">
<term><varname>wal_block_size</varname> (<type>integer</type>)</term>
<indexterm>
<primary><varname>wal_block_size</> configuration parameter</primary>
</indexterm>
<listitem>
<para>
Reports the size of a WAL disk block. It is determined by the value
of <literal>XLOG_BLCKSZ</> when building the server. The default value
is 8192 bytes.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-wal-segment-size" xreflabel="wal_segment_size">
<term><varname>wal_segment_size</varname> (<type>integer</type>)</term>
<indexterm>
<primary><varname>wal_segment_size</> configuration parameter</primary>
</indexterm>
<listitem>
<para>
Reports the number of blocks (pages) in a WAL segment file.
The total size of a WAL segment file in bytes is equal to
<varname>wal_segment_size</> multiplied by <varname>wal_block_size</>;
by default this is 16MB. See <xref linkend="wal-configuration"> for
more information.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>

View File

@ -10,7 +10,7 @@
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.463 2008/07/08 02:07:29 momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.464 2008/07/10 22:08:17 tgl Exp $
*
*--------------------------------------------------------------------
*/
@ -377,6 +377,9 @@ static int max_function_args;
static int max_index_keys;
static int max_identifier_length;
static int block_size;
static int segment_size;
static int wal_block_size;
static int wal_segment_size;
static bool integer_datetimes;
/* should be static, but commands/variable.c needs to get at these */
@ -1753,6 +1756,39 @@ static struct config_int ConfigureNamesInt[] =
BLCKSZ, BLCKSZ, BLCKSZ, NULL, NULL
},
{
{"segment_size", PGC_INTERNAL, PRESET_OPTIONS,
gettext_noop("Shows the number of pages per disk file."),
NULL,
GUC_UNIT_BLOCKS | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
},
&segment_size,
RELSEG_SIZE, RELSEG_SIZE, RELSEG_SIZE, NULL, NULL
},
{
{"wal_block_size", PGC_INTERNAL, PRESET_OPTIONS,
gettext_noop("Shows the block size in the write ahead log."),
NULL,
GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
},
&wal_block_size,
XLOG_BLCKSZ, XLOG_BLCKSZ, XLOG_BLCKSZ, NULL, NULL
},
{
{"wal_segment_size", PGC_INTERNAL, PRESET_OPTIONS,
gettext_noop("Shows the number of pages per write ahead log segment."),
NULL,
GUC_UNIT_XBLOCKS | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
},
&wal_segment_size,
(XLOG_SEG_SIZE / XLOG_BLCKSZ),
(XLOG_SEG_SIZE / XLOG_BLCKSZ),
(XLOG_SEG_SIZE / XLOG_BLCKSZ),
NULL, NULL
},
{
{"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
gettext_noop("Time to sleep between autovacuum runs."),