2 19.11. Client Connection Defaults #
4 19.11.1. Statement Behavior
5 19.11.2. Locale and Formatting
6 19.11.3. Shared Library Preloading
7 19.11.4. Other Defaults
9 19.11.1. Statement Behavior #
11 client_min_messages (enum) #
12 Controls which message levels are sent to the client. Valid
13 values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE,
14 WARNING, and ERROR. Each level includes all the levels that
15 follow it. The later the level, the fewer messages are sent. The
16 default is NOTICE. Note that LOG has a different rank here than
19 INFO level messages are always sent to the client.
21 search_path (string) #
22 This variable specifies the order in which schemas are searched
23 when an object (table, data type, function, etc.) is referenced
24 by a simple name with no schema specified. When there are
25 objects of identical names in different schemas, the one found
26 first in the search path is used. An object that is not in any
27 of the schemas in the search path can only be referenced by
28 specifying its containing schema with a qualified (dotted) name.
30 The value for search_path must be a comma-separated list of
31 schema names. Any name that is not an existing schema, or is a
32 schema for which the user does not have USAGE permission, is
35 If one of the list items is the special name $user, then the
36 schema having the name returned by CURRENT_USER is substituted,
37 if there is such a schema and the user has USAGE permission for
38 it. (If not, $user is ignored.)
40 The system catalog schema, pg_catalog, is always searched,
41 whether it is mentioned in the path or not. If it is mentioned
42 in the path then it will be searched in the specified order. If
43 pg_catalog is not in the path then it will be searched before
44 searching any of the path items.
46 Likewise, the current session's temporary-table schema,
47 pg_temp_nnn, is always searched if it exists. It can be
48 explicitly listed in the path by using the alias pg_temp. If it
49 is not listed in the path then it is searched first (even before
50 pg_catalog). However, the temporary schema is only searched for
51 relation (table, view, sequence, etc.) and data type names. It
52 is never searched for function or operator names.
54 When objects are created without specifying a particular target
55 schema, they will be placed in the first valid schema named in
56 search_path. An error is reported if the search path is empty.
58 The default value for this parameter is "$user", public. This
59 setting supports shared use of a database (where no users have
60 private schemas, and all share use of public), private per-user
61 schemas, and combinations of these. Other effects can be
62 obtained by altering the default search path setting, either
65 For more information on schema handling, see Section 5.10. In
66 particular, the default configuration is suitable only when the
67 database has a single user or a few mutually-trusting users.
69 The current effective value of the search path can be examined
70 via the SQL function current_schemas (see Section 9.27). This is
71 not quite the same as examining the value of search_path, since
72 current_schemas shows how the items appearing in search_path
75 row_security (boolean) #
76 This variable controls whether to raise an error in lieu of
77 applying a row security policy. When set to on, policies apply
78 normally. When set to off, queries fail which would otherwise
79 apply at least one policy. The default is on. Change to off
80 where limited row visibility could cause incorrect results; for
81 example, pg_dump makes that change by default. This variable has
82 no effect on roles which bypass every row security policy, to
83 wit, superusers and roles with the BYPASSRLS attribute.
85 For more information on row security policies, see CREATE
88 default_table_access_method (string) #
89 This parameter specifies the default table access method to use
90 when creating tables or materialized views if the CREATE command
91 does not explicitly specify an access method, or when SELECT ...
92 INTO is used, which does not allow specifying a table access
93 method. The default is heap.
95 default_tablespace (string) #
96 This variable specifies the default tablespace in which to
97 create objects (tables and indexes) when a CREATE command does
98 not explicitly specify a tablespace.
100 The value is either the name of a tablespace, or an empty string
101 to specify using the default tablespace of the current database.
102 If the value does not match the name of any existing tablespace,
103 PostgreSQL will automatically use the default tablespace of the
104 current database. If a nondefault tablespace is specified, the
105 user must have CREATE privilege for it, or creation attempts
108 This variable is not used for temporary tables; for them,
109 temp_tablespaces is consulted instead.
111 This variable is also not used when creating databases. By
112 default, a new database inherits its tablespace setting from the
113 template database it is copied from.
115 If this parameter is set to a value other than the empty string
116 when a partitioned table is created, the partitioned table's
117 tablespace will be set to that value, which will be used as the
118 default tablespace for partitions created in the future, even if
119 default_tablespace has changed since then.
121 For more information on tablespaces, see Section 22.6.
123 default_toast_compression (enum) #
124 This variable sets the default TOAST compression method for
125 values of compressible columns. (This can be overridden for
126 individual columns by setting the COMPRESSION column option in
127 CREATE TABLE or ALTER TABLE.) The supported compression methods
128 are pglz and (if PostgreSQL was compiled with --with-lz4) lz4.
131 temp_tablespaces (string) #
132 This variable specifies tablespaces in which to create temporary
133 objects (temp tables and indexes on temp tables) when a CREATE
134 command does not explicitly specify a tablespace. Temporary
135 files for purposes such as sorting large data sets are also
136 created in these tablespaces.
138 The value is a list of names of tablespaces. When there is more
139 than one name in the list, PostgreSQL chooses a random member of
140 the list each time a temporary object is to be created; except
141 that within a transaction, successively created temporary
142 objects are placed in successive tablespaces from the list. If
143 the selected element of the list is an empty string, PostgreSQL
144 will automatically use the default tablespace of the current
147 When temp_tablespaces is set interactively, specifying a
148 nonexistent tablespace is an error, as is specifying a
149 tablespace for which the user does not have CREATE privilege.
150 However, when using a previously set value, nonexistent
151 tablespaces are ignored, as are tablespaces for which the user
152 lacks CREATE privilege. In particular, this rule applies when
153 using a value set in postgresql.conf.
155 The default value is an empty string, which results in all
156 temporary objects being created in the default tablespace of the
159 See also default_tablespace.
161 check_function_bodies (boolean) #
162 This parameter is normally on. When set to off, it disables
163 validation of the routine body string during CREATE FUNCTION and
164 CREATE PROCEDURE. Disabling validation avoids side effects of
165 the validation process, in particular preventing false positives
166 due to problems such as forward references. Set this parameter
167 to off before loading functions on behalf of other users;
168 pg_dump does so automatically.
170 default_transaction_isolation (enum) #
171 Each SQL transaction has an isolation level, which can be either
172 “read uncommitted”, “read committed”, “repeatable read”, or
173 “serializable”. This parameter controls the default isolation
174 level of each new transaction. The default is “read committed”.
176 Consult Chapter 13 and SET TRANSACTION for more information.
178 default_transaction_read_only (boolean) #
179 A read-only SQL transaction cannot alter non-temporary tables.
180 This parameter controls the default read-only status of each new
181 transaction. The default is off (read/write).
183 Consult SET TRANSACTION for more information.
185 default_transaction_deferrable (boolean) #
186 When running at the serializable isolation level, a deferrable
187 read-only SQL transaction may be delayed before it is allowed to
188 proceed. However, once it begins executing it does not incur any
189 of the overhead required to ensure serializability; so
190 serialization code will have no reason to force it to abort
191 because of concurrent updates, making this option suitable for
192 long-running read-only transactions.
194 This parameter controls the default deferrable status of each
195 new transaction. It currently has no effect on read-write
196 transactions or those operating at isolation levels lower than
197 serializable. The default is off.
199 Consult SET TRANSACTION for more information.
201 transaction_isolation (enum) #
202 This parameter reflects the current transaction's isolation
203 level. At the beginning of each transaction, it is set to the
204 current value of default_transaction_isolation. Any subsequent
205 attempt to change it is equivalent to a SET TRANSACTION command.
207 transaction_read_only (boolean) #
208 This parameter reflects the current transaction's read-only
209 status. At the beginning of each transaction, it is set to the
210 current value of default_transaction_read_only. Any subsequent
211 attempt to change it is equivalent to a SET TRANSACTION command.
213 transaction_deferrable (boolean) #
214 This parameter reflects the current transaction's deferrability
215 status. At the beginning of each transaction, it is set to the
216 current value of default_transaction_deferrable. Any subsequent
217 attempt to change it is equivalent to a SET TRANSACTION command.
219 session_replication_role (enum) #
220 Controls firing of replication-related triggers and rules for
221 the current session. Possible values are origin (the default),
222 replica and local. Setting this parameter results in discarding
223 any previously cached query plans. Only superusers and users
224 with the appropriate SET privilege can change this setting.
226 The intended use of this setting is that logical replication
227 systems set it to replica when they are applying replicated
228 changes. The effect of that will be that triggers and rules
229 (that have not been altered from their default configuration)
230 will not fire on the replica. See the ALTER TABLE clauses ENABLE
231 TRIGGER and ENABLE RULE for more information.
233 PostgreSQL treats the settings origin and local the same
234 internally. Third-party replication systems may use these two
235 values for their internal purposes, for example using local to
236 designate a session whose changes should not be replicated.
238 Since foreign keys are implemented as triggers, setting this
239 parameter to replica also disables all foreign key checks, which
240 can leave data in an inconsistent state if improperly used.
242 statement_timeout (integer) #
243 Abort any statement that takes more than the specified amount of
244 time. If log_min_error_statement is set to ERROR or lower, the
245 statement that timed out will also be logged. If this value is
246 specified without units, it is taken as milliseconds. A value of
247 zero (the default) disables the timeout.
249 The timeout is measured from the time a command arrives at the
250 server until it is completed by the server. If multiple SQL
251 statements appear in a single simple-query message, the timeout
252 is applied to each statement separately. (PostgreSQL versions
253 before 13 usually treated the timeout as applying to the whole
254 query string.) In extended query protocol, the timeout starts
255 running when any query-related message (Parse, Bind, Execute,
256 Describe) arrives, and it is canceled by completion of an
257 Execute or Sync message.
259 Setting statement_timeout in postgresql.conf is not recommended
260 because it would affect all sessions.
262 transaction_timeout (integer) #
263 Terminate any session that spans longer than the specified
264 amount of time in a transaction. The limit applies both to
265 explicit transactions (started with BEGIN) and to an implicitly
266 started transaction corresponding to a single statement. If this
267 value is specified without units, it is taken as milliseconds. A
268 value of zero (the default) disables the timeout.
270 If transaction_timeout is shorter or equal to
271 idle_in_transaction_session_timeout or statement_timeout then
272 the longer timeout is ignored.
274 Setting transaction_timeout in postgresql.conf is not
275 recommended because it would affect all sessions.
279 Prepared transactions are not subject to this timeout.
281 lock_timeout (integer) #
282 Abort any statement that waits longer than the specified amount
283 of time while attempting to acquire a lock on a table, index,
284 row, or other database object. The time limit applies separately
285 to each lock acquisition attempt. The limit applies both to
286 explicit locking requests (such as LOCK TABLE, or SELECT FOR
287 UPDATE without NOWAIT) and to implicitly-acquired locks. If this
288 value is specified without units, it is taken as milliseconds. A
289 value of zero (the default) disables the timeout.
291 Unlike statement_timeout, this timeout can only occur while
292 waiting for locks. Note that if statement_timeout is nonzero, it
293 is rather pointless to set lock_timeout to the same or larger
294 value, since the statement timeout would always trigger first.
295 If log_min_error_statement is set to ERROR or lower, the
296 statement that timed out will be logged.
298 Setting lock_timeout in postgresql.conf is not recommended
299 because it would affect all sessions.
301 idle_in_transaction_session_timeout (integer) #
302 Terminate any session that has been idle (that is, waiting for a
303 client query) within an open transaction for longer than the
304 specified amount of time. If this value is specified without
305 units, it is taken as milliseconds. A value of zero (the
306 default) disables the timeout.
308 This option can be used to ensure that idle sessions do not hold
309 locks for an unreasonable amount of time. Even when no
310 significant locks are held, an open transaction prevents
311 vacuuming away recently-dead tuples that may be visible only to
312 this transaction; so remaining idle for a long time can
313 contribute to table bloat. See Section 24.1 for more details.
315 idle_session_timeout (integer) #
316 Terminate any session that has been idle (that is, waiting for a
317 client query), but not within an open transaction, for longer
318 than the specified amount of time. If this value is specified
319 without units, it is taken as milliseconds. A value of zero (the
320 default) disables the timeout.
322 Unlike the case with an open transaction, an idle session
323 without a transaction imposes no large costs on the server, so
324 there is less need to enable this timeout than
325 idle_in_transaction_session_timeout.
327 Be wary of enforcing this timeout on connections made through
328 connection-pooling software or other middleware, as such a layer
329 may not react well to unexpected connection closure. It may be
330 helpful to enable this timeout only for interactive sessions,
331 perhaps by applying it only to particular users.
333 bytea_output (enum) #
334 Sets the output format for values of type bytea. Valid values
335 are hex (the default) and escape (the traditional PostgreSQL
336 format). See Section 8.4 for more information. The bytea type
337 always accepts both formats on input, regardless of this
341 Sets how binary values are to be encoded in XML. This applies
342 for example when bytea values are converted to XML by the
343 functions xmlelement or xmlforest. Possible values are base64
344 and hex, which are both defined in the XML Schema standard. The
345 default is base64. For further information about XML-related
346 functions, see Section 9.15.
348 The actual choice here is mostly a matter of taste, constrained
349 only by possible restrictions in client applications. Both
350 methods support all possible values, although the hex encoding
351 will be somewhat larger than the base64 encoding.
354 Sets whether DOCUMENT or CONTENT is implicit when converting
355 between XML and character string values. See Section 8.13 for a
356 description of this. Valid values are DOCUMENT and CONTENT. The
359 According to the SQL standard, the command to set this option is
361 SET XML OPTION { DOCUMENT | CONTENT };
363 This syntax is also available in PostgreSQL.
365 gin_pending_list_limit (integer) #
366 Sets the maximum size of a GIN index's pending list, which is
367 used when fastupdate is enabled. If the list grows larger than
368 this maximum size, it is cleaned up by moving the entries in it
369 to the index's main GIN data structure in bulk. If this value is
370 specified without units, it is taken as kilobytes. The default
371 is four megabytes (4MB). This setting can be overridden for
372 individual GIN indexes by changing index storage parameters. See
373 Section 65.4.4.1 and Section 65.4.5 for more information.
375 createrole_self_grant (string) #
376 If a user who has CREATEROLE but not SUPERUSER creates a role,
377 and if this is set to a non-empty value, the newly-created role
378 will be granted to the creating user with the options specified.
379 The value must be set, inherit, or a comma-separated list of
380 these. The default value is an empty string, which disables the
383 The purpose of this option is to allow a CREATEROLE user who is
384 not a superuser to automatically inherit, or automatically gain
385 the ability to SET ROLE to, any created users. Since a
386 CREATEROLE user is always implicitly granted ADMIN OPTION on
387 created roles, that user could always execute a GRANT statement
388 that would achieve the same effect as this setting. However, it
389 can be convenient for usability reasons if the grant happens
390 automatically. A superuser automatically inherits the privileges
391 of every role and can always SET ROLE to any role, and this
392 setting can be used to produce a similar behavior for CREATEROLE
393 users for users which they create.
395 event_triggers (boolean) #
396 Allow temporarily disabling execution of event triggers in order
397 to troubleshoot and repair faulty event triggers. All event
398 triggers will be disabled by setting it to false. Setting the
399 value to true allows all event triggers to fire, this is the
400 default value. Only superusers and users with the appropriate
401 SET privilege can change this setting.
403 restrict_nonsystem_relation_kind (string) #
404 Set relation kinds for which access to non-system relations is
405 prohibited. The value takes the form of a comma-separated list
406 of relation kinds. Currently, the supported relation kinds are
407 view and foreign-table.
409 19.11.2. Locale and Formatting #
412 Sets the display format for date and time values, as well as the
413 rules for interpreting ambiguous date input values. For
414 historical reasons, this variable contains two independent
415 components: the output format specification (ISO, Postgres, SQL,
416 or German) and the input/output specification for year/month/day
417 ordering (DMY, MDY, or YMD). These can be set separately or
418 together. The keywords Euro and European are synonyms for DMY;
419 the keywords US, NonEuro, and NonEuropean are synonyms for MDY.
420 See Section 8.5 for more information. The built-in default is
421 ISO, MDY, but initdb will initialize the configuration file with
422 a setting that corresponds to the behavior of the chosen lc_time
425 IntervalStyle (enum) #
426 Sets the display format for interval values. The value
427 sql_standard will produce output matching SQL standard interval
428 literals. The value postgres (which is the default) will produce
429 output matching PostgreSQL releases prior to 8.4 when the
430 DateStyle parameter was set to ISO. The value postgres_verbose
431 will produce output matching PostgreSQL releases prior to 8.4
432 when the DateStyle parameter was set to non-ISO output. The
433 value iso_8601 will produce output matching the time interval
434 “format with designators” defined in section 4.4.3.2 of ISO
437 The IntervalStyle parameter also affects the interpretation of
438 ambiguous interval input. See Section 8.5.4 for more
442 Sets the time zone for displaying and interpreting time stamps.
443 The built-in default is GMT, but that is typically overridden in
444 postgresql.conf; initdb will install a setting there
445 corresponding to its system environment. See Section 8.5.3 for
448 timezone_abbreviations (string) #
449 Sets the collection of additional time zone abbreviations that
450 will be accepted by the server for datetime input (beyond any
451 abbreviations defined by the current TimeZone setting). The
452 default is 'Default', which is a collection that works in most
453 of the world; there are also 'Australia' and 'India', and other
454 collections can be defined for a particular installation. See
455 Section B.4 for more information.
457 extra_float_digits (integer) #
458 This parameter adjusts the number of digits used for textual
459 output of floating-point values, including float4, float8, and
460 geometric data types.
462 If the value is 1 (the default) or above, float values are
463 output in shortest-precise format; see Section 8.1.3. The actual
464 number of digits generated depends only on the value being
465 output, not on the value of this parameter. At most 17 digits
466 are required for float8 values, and 9 for float4 values. This
467 format is both fast and precise, preserving the original binary
468 float value exactly when correctly read. For historical
469 compatibility, values up to 3 are permitted.
471 If the value is zero or negative, then the output is rounded to
472 a given decimal precision. The precision used is the standard
473 number of digits for the type (FLT_DIG or DBL_DIG as
474 appropriate) reduced according to the value of this parameter.
475 (For example, specifying -1 will cause float4 values to be
476 output rounded to 5 significant digits, and float8 values
477 rounded to 14 digits.) This format is slower and does not
478 preserve all the bits of the binary float value, but may be more
483 The meaning of this parameter, and its default value, changed in
484 PostgreSQL 12; see Section 8.1.3 for further discussion.
486 client_encoding (string) #
487 Sets the client-side encoding (character set). The default is to
488 use the database encoding. The character sets supported by the
489 PostgreSQL server are described in Section 23.3.1.
491 lc_messages (string) #
492 Sets the language in which messages are displayed. Acceptable
493 values are system-dependent; see Section 23.1 for more
494 information. If this variable is set to the empty string (which
495 is the default) then the value is inherited from the execution
496 environment of the server in a system-dependent way.
498 On some systems, this locale category does not exist. Setting
499 this variable will still work, but there will be no effect.
500 Also, there is a chance that no translated messages for the
501 desired language exist. In that case you will continue to see
502 the English messages.
504 Only superusers and users with the appropriate SET privilege can
507 lc_monetary (string) #
508 Sets the locale to use for formatting monetary amounts, for
509 example with the to_char family of functions. Acceptable values
510 are system-dependent; see Section 23.1 for more information. If
511 this variable is set to the empty string (which is the default)
512 then the value is inherited from the execution environment of
513 the server in a system-dependent way.
515 lc_numeric (string) #
516 Sets the locale to use for formatting numbers, for example with
517 the to_char family of functions. Acceptable values are
518 system-dependent; see Section 23.1 for more information. If this
519 variable is set to the empty string (which is the default) then
520 the value is inherited from the execution environment of the
521 server in a system-dependent way.
524 Sets the locale to use for formatting dates and times, for
525 example with the to_char family of functions. Acceptable values
526 are system-dependent; see Section 23.1 for more information. If
527 this variable is set to the empty string (which is the default)
528 then the value is inherited from the execution environment of
529 the server in a system-dependent way.
531 icu_validation_level (enum) #
532 When ICU locale validation problems are encountered, controls
533 which message level is used to report the problem. Valid values
534 are DISABLED, DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO,
535 NOTICE, WARNING, ERROR, and LOG.
537 If set to DISABLED, does not report validation problems at all.
538 Otherwise reports problems at the given message level. The
541 default_text_search_config (string) #
542 Selects the text search configuration that is used by those
543 variants of the text search functions that do not have an
544 explicit argument specifying the configuration. See Chapter 12
545 for further information. The built-in default is
546 pg_catalog.simple, but initdb will initialize the configuration
547 file with a setting that corresponds to the chosen lc_ctype
548 locale, if a configuration matching that locale can be
551 19.11.3. Shared Library Preloading #
553 Several settings are available for preloading shared libraries into the
554 server, in order to load additional functionality or achieve
555 performance benefits. For example, a setting of '$libdir/mylib' would
556 cause mylib.so (or on some platforms, mylib.sl) to be preloaded from
557 the installation's standard library directory. The differences between
558 the settings are when they take effect and what privileges are required
561 PostgreSQL procedural language libraries can be preloaded in this way,
562 typically by using the syntax '$libdir/plXXX' where XXX is pgsql, perl,
565 Only shared libraries specifically intended to be used with PostgreSQL
566 can be loaded this way. Every PostgreSQL-supported library has a “magic
567 block” that is checked to guarantee compatibility. For this reason,
568 non-PostgreSQL libraries cannot be loaded in this way. You might be
569 able to use operating-system facilities such as LD_PRELOAD for that.
571 In general, refer to the documentation of a specific module for the
572 recommended way to load that module.
574 local_preload_libraries (string) #
575 This variable specifies one or more shared libraries that are to
576 be preloaded at connection start. It contains a comma-separated
577 list of library names, where each name is interpreted as for the
578 LOAD command. Whitespace between entries is ignored; surround a
579 library name with double quotes if you need to include
580 whitespace or commas in the name. The parameter value only takes
581 effect at the start of the connection. Subsequent changes have
582 no effect. If a specified library is not found, the connection
585 This option can be set by any user. Because of that, the
586 libraries that can be loaded are restricted to those appearing
587 in the plugins subdirectory of the installation's standard
588 library directory. (It is the database administrator's
589 responsibility to ensure that only “safe” libraries are
590 installed there.) Entries in local_preload_libraries can specify
591 this directory explicitly, for example $libdir/plugins/mylib, or
592 just specify the library name — mylib would have the same effect
593 as $libdir/plugins/mylib.
595 The intent of this feature is to allow unprivileged users to
596 load debugging or performance-measurement libraries into
597 specific sessions without requiring an explicit LOAD command. To
598 that end, it would be typical to set this parameter using the
599 PGOPTIONS environment variable on the client or by using ALTER
602 However, unless a module is specifically designed to be used in
603 this way by non-superusers, this is usually not the right
604 setting to use. Look at session_preload_libraries instead.
606 session_preload_libraries (string) #
607 This variable specifies one or more shared libraries that are to
608 be preloaded at connection start. It contains a comma-separated
609 list of library names, where each name is interpreted as for the
610 LOAD command. Whitespace between entries is ignored; surround a
611 library name with double quotes if you need to include
612 whitespace or commas in the name. The parameter value only takes
613 effect at the start of the connection. Subsequent changes have
614 no effect. If a specified library is not found, the connection
615 attempt will fail. Only superusers and users with the
616 appropriate SET privilege can change this setting.
618 The intent of this feature is to allow debugging or
619 performance-measurement libraries to be loaded into specific
620 sessions without an explicit LOAD command being given. For
621 example, auto_explain could be enabled for all sessions under a
622 given user name by setting this parameter with ALTER ROLE SET.
623 Also, this parameter can be changed without restarting the
624 server (but changes only take effect when a new session is
625 started), so it is easier to add new modules this way, even if
626 they should apply to all sessions.
628 Unlike shared_preload_libraries, there is no large performance
629 advantage to loading a library at session start rather than when
630 it is first used. There is some advantage, however, when
631 connection pooling is used.
633 shared_preload_libraries (string) #
634 This variable specifies one or more shared libraries to be
635 preloaded at server start. It contains a comma-separated list of
636 library names, where each name is interpreted as for the LOAD
637 command. Whitespace between entries is ignored; surround a
638 library name with double quotes if you need to include
639 whitespace or commas in the name. This parameter can only be set
640 at server start. If a specified library is not found, the server
643 Some libraries need to perform certain operations that can only
644 take place at postmaster start, such as allocating shared
645 memory, reserving light-weight locks, or starting background
646 workers. Those libraries must be loaded at server start through
647 this parameter. See the documentation of each library for
650 Other libraries can also be preloaded. By preloading a shared
651 library, the library startup time is avoided when the library is
652 first used. However, the time to start each new server process
653 might increase slightly, even if that process never uses the
654 library. So this parameter is recommended only for libraries
655 that will be used in most sessions. Also, changing this
656 parameter requires a server restart, so this is not the right
657 setting to use for short-term debugging tasks, say. Use
658 session_preload_libraries for that instead.
662 On Windows hosts, preloading a library at server start will not
663 reduce the time required to start each new server process; each
664 server process will re-load all preload libraries. However,
665 shared_preload_libraries is still useful on Windows hosts for
666 libraries that need to perform operations at postmaster start
669 jit_provider (string) #
670 This variable is the name of the JIT provider library to be used
671 (see Section 30.4.2). The default is llvmjit. This parameter can
672 only be set at server start.
674 If set to a non-existent library, JIT will not be available, but
675 no error will be raised. This allows JIT support to be installed
676 separately from the main PostgreSQL package.
678 19.11.4. Other Defaults #
680 dynamic_library_path (string) #
681 If a dynamically loadable module needs to be opened and the file
682 name specified in the CREATE FUNCTION or LOAD command does not
683 have a directory component (i.e., the name does not contain a
684 slash), the system will search this path for the required file.
686 The value for dynamic_library_path must be a list of absolute
687 directory paths separated by colons (or semi-colons on Windows).
688 If a list element starts with the special string $libdir, the
689 compiled-in PostgreSQL package library directory is substituted
690 for $libdir; this is where the modules provided by the standard
691 PostgreSQL distribution are installed. (Use pg_config
692 --pkglibdir to find out the name of this directory.) For
695 dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
697 or, in a Windows environment:
699 dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
701 The default value for this parameter is '$libdir'. If the value
702 is set to an empty string, the automatic path search is turned
705 This parameter can be changed at run time by superusers and
706 users with the appropriate SET privilege, but a setting done
707 that way will only persist until the end of the client
708 connection, so this method should be reserved for development
709 purposes. The recommended way to set this parameter is in the
710 postgresql.conf configuration file.
712 extension_control_path (string) #
713 A path to search for extensions, specifically extension control
714 files (name.control). The remaining extension script and
715 secondary control files are then loaded from the same directory
716 where the primary control file was found. See Section 36.17.1
719 The value for extension_control_path must be a list of absolute
720 directory paths separated by colons (or semi-colons on Windows).
721 If a list element starts with the special string $system, the
722 compiled-in PostgreSQL extension directory is substituted for
723 $system; this is where the extensions provided by the standard
724 PostgreSQL distribution are installed. (Use pg_config --sharedir
725 to find out the name of this directory.) For example:
727 extension_control_path = '/usr/local/share/postgresql:/home/my_project/share:$sy
730 or, in a Windows environment:
732 extension_control_path = 'C:\tools\postgresql;H:\my_project\share;$system'
734 Note that the specified paths elements are expected to have a
735 subdirectory extension which will contain the .control and .sql
736 files; the extension suffix is automatically appended to each
739 The default value for this parameter is '$system'. If the value
740 is set to an empty string, the default '$system' is also
743 If extensions with equal names are present in multiple
744 directories in the configured path, only the instance found
745 first in the path will be used.
747 This parameter can be changed at run time by superusers and
748 users with the appropriate SET privilege, but a setting done
749 that way will only persist until the end of the client
750 connection, so this method should be reserved for development
751 purposes. The recommended way to set this parameter is in the
752 postgresql.conf configuration file.
754 Note that if you set this parameter to be able to load
755 extensions from nonstandard locations, you will most likely also
756 need to set dynamic_library_path to a correspondent location,
759 extension_control_path = '/usr/local/share/postgresql:$system'
760 dynamic_library_path = '/usr/local/lib/postgresql:$libdir'
762 gin_fuzzy_search_limit (integer) #
763 Soft upper limit of the size of the set returned by GIN index
764 scans. For more information see Section 65.4.5.