2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1

19.11. 客户端连接默认值 #

19.11.1. 语句行为 #

client_min_messages (enum) #

控制发送到客户端的消息级别。有效值为 DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, 和 ERROR。每个级别都包含其后的所有级别。级别越靠后,发送的消息越少。默认值为 NOTICE。请注意,LOG 在此处的排名与 log_min_messages 中的不同。

INFO 级别的消息始终发送到客户端。

search_path (string) #

此变量指定在没有指定模式的情况下,使用简单名称引用对象(表、数据类型、函数等)时搜索模式的顺序。当不同模式中存在同名对象时,将使用在搜索路径中首先找到的对象。无法在搜索路径的任何模式中找到的对象只能通过指定其包含模式(使用带点的名称)来引用。

search_path 的值必须是逗号分隔的模式名称列表。任何不是现有模式的名称,或者用户没有 USAGE 权限的模式,都将被静默忽略。

如果列表项之一是特殊名称 $user,则会替换为由 CURRENT_USER 返回的名称的模式,前提是存在这样的模式且用户对其具有 USAGE 权限。(如果不存在,则 $user 将被忽略。)

系统目录模式 pg_catalog 始终会被搜索,无论它是否在路径中提及。如果在路径中提及,则将按指定顺序搜索。如果 pg_catalog 不在路径中,则将在搜索路径中的任何项 之前 搜索它。

同样,当前会话的临时表模式 pg_temp_nnn,如果存在,将始终被搜索。它可以通过使用别名 pg_temp 来显式列出在路径中。如果未在路径中列出,则它将首先被搜索(甚至在 pg_catalog 之前)。然而,临时模式仅用于搜索关系(表、视图、序列等)和数据类型名称。它永远不会用于搜索函数或运算符名称。

当在未指定特定目标模式的情况下创建对象时,它们将被放置在 search_path 中命名的第一个有效模式中。如果搜索路径为空,则会报告错误。

此参数的默认值为 "$user", public。此设置支持数据库的共享使用(其中没有用户拥有私有模式,所有用户共享 public 的使用)、私有的每用户模式以及它们的组合。通过更改默认搜索路径设置(无论是全局还是每用户),都可以获得其他效果。

有关模式处理的更多信息,请参阅 第 5.10 节。特别是,默认配置仅适用于数据库只有一个用户或几个相互信任的用户的情况。

当前有效的搜索路径值可以通过SQL函数 current_schemas(请参阅 第 9.27 节)进行检查。这与检查 search_path 的值不完全相同,因为 current_schemas 显示了 search_path 中出现的项是如何解析的。

row_security (boolean) #

此变量控制在应用行安全策略时是否引发错误。当设置为 on 时,策略正常应用。当设置为 off 时,查询将失败,否则将应用至少一个策略。默认值为 on。在行可见性受限可能导致不正确结果的情况下更改为 off;例如,pg_dump 默认会进行此更改。此变量对绕过所有行安全策略的角色(即超级用户和具有 BYPASSRLS 属性的角色)没有影响。

有关行安全策略的更多信息,请参阅 CREATE POLICY

default_table_access_method (string) #

此参数指定在创建表或物化视图时使用的默认表访问方法,如果 CREATE 命令未显式指定访问方法,或者在使用 SELECT ... INTO 时(它不允许指定表访问方法)。默认值为 heap

default_tablespace (string) #

此变量指定在 CREATE 命令未显式指定表空间时,用于创建对象(表和索引)的默认表空间。

该值是要么是表空间的名称,要么是空字符串,用于指定使用当前数据库的默认表空间。如果该值与任何现有表空间的名称都不匹配,PostgreSQL 将自动使用当前数据库的默认表空间。如果指定了非默认表空间,用户必须拥有该表空间的 CREATE 权限,否则创建尝试将失败。

此变量不用于临时表;对于临时表,将查阅 temp_tablespaces

创建数据库时也不使用此变量。默认情况下,新数据库将继承其表空间设置,该设置来自它复制的模板数据库。

如果此参数设置为非空字符串以外的值来创建分区表,则该分区表的表空间将设置为该值,该值将用作将来创建的分区的默认表空间,即使 default_tablespace 已更改。

有关表空间的更多信息,请参阅 第 22.6 节

default_toast_compression (enum) #

此变量设置可压缩列值的默认 TOAST 压缩方法。(这可以通过在 CREATE TABLEALTER TABLE 中设置 COMPRESSION 列选项来为单个列覆盖。)支持的压缩方法有 pglz,以及(如果 PostgreSQL 使用 --with-lz4 编译) lz4。默认值为 pglz

temp_tablespaces (string) #

此变量指定在创建临时对象(临时表和临时表上的索引)时使用的表空间,如果 CREATE 命令未显式指定表空间。用于排序大型数据集的临时文件也将在此表空间中创建。

该值是表空间名称的列表。当列表中有一个以上的名称时,PostgreSQL 每次要创建临时对象时都会选择列表中的一个随机成员;但在一个事务中,连续创建的临时对象将被放置在列表中的连续表空间中。如果选定的列表元素是空字符串,PostgreSQL 将自动使用当前数据库的默认表空间。

temp_tablespaces 被交互式设置时,指定不存在的表空间是错误的,指定用户没有 CREATE 权限的表空间也是错误的。然而,当使用先前设置的值时,不存在的表空间会被忽略,用户缺乏 CREATE 权限的表空间也会被忽略。特别是,此规则适用于使用 postgresql.conf 中设置的值。

默认值是空字符串,这会导致所有临时对象都在当前数据库的默认表空间中创建。

另请参阅 default_tablespace

check_function_bodies (boolean) #

此参数通常为开启状态。当设置为 off 时,它会禁用在 CREATE FUNCTIONCREATE PROCEDURE 过程中对例程体字符串的验证。禁用验证可以避免验证过程的副作用,特别是防止因前向引用等问题而导致的误报。pg_dump 会自动进行此设置,以便在代表其他用户加载函数之前将此参数设置为 off

default_transaction_isolation (enum) #

每个 SQL 事务都有一个隔离级别,可以是“未提交读”(read uncommitted)、“已提交读”(read committed)、“可重复读”(repeatable read)或“串行化”(serializable)。此参数控制每个新事务的默认隔离级别。默认值为“已提交读”。

有关更多信息,请参阅 第 13 章SET TRANSACTION

default_transaction_read_only (boolean) #

只读 SQL 事务不能修改非临时表。此参数控制每个新事务的默认只读状态。默认值为 off(读/写)。

有关更多信息,请参阅 SET TRANSACTION

default_transaction_deferrable (boolean) #

serializable 隔离级别运行时,可延迟的只读 SQL 事务可能会在允许其继续执行之前被延迟。但是,一旦它开始执行,就不会产生任何保证串行化的开销;因此,串行化代码将不会因为并发更新而强行中止它,这使得此选项适用于长时间运行的只读事务。

此参数控制每个新事务的默认可延迟状态。它目前对读写事务或隔离级别低于 serializable 的事务没有影响。默认值为 off

有关更多信息,请参阅 SET TRANSACTION

transaction_isolation (enum) #

此参数反映当前事务的隔离级别。在每个事务开始时,它被设置为 default_transaction_isolation 的当前值。任何后续尝试更改它都等同于执行 SET TRANSACTION 命令。

transaction_read_only (boolean) #

此参数反映当前事务的只读状态。在每个事务开始时,它被设置为 default_transaction_read_only 的当前值。任何后续尝试更改它都等同于执行 SET TRANSACTION 命令。

transaction_deferrable (boolean) #

此参数反映当前事务的可延迟状态。在每个事务开始时,它被设置为 default_transaction_deferrable 的当前值。任何后续尝试更改它都等同于执行 SET TRANSACTION 命令。

session_replication_role (enum) #

控制当前会话的复制相关触发器和规则的触发。可能的值为 origin(默认值)、replicalocal。设置此参数将导致丢弃任何先前缓存的查询计划。只有超级用户和具有相应 SET 权限的用户才能更改此设置。

此设置的预期用途是逻辑复制系统在应用复制的更改时将其设置为 replica。这将导致触发器和规则(未被更改其默认配置)在副本上不触发。有关更多信息,请参阅 ALTER TABLE 子句 ENABLE TRIGGERENABLE RULE

PostgreSQL 在内部处理 originlocal 设置。第三方复制系统可能会将这两个值用于其内部目的,例如使用 local 来表示不应复制其更改的会话。

由于外键是通过触发器实现的,将此参数设置为 replica 也会禁用所有外键检查,如果使用不当,可能会导致数据处于不一致状态。

statement_timeout (integer) #

中止任何执行时间超过指定时间的语句。如果 log_min_error_statement 设置为 ERROR 或更低,则已超时的语句也会被记录。如果指定此值而不带单位,则将其视为毫秒。值为零(默认值)将禁用超时。

超时是从命令到达服务器到服务器完成的时间来衡量的。如果一个简单的查询消息中包含多个 SQL 语句,则超时会分别应用于每个语句。(PostgreSQL 13 之前的版本通常将超时视为应用于整个查询字符串。)在扩展查询协议中,超时从任何与查询相关的消息(Parse、Bind、Execute、Describe)到达时开始运行,并在 Execute 或 Sync 消息完成时取消。

不建议在 postgresql.conf 中设置 statement_timeout,因为它会影响所有会话。

transaction_timeout (integer) #

终止任何在一个事务中运行时间超过指定时间的会话。此限制既适用于显式事务(以 BEGIN 开始),也适用于与单个语句对应的隐式开始的事务。如果指定此值而不带单位,则将其视为毫秒。值为零(默认值)将禁用超时。

如果 transaction_timeout 短于或等于 idle_in_transaction_session_timeoutstatement_timeout,则较长的超时将被忽略。

不建议在 postgresql.conf 中设置 transaction_timeout,因为它会影响所有会话。

注意

预备事务不受此超时的影响。

lock_timeout (integer) #

中止任何在尝试获取表、索引、行或其他数据库对象的锁时等待时间超过指定时间的语句。时间限制分别应用于每次锁获取尝试。该限制既适用于显式锁定请求(例如 LOCK TABLE 或不带 NOWAITSELECT FOR UPDATE),也适用于隐式获取的锁。如果指定此值而不带单位,则将其视为毫秒。值为零(默认值)将禁用超时。

statement_timeout 不同,此超时只能在等待锁时发生。请注意,如果 statement_timeout 非零,则将 lock_timeout 设置为相同或更大的值是毫无意义的,因为语句超时总是会先触发。如果 log_min_error_statement 设置为 ERROR 或更低,则已超时的语句将被记录。

不建议在 postgresql.conf 中设置 lock_timeout,因为它会影响所有会话。

idle_in_transaction_session_timeout (integer) #

终止任何在开放事务内空闲(即等待客户端查询)超过指定时间的会话。如果指定此值而不带单位,则将其视为毫秒。值为零(默认值)将禁用超时。

此选项可用于确保空闲会话不会长时间持有锁。即使没有持有重要的锁,开放的事务也会阻止 vacuum 清理最近的、仅对此事务可见的死元组;因此,长时间空闲可能会导致表膨胀。有关更多详细信息,请参阅 第 24.1 节

idle_session_timeout (integer) #

终止任何空闲(即等待客户端查询),但未处于开放事务状态的会话,如果空闲时间超过指定时间。如果指定此值而不带单位,则将其视为毫秒。值为零(默认值)将禁用超时。

与开放事务的情况不同,没有事务的空闲会话不会给服务器带来巨大的成本,因此比 idle_in_transaction_session_timeout 更需要启用此超时。

请注意,在通过连接池软件或其他中间件进行的连接上强制执行此超时可能会产生负面影响,因为此类层可能无法很好地处理意外的连接关闭。可能有助于仅为交互式会话启用此超时,也许只将其应用于特定用户。

bytea_output (enum) #

设置 bytea 类型值的输出格式。有效值为 hex(默认值)和 escape(传统的 PostgreSQL 格式)。有关更多信息,请参阅 第 8.4 节。无论此设置如何,bytea 类型在输入时始终接受这两种格式。

xmlbinary (enum) #

设置二进制值如何在 XML 中编码。例如,当 bytea 值通过 xmlelementxmlforest 函数转换为 XML 时,此设置将生效。可能的值是 base64hex,它们都定义在 XML Schema 标准中。默认值为 base64。有关 XML 相关函数的更多信息,请参阅 第 9.15 节

实际选择主要取决于个人喜好,仅受客户端应用程序可能存在的限制。两种方法都支持所有可能的值,尽管十六进制编码比 base64 编码要大一些。

xmloption (enum) #

设置在 XML 和字符串值之间转换时 DOCUMENTCONTENT 是否是隐式的。有关此内容的描述,请参阅 第 8.13 节。有效值为 DOCUMENTCONTENT。默认值为 CONTENT

根据 SQL 标准,设置此选项的命令是

SET XML OPTION { DOCUMENT | CONTENT };

PostgreSQL 也支持此语法。

gin_pending_list_limit (integer) #

设置 GIN 索引的待处理列表的最大大小,当启用 fastupdate 时使用。如果列表的大小超过此最大值,它将通过将列表中的条目批量移动到索引的主 GIN 数据结构中来清除。如果指定此值而不带单位,则视为千字节。默认值为四兆字节(4MB)。可以通过更改索引存储参数来为单个 GIN 索引覆盖此设置。有关更多信息,请参阅 第 65.4.4.1 节第 65.4.5 节

createrole_self_grant (string) #

如果一个拥有 CREATEROLE 但不拥有 SUPERUSER 权限的用户创建了一个角色,并且此选项设置为非空值,则新创建的角色将以指定的选项授予创建者。该值必须是 setinherit 或它们的逗号分隔列表。默认值是空字符串,这会禁用该功能。

此选项的目的是允许一个非超级用户的 CREATEROLE 用户自动继承或自动获得 SET ROLE 到已创建角色的能力。由于 CREATEROLE 用户始终隐式获得对其创建角色的 ADMIN OPTION,因此该用户始终可以执行 GRANT 语句,以达到与此设置相同的效果。但是,出于可用性考虑,如果授予自动发生,可能会很方便。超级用户会自动继承每个角色的权限,并且可以始终 SET ROLE 到任何角色,而此设置可用于为 CREATEROLE 用户生成类似行为,以创建的用户。

event_triggers (boolean) #

允许暂时禁用事件触发器的执行,以便对有故障的事件触发器进行故障排除和修复。通过将其设置为 false 来禁用所有事件触发器。将值设置为 true 允许所有事件触发器触发,这是默认值。只有超级用户和具有相应 SET 权限的用户才能更改此设置。

restrict_nonsystem_relation_kind (string) #

设置关系类型,对于这些类型,禁止访问非系统关系。该值采用关系类型逗号分隔列表的形式。目前,支持的关系类型是 viewforeign-table

19.11.2. 区域设置和格式化 #

DateStyle (string) #

设置日期和时间值的显示格式,以及解释模糊日期输入值的规则。出于历史原因,此变量包含两个独立的部分:输出格式规范(ISOPostgresSQLGerman)以及年/月/日排序的输入/输出规范(DMYMDYYMD)。这些可以单独或一起设置。EuroEuropean 关键字是 DMY 的同义词;USNonEuroNonEuropean 关键字是 MDY 的同义词。有关更多信息,请参阅 第 8.5 节。内置默认值为 ISO, MDY,但 initdb 将初始化配置文件,其设置对应于所选 lc_time 区域设置的行为。

IntervalStyle (enum) #

设置间隔值(interval values)的显示格式。sql_standard 值将生成符合SQL标准间隔字面量的输出。 postgres 值(这是默认值)将生成符合 8.4 版之前 PostgreSQL 的输出,当时 DateStyle 参数设置为 ISOpostgres_verbose 值将生成符合 8.4 版之前 PostgreSQL 的输出,当时 DateStyle 参数设置为非 ISO 输出。 iso_8601 值将生成符合 ISO 8601 第 4.4.3.2 节定义的“带设计器的格式”时间间隔的输出。

IntervalStyle 参数也影响对模糊间隔输入的解释。有关更多信息,请参阅 第 8.5.4 节

TimeZone (string) #

设置显示和解释时间戳时使用的时区。内置默认值为 GMT,但这通常在 postgresql.conf 中被覆盖;initdb 将在其系统环境中对应的设置安装到其中。有关更多信息,请参阅 第 8.5.3 节

timezone_abbreviations (string) #

设置服务器在接受日期时间输入时可接受的其他时区缩写集合(除了当前 TimeZone 设置定义的任何缩写)。默认值为 'Default',这是一个在世界大多数地区有效的集合;还有 'Australia''India',其他集合可以在特定安装中定义。有关更多信息,请参阅 第 B.4 节

extra_float_digits (integer) #

此参数调整浮点数值(包括 float4float8 和几何数据类型)的文本输出使用的位数。

如果值为 1(默认值)或更高,则浮点值以最短精确格式输出;请参阅 第 8.1.3 节。生成的位数仅取决于要输出的值,而不取决于此参数的值。float8 值最多需要 17 位,float4 值需要 9 位。此格式既快速又精确,在正确读取时可以精确保留原始二进制浮点值。出于历史兼容性,允许的值高达 3。

如果值为零或负数,则输出将按指定的十进制精度进行舍入。使用的精度是该类型的标准位数(FLT_DIGDBL_DIG,视情况而定),根据此参数的值进行减少。(例如,指定 -1 将导致 float4 值输出舍入到 5 位有效数字,float8 值舍入到 14 位。)此格式较慢,并且不保留二进制浮点值的所有位,但可能更易读。

注意

此参数的含义及其默认值在 PostgreSQL 12 中发生了变化;有关进一步讨论,请参阅 第 8.1.3 节

client_encoding (string) #

设置客户端编码(字符集)。默认使用数据库编码。PostgreSQL 服务器支持的字符集在 第 23.3.1 节 中有描述。

lc_messages (string) #

设置显示消息的语言。可接受的值是系统依赖的;有关更多信息,请参阅 第 23.1 节。如果此变量设置为空字符串(默认值),则该值将以系统依赖的方式从服务器的执行环境中继承。

在某些系统上,此区域设置类别不存在。设置此变量仍然有效,但不会产生任何影响。另外,有可能没有目标语言的翻译消息。在这种情况下,您将继续看到英文消息。

只有超级用户和具有相应 SET 权限的用户才能更改此设置。

lc_monetary (string) #

设置用于格式化货币金额的区域设置,例如使用 to_char 系列函数。可接受的值是系统依赖的;有关更多信息,请参阅 第 23.1 节。如果此变量设置为空字符串(默认值),则该值将以系统依赖的方式从服务器的执行环境中继承。

lc_numeric (string) #

设置用于格式化数字的区域设置,例如使用 to_char 系列函数。可接受的值是系统依赖的;有关更多信息,请参阅 第 23.1 节。如果此变量设置为空字符串(默认值),则该值将以系统依赖的方式从服务器的执行环境中继承。

lc_time (string) #

设置用于格式化日期和时间的区域设置,例如使用 to_char 系列函数。可接受的值是系统依赖的;有关更多信息,请参阅 第 23.1 节。如果此变量设置为空字符串(默认值),则该值将以系统依赖的方式从服务器的执行环境中继承。

icu_validation_level (enum) #

当遇到 ICU 区域设置验证问题时,控制使用哪个 消息严重级别 来报告该问题。有效值为 DISABLEDDEBUG5DEBUG4DEBUG3DEBUG2DEBUG1INFONOTICEWARNINGERRORLOG

如果设置为 DISABLED,则不报告任何验证问题。否则,将在给定的消息级别报告问题。默认值为 WARNING

default_text_search_config (string) #

选择文本搜索配置,该配置由那些没有显式参数指定配置的文本搜索函数变体使用。有关进一步信息,请参阅 第 12 章。内置默认值为 pg_catalog.simple,但 initdb 将初始化配置文件,其设置对应于所选 lc_ctype 区域设置,如果可以识别匹配该区域设置的配置。

19.11.3. 共享库预加载 #

有多个设置可用于将共享库预加载到服务器中,以加载附加功能或获得性能优势。例如,设置为 '$libdir/mylib' 将导致 mylib.so(或在某些平台上 mylib.sl)从安装的标准库目录加载。设置之间的区别在于它们生效的时间以及更改它们所需的权限。

PostgreSQL 过程语言库可以通过这种方式预加载,通常使用语法 '$libdir/plXXX',其中 XXXpgsqlperltclpython

只有专门设计用于与 PostgreSQL 一起使用的共享库才能以这种方式加载。每个 PostgreSQL 支持的库都有一个“魔法块”(magic block),它会被检查以保证兼容性。因此,不能以这种方式加载非 PostgreSQL 库。您可能可以使用操作系统工具,如 LD_PRELOAD 来实现。

一般而言,请参阅特定模块的文档,了解加载该模块的推荐方法。

local_preload_libraries (string) #

此变量指定将在连接开始时预加载的一个或多个共享库。它包含一个逗号分隔的库名称列表,其中每个名称的解释与 LOAD 命令相同。条目之间的空格将被忽略;如果需要在名称中包含空格或逗号,请将库名称括在双引号中。参数值仅在连接开始时生效。后续更改无效。如果找不到指定的库,连接尝试将失败。

任何用户都可以设置此选项。因此,可以加载的库被限制在安装的标准库目录的 plugins 子目录中出现的那些库。(数据库管理员有责任确保只有“安全”的库安装在那里。) local_preload_libraries 中的条目可以显式指定此目录,例如 $libdir/plugins/mylib,或者仅指定库名 — mylib 将与 $libdir/plugins/mylib 效果相同。

此功能旨在允许非特权用户在特定会话中加载调试或性能测量库,而无需显式的 LOAD 命令。为此,通常使用客户端上的 PGOPTIONS 环境变量或 ALTER ROLE SET 来设置此参数。

但是,除非模块专门设计为供非超级用户使用,否则通常不应使用此设置。请参阅 session_preload_libraries

session_preload_libraries (string) #

此变量指定将在连接开始时预加载的一个或多个共享库。它包含一个逗号分隔的库名称列表,其中每个名称的解释与 LOAD 命令相同。条目之间的空格将被忽略;如果需要在名称中包含空格或逗号,请将库名称括在双引号中。参数值仅在连接开始时生效。后续更改无效。如果找不到指定的库,连接尝试将失败。只有超级用户和具有相应 SET 权限的用户才能更改此设置。

此功能旨在允许在不发出显式 LOAD 命令的情况下,将调试或性能测量库加载到特定会话中。例如,可以通过使用 ALTER ROLE SET 设置此参数,为给定用户名的所有会话启用 auto_explain。此外,此参数可以在不重新启动服务器的情况下进行更改(但更改仅在新会话启动时生效),因此以这种方式添加新模块更容易,即使它们应该应用于所有会话。

shared_preload_libraries 不同,在会话开始时加载库而不是在首次使用时加载库没有大的性能优势。然而,在使用连接池时,有一些优势。

shared_preload_libraries (string) #

此变量指定将在服务器启动时预加载的一个或多个共享库。它包含一个逗号分隔的库名称列表,其中每个名称的解释与 LOAD 命令相同。条目之间的空格将被忽略;如果需要在名称中包含空格或逗号,请将库名称括在双引号中。此参数只能在服务器启动时设置。如果找不到指定的库,服务器将无法启动。

某些库需要执行只能在 postmaster 启动时进行的操作,例如分配共享内存、保留轻量级锁或启动后台工作进程。这些库必须通过此参数在服务器启动时加载。有关详细信息,请参阅每个库的文档。

也可以预加载其他库。通过预加载共享库,可以避免库首次使用时产生的启动时间。但是,每个新服务器进程的启动时间可能会略有增加,即使该进程从未使用过该库。因此,此参数仅推荐用于大多数会话中使用的库。此外,更改此参数需要服务器重启,因此不适合进行短期调试任务。请改用 session_preload_libraries

注意

在 Windows 主机上,在服务器启动时预加载库不会减少每个新服务器进程的启动时间;每个服务器进程将重新加载所有预加载库。但是,对于需要在 postmaster 启动时执行操作的库,shared_preload_libraries 在 Windows 主机上仍然有用。

jit_provider (string) #

此变量是要使用的 JIT 提供程序库的名称(请参阅 第 30.4.2 节)。默认值为 llvmjit。此参数只能在服务器启动时设置。

如果设置为不存在的库,JIT将不可用,但不会引发错误。这允许 JIT 支持与主 PostgreSQL 包分开安装。

19.11.4. 其他默认值 #

dynamic_library_path (string) #

如果需要打开动态加载的模块,并且在 CREATE FUNCTIONLOAD 命令中指定的파일명不包含目录部分(即名称不包含斜杠),则系统将在该路径中搜索所需的文件。

dynamic_library_path 的值必须是冒号(或 Windows 上的分号)分隔的绝对目录路径列表。如果列表元素以特殊字符串 $libdir 开头,则将 $libdir 替换为编译的 PostgreSQL 包库目录;这是标准 PostgreSQL 发行版提供的模块的安装位置。(使用 pg_config --pkglibdir 来查找此目录的名称。)例如

dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'

或,在 Windows 环境中

dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'

此参数的默认值为 '$libdir'。如果将该值设置为空字符串,则自动路径搜索被禁用。

此参数可以在运行时由超级用户和具有相应 SET 权限的用户更改,但在此处进行的设置仅持续到客户端连接结束,因此此方法应保留用于开发目的。设置此参数的首选方法是在 postgresql.conf 配置文件中。

extension_control_path (string) #

搜索扩展的路径,特别是扩展控制文件(name.control)。其余的扩展脚本和辅助控制文件将从找到主控制文件的同一目录加载。有关详细信息,请参阅 第 36.17.1 节

extension_control_path 的值必须是冒号(或 Windows 上的分号)分隔的绝对目录路径列表。如果列表元素以特殊字符串 $system 开头,则将 $system 替换为编译的 PostgreSQL 扩展目录;这是标准 PostgreSQL 发行版提供的扩展的安装位置。(使用 pg_config --sharedir 来查找此目录的名称。)例如

extension_control_path = '/usr/local/share/postgresql:/home/my_project/share:$system'

或,在 Windows 环境中

extension_control_path = 'C:\tools\postgresql;H:\my_project\share;$system'

请注意,指定的路径元素预计有一个子目录 extension,其中包含 .control.sql 文件;extension 后缀会自动附加到每个路径元素。

此参数的默认值为 '$system'。如果将该值设置为空字符串,则也假定为默认的 '$system'

如果在配置路径中的多个目录中存在同名扩展,则仅使用路径中首先找到的实例。

此参数可以在运行时由超级用户和具有相应 SET 权限的用户更改,但在此处进行的设置仅持续到客户端连接结束,因此此方法应保留用于开发目的。设置此参数的首选方法是在 postgresql.conf 配置文件中。

请注意,如果您设置此参数以便能够从非标准位置加载扩展,那么您很可能还需要设置 dynamic_library_path 到相应的位置,例如,

extension_control_path = '/usr/local/share/postgresql:$system'
dynamic_library_path = '/usr/local/lib/postgresql:$libdir'
gin_fuzzy_search_limit (integer) #

GIN 索引扫描返回的集合大小的软上限。有关更多信息,请参阅 第 65.4.5 节

提交更正

如果您在文档中看到任何不正确的内容、与特定功能的实际体验不符或需要进一步澄清的内容,请使用 此表格 报告文档问题。