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
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.
40 Backtrace support is not available on all platforms, and the quality
41 of the backtraces depends on compilation options.
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.
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.
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.
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).
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
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.
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
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>).
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
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
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
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)
227 Details of the structure being dumped may be found in
228 <code class="filename">src/include/storage/lock.h</code>.
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
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.
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
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.
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
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).
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
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).
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
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.
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
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.
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
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.
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
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.
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
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)
431 This parameter can only be set in
432 the <code class="filename">postgresql.conf</code> file or on the server
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)
450 This parameter can only be set in
451 the <code class="filename">postgresql.conf</code> file or on the server
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:
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>
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.
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>