]> begriffs open source - ai-pg/blob - full-docs/html/runtime-config-developer.html
Include links to all subsection html pages, with shorter paths too
[ai-pg] / full-docs / html / runtime-config-developer.html
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.17. Developer Options</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="runtime-config-custom.html" title="19.16. Customized Options" /><link rel="next" href="runtime-config-short.html" title="19.18. Short Options" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">19.17. Developer Options</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="runtime-config-custom.html" title="19.16. Customized Options">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="runtime-config.html" title="Chapter 19. Server Configuration">Up</a></td><th width="60%" align="center">Chapter 19. Server Configuration</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 18.0 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="runtime-config-short.html" title="19.18. Short Options">Next</a></td></tr></table><hr /></div><div class="sect1" id="RUNTIME-CONFIG-DEVELOPER"><div class="titlepage"><div><div><h2 class="title" style="clear: both">19.17. Developer Options <a href="#RUNTIME-CONFIG-DEVELOPER" class="id_link">#</a></h2></div></div></div><p>
3      The following parameters are intended for developer testing, and
4      should never be used on a production database.  However, some of
5      them can be used to assist with the recovery of severely damaged
6      databases.  As such, they have been excluded from the sample
7      <code class="filename">postgresql.conf</code> file.  Note that many of these
8      parameters require special source compilation flags to work at all.
9     </p><div class="variablelist"><dl class="variablelist"><dt id="GUC-ALLOW-IN-PLACE-TABLESPACES"><span class="term"><code class="varname">allow_in_place_tablespaces</code> (<code class="type">boolean</code>)
10       <a id="id-1.6.6.20.3.1.1.3" class="indexterm"></a>
11       </span> <a href="#GUC-ALLOW-IN-PLACE-TABLESPACES" class="id_link">#</a></dt><dd><p>
12         Allows tablespaces to be created as directories inside
13         <code class="filename">pg_tblspc</code>, when an empty location string
14         is provided to the <code class="command">CREATE TABLESPACE</code> command.  This
15         is intended to allow testing replication scenarios where primary and
16         standby servers are running on the same machine.  Such directories
17         are likely to confuse backup tools that expect to find only symbolic
18         links in that location.
19         Only superusers and users with the appropriate <code class="literal">SET</code>
20         privilege can change this setting.
21        </p></dd><dt id="GUC-ALLOW-SYSTEM-TABLE-MODS"><span class="term"><code class="varname">allow_system_table_mods</code> (<code class="type">boolean</code>)
22       <a id="id-1.6.6.20.3.2.1.3" class="indexterm"></a>
23       </span> <a href="#GUC-ALLOW-SYSTEM-TABLE-MODS" class="id_link">#</a></dt><dd><p>
24         Allows modification of the structure of system tables as well as
25         certain other risky actions on system tables.  This is otherwise not
26         allowed even for superusers.  Ill-advised use of this setting can
27         cause irretrievable data loss or seriously corrupt the database
28         system.
29         Only superusers and users with the appropriate <code class="literal">SET</code>
30         privilege can change this setting.
31        </p></dd><dt id="GUC-BACKTRACE-FUNCTIONS"><span class="term"><code class="varname">backtrace_functions</code> (<code class="type">string</code>)
32       <a id="id-1.6.6.20.3.3.1.3" class="indexterm"></a>
33       </span> <a href="#GUC-BACKTRACE-FUNCTIONS" class="id_link">#</a></dt><dd><p>
34         This parameter contains a comma-separated list of C function names.
35         If an error is raised and the name of the internal C function where
36         the error happens matches a value in the list, then a backtrace is
37         written to the server log together with the error message.  This can
38         be used to debug specific areas of the source code.
39        </p><p>
40         Backtrace support is not available on all platforms, and the quality
41         of the backtraces depends on compilation options.
42        </p><p>
43         Only superusers and users with the appropriate <code class="literal">SET</code>
44         privilege can change this setting.
45        </p></dd><dt id="GUC-DEBUG-COPY-PARSE-PLAN-TREES"><span class="term"><code class="varname">debug_copy_parse_plan_trees</code> (<code class="type">boolean</code>)
46       <a id="id-1.6.6.20.3.4.1.3" class="indexterm"></a>
47       </span> <a href="#GUC-DEBUG-COPY-PARSE-PLAN-TREES" class="id_link">#</a></dt><dd><p>
48         Enabling this forces all parse and plan trees to be passed through
49         <code class="function">copyObject()</code>, to facilitate catching errors and
50         omissions in <code class="function">copyObject()</code>.  The default is off.
51        </p><p>
52         This parameter is only available when
53         <code class="symbol">DEBUG_NODE_TESTS_ENABLED</code> was defined at compile time
54         (which happens automatically when using the
55         <span class="application">configure</span> option
56         <code class="option">--enable-cassert</code>).
57        </p></dd><dt id="GUC-DEBUG-DISCARD-CACHES"><span class="term"><code class="varname">debug_discard_caches</code> (<code class="type">integer</code>)
58       <a id="id-1.6.6.20.3.5.1.3" class="indexterm"></a>
59       </span> <a href="#GUC-DEBUG-DISCARD-CACHES" class="id_link">#</a></dt><dd><p>
60         When set to <code class="literal">1</code>, each system catalog cache entry is
61         invalidated at the first possible opportunity, whether or not
62         anything that would render it invalid really occurred.  Caching of
63         system catalogs is effectively disabled as a result, so the server
64         will run extremely slowly.  Higher values run the cache invalidation
65         recursively, which is even slower and only useful for testing
66         the caching logic itself.  The default value of <code class="literal">0</code>
67         selects normal catalog caching behavior.
68        </p><p>
69         This parameter can be very helpful when trying to trigger
70         hard-to-reproduce bugs involving concurrent catalog changes, but it
71         is otherwise rarely needed.  See the source code files
72         <code class="filename">inval.c</code> and
73         <code class="filename">pg_config_manual.h</code> for details.
74        </p><p>
75         This parameter is supported when
76         <code class="symbol">DISCARD_CACHES_ENABLED</code> was defined at compile time
77         (which happens automatically when using the
78         <span class="application">configure</span> option
79         <code class="option">--enable-cassert</code>).  In production builds, its value
80         will always be <code class="literal">0</code> and attempts to set it to another
81         value will raise an error.
82        </p></dd><dt id="GUC-DEBUG-IO-DIRECT"><span class="term"><code class="varname">debug_io_direct</code> (<code class="type">string</code>)
83       <a id="id-1.6.6.20.3.6.1.3" class="indexterm"></a>
84       </span> <a href="#GUC-DEBUG-IO-DIRECT" class="id_link">#</a></dt><dd><p>
85         Ask the kernel to minimize caching effects for relation data and WAL
86         files using <code class="literal">O_DIRECT</code> (most Unix-like systems),
87         <code class="literal">F_NOCACHE</code> (macOS) or
88         <code class="literal">FILE_FLAG_NO_BUFFERING</code> (Windows).
89        </p><p>
90         May be set to an empty string (the default) to disable use of direct
91         I/O, or a comma-separated list of operations that should use direct I/O.
92         The valid options are <code class="literal">data</code> for
93         main data files, <code class="literal">wal</code> for WAL files, and
94         <code class="literal">wal_init</code> for WAL files when being initially
95         allocated.
96        </p><p>
97         Some operating systems and file systems do not support direct I/O, so
98         non-default settings may be rejected at startup or cause errors.
99        </p><p>
100         Currently this feature reduces performance, and is intended for
101         developer testing only.
102        </p></dd><dt id="GUC-DEBUG-PARALLEL-QUERY"><span class="term"><code class="varname">debug_parallel_query</code> (<code class="type">enum</code>)
103       <a id="id-1.6.6.20.3.7.1.3" class="indexterm"></a>
104       </span> <a href="#GUC-DEBUG-PARALLEL-QUERY" class="id_link">#</a></dt><dd><p>
105         Allows the use of parallel queries for testing purposes even in cases
106         where no performance benefit is expected.
107         The allowed values of <code class="varname">debug_parallel_query</code> are
108         <code class="literal">off</code> (use parallel mode only when it is expected to improve
109         performance), <code class="literal">on</code> (force parallel query for all queries
110         for which it is thought to be safe), and <code class="literal">regress</code> (like
111         <code class="literal">on</code>, but with additional behavior changes as explained
112         below).
113        </p><p>
114         More specifically, setting this value to <code class="literal">on</code> will add
115         a <code class="literal">Gather</code> node to the top of any query plan for which this
116         appears to be safe, so that the query runs inside of a parallel worker.
117         Even when a parallel worker is not available or cannot be used,
118         operations such as starting a subtransaction that would be prohibited
119         in a parallel query context will be prohibited unless the planner
120         believes that this will cause the query to fail.  If failures or
121         unexpected results occur when this option is set, some functions used
122         by the query may need to be marked <code class="literal">PARALLEL UNSAFE</code>
123         (or, possibly, <code class="literal">PARALLEL RESTRICTED</code>).
124        </p><p>
125         Setting this value to <code class="literal">regress</code> has all of the same effects
126         as setting it to <code class="literal">on</code> plus some additional effects that are
127         intended to facilitate automated regression testing.  Normally,
128         messages from a parallel worker include a context line indicating that,
129         but a setting of <code class="literal">regress</code> suppresses this line so that the
130         output is the same as in non-parallel execution.  Also,
131         the <code class="literal">Gather</code> nodes added to plans by this setting are hidden
132         in <code class="literal">EXPLAIN</code> output so that the output matches what
133         would be obtained if this setting were turned <code class="literal">off</code>.
134        </p></dd><dt id="GUC-DEBUG-RAW-EXPRESSION-COVERAGE-TEST"><span class="term"><code class="varname">debug_raw_expression_coverage_test</code> (<code class="type">boolean</code>)
135       <a id="id-1.6.6.20.3.8.1.3" class="indexterm"></a>
136       </span> <a href="#GUC-DEBUG-RAW-EXPRESSION-COVERAGE-TEST" class="id_link">#</a></dt><dd><p>
137         Enabling this forces all raw parse trees for DML statements to be
138         scanned by <code class="function">raw_expression_tree_walker()</code>, to
139         facilitate catching errors and omissions in that function.  The
140         default is off.
141        </p><p>
142         This parameter is only available when
143         <code class="symbol">DEBUG_NODE_TESTS_ENABLED</code> was defined at compile time
144         (which happens automatically when using the
145         <span class="application">configure</span> option
146         <code class="option">--enable-cassert</code>).
147        </p></dd><dt id="GUC-DEBUG-WRITE-READ-PARSE-PLAN-TREES"><span class="term"><code class="varname">debug_write_read_parse_plan_trees</code> (<code class="type">boolean</code>)
148       <a id="id-1.6.6.20.3.9.1.3" class="indexterm"></a>
149       </span> <a href="#GUC-DEBUG-WRITE-READ-PARSE-PLAN-TREES" class="id_link">#</a></dt><dd><p>
150         Enabling this forces all parse and plan trees to be passed through
151         <code class="filename">outfuncs.c</code>/<code class="filename">readfuncs.c</code>, to
152         facilitate catching errors and omissions in those modules.  The
153         default is off.
154        </p><p>
155         This parameter is only available when
156         <code class="symbol">DEBUG_NODE_TESTS_ENABLED</code> was defined at compile time
157         (which happens automatically when using the
158         <span class="application">configure</span> option
159         <code class="option">--enable-cassert</code>).
160        </p></dd><dt id="GUC-IGNORE-SYSTEM-INDEXES"><span class="term"><code class="varname">ignore_system_indexes</code> (<code class="type">boolean</code>)
161       <a id="id-1.6.6.20.3.10.1.3" class="indexterm"></a>
162       </span> <a href="#GUC-IGNORE-SYSTEM-INDEXES" class="id_link">#</a></dt><dd><p>
163         Ignore system indexes when reading system tables (but still
164         update the indexes when modifying the tables).  This is useful
165         when recovering from damaged system indexes.
166         This parameter cannot be changed after session start.
167        </p></dd><dt id="GUC-POST-AUTH-DELAY"><span class="term"><code class="varname">post_auth_delay</code> (<code class="type">integer</code>)
168       <a id="id-1.6.6.20.3.11.1.3" class="indexterm"></a>
169       </span> <a href="#GUC-POST-AUTH-DELAY" class="id_link">#</a></dt><dd><p>
170         The amount of time to delay when a new
171         server process is started, after it conducts the
172         authentication procedure.  This is intended to give developers an
173         opportunity to attach to the server process with a debugger.
174         If this value is specified without units, it is taken as seconds.
175         A value of zero (the default) disables the delay.
176         This parameter cannot be changed after session start.
177        </p></dd><dt id="GUC-PRE-AUTH-DELAY"><span class="term"><code class="varname">pre_auth_delay</code> (<code class="type">integer</code>)
178       <a id="id-1.6.6.20.3.12.1.3" class="indexterm"></a>
179       </span> <a href="#GUC-PRE-AUTH-DELAY" class="id_link">#</a></dt><dd><p>
180         The amount of time to delay just after a
181         new server process is forked, before it conducts the
182         authentication procedure.  This is intended to give developers an
183         opportunity to attach to the server process with a debugger to
184         trace down misbehavior in authentication.
185         If this value is specified without units, it is taken as seconds.
186         A value of zero (the default) disables the delay.
187         This parameter can only be set in the <code class="filename">postgresql.conf</code>
188         file or on the server command line.
189        </p></dd><dt id="GUC-TRACE-NOTIFY"><span class="term"><code class="varname">trace_notify</code> (<code class="type">boolean</code>)
190       <a id="id-1.6.6.20.3.13.1.3" class="indexterm"></a>
191       </span> <a href="#GUC-TRACE-NOTIFY" class="id_link">#</a></dt><dd><p>
192         Generates a great amount of debugging output for the
193         <code class="command">LISTEN</code> and <code class="command">NOTIFY</code>
194         commands.  <a class="xref" href="runtime-config-client.html#GUC-CLIENT-MIN-MESSAGES">client_min_messages</a> or
195         <a class="xref" href="runtime-config-logging.html#GUC-LOG-MIN-MESSAGES">log_min_messages</a> must be
196         <code class="literal">DEBUG1</code> or lower to send this output to the
197         client or server logs, respectively.
198        </p></dd><dt id="GUC-TRACE-SORT"><span class="term"><code class="varname">trace_sort</code> (<code class="type">boolean</code>)
199       <a id="id-1.6.6.20.3.14.1.3" class="indexterm"></a>
200       </span> <a href="#GUC-TRACE-SORT" class="id_link">#</a></dt><dd><p>
201         If on, emit information about resource usage during sort operations.
202        </p></dd><dt id="GUC-TRACE-LOCKS"><span class="term"><code class="varname">trace_locks</code> (<code class="type">boolean</code>)
203       <a id="id-1.6.6.20.3.15.1.3" class="indexterm"></a>
204       </span> <a href="#GUC-TRACE-LOCKS" class="id_link">#</a></dt><dd><p>
205         If on, emit information about lock usage.  Information dumped
206         includes the type of lock operation, the type of lock and the unique
207         identifier of the object being locked or unlocked.  Also included
208         are bit masks for the lock types already granted on this object as
209         well as for the lock types awaited on this object.  For each lock
210         type a count of the number of granted locks and waiting locks is
211         also dumped as well as the totals.  An example of the log file output
212         is shown here:
213 </p><pre class="screen">
214 LOG:  LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1)
215       grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
216       wait(0) type(AccessShareLock)
217 LOG:  GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1)
218       grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1
219       wait(0) type(AccessShareLock)
220 LOG:  UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1)
221       grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
222       wait(0) type(AccessShareLock)
223 LOG:  CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
224       grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
225       wait(0) type(INVALID)
226 </pre><p>
227         Details of the structure being dumped may be found in
228         <code class="filename">src/include/storage/lock.h</code>.
229        </p><p>
230         This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>
231         macro was defined when <span class="productname">PostgreSQL</span> was
232         compiled.
233        </p></dd><dt id="GUC-TRACE-LWLOCKS"><span class="term"><code class="varname">trace_lwlocks</code> (<code class="type">boolean</code>)
234       <a id="id-1.6.6.20.3.16.1.3" class="indexterm"></a>
235       </span> <a href="#GUC-TRACE-LWLOCKS" class="id_link">#</a></dt><dd><p>
236         If on, emit information about lightweight lock usage.  Lightweight
237         locks are intended primarily to provide mutual exclusion of access
238         to shared-memory data structures.
239        </p><p>
240         This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>
241         macro was defined when <span class="productname">PostgreSQL</span> was
242         compiled.
243        </p></dd><dt id="GUC-TRACE-USERLOCKS"><span class="term"><code class="varname">trace_userlocks</code> (<code class="type">boolean</code>)
244       <a id="id-1.6.6.20.3.17.1.3" class="indexterm"></a>
245       </span> <a href="#GUC-TRACE-USERLOCKS" class="id_link">#</a></dt><dd><p>
246         If on, emit information about user lock usage.  Output is the same
247         as for <code class="symbol">trace_locks</code>, only for advisory locks.
248        </p><p>
249         This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>
250         macro was defined when <span class="productname">PostgreSQL</span> was
251         compiled.
252        </p></dd><dt id="GUC-TRACE-LOCK-OIDMIN"><span class="term"><code class="varname">trace_lock_oidmin</code> (<code class="type">integer</code>)
253       <a id="id-1.6.6.20.3.18.1.3" class="indexterm"></a>
254       </span> <a href="#GUC-TRACE-LOCK-OIDMIN" class="id_link">#</a></dt><dd><p>
255         If set, do not trace locks for tables below this OID (used to avoid
256         output on system tables).
257        </p><p>
258         This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>
259         macro was defined when <span class="productname">PostgreSQL</span> was
260         compiled.
261        </p></dd><dt id="GUC-TRACE-LOCK-TABLE"><span class="term"><code class="varname">trace_lock_table</code> (<code class="type">integer</code>)
262       <a id="id-1.6.6.20.3.19.1.3" class="indexterm"></a>
263       </span> <a href="#GUC-TRACE-LOCK-TABLE" class="id_link">#</a></dt><dd><p>
264         Unconditionally trace locks on this table (OID).
265        </p><p>
266         This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>
267         macro was defined when <span class="productname">PostgreSQL</span> was
268         compiled.
269        </p></dd><dt id="GUC-DEBUG-DEADLOCKS"><span class="term"><code class="varname">debug_deadlocks</code> (<code class="type">boolean</code>)
270       <a id="id-1.6.6.20.3.20.1.3" class="indexterm"></a>
271       </span> <a href="#GUC-DEBUG-DEADLOCKS" class="id_link">#</a></dt><dd><p>
272         If set, dumps information about all current locks when a
273         deadlock timeout occurs.
274        </p><p>
275         This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>
276         macro was defined when <span class="productname">PostgreSQL</span> was
277         compiled.
278        </p></dd><dt id="GUC-LOG-BTREE-BUILD-STATS"><span class="term"><code class="varname">log_btree_build_stats</code> (<code class="type">boolean</code>)
279       <a id="id-1.6.6.20.3.21.1.3" class="indexterm"></a>
280       </span> <a href="#GUC-LOG-BTREE-BUILD-STATS" class="id_link">#</a></dt><dd><p>
281         If set, logs system resource usage statistics (memory and CPU) on
282         various B-tree operations.
283        </p><p>
284         This parameter is only available if the <code class="symbol">BTREE_BUILD_STATS</code>
285         macro was defined when <span class="productname">PostgreSQL</span> was
286         compiled.
287        </p></dd><dt id="GUC-WAL-CONSISTENCY-CHECKING"><span class="term"><code class="varname">wal_consistency_checking</code> (<code class="type">string</code>)
288       <a id="id-1.6.6.20.3.22.1.3" class="indexterm"></a>
289       </span> <a href="#GUC-WAL-CONSISTENCY-CHECKING" class="id_link">#</a></dt><dd><p>
290         This parameter is intended to be used to check for bugs in the WAL
291         redo routines.  When enabled, full-page images of any buffers modified
292         in conjunction with the WAL record are added to the record.
293         If the record is subsequently replayed, the system will first apply
294         each record and then test whether the buffers modified by the record
295         match the stored images.  In certain cases (such as hint bits), minor
296         variations are acceptable, and will be ignored.  Any unexpected
297         differences will result in a fatal error, terminating recovery.
298        </p><p>
299         The default value of this setting is the empty string, which disables
300         the feature.  It can be set to <code class="literal">all</code> to check all
301         records, or to a comma-separated list of resource managers to check
302         only records originating from those resource managers.  Currently,
303         the supported resource managers are <code class="literal">heap</code>,
304         <code class="literal">heap2</code>, <code class="literal">btree</code>, <code class="literal">hash</code>,
305         <code class="literal">gin</code>, <code class="literal">gist</code>, <code class="literal">sequence</code>,
306         <code class="literal">spgist</code>, <code class="literal">brin</code>, and <code class="literal">generic</code>.
307         Extensions may define additional resource managers. Only superusers and users with
308         the appropriate <code class="literal">SET</code> privilege can change this setting.
309        </p></dd><dt id="GUC-WAL-DEBUG"><span class="term"><code class="varname">wal_debug</code> (<code class="type">boolean</code>)
310       <a id="id-1.6.6.20.3.23.1.3" class="indexterm"></a>
311       </span> <a href="#GUC-WAL-DEBUG" class="id_link">#</a></dt><dd><p>
312         If on, emit WAL-related debugging output. This parameter is
313         only available if the <code class="symbol">WAL_DEBUG</code> macro was
314         defined when <span class="productname">PostgreSQL</span> was
315         compiled.
316        </p></dd><dt id="GUC-IGNORE-CHECKSUM-FAILURE"><span class="term"><code class="varname">ignore_checksum_failure</code> (<code class="type">boolean</code>)
317       <a id="id-1.6.6.20.3.24.1.3" class="indexterm"></a>
318       </span> <a href="#GUC-IGNORE-CHECKSUM-FAILURE" class="id_link">#</a></dt><dd><p>
319         Only has effect if <a class="xref" href="app-initdb.html#APP-INITDB-DATA-CHECKSUMS"><code class="option">-k</code></a> are enabled.
320        </p><p>
321         Detection of a checksum failure during a read normally causes
322         <span class="productname">PostgreSQL</span> to report an error, aborting the current
323         transaction.  Setting <code class="varname">ignore_checksum_failure</code> to on causes
324         the system to ignore the failure (but still report a warning), and
325         continue processing.  This behavior may <span class="emphasis"><em>cause crashes, propagate
326         or hide corruption, or other serious problems</em></span>.  However, it may allow
327         you to get past the error and retrieve undamaged tuples that might still be
328         present in the table if the block header is still sane. If the header is
329         corrupt an error will be reported even if this option is enabled. The
330         default setting is <code class="literal">off</code>.
331         Only superusers and users with the appropriate <code class="literal">SET</code>
332         privilege can change this setting.
333        </p></dd><dt id="GUC-ZERO-DAMAGED-PAGES"><span class="term"><code class="varname">zero_damaged_pages</code> (<code class="type">boolean</code>)
334       <a id="id-1.6.6.20.3.25.1.3" class="indexterm"></a>
335       </span> <a href="#GUC-ZERO-DAMAGED-PAGES" class="id_link">#</a></dt><dd><p>
336         Detection of a damaged page header normally causes
337         <span class="productname">PostgreSQL</span> to report an error, aborting the current
338         transaction.  Setting <code class="varname">zero_damaged_pages</code> to on causes
339         the system to instead report a warning, zero out the damaged
340         page in memory, and continue processing.  This behavior <span class="emphasis"><em>will destroy data</em></span>,
341         namely all the rows on the damaged page.  However, it does allow you to get
342         past the error and retrieve rows from any undamaged pages that might
343         be present in the table.  It is useful for recovering data if
344         corruption has occurred due to a hardware or software error.  You should
345         generally not set this on until you have given up hope of recovering
346         data from the damaged pages of a table.  Zeroed-out pages are not
347         forced to disk so it is recommended to recreate the table or
348         the index before turning this parameter off again.  The
349         default setting is <code class="literal">off</code>.
350         Only superusers and users with the appropriate <code class="literal">SET</code>
351         privilege can change this setting.
352        </p></dd><dt id="GUC-IGNORE-INVALID-PAGES"><span class="term"><code class="varname">ignore_invalid_pages</code> (<code class="type">boolean</code>)
353       <a id="id-1.6.6.20.3.26.1.3" class="indexterm"></a>
354       </span> <a href="#GUC-IGNORE-INVALID-PAGES" class="id_link">#</a></dt><dd><p>
355         If set to <code class="literal">off</code> (the default), detection of
356         WAL records having references to invalid pages during
357         recovery causes <span class="productname">PostgreSQL</span> to
358         raise a PANIC-level error, aborting the recovery. Setting
359         <code class="varname">ignore_invalid_pages</code> to <code class="literal">on</code>
360         causes the system to ignore invalid page references in WAL records
361         (but still report a warning), and continue the recovery.
362         This behavior may <span class="emphasis"><em>cause crashes, data loss,
363         propagate or hide corruption, or other serious problems</em></span>.
364         However, it may allow you to get past the PANIC-level error,
365         to finish the recovery, and to cause the server to start up.
366         The parameter can only be set at server start. It only has effect
367         during recovery or in standby mode.
368        </p></dd><dt id="GUC-JIT-DEBUGGING-SUPPORT"><span class="term"><code class="varname">jit_debugging_support</code> (<code class="type">boolean</code>)
369       <a id="id-1.6.6.20.3.27.1.3" class="indexterm"></a>
370       </span> <a href="#GUC-JIT-DEBUGGING-SUPPORT" class="id_link">#</a></dt><dd><p>
371         If LLVM has the required functionality, register generated functions
372         with <span class="productname">GDB</span>.  This makes debugging easier.
373         The default setting is <code class="literal">off</code>.
374         This parameter can only be set at server start.
375        </p></dd><dt id="GUC-JIT-DUMP-BITCODE"><span class="term"><code class="varname">jit_dump_bitcode</code> (<code class="type">boolean</code>)
376       <a id="id-1.6.6.20.3.28.1.3" class="indexterm"></a>
377       </span> <a href="#GUC-JIT-DUMP-BITCODE" class="id_link">#</a></dt><dd><p>
378         Writes the generated <span class="productname">LLVM</span> IR out to the
379         file system, inside <a class="xref" href="runtime-config-file-locations.html#GUC-DATA-DIRECTORY">data_directory</a>. This is only
380         useful for working on the internals of the JIT implementation.
381         The default setting is <code class="literal">off</code>.
382         Only superusers and users with the appropriate <code class="literal">SET</code>
383         privilege can change this setting.
384        </p></dd><dt id="GUC-JIT-EXPRESSIONS"><span class="term"><code class="varname">jit_expressions</code> (<code class="type">boolean</code>)
385       <a id="id-1.6.6.20.3.29.1.3" class="indexterm"></a>
386       </span> <a href="#GUC-JIT-EXPRESSIONS" class="id_link">#</a></dt><dd><p>
387         Determines whether expressions are JIT compiled, when JIT compilation
388         is activated (see <a class="xref" href="jit-decision.html" title="30.2. When to JIT?">Section 30.2</a>).  The default is
389         <code class="literal">on</code>.
390        </p></dd><dt id="GUC-JIT-PROFILING-SUPPORT"><span class="term"><code class="varname">jit_profiling_support</code> (<code class="type">boolean</code>)
391       <a id="id-1.6.6.20.3.30.1.3" class="indexterm"></a>
392       </span> <a href="#GUC-JIT-PROFILING-SUPPORT" class="id_link">#</a></dt><dd><p>
393         If LLVM has the required functionality, emit the data needed to allow
394         <span class="productname">perf</span> to profile functions generated by JIT.
395         This writes out files to <code class="filename">~/.debug/jit/</code>; the
396         user is responsible for performing cleanup when desired.
397         The default setting is <code class="literal">off</code>.
398         This parameter can only be set at server start.
399        </p></dd><dt id="GUC-JIT-TUPLE-DEFORMING"><span class="term"><code class="varname">jit_tuple_deforming</code> (<code class="type">boolean</code>)
400       <a id="id-1.6.6.20.3.31.1.3" class="indexterm"></a>
401       </span> <a href="#GUC-JIT-TUPLE-DEFORMING" class="id_link">#</a></dt><dd><p>
402         Determines whether tuple deforming is JIT compiled, when JIT
403         compilation is activated (see <a class="xref" href="jit-decision.html" title="30.2. When to JIT?">Section 30.2</a>).
404         The default is <code class="literal">on</code>.
405        </p></dd><dt id="GUC-REMOVE-TEMP-FILES-AFTER-CRASH"><span class="term"><code class="varname">remove_temp_files_after_crash</code> (<code class="type">boolean</code>)
406       <a id="id-1.6.6.20.3.32.1.3" class="indexterm"></a>
407       </span> <a href="#GUC-REMOVE-TEMP-FILES-AFTER-CRASH" class="id_link">#</a></dt><dd><p>
408         When set to <code class="literal">on</code>, which is the default,
409         <span class="productname">PostgreSQL</span> will automatically remove
410         temporary files after a backend crash. If disabled, the files will be
411         retained and may be used for debugging, for example. Repeated crashes
412         may however result in accumulation of useless files. This parameter
413         can only be set in the <code class="filename">postgresql.conf</code> file or on
414         the server command line.
415        </p></dd><dt id="GUC-SEND-ABORT-FOR-CRASH"><span class="term"><code class="varname">send_abort_for_crash</code> (<code class="type">boolean</code>)
416       <a id="id-1.6.6.20.3.33.1.3" class="indexterm"></a>
417       </span> <a href="#GUC-SEND-ABORT-FOR-CRASH" class="id_link">#</a></dt><dd><p>
418         By default, after a backend crash the postmaster will stop remaining
419         child processes by sending them <span class="systemitem">SIGQUIT</span>
420         signals, which permits them to exit more-or-less gracefully.  When
421         this option is set to <code class="literal">on</code>,
422         <span class="systemitem">SIGABRT</span> is sent instead.  That normally
423         results in production of a core dump file for each such child
424         process.
425         This can be handy for investigating the states of other processes
426         after a crash.  It can also consume lots of disk space in the event
427         of repeated crashes, so do not enable this on systems you are not
428         monitoring carefully.
429         Beware that no support exists for cleaning up the core file(s)
430         automatically.
431         This parameter can only be set in
432         the <code class="filename">postgresql.conf</code> file or on the server
433         command line.
434        </p></dd><dt id="GUC-SEND-ABORT-FOR-KILL"><span class="term"><code class="varname">send_abort_for_kill</code> (<code class="type">boolean</code>)
435       <a id="id-1.6.6.20.3.34.1.3" class="indexterm"></a>
436       </span> <a href="#GUC-SEND-ABORT-FOR-KILL" class="id_link">#</a></dt><dd><p>
437         By default, after attempting to stop a child process with
438         <span class="systemitem">SIGQUIT</span>, the postmaster will wait five
439         seconds and then send <span class="systemitem">SIGKILL</span> to force
440         immediate termination.  When this option is set
441         to <code class="literal">on</code>, <span class="systemitem">SIGABRT</span> is sent
442         instead of <span class="systemitem">SIGKILL</span>.  That normally results
443         in production of a core dump file for each such child process.
444         This can be handy for investigating the states
445         of <span class="quote">“<span class="quote">stuck</span>”</span> child processes.  It can also consume lots
446         of disk space in the event of repeated crashes, so do not enable
447         this on systems you are not monitoring carefully.
448         Beware that no support exists for cleaning up the core file(s)
449         automatically.
450         This parameter can only be set in
451         the <code class="filename">postgresql.conf</code> file or on the server
452         command line.
453        </p></dd><dt id="GUC-DEBUG-LOGICAL-REPLICATION-STREAMING"><span class="term"><code class="varname">debug_logical_replication_streaming</code> (<code class="type">enum</code>)
454       <a id="id-1.6.6.20.3.35.1.3" class="indexterm"></a>
455       </span> <a href="#GUC-DEBUG-LOGICAL-REPLICATION-STREAMING" class="id_link">#</a></dt><dd><p>
456         The allowed values are <code class="literal">buffered</code> and
457         <code class="literal">immediate</code>. The default is <code class="literal">buffered</code>.
458         This parameter is intended to be used to test logical decoding and
459         replication of large transactions.  The effect of
460         <code class="varname">debug_logical_replication_streaming</code> is different for the
461         publisher and subscriber:
462        </p><p>
463         On the publisher side, <code class="varname">debug_logical_replication_streaming</code>
464         allows streaming or serializing changes immediately in logical decoding.
465         When set to <code class="literal">immediate</code>, stream each change if the
466         <a class="link" href="sql-createsubscription.html#SQL-CREATESUBSCRIPTION-PARAMS-WITH-STREAMING"><code class="literal">streaming</code></a>
467         option of
468         <a class="link" href="sql-createsubscription.html" title="CREATE SUBSCRIPTION"><code class="command">CREATE SUBSCRIPTION</code></a>
469         is enabled, otherwise, serialize each change.  When set to
470         <code class="literal">buffered</code>, the decoding will stream or serialize
471         changes when <code class="varname">logical_decoding_work_mem</code> is reached.
472        </p><p>
473         On the subscriber side, if the <code class="literal">streaming</code> option is set to
474         <code class="literal">parallel</code>, <code class="varname">debug_logical_replication_streaming</code>
475         can be used to direct the leader apply worker to send changes to the
476         shared memory queue or to serialize all changes to the file.  When set to
477         <code class="literal">buffered</code>, the leader sends changes to parallel apply
478         workers via a shared memory queue.  When set to
479         <code class="literal">immediate</code>, the leader serializes all changes to files
480         and notifies the parallel apply workers to read and apply them at the
481         end of the transaction.
482        </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="runtime-config-custom.html" title="19.16. Customized Options">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="runtime-config.html" title="Chapter 19. Server Configuration">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="runtime-config-short.html" title="19.18. Short Options">Next</a></td></tr><tr><td width="40%" align="left" valign="top">19.16. Customized Options </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 18.0 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 19.18. Short Options</td></tr></table></div></body></html>