codekingpro/portable-devtools
115k
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>20.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="20.16. Customized Options" /><link rel="next" href="runtime-config-short.html" title="20.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">20.17. Developer Options</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="runtime-config-custom.html" title="20.16. Customized Options">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="runtime-config.html" title="Chapter 20. Server Configuration">Up</a></td><th width="60%" align="center">Chapter 20. Server Configuration</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="runtime-config-short.html" title="20.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">20.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, and4 should never be used on a production database. However, some of5 them can be used to assist with the recovery of severely damaged6 databases. As such, they have been excluded from the sample7 <code class="filename">postgresql.conf</code> file. Note that many of these8 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.7.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 inside13 <code class="filename">pg_tblspc</code>, when an empty location string14 is provided to the <code class="command">CREATE TABLESPACE</code> command. This15 is intended to allow testing replication scenarios where primary and16 standby servers are running on the same machine. Such directories17 are likely to confuse backup tools that expect to find only symbolic18 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.7.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 as25 certain other risky actions on system tables. This is otherwise not26 allowed even for superusers. Ill-advised use of this setting can27 cause irretrievable data loss or seriously corrupt the database28 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.7.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 where36 the error happens matches a value in the list, then a backtrace is37 written to the server log together with the error message. This can38 be used to debug specific areas of the source code.39 </p><p>40 Backtrace support is not available on all platforms, and the quality41 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-DISCARD-CACHES"><span class="term"><code class="varname">debug_discard_caches</code> (<code class="type">integer</code>)46 <a id="id-1.6.7.20.3.4.1.3" class="indexterm"></a>47 </span> <a href="#GUC-DEBUG-DISCARD-CACHES" class="id_link">#</a></dt><dd><p>48 When set to <code class="literal">1</code>, each system catalog cache entry is49 invalidated at the first possible opportunity, whether or not50 anything that would render it invalid really occurred. Caching of51 system catalogs is effectively disabled as a result, so the server52 will run extremely slowly. Higher values run the cache invalidation53 recursively, which is even slower and only useful for testing54 the caching logic itself. The default value of <code class="literal">0</code>55 selects normal catalog caching behavior.56 </p><p>57 This parameter can be very helpful when trying to trigger58 hard-to-reproduce bugs involving concurrent catalog changes, but it59 is otherwise rarely needed. See the source code files60 <code class="filename">inval.c</code> and61 <code class="filename">pg_config_manual.h</code> for details.62 </p><p>63 This parameter is supported when64 <code class="symbol">DISCARD_CACHES_ENABLED</code> was defined at compile time65 (which happens automatically when using the66 <span class="application">configure</span> option67 <code class="option">--enable-cassert</code>). In production builds, its value68 will always be <code class="literal">0</code> and attempts to set it to another69 value will raise an error.70 </p></dd><dt id="GUC-DEBUG-IO-DIRECT"><span class="term"><code class="varname">debug_io_direct</code> (<code class="type">string</code>)71 <a id="id-1.6.7.20.3.5.1.3" class="indexterm"></a>72 </span> <a href="#GUC-DEBUG-IO-DIRECT" class="id_link">#</a></dt><dd><p>73 Ask the kernel to minimize caching effects for relation data and WAL74 files using <code class="literal">O_DIRECT</code> (most Unix-like systems),75 <code class="literal">F_NOCACHE</code> (macOS) or76 <code class="literal">FILE_FLAG_NO_BUFFERING</code> (Windows).77 </p><p>78 May be set to an empty string (the default) to disable use of direct79 I/O, or a comma-separated list of operations that should use direct I/O.80 The valid options are <code class="literal">data</code> for81 main data files, <code class="literal">wal</code> for WAL files, and82 <code class="literal">wal_init</code> for WAL files when being initially83 allocated.84 </p><p>85 Some operating systems and file systems do not support direct I/O, so86 non-default settings may be rejected at startup or cause errors.87 </p><p>88 Currently this feature reduces performance, and is intended for89 developer testing only.90 </p></dd><dt id="GUC-DEBUG-PARALLEL-QUERY"><span class="term"><code class="varname">debug_parallel_query</code> (<code class="type">enum</code>)91 <a id="id-1.6.7.20.3.6.1.3" class="indexterm"></a>92 </span> <a href="#GUC-DEBUG-PARALLEL-QUERY" class="id_link">#</a></dt><dd><p>93 Allows the use of parallel queries for testing purposes even in cases94 where no performance benefit is expected.95 The allowed values of <code class="varname">debug_parallel_query</code> are96 <code class="literal">off</code> (use parallel mode only when it is expected to improve97 performance), <code class="literal">on</code> (force parallel query for all queries98 for which it is thought to be safe), and <code class="literal">regress</code> (like99 <code class="literal">on</code>, but with additional behavior changes as explained100 below).101 </p><p>102 More specifically, setting this value to <code class="literal">on</code> will add103 a <code class="literal">Gather</code> node to the top of any query plan for which this104 appears to be safe, so that the query runs inside of a parallel worker.105 Even when a parallel worker is not available or cannot be used,106 operations such as starting a subtransaction that would be prohibited107 in a parallel query context will be prohibited unless the planner108 believes that this will cause the query to fail. If failures or109 unexpected results occur when this option is set, some functions used110 by the query may need to be marked <code class="literal">PARALLEL UNSAFE</code>111 (or, possibly, <code class="literal">PARALLEL RESTRICTED</code>).112 </p><p>113 Setting this value to <code class="literal">regress</code> has all of the same effects114 as setting it to <code class="literal">on</code> plus some additional effects that are115 intended to facilitate automated regression testing. Normally,116 messages from a parallel worker include a context line indicating that,117 but a setting of <code class="literal">regress</code> suppresses this line so that the118 output is the same as in non-parallel execution. Also,119 the <code class="literal">Gather</code> nodes added to plans by this setting are hidden120 in <code class="literal">EXPLAIN</code> output so that the output matches what121 would be obtained if this setting were turned <code class="literal">off</code>.122 </p></dd><dt id="GUC-IGNORE-SYSTEM-INDEXES"><span class="term"><code class="varname">ignore_system_indexes</code> (<code class="type">boolean</code>)123 <a id="id-1.6.7.20.3.7.1.3" class="indexterm"></a>124 </span> <a href="#GUC-IGNORE-SYSTEM-INDEXES" class="id_link">#</a></dt><dd><p>125 Ignore system indexes when reading system tables (but still126 update the indexes when modifying the tables). This is useful127 when recovering from damaged system indexes.128 This parameter cannot be changed after session start.129 </p></dd><dt id="GUC-POST-AUTH-DELAY"><span class="term"><code class="varname">post_auth_delay</code> (<code class="type">integer</code>)130 <a id="id-1.6.7.20.3.8.1.3" class="indexterm"></a>131 </span> <a href="#GUC-POST-AUTH-DELAY" class="id_link">#</a></dt><dd><p>132 The amount of time to delay when a new133 server process is started, after it conducts the134 authentication procedure. This is intended to give developers an135 opportunity to attach to the server process with a debugger.136 If this value is specified without units, it is taken as seconds.137 A value of zero (the default) disables the delay.138 This parameter cannot be changed after session start.139 </p></dd><dt id="GUC-PRE-AUTH-DELAY"><span class="term"><code class="varname">pre_auth_delay</code> (<code class="type">integer</code>)140 <a id="id-1.6.7.20.3.9.1.3" class="indexterm"></a>141 </span> <a href="#GUC-PRE-AUTH-DELAY" class="id_link">#</a></dt><dd><p>142 The amount of time to delay just after a143 new server process is forked, before it conducts the144 authentication procedure. This is intended to give developers an145 opportunity to attach to the server process with a debugger to146 trace down misbehavior in authentication.147 If this value is specified without units, it is taken as seconds.148 A value of zero (the default) disables the delay.149 This parameter can only be set in the <code class="filename">postgresql.conf</code>150 file or on the server command line.151 </p></dd><dt id="GUC-TRACE-NOTIFY"><span class="term"><code class="varname">trace_notify</code> (<code class="type">boolean</code>)152 <a id="id-1.6.7.20.3.10.1.3" class="indexterm"></a>153 </span> <a href="#GUC-TRACE-NOTIFY" class="id_link">#</a></dt><dd><p>154 Generates a great amount of debugging output for the155 <code class="command">LISTEN</code> and <code class="command">NOTIFY</code>156 commands. <a class="xref" href="runtime-config-client.html#GUC-CLIENT-MIN-MESSAGES">client_min_messages</a> or157 <a class="xref" href="runtime-config-logging.html#GUC-LOG-MIN-MESSAGES">log_min_messages</a> must be158 <code class="literal">DEBUG1</code> or lower to send this output to the159 client or server logs, respectively.160 </p></dd><dt id="GUC-TRACE-RECOVERY-MESSAGES"><span class="term"><code class="varname">trace_recovery_messages</code> (<code class="type">enum</code>)161 <a id="id-1.6.7.20.3.11.1.3" class="indexterm"></a>162 </span> <a href="#GUC-TRACE-RECOVERY-MESSAGES" class="id_link">#</a></dt><dd><p>163 Enables logging of recovery-related debugging output that otherwise164 would not be logged. This parameter allows the user to override the165 normal setting of <a class="xref" href="runtime-config-logging.html#GUC-LOG-MIN-MESSAGES">log_min_messages</a>, but only for166 specific messages. This is intended for use in debugging hot standby.167 Valid values are <code class="literal">DEBUG5</code>, <code class="literal">DEBUG4</code>,168 <code class="literal">DEBUG3</code>, <code class="literal">DEBUG2</code>, <code class="literal">DEBUG1</code>, and169 <code class="literal">LOG</code>. The default, <code class="literal">LOG</code>, does not affect170 logging decisions at all. The other values cause recovery-related171 debug messages of that priority or higher to be logged as though they172 had <code class="literal">LOG</code> priority; for common settings of173 <code class="varname">log_min_messages</code> this results in unconditionally sending174 them to the server log.175 This parameter can only be set in the <code class="filename">postgresql.conf</code>176 file or on the server command line.177 </p></dd><dt id="GUC-TRACE-SORT"><span class="term"><code class="varname">trace_sort</code> (<code class="type">boolean</code>)178 <a id="id-1.6.7.20.3.12.1.3" class="indexterm"></a>179 </span> <a href="#GUC-TRACE-SORT" class="id_link">#</a></dt><dd><p>180 If on, emit information about resource usage during sort operations.181 This parameter is only available if the <code class="symbol">TRACE_SORT</code> macro182 was defined when <span class="productname">PostgreSQL</span> was compiled.183 (However, <code class="symbol">TRACE_SORT</code> is currently defined by default.)184 </p></dd><dt id="GUC-TRACE-LOCKS"><span class="term"><code class="varname">trace_locks</code> (<code class="type">boolean</code>)185 <a id="id-1.6.7.20.3.13.1.3" class="indexterm"></a>186 </span> <a href="#GUC-TRACE-LOCKS" class="id_link">#</a></dt><dd><p>187 If on, emit information about lock usage. Information dumped188 includes the type of lock operation, the type of lock and the unique189 identifier of the object being locked or unlocked. Also included190 are bit masks for the lock types already granted on this object as191 well as for the lock types awaited on this object. For each lock192 type a count of the number of granted locks and waiting locks is193 also dumped as well as the totals. An example of the log file output194 is shown here:195</p><pre class="screen">196LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1)197 grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0198 wait(0) type(AccessShareLock)199LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1)200 grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1201 wait(0) type(AccessShareLock)202LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1)203 grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0204 wait(0) type(AccessShareLock)205LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)206 grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0207 wait(0) type(INVALID)208</pre><p>209 Details of the structure being dumped may be found in210 <code class="filename">src/include/storage/lock.h</code>.211 </p><p>212 This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>213 macro was defined when <span class="productname">PostgreSQL</span> was214 compiled.215 </p></dd><dt id="GUC-TRACE-LWLOCKS"><span class="term"><code class="varname">trace_lwlocks</code> (<code class="type">boolean</code>)216 <a id="id-1.6.7.20.3.14.1.3" class="indexterm"></a>217 </span> <a href="#GUC-TRACE-LWLOCKS" class="id_link">#</a></dt><dd><p>218 If on, emit information about lightweight lock usage. Lightweight219 locks are intended primarily to provide mutual exclusion of access220 to shared-memory data structures.221 </p><p>222 This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>223 macro was defined when <span class="productname">PostgreSQL</span> was224 compiled.225 </p></dd><dt id="GUC-TRACE-USERLOCKS"><span class="term"><code class="varname">trace_userlocks</code> (<code class="type">boolean</code>)226 <a id="id-1.6.7.20.3.15.1.3" class="indexterm"></a>227 </span> <a href="#GUC-TRACE-USERLOCKS" class="id_link">#</a></dt><dd><p>228 If on, emit information about user lock usage. Output is the same229 as for <code class="symbol">trace_locks</code>, only for advisory locks.230 </p><p>231 This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>232 macro was defined when <span class="productname">PostgreSQL</span> was233 compiled.234 </p></dd><dt id="GUC-TRACE-LOCK-OIDMIN"><span class="term"><code class="varname">trace_lock_oidmin</code> (<code class="type">integer</code>)235 <a id="id-1.6.7.20.3.16.1.3" class="indexterm"></a>236 </span> <a href="#GUC-TRACE-LOCK-OIDMIN" class="id_link">#</a></dt><dd><p>237 If set, do not trace locks for tables below this OID (used to avoid238 output on system tables).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> was242 compiled.243 </p></dd><dt id="GUC-TRACE-LOCK-TABLE"><span class="term"><code class="varname">trace_lock_table</code> (<code class="type">integer</code>)244 <a id="id-1.6.7.20.3.17.1.3" class="indexterm"></a>245 </span> <a href="#GUC-TRACE-LOCK-TABLE" class="id_link">#</a></dt><dd><p>246 Unconditionally trace locks on this table (OID).247 </p><p>248 This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>249 macro was defined when <span class="productname">PostgreSQL</span> was250 compiled.251 </p></dd><dt id="GUC-DEBUG-DEADLOCKS"><span class="term"><code class="varname">debug_deadlocks</code> (<code class="type">boolean</code>)252 <a id="id-1.6.7.20.3.18.1.3" class="indexterm"></a>253 </span> <a href="#GUC-DEBUG-DEADLOCKS" class="id_link">#</a></dt><dd><p>254 If set, dumps information about all current locks when a255 deadlock timeout occurs.256 </p><p>257 This parameter is only available if the <code class="symbol">LOCK_DEBUG</code>258 macro was defined when <span class="productname">PostgreSQL</span> was259 compiled.260 </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>)261 <a id="id-1.6.7.20.3.19.1.3" class="indexterm"></a>262 </span> <a href="#GUC-LOG-BTREE-BUILD-STATS" class="id_link">#</a></dt><dd><p>263 If set, logs system resource usage statistics (memory and CPU) on264 various B-tree operations.265 </p><p>266 This parameter is only available if the <code class="symbol">BTREE_BUILD_STATS</code>267 macro was defined when <span class="productname">PostgreSQL</span> was268 compiled.269 </p></dd><dt id="GUC-WAL-CONSISTENCY-CHECKING"><span class="term"><code class="varname">wal_consistency_checking</code> (<code class="type">string</code>)270 <a id="id-1.6.7.20.3.20.1.3" class="indexterm"></a>271 </span> <a href="#GUC-WAL-CONSISTENCY-CHECKING" class="id_link">#</a></dt><dd><p>272 This parameter is intended to be used to check for bugs in the WAL273 redo routines. When enabled, full-page images of any buffers modified274 in conjunction with the WAL record are added to the record.275 If the record is subsequently replayed, the system will first apply276 each record and then test whether the buffers modified by the record277 match the stored images. In certain cases (such as hint bits), minor278 variations are acceptable, and will be ignored. Any unexpected279 differences will result in a fatal error, terminating recovery.280 </p><p>281 The default value of this setting is the empty string, which disables282 the feature. It can be set to <code class="literal">all</code> to check all283 records, or to a comma-separated list of resource managers to check284 only records originating from those resource managers. Currently,285 the supported resource managers are <code class="literal">heap</code>,286 <code class="literal">heap2</code>, <code class="literal">btree</code>, <code class="literal">hash</code>,287 <code class="literal">gin</code>, <code class="literal">gist</code>, <code class="literal">sequence</code>,288 <code class="literal">spgist</code>, <code class="literal">brin</code>, and <code class="literal">generic</code>.289 Extensions may define additional resource managers. Only superusers and users with290 the appropriate <code class="literal">SET</code> privilege can change this setting.291 </p></dd><dt id="GUC-WAL-DEBUG"><span class="term"><code class="varname">wal_debug</code> (<code class="type">boolean</code>)292 <a id="id-1.6.7.20.3.21.1.3" class="indexterm"></a>293 </span> <a href="#GUC-WAL-DEBUG" class="id_link">#</a></dt><dd><p>294 If on, emit WAL-related debugging output. This parameter is295 only available if the <code class="symbol">WAL_DEBUG</code> macro was296 defined when <span class="productname">PostgreSQL</span> was297 compiled.298 </p></dd><dt id="GUC-IGNORE-CHECKSUM-FAILURE"><span class="term"><code class="varname">ignore_checksum_failure</code> (<code class="type">boolean</code>)299 <a id="id-1.6.7.20.3.22.1.3" class="indexterm"></a>300 </span> <a href="#GUC-IGNORE-CHECKSUM-FAILURE" class="id_link">#</a></dt><dd><p>301 Only has effect if <a class="xref" href="app-initdb.html#APP-INITDB-DATA-CHECKSUMS">data checksums</a> are enabled.302 </p><p>303 Detection of a checksum failure during a read normally causes304 <span class="productname">PostgreSQL</span> to report an error, aborting the current305 transaction. Setting <code class="varname">ignore_checksum_failure</code> to on causes306 the system to ignore the failure (but still report a warning), and307 continue processing. This behavior may <span class="emphasis"><em>cause crashes, propagate308 or hide corruption, or other serious problems</em></span>. However, it may allow309 you to get past the error and retrieve undamaged tuples that might still be310 present in the table if the block header is still sane. If the header is311 corrupt an error will be reported even if this option is enabled. The312 default setting is <code class="literal">off</code>.313 Only superusers and users with the appropriate <code class="literal">SET</code>314 privilege can change this setting.315 </p></dd><dt id="GUC-ZERO-DAMAGED-PAGES"><span class="term"><code class="varname">zero_damaged_pages</code> (<code class="type">boolean</code>)316 <a id="id-1.6.7.20.3.23.1.3" class="indexterm"></a>317 </span> <a href="#GUC-ZERO-DAMAGED-PAGES" class="id_link">#</a></dt><dd><p>318 Detection of a damaged page header normally causes319 <span class="productname">PostgreSQL</span> to report an error, aborting the current320 transaction. Setting <code class="varname">zero_damaged_pages</code> to on causes321 the system to instead report a warning, zero out the damaged322 page in memory, and continue processing. This behavior <span class="emphasis"><em>will destroy data</em></span>,323 namely all the rows on the damaged page. However, it does allow you to get324 past the error and retrieve rows from any undamaged pages that might325 be present in the table. It is useful for recovering data if326 corruption has occurred due to a hardware or software error. You should327 generally not set this on until you have given up hope of recovering328 data from the damaged pages of a table. Zeroed-out pages are not329 forced to disk so it is recommended to recreate the table or330 the index before turning this parameter off again. The331 default setting is <code class="literal">off</code>.332 Only superusers and users with the appropriate <code class="literal">SET</code>333 privilege can change this setting.334 </p></dd><dt id="GUC-IGNORE-INVALID-PAGES"><span class="term"><code class="varname">ignore_invalid_pages</code> (<code class="type">boolean</code>)335 <a id="id-1.6.7.20.3.24.1.3" class="indexterm"></a>336 </span> <a href="#GUC-IGNORE-INVALID-PAGES" class="id_link">#</a></dt><dd><p>337 If set to <code class="literal">off</code> (the default), detection of338 WAL records having references to invalid pages during339 recovery causes <span class="productname">PostgreSQL</span> to340 raise a PANIC-level error, aborting the recovery. Setting341 <code class="varname">ignore_invalid_pages</code> to <code class="literal">on</code>342 causes the system to ignore invalid page references in WAL records343 (but still report a warning), and continue the recovery.344 This behavior may <span class="emphasis"><em>cause crashes, data loss,345 propagate or hide corruption, or other serious problems</em></span>.346 However, it may allow you to get past the PANIC-level error,347 to finish the recovery, and to cause the server to start up.348 The parameter can only be set at server start. It only has effect349 during recovery or in standby mode.350 </p></dd><dt id="GUC-JIT-DEBUGGING-SUPPORT"><span class="term"><code class="varname">jit_debugging_support</code> (<code class="type">boolean</code>)351 <a id="id-1.6.7.20.3.25.1.3" class="indexterm"></a>352 </span> <a href="#GUC-JIT-DEBUGGING-SUPPORT" class="id_link">#</a></dt><dd><p>353 If LLVM has the required functionality, register generated functions354 with <span class="productname">GDB</span>. This makes debugging easier.355 The default setting is <code class="literal">off</code>.356 This parameter can only be set at server start.357 </p></dd><dt id="GUC-JIT-DUMP-BITCODE"><span class="term"><code class="varname">jit_dump_bitcode</code> (<code class="type">boolean</code>)358 <a id="id-1.6.7.20.3.26.1.3" class="indexterm"></a>359 </span> <a href="#GUC-JIT-DUMP-BITCODE" class="id_link">#</a></dt><dd><p>360 Writes the generated <span class="productname">LLVM</span> IR out to the361 file system, inside <a class="xref" href="runtime-config-file-locations.html#GUC-DATA-DIRECTORY">data_directory</a>. This is only362 useful for working on the internals of the JIT implementation.363 The default setting is <code class="literal">off</code>.364 Only superusers and users with the appropriate <code class="literal">SET</code>365 privilege can change this setting.366 </p></dd><dt id="GUC-JIT-EXPRESSIONS"><span class="term"><code class="varname">jit_expressions</code> (<code class="type">boolean</code>)367 <a id="id-1.6.7.20.3.27.1.3" class="indexterm"></a>368 </span> <a href="#GUC-JIT-EXPRESSIONS" class="id_link">#</a></dt><dd><p>369 Determines whether expressions are JIT compiled, when JIT compilation370 is activated (see <a class="xref" href="jit-decision.html" title="32.2. When to JIT?">Section 32.2</a>). The default is371 <code class="literal">on</code>.372 </p></dd><dt id="GUC-JIT-PROFILING-SUPPORT"><span class="term"><code class="varname">jit_profiling_support</code> (<code class="type">boolean</code>)373 <a id="id-1.6.7.20.3.28.1.3" class="indexterm"></a>374 </span> <a href="#GUC-JIT-PROFILING-SUPPORT" class="id_link">#</a></dt><dd><p>375 If LLVM has the required functionality, emit the data needed to allow376 <span class="productname">perf</span> to profile functions generated by JIT.377 This writes out files to <code class="filename">~/.debug/jit/</code>; the378 user is responsible for performing cleanup when desired.379 The default setting is <code class="literal">off</code>.380 This parameter can only be set at server start.381 </p></dd><dt id="GUC-JIT-TUPLE-DEFORMING"><span class="term"><code class="varname">jit_tuple_deforming</code> (<code class="type">boolean</code>)382 <a id="id-1.6.7.20.3.29.1.3" class="indexterm"></a>383 </span> <a href="#GUC-JIT-TUPLE-DEFORMING" class="id_link">#</a></dt><dd><p>384 Determines whether tuple deforming is JIT compiled, when JIT385 compilation is activated (see <a class="xref" href="jit-decision.html" title="32.2. When to JIT?">Section 32.2</a>).386 The default is <code class="literal">on</code>.387 </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>)388 <a id="id-1.6.7.20.3.30.1.3" class="indexterm"></a>389 </span> <a href="#GUC-REMOVE-TEMP-FILES-AFTER-CRASH" class="id_link">#</a></dt><dd><p>390 When set to <code class="literal">on</code>, which is the default,391 <span class="productname">PostgreSQL</span> will automatically remove392 temporary files after a backend crash. If disabled, the files will be393 retained and may be used for debugging, for example. Repeated crashes394 may however result in accumulation of useless files. This parameter395 can only be set in the <code class="filename">postgresql.conf</code> file or on396 the server command line.397 </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>)398 <a id="id-1.6.7.20.3.31.1.3" class="indexterm"></a>399 </span> <a href="#GUC-SEND-ABORT-FOR-CRASH" class="id_link">#</a></dt><dd><p>400 By default, after a backend crash the postmaster will stop remaining401 child processes by sending them <span class="systemitem">SIGQUIT</span>402 signals, which permits them to exit more-or-less gracefully. When403 this option is set to <code class="literal">on</code>,404 <span class="systemitem">SIGABRT</span> is sent instead. That normally405 results in production of a core dump file for each such child406 process.407 This can be handy for investigating the states of other processes408 after a crash. It can also consume lots of disk space in the event409 of repeated crashes, so do not enable this on systems you are not410 monitoring carefully.411 Beware that no support exists for cleaning up the core file(s)412 automatically.413 This parameter can only be set in414 the <code class="filename">postgresql.conf</code> file or on the server415 command line.416 </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>)417 <a id="id-1.6.7.20.3.32.1.3" class="indexterm"></a>418 </span> <a href="#GUC-SEND-ABORT-FOR-KILL" class="id_link">#</a></dt><dd><p>419 By default, after attempting to stop a child process with420 <span class="systemitem">SIGQUIT</span>, the postmaster will wait five421 seconds and then send <span class="systemitem">SIGKILL</span> to force422 immediate termination. When this option is set423 to <code class="literal">on</code>, <span class="systemitem">SIGABRT</span> is sent424 instead of <span class="systemitem">SIGKILL</span>. That normally results425 in production of a core dump file for each such child process.426 This can be handy for investigating the states427 of <span class="quote">“<span class="quote">stuck</span>”</span> child processes. It can also consume lots428 of disk space in the event of repeated crashes, so do not enable429 this on systems you are not monitoring carefully.430 Beware that no support exists for cleaning up the core file(s)431 automatically.432 This parameter can only be set in433 the <code class="filename">postgresql.conf</code> file or on the server434 command line.435 </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>)436 <a id="id-1.6.7.20.3.33.1.3" class="indexterm"></a>437 </span> <a href="#GUC-DEBUG-LOGICAL-REPLICATION-STREAMING" class="id_link">#</a></dt><dd><p>438 The allowed values are <code class="literal">buffered</code> and439 <code class="literal">immediate</code>. The default is <code class="literal">buffered</code>.440 This parameter is intended to be used to test logical decoding and441 replication of large transactions. The effect of442 <code class="varname">debug_logical_replication_streaming</code> is different for the443 publisher and subscriber:444 </p><p>445 On the publisher side, <code class="varname">debug_logical_replication_streaming</code>446 allows streaming or serializing changes immediately in logical decoding.447 When set to <code class="literal">immediate</code>, stream each change if the448 <a class="link" href="sql-createsubscription.html#SQL-CREATESUBSCRIPTION-WITH-STREAMING"><code class="literal">streaming</code></a>449 option of450 <a class="link" href="sql-createsubscription.html" title="CREATE SUBSCRIPTION"><code class="command">CREATE SUBSCRIPTION</code></a>451 is enabled, otherwise, serialize each change. When set to452 <code class="literal">buffered</code>, the decoding will stream or serialize453 changes when <code class="varname">logical_decoding_work_mem</code> is reached.454 </p><p>455 On the subscriber side, if the <code class="literal">streaming</code> option is set to456 <code class="literal">parallel</code>, <code class="varname">debug_logical_replication_streaming</code>457 can be used to direct the leader apply worker to send changes to the458 shared memory queue or to serialize all changes to the file. When set to459 <code class="literal">buffered</code>, the leader sends changes to parallel apply460 workers via a shared memory queue. When set to461 <code class="literal">immediate</code>, the leader serializes all changes to files462 and notifies the parallel apply workers to read and apply them at the463 end of the transaction.464 </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="20.16. Customized Options">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="runtime-config.html" title="Chapter 20. Server Configuration">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="runtime-config-short.html" title="20.18. Short Options">Next</a></td></tr><tr><td width="40%" align="left" valign="top">20.16. Customized Options </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 20.18. Short Options</td></tr></table></div></body></html>