文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 14.0 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
14.0
2021-09-30
14.0stable支持截止 2026-11-12
PostgreSQL 14.0
迁移与兼容性
对于希望从任何以前的版本迁移数据的人来说,需要使用pg_dumpall进行转储/恢复,或者使用pg_upgrade或逻辑复制。有关迁移到新主要版本的通用信息,请参阅第 19.6 节。
版本 14 包含许多可能影响与先前版本兼容性的变更。请注意以下不兼容性:
兼容性引用某些内置数组函数及其参数类型的用户定义对象必须重新创建
兼容性
引用某些内置数组函数及其参数类型的用户定义对象必须重新创建(Tom Lane)§
具体来说,array_append()、array_prepend()、array_cat()、array_position()、array_positions()、array_remove()、array_replace() 和 width_bucket() 以前接受 anyarray 参数,但现在接受 anycompatiblearray。因此,引用这些数组函数签名的用户定义对象(如聚合和操作符)必须在升级前删除,并在升级完成后重新创建。
关联记录 (1)
兼容性移除内置几何数据类型和 contrib 模块cube、hstore、intarray和seg中已弃用的包含操作符 @ 和 ~
兼容性修复 to_tsquery() 和 websearch_to_tsquery() 以正确解析包含丢弃标记的查询文本
兼容性
修复 to_tsquery() 和 websearch_to_tsquery() 以正确解析包含丢弃标记的查询文本(Alexander Korotkov)§
某些丢弃标记(如下划线)会导致这些函数产生不正确的 tsquery 输出,例如,websearch_to_tsquery('"pg_class pg"') 和 to_tsquery('pg_class <-> pg') 以前都输出 ( 'pg' & 'class' ) <-> 'pg',但现在都输出 'pg' <-> 'class' <-> 'pg'。
兼容性修复 websearch_to_tsquery() 以正确解析引号中多个相邻丢弃标记
兼容性
修复 websearch_to_tsquery() 以正确解析引号中多个相邻丢弃标记(Alexander Korotkov)§
以前,包含多个相邻丢弃标记的引号文本被视为多个标记,导致不正确的 tsquery 输出,例如,websearch_to_tsquery('"aaa: bbb"') 以前输出 'aaa' <2> 'bbb',但现在输出 'aaa' <-> 'bbb'。
兼容性将 EXTRACT() 的返回类型从 float8 改为 numeric
兼容性当输入为单个 NaN 值时,将带有 numeric 参数的 var_samp() 和 stddev_samp() 改为返回 NULL
兼容性
当输入为单个 NaN 值时,将带有 numeric 参数的 var_samp() 和 stddev_samp() 改为返回 NULL(Tom Lane)§
以前返回 NaN。
兼容性当使用属性编号检查不存在或已删除的列时,has_column_privilege() 返回 false
兼容性
当使用属性编号检查不存在或已删除的列时,has_column_privilege() 返回 false(Joe Conway)§
以前这样的属性编号会返回无效列错误。
兼容性修复无限窗口函数范围的处理
兼容性移除阶乘操作符 ! 和 !!,以及函数 numeric_fac()
兼容性
移除阶乘操作符 ! 和 !!,以及函数 numeric_fac()(Mark Dilger)§
factorial() 函数仍然受支持。
兼容性禁止对负数使用 factorial()
兼容性
禁止对负数使用 factorial()(Peter Eisentraut)§
以前这种情况返回 1。
兼容性在正则表达式换行敏感模式下,允许 \D 和 \W 简写匹配换行符
兼容性禁止在正则表达式字符类中使用 \w 作为范围起点或终点
兼容性
禁止在正则表达式字符类中使用 \w 作为范围起点或终点(Tom Lane)§
以前这是允许的,但产生了意外的结果。
兼容性将password_encryption服务器参数的默认值改为 scram-sha-256
兼容性
将password_encryption服务器参数的默认值改为 scram-sha-256(Peter Eisentraut)§
以前默认值为 md5。除非更改此服务器设置或密码以 MD5 格式指定,否则所有新密码将以 SHA256 存储。此外,以前作为 md5 同义词的旧式(未记录的)布尔型值不再被接受。
兼容性移除服务器参数 vacuum_cleanup_index_scale_factor
兼容性
兼容性移除服务器参数 operator_precedence_warning
兼容性
移除服务器参数 operator_precedence_warning(Tom Lane)§
此设置用于警告应用程序关于 PostgreSQL 9.5 的变更。
兼容性改进 pg_hba.conf 中 clientcert 的规范
兼容性
改进 pg_hba.conf 中 clientcert 的规范(Kyotaro Horiguchi)§
不再支持值 1/0/no-verify;只能使用字符串 verify-ca 和 verify-full。此外,如果启用了 cert 认证,则禁止使用 verify-ca,因为 cert 要求 verify-full 检查。
兼容性移除对 SSL 压缩的支持
兼容性移除服务器和 libpq 对版本 2 线路协议的支持
兼容性禁止在 CREATE/DROP LANGUAGE 命令中对语言名称使用单引号
兼容性
禁止在 CREATE/DROP LANGUAGE 命令中对语言名称使用单引号(Peter Eisentraut)§
兼容性正确处理 ecpg SQL 命令字符串中的双引号标记
兼容性防止intarray的包含操作符(<@ 和 @>)使用 GiST 索引
兼容性移除 contrib 程序 pg_standby
兼容性
移除 contrib 程序 pg_standby(Justin Pryzby)§
兼容性防止tablefunc中的函数 normal_rand() 接受负值
新功能增加预定义角色 pg_read_all_data 和 pg_write_all_data
服务器
增加预定义角色 pg_read_all_data 和 pg_write_all_data(Stephen Frost)§
这些非登录角色可用于授予对所有表、视图和序列的读或写权限。
新功能增加预定义角色 pg_database_owner,其仅包含当前数据库的所有者
服务器
增加预定义角色 pg_database_owner,其仅包含当前数据库的所有者(Noah Misch)§
这在模板数据库中特别有用。
新功能在后端崩溃后删除临时文件
服务器
在后端崩溃后删除临时文件(Euler Taveira)§
以前,此类文件为调试目的而被保留。如有必要,可通过新的服务器参数remove_temp_files_after_crash禁用删除。
新功能允许在客户端断开连接时取消长时间运行的查询
服务器
允许在客户端断开连接时取消长时间运行的查询(Sergey Cherkashin,Thomas Munro)§
服务器参数client_connection_check_interval允许控制是否在查询执行期间检查连接丢失。(这在 Linux 和少数其他操作系统上受支持。)
新功能为 pg_terminate_backend() 增加可选的超时参数
服务器
为 pg_terminate_backend() 增加可选的超时参数(Magnus Hagander)§
新功能允许宽元组始终被添加到几乎为空的堆页面中
新功能在 SSL 连接数据包中增加服务器名称指示(SNI)
新功能允许 vacuum 在可移除的索引条目数量不显著时跳过索引清理
服务器 / 清理
允许 vacuum 在可移除的索引条目数量不显著时跳过索引清理(Masahiko Sawada,Peter Geoghegan)§ §
vacuum 参数 INDEX_CLEANUP 有一个新的默认值 auto 来启用此优化。
新功能允许 vacuum 更积极地将已删除的 B-树页面添加到空闲空间映射中
服务器 / 清理
允许 vacuum 更积极地将已删除的 B-树页面添加到空闲空间映射中(Peter Geoghegan)§
以前的清理只能将此前清理标记为已删除的页面添加到空闲空间映射中。
新功能允许 vacuum 回收未使用的尾部堆行指针所占用的空间
服务器 / 清理
允许 vacuum 回收未使用的尾部堆行指针所占用的空间(Matthias van de Meent,Peter Geoghegan)§
新功能允许 vacuum 在最小锁定索引操作期间更积极地删除死行
性能加速具有许多关系的数据库的清理
服务器 / 清理
加速具有许多关系的数据库的清理(Tatsuhito Kasahara)§
新功能降低vacuum_cost_page_miss的默认值以更好地反映当前硬件能力
服务器 / 清理
降低vacuum_cost_page_miss的默认值以更好地反映当前硬件能力(Peter Geoghegan)§
新功能增加跳过 TOAST 表清理的能力
新功能使 COPY FREEZE 适当地更新页面可见性位
服务器 / 清理
使 COPY FREEZE 适当地更新页面可见性位(Anastasia Lubennikova,Pavan Deolasee,Jeff Janes)§
新功能当表接近 xid 或 multixact 回卷时,使 vacuum 操作更加积极
服务器 / 清理
当表接近 xid 或 multixact 回卷时,使 vacuum 操作更加积极(Masahiko Sawada,Peter Geoghegan)§
新功能增加事务 ID 和多事务回卷之前的警告时间和硬限制
服务器 / 清理
增加事务 ID 和多事务回卷之前的警告时间和硬限制(Noah Misch)§
这应该减少在未发出回卷警告的情况下发生故障的可能性。
新功能在autovacuum 日志输出中增加每索引信息
服务器 / 清理
在autovacuum 日志输出中增加每索引信息(Masahiko Sawada)§
性能改进具有许多分区的分区表上更新和删除操作的性能
新功能允许以非阻塞方式分离分区
新功能忽略分区边界值中的 COLLATE 子句
服务器 / 分区
忽略分区边界值中的 COLLATE 子句(Tom Lane)§
以前任何此类子句必须匹配分区键的排序规则;但更一致的做法是认为它会自动被强制转换为分区键的排序规则。
新功能允许 B-树索引添加操作移除过期索引条目以防止页面分裂
新功能允许 BRIN 索引使用布隆过滤器
服务器 / 索引
允许 BRIN 索引使用布隆过滤器(Tomas Vondra)§
这允许 BRIN 索引在数据在堆中不太集中的情况下有效使用。
新功能允许对包含许多常量的 IN 子句使用 hash 查找
服务器 / 优化器
允许对包含许多常量的 IN 子句使用 hash 查找(James Coleman,David Rowley)§
以前代码总是顺序扫描值列表。
新功能允许对表达式创建扩展统计信息
服务器 / 优化器
允许对表达式创建扩展统计信息(Tomas Vondra)§
这允许对一组表达式和列创建统计信息,而不是像以前那样只能针对列。系统视图 pg_stats_ext_exprs 报告此类统计信息。
问题修复修复 EXPLAIN CREATE TABLE AS 和 EXPLAIN CREATE MATERIALIZED VIEW 以遵守 IF NOT EXISTS
服务器 / 优化器
修复 EXPLAIN CREATE TABLE AS 和 EXPLAIN CREATE MATERIALIZED VIEW 以遵守 IF NOT EXISTS(Bharath Rupireddy)§
以前,如果对象已存在,EXPLAIN 会失败。
性能在具有许多 CPU 和高会话数的系统上提高计算 MVCC 可见性快照的速度
性能增加执行器方法以缓存嵌套循环连接内侧的结果
服务器 / 一般性能
增加执行器方法以缓存嵌套循环连接内侧的结果(David Rowley)§
如果仅检查内侧的一小部分行,这很有用。可通过服务器参数enable_memoize禁用。
性能允许引用多个外部表的查询并行执行外部表扫描
服务器 / 一般性能
允许引用多个外部表的查询并行执行外部表扫描(Robert Haas,Kyotaro Horiguchi,Thomas Munro,Etsuro Fujita)§
如果设置了 async_capable,postgres_fdw支持这种类型的扫描。
性能允许分析进行页面预取
服务器 / 一般性能
性能大幅提高 Unicode 规范化性能
服务器 / 一般性能
大幅提高 Unicode 规范化性能(John Naylor)§ §
这加快了 normalize() 和 IS NORMALIZED 的速度。
性能增加对 TOAST 数据使用 LZ4 压缩的能力
服务器 / 一般性能
增加对 TOAST 数据使用 LZ4 压缩的能力(Dilip Kumar)§
这可以在列级别设置,或通过服务器参数default_toast_compression设为默认值。服务器必须使用 --with-lz4 编译才能支持此功能。默认设置仍为 pglz。
新功能如果启用了服务器参数compute_query_id,在 pg_stat_activity、EXPLAIN VERBOSE、csvlog 中显示查询 ID,以及可选地在log_line_prefix中显示
服务器 / 监控
如果启用了服务器参数compute_query_id,在 pg_stat_activity、EXPLAIN VERBOSE、csvlog 中显示查询 ID,以及可选地在log_line_prefix中显示(Julien Rouhaud)§ § § § §
由扩展计算的查询 ID 也将被显示。
新功能改进自动清理和自动分析的日志记录
服务器 / 监控
改进自动清理和自动分析的日志记录(Stephen Frost,Jakub Wartak)§
如果启用了track_io_timing,则报告自动清理和自动分析的 I/O 时间。同时报告自动分析的缓冲区读取和脏化速率。
新功能在log_connections的输出中增加客户端提供的原始用户名信息
服务器 / 监控
在log_connections的输出中增加客户端提供的原始用户名信息(Jacob Champion)§
新功能增加系统视图 pg_stat_progress_copy 以报告 COPY 进度
服务器 / 系统视图
增加系统视图 pg_stat_progress_copy 以报告 COPY 进度(Josef Šimánek,Matthias van de Meent)§ §
新功能增加系统视图 pg_stat_wal 以报告 WAL 活动
服务器 / 系统视图
增加系统视图 pg_stat_wal 以报告 WAL 活动(Masahiro Ikeda)§ § §
新功能增加系统视图 pg_stat_replication_slots 以报告复制槽活动
服务器 / 系统视图
增加系统视图 pg_stat_replication_slots 以报告复制槽活动(Masahiko Sawada,Amit Kapila,Vignesh C)§ § § §
函数 pg_stat_reset_replication_slot() 可重置槽统计信息。
新功能增加系统视图 pg_backend_memory_contexts 以报告会话内存使用情况
服务器 / 系统视图
增加系统视图 pg_backend_memory_contexts 以报告会话内存使用情况(Atsushi Torikoshi,Fujii Masao)§ §
新功能增加函数 pg_log_backend_memory_contexts() 以输出任意后端的内存上下文
服务器 / 系统视图
增加函数 pg_log_backend_memory_contexts() 以输出任意后端的内存上下文(Atsushi Torikoshi)§
新功能在 pg_stat_database 系统视图中增加会话统计信息
服务器 / 系统视图
在 pg_stat_database 系统视图中增加会话统计信息(Laurenz Albe)§
新功能在 pg_prepared_statements 中增加报告通用和自定义计划计数的列
服务器 / 系统视图
在 pg_prepared_statements 中增加报告通用和自定义计划计数的列(Atsushi Torikoshi,Kyotaro Horiguchi)§
新功能使归档进程在 pg_stat_activity 中可见
服务器 / 系统视图
使归档进程在 pg_stat_activity 中可见(Kyotaro Horiguchi)§
新功能增加等待事件 WalReceiverExit 以报告 WAL 接收器退出等待时间
服务器 / 系统视图
增加等待事件 WalReceiverExit 以报告 WAL 接收器退出等待时间(Fujii Masao)§
新功能实现信息模式视图 routine_column_usage 以跟踪函数和过程默认表达式引用的列
服务器 / 系统视图
实现信息模式视图 routine_column_usage 以跟踪函数和过程默认表达式引用的列(Peter Eisentraut)§
新功能允许匹配 SSL 证书的专有名称(DN)用于客户端证书认证
服务器 / 认证
允许匹配 SSL 证书的专有名称(DN)用于客户端证书认证(Andrew Dunstan)§
新的 pg_hba.conf 选项 clientname=DN 允许与 CN 以外的证书属性进行比较,并可与 ident 映射组合使用。
新功能允许 pg_hba.conf 和 pg_ident.conf 记录跨越多行
服务器 / 认证
允许 pg_hba.conf 和 pg_ident.conf 记录跨越多行(Fabien Coelho)§
行末的反斜杠允许记录内容续到下一行。
新功能允许指定证书吊销列表(CRL)目录
服务器 / 认证
允许指定证书吊销列表(CRL)目录(Kyotaro Horiguchi)§
这由服务器参数ssl_crl_dir和 libpq 连接选项sslcrldir控制。以前只能指定单个 CRL 文件。
新功能允许任意长度的密码
服务器 / 认证
允许任意长度的密码(Tom Lane,Nathan Bossart)§
新功能增加服务器参数idle_session_timeout以关闭空闲会话
服务器 / 服务器配置
增加服务器参数idle_session_timeout以关闭空闲会话(Li Japin)§
新功能将checkpoint_completion_target的默认值改为 0.9
服务器 / 服务器配置
将checkpoint_completion_target的默认值改为 0.9(Stephen Frost)§
之前的默认值为 0.5。
新功能允许在log_line_prefix中使用 %P 来报告并行工作进程的并行组领导者 PID
服务器 / 服务器配置
允许在log_line_prefix中使用 %P 来报告并行工作进程的并行组领导者 PID(Justin Pryzby)§
新功能允许unix_socket_directories以单独的、逗号分隔的引号字符串指定路径
服务器 / 服务器配置
允许unix_socket_directories以单独的、逗号分隔的引号字符串指定路径(Ian Lawrence Barwick)§
以前所有路径必须在一个引号字符串中。
新功能允许在启动时分配动态共享内存
服务器 / 服务器配置
允许在启动时分配动态共享内存(Thomas Munro)§
这由min_dynamic_shared_memory控制。这允许更多地使用大页面。
新功能增加服务器参数huge_page_size以控制 Linux 上使用的大页面大小
服务器 / 服务器配置
增加服务器参数huge_page_size以控制 Linux 上使用的大页面大小(Odin Ugedal)§
新功能允许在服务器重载时更改restore_command设置
流复制与恢复
允许在服务器重载时更改restore_command设置(Sergei Kornilov)§
你也可以将 restore_command 设置为空字符串并重载,以强制恢复仅从 pg_wal 目录读取。
新功能增加服务器参数log_recovery_conflict_waits以报告长时间的恢复冲突等待
流复制与恢复
增加服务器参数log_recovery_conflict_waits以报告长时间的恢复冲突等待(Bertrand Drouvot,Masahiko Sawada)§ §
新功能当主库以阻止备库重放的方式更改参数时,暂停热备库上的恢复
流复制与恢复
当主库以阻止备库重放的方式更改参数时,暂停热备库上的恢复(Peter Eisentraut)§
以前备库会立即关闭。
新功能增加函数 pg_get_wal_replay_pause_state() 以报告恢复状态
流复制与恢复
增加函数 pg_get_wal_replay_pause_state() 以报告恢复状态(Dilip Kumar)§
它比 pg_is_wal_replay_paused() 提供更详细的信息,后者仍然存在。
新功能增加新的只读服务器参数in_hot_standby
流复制与恢复
增加新的只读服务器参数in_hot_standby(Haribabu Kommi,Greg Nancarrow,Tom Lane)§
这允许客户端轻松检测是否连接到热备库。
新功能在具有大量共享缓冲区的集簇上加速恢复期间小表的截断
流复制与恢复
在具有大量共享缓冲区的集簇上加速恢复期间小表的截断(Kirk Jamison)§
新功能允许在 Linux 上崩溃恢复开始时进行文件系统同步
流复制与恢复
允许在 Linux 上崩溃恢复开始时进行文件系统同步(Thomas Munro)§
默认情况下,PostgreSQL 在崩溃恢复开始时打开并 fsync 数据库集簇中的每个数据文件。新设置recovery_init_sync_method=syncfs 改为同步集簇使用的每个文件系统。这允许在具有许多数据库文件的系统上更快地恢复。
新功能增加函数 pg_xact_commit_timestamp_origin() 以返回指定事务的提交时间戳和复制来源
流复制与恢复
增加函数 pg_xact_commit_timestamp_origin() 以返回指定事务的提交时间戳和复制来源(Movead Li)§
新功能在 pg_last_committed_xact() 返回的记录中增加复制来源
流复制与恢复
在 pg_last_committed_xact() 返回的记录中增加复制来源(Movead Li)§
新功能允许逻辑复制将长时间进行中的事务流式传输给订阅者
流复制与恢复 / 逻辑复制
允许逻辑复制将长时间进行中的事务流式传输给订阅者(Dilip Kumar,Amit Kapila,Ajin Cherian,Tomas Vondra,Nikhil Sontakke,Stas Kelvich)§ § § §
以前超过logical_decoding_work_mem的事务会被写入磁盘直到事务完成。
关联记录 (1)
新功能增强逻辑复制 API 以允许流式传输大型进行中事务
新功能允许逻辑复制中表同步期间的多个事务
流复制与恢复 / 逻辑复制
允许逻辑复制中表同步期间的多个事务(Peter Smith,Amit Kapila,Takamichi Osumi)§
新功能立即将子事务和顶层 XID 关联写入 WAL 日志
流复制与恢复 / 逻辑复制
立即将子事务和顶层 XID 关联写入 WAL 日志(Tomas Vondra,Dilip Kumar,Amit Kapila)§
这对逻辑解码有用。
新功能增强逻辑解码 API 以处理两阶段提交
新功能在使用逻辑复制时,在命令完成时向 WAL 添加缓存失效消息
流复制与恢复 / 逻辑复制
在使用逻辑复制时,在命令完成时向 WAL 添加缓存失效消息(Dilip Kumar,Tomas Vondra,Amit Kapila)§
这允许逻辑流式传输进行中的事务。当逻辑复制被禁用时,失效消息仅在事务完成时生成。
新功能允许控制逻辑解码消息是否发送到复制流
流复制与恢复 / 逻辑复制
允许控制逻辑解码消息是否发送到复制流(David Pirotte,Euler Taveira)§
新功能允许逻辑复制订阅使用二进制传输模式
流复制与恢复 / 逻辑复制
允许逻辑复制订阅使用二进制传输模式(Dave Cramer)§
这比文本模式更快,但略微不那么健壮。
新功能允许逻辑解码按 xid 过滤
流复制与恢复 / 逻辑复制
允许逻辑解码按 xid 过滤(Markus Wanner)§
新功能减少不使用 AS 就不能用作列标签的关键字数量
SELECT、INSERT
减少不使用 AS 就不能用作列标签的关键字数量(Mark Dilger)§
现在受限关键字减少了 90%。
新功能允许为 JOIN 的 USING 子句指定别名
SELECT、INSERT
允许为 JOIN 的 USING 子句指定别名(Peter Eisentraut)§
别名通过在 USING 子句后写 AS 来创建。它可用作合并的 USING 列的表限定。
新功能允许将 DISTINCT 添加到 GROUP BY 以移除重复的 GROUPING SET 组合
SELECT、INSERT
允许将 DISTINCT 添加到 GROUP BY 以移除重复的 GROUPING SET 组合(Vik Fearing)§
例如,GROUP BY CUBE (a,b), CUBE (b,c) 在没有 DISTINCT 的情况下会生成重复的分组组合。
新功能正确处理 INSERT 中多行 VALUES 列表中的 DEFAULT 条目
SELECT、INSERT
正确处理 INSERT 中多行 VALUES 列表中的 DEFAULT 条目(Dean Rasheed)§
此类情况以前会抛出错误。
新功能为公共表表达式增加 SQL 标准的 SEARCH 和 CYCLE 子句
新功能允许 ON CONFLICT 的 WHERE 子句中的列名使用表限定
SELECT、INSERT
允许 ON CONFLICT 的 WHERE 子句中的列名使用表限定(Tom Lane)§
但是,只能引用目标表。
新功能允许 REFRESH MATERIALIZED VIEW 使用并行执行
工具命令
允许 REFRESH MATERIALIZED VIEW 使用并行执行(Bharath Rupireddy)§
新功能允许 REINDEX 更改新索引的表空间
新功能允许 REINDEX 处理分区关系的所有子表或索引
工具命令
允许 REINDEX 处理分区关系的所有子表或索引(Justin Pryzby,Michael Paquier)§
新功能允许使用 CONCURRENTLY 的索引命令避免等待其他使用 CONCURRENTLY 的操作完成
工具命令
关联记录 (1)
新功能在视图定义中保留 SQL 定义函数的 SQL 标准语法
新功能为 GRANT 和 REVOKE 增加 SQL 标准的 GRANTED BY 子句
新功能为 CREATE TRIGGER 增加 OR REPLACE 选项
工具命令
为 CREATE TRIGGER 增加 OR REPLACE 选项(Takamichi Osumi)§
这允许有条件地替换已存在的触发器。
新功能允许 TRUNCATE 操作外部表
工具命令
允许 TRUNCATE 操作外部表(Kazutaka Onishi,Kohei KaiGai)§
postgres_fdw 模块现在也支持此功能。
新功能允许更方便地向订阅中添加和从中移除发布
工具命令
允许更方便地向订阅中添加和从中移除发布(Japin Li)§
新语法为 ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION。这避免了需要指定所有发布来添加/移除条目。
新功能为系统目录增加主键、唯一约束和外键
工具命令
为系统目录增加主键、唯一约束和外键(Peter Eisentraut)§ §
这些更改帮助 GUI 工具分析系统目录。目录现有的唯一索引现在具有关联的 UNIQUE 或 PRIMARY KEY 约束。外键关系实际上并未作为约束存储或实现,但可通过函数 pg_get_catalog_foreign_keys() 获取以供显示。
新功能在接受 CURRENT_USER 的每个地方都允许 CURRENT_ROLE
工具命令
在接受 CURRENT_USER 的每个地方都允许 CURRENT_ROLE(Peter Eisentraut)§
新功能允许扩展和内置数据类型实现下标运算
新功能增加对多范围数据类型的支持
新功能增加对亚美尼亚语、巴斯克语、加泰罗尼亚语、印地语、塞尔维亚语和意第绪语的词干化支持
新功能允许 tsearch 数据文件具有无限行长度
数据类型
允许 tsearch 数据文件具有无限行长度(Tom Lane)§
之前的限制为 4K 字节。同时移除函数 t_readline()。
新功能增加对 numeric 数据类型中 Infinity 和 -Infinity 值的支持
数据类型
增加对 numeric 数据类型中 Infinity 和 -Infinity 值的支持(Tom Lane)§
浮点数据类型已经支持这些值。
新功能增加点操作符 <<| 和 |>> 表示严格在上方/下方测试
新功能为系统目录创建复合数组类型
数据类型
为系统目录创建复合数组类型(Wenjing Zeng)§
用户定义的关系长期以来就有关联的复合类型,也有这些复合类型上的数组类型。系统目录现在也是如此。此更改还修复了在单用户模式下创建用户定义表时无法创建复合数组类型的不一致性。
新功能允许 SQL 语言函数和过程使用 SQL 标准函数体
新功能允许某些数组函数在兼容数据类型的组合上操作
函数
允许某些数组函数在兼容数据类型的组合上操作(Tom Lane)§
函数 array_append()、array_prepend()、array_cat()、array_position()、array_positions()、array_remove()、array_replace() 和 width_bucket() 现在接受 anycompatiblearray 而不是 anyarray 参数。这使它们对参数类型的精确匹配要求更低。
关联记录 (1)
新功能增加 SQL 标准的 trim_array() 函数
函数
增加 SQL 标准的 trim_array() 函数(Vik Fearing)§
使用数组切片也可以实现此功能,但不那么方便。
新功能在 split_part() 中支持负索引
函数
在 split_part() 中支持负索引(Nikhil Benesch)§
负值从最后一个字段开始向前计数。
新功能增加 string_to_table() 函数以按分隔符拆分字符串
函数
增加 string_to_table() 函数以按分隔符拆分字符串(Pavel Stehule)§
这类似于 regexp_split_to_table() 函数。
新功能增加 unistr() 函数以允许在字符串中以反斜杠十六进制转义形式指定 Unicode 字符
新功能增加函数 bit_count() 以返回位或字节字符串中设置的位数
函数
增加函数 bit_count() 以返回位或字节字符串中设置的位数(David Fetter)§
新功能增加 date_bin() 函数
函数
增加 date_bin() 函数(John Naylor)§ §
此函数将输入时间戳进行“分箱”,将它们分组到与指定原点对齐的均匀长度的区间中。
新功能允许 make_timestamp()/make_timestamptz() 接受负年份
函数
允许 make_timestamp()/make_timestamptz() 接受负年份(Peter Eisentraut)§
负值被解释为 BC 年。
新功能增加更新的正则表达式 substring() 语法
函数
增加更新的正则表达式 substring() 语法(Peter Eisentraut)§
新的 SQL 标准语法为 SUBSTRING(text SIMILAR pattern ESCAPE escapechar)。之前的标准语法 SUBSTRING(text FROM pattern FOR escapechar) 仍被 PostgreSQL 接受。
新功能允许在正则表达式方括号内使用补充字符类转义 \D、\S 和 \W
函数
新功能增加 [[:word:]] 作为正则表达式字符类,等同于 \w
函数
增加 [[:word:]] 作为正则表达式字符类,等同于 \w(Tom Lane)§
新功能使浮点 NaN 除以零返回 NaN
函数
使浮点 NaN 除以零返回 NaN(Tom Lane)§
以前这返回一个错误。
新功能改进涉及无穷大的几何计算的精度
函数
改进涉及无穷大的几何计算的精度(Tom Lane)§
新功能尽可能将内置类型转换函数标记为防泄漏
函数
尽可能将内置类型转换函数标记为防泄漏(Tom Lane)§
这允许在安全敏感情况下更多地使用需要类型转换的函数。
新功能改变 pg_describe_object()、pg_identify_object() 和 pg_identify_object_as_address(),使其始终为不存在的对象报告有用的错误消息
函数
改变 pg_describe_object()、pg_identify_object() 和 pg_identify_object_as_address(),使其始终为不存在的对象报告有用的错误消息(Michael Paquier)§
新功能允许 plpgsql 的 RETURN QUERY 使用并行执行其查询
PL/pgSQL
允许 plpgsql 的 RETURN QUERY 使用并行执行其查询(Tom Lane)§
新功能为 libpq 增加管道模式
新功能增强 libpq 的 target_session_attrs 参数选项
客户端接口
增强 libpq 的 target_session_attrs 参数选项(Haribabu Kommi,Greg Nancarrow,Vignesh C,Tom Lane)§ §
新选项为 read-only、primary、standby 和 prefer-standby。
新功能允许将 ECPG SQL 标识符链接到特定连接
客户端接口
允许将 ECPG SQL 标识符链接到特定连接(Hayato Kuroda)§
这通过 DECLARE ... STATEMENT 完成。
新功能允许vacuumdb跳过索引清理和截断
新功能增加pgbench的 permute() 函数以随机打乱值
新功能在 pgbench 使用 -C 选项测量的重连开销中包含断开连接时间
客户端应用
在 pgbench 使用 -C 选项测量的重连开销中包含断开连接时间(Yugo Nagata)§
新功能允许多次指定详细选项(-v)以增加日志详细程度
客户端应用
允许多次指定详细选项(-v)以增加日志详细程度(Tom Lane)§
pg_dump、pg_dumpall和pg_restore支持此行为。
新功能允许 psql 的 \df 和 \do 命令指定函数和操作符参数类型
客户端应用 / psql
允许 psql 的 \df 和 \do 命令指定函数和操作符参数类型(Greg Sabino Mullane,Tom Lane)§
这有助于减少重载名称打印的匹配数。
新功能在 psql 的 \d[i|m|t]+ 输出中增加访问方法列
客户端应用 / psql
在 psql 的 \d[i|m|t]+ 输出中增加访问方法列(Georgios Kokolatos)§
新功能允许 psql 的 \dt 和 \di 显示 TOAST 表及其索引
客户端应用 / psql
允许 psql 的 \dt 和 \di 显示 TOAST 表及其索引(Justin Pryzby)§
新功能增加 psql 命令 \dX 以列出扩展统计对象
客户端应用 / psql
增加 psql 命令 \dX 以列出扩展统计对象(Tatsuro Yamada)§
问题修复修复 psql 的 \dT 以理解数组语法和后端语法别名,如 int 代替 integer
客户端应用 / psql
修复 psql 的 \dT 以理解数组语法和后端语法别名,如 int 代替 integer(Greg Sabino Mullane,Tom Lane)§
新功能当使用 psql 的 \e 编辑之前的查询或文件,或使用 \ef 和 \ev 时,如果编辑器未保存就退出则忽略结果
客户端应用 / psql
当使用 psql 的 \e 编辑之前的查询或文件,或使用 \ef 和 \ev 时,如果编辑器未保存就退出则忽略结果(Laurenz Albe)§
以前,这种编辑会将之前的查询加载到查询缓冲区中,并且通常会立即执行。这被认为可能不是用户想要的。
新功能改进 Tab 补全
新功能增加命令行工具pg_amcheck以简化在多个关系上运行 contrib/amcheck 测试
服务器应用
增加命令行工具pg_amcheck以简化在多个关系上运行 contrib/amcheck 测试(Mark Dilger)§
新功能为initdb增加 --no-instructions 选项
新功能停止pg_upgrade创建 analyze_new_cluster 脚本
服务器应用
停止pg_upgrade创建 analyze_new_cluster 脚本(Magnus Hagander)§
取而代之的是给出类似的vacuumdb说明。
新功能移除对 postmaster -o 选项的支持
服务器应用
移除对 postmaster -o 选项的支持(Magnus Hagander)§
此选项是不必要的,因为所有传递的选项都已经可以直接指定。
新功能增加 factorial() 函数的文档
文档
增加 factorial() 函数的文档(Peter Eisentraut)§
随着此版本移除了 ! 操作符,factorial() 是计算阶乘的唯一内置方式。
新功能增加 configure 选项 --with-ssl={openssl} 以允许将来选择要使用的 SSL 库
源代码
增加 configure 选项 --with-ssl={openssl} 以允许将来选择要使用的 SSL 库(Daniel Gustafsson,Michael Paquier)§
保留 --with-openssl 拼写以兼容。
新功能增加对抽象 Unix 域套接字的支持
源代码
增加对抽象 Unix 域套接字的支持(Peter Eisentraut)§
目前在 Linux 和 Windows 上受支持。
新功能允许 Windows 正确处理大于 4GB 的文件
新功能增加服务器参数debug_discard_caches以控制用于测试目的的缓存刷新
源代码
增加服务器参数debug_discard_caches以控制用于测试目的的缓存刷新(Craig Ringer)§ § §
以前此行为只能在编译时设置。要在 initdb 期间调用它,使用新选项 --discard-caches。
新功能增加正则表达式包的测试模块
源代码
增加正则表达式包的测试模块(Tom Lane)§
新功能增加对 LLVM 版本 12 的支持
源代码
增加对 LLVM 版本 12 的支持(Andres Freund)§
新功能将 SHA1、SHA2 和 MD5 hash 计算改为使用 OpenSSL EVP API
新功能移除对随机数生成器选择的单独构建时控制
源代码
移除对随机数生成器选择的单独构建时控制(Daniel Gustafsson)§
现在始终由 SSL 库的选择决定。
新功能增加 EUC_TW 和 Big5 编码之间的直接转换例程
源代码
增加 EUC_TW 和 Big5 编码之间的直接转换例程(Heikki Linnakangas)§
新功能增加 FreeBSD 的排序规则版本支持
源代码
增加 FreeBSD 的排序规则版本支持(Thomas Munro)§
新功能在索引访问方法 API 中增加 amadjustmembers
源代码
在索引访问方法 API 中增加 amadjustmembers(Tom Lane)§
这允许索引访问方法在创建新操作符类或族时提供有效性检查。
新功能在 libpq-fe.h 中提供最近添加的 libpq 功能的特性测试宏
源代码
在 libpq-fe.h 中提供最近添加的 libpq 功能的特性测试宏(Tom Lane,Álvaro Herrera)§
历史上,应用程序通常使用 PG_VERSION_NUM 的编译时检查来测试功能是否可用。但那通常是服务器版本,可能不能很好地指导 libpq 的版本。libpq-fe.h 现在提供 #define 符号表示 v14 中添加的应用程序可见功能;意图是在将来的版本中继续为此类功能添加符号。
新功能允许 GiST/GIN pg_trgm 索引进行等值查找
新功能允许 pgstattuple_approx() 报告 TOAST 表
附加模块
允许 pgstattuple_approx() 报告 TOAST 表(Peter Eisentraut)§
新功能增加 contrib 模块pg_surgery以允许更改行可见性
附加模块
增加 contrib 模块pg_surgery以允许更改行可见性(Ashutosh Sharma)§
这对于修复数据库损坏很有用。
新功能增加 contrib 模块old_snapshot,用于报告活动的old_snapshot_threshold所使用的 XID/时间映射
附加模块
增加 contrib 模块old_snapshot,用于报告活动的old_snapshot_threshold所使用的 XID/时间映射(Robert Haas)§
新功能允许pageinspect检查 GiST 索引
附加模块
允许pageinspect检查 GiST 索引(Andrey Borodin,Heikki Linnakangas)§ §
新功能将btree_gist函数标记为并行安全
附加模块
将btree_gist函数标记为并行安全(Steven Winfield)§
新功能将查询 hash 计算从 pg_stat_statements 移至核心服务器
附加模块 / pg_stat_statements
将查询 hash 计算从 pg_stat_statements 移至核心服务器(Julien Rouhaud)§
新服务器参数compute_query_id的默认值 auto 将在加载此扩展时自动启用查询 ID 计算。
新功能使 pg_stat_statements 分别跟踪顶层和嵌套语句
附加模块 / pg_stat_statements
使 pg_stat_statements 分别跟踪顶层和嵌套语句(Julien Rohaud)§
以前,在跟踪所有语句时,相同的顶层和嵌套语句被作为单个条目跟踪;但分开此类用法似乎更有用。
新功能为 pg_stat_statements 增加工具命令的行计数
新功能增加 pg_stat_statements_info 系统视图以显示 pg_stat_statements 活动
新功能允许 postgres_fdw 批量 INSERT 行
新功能允许 postgres_fdw 在 IMPORT FOREIGN SCHEMA ... LIMIT TO 指定时导入表分区
附加模块 / postgres_fdw
允许 postgres_fdw 在 IMPORT FOREIGN SCHEMA ... LIMIT TO 指定时导入表分区(Matthias van de Meent)§
默认情况下,仅导入分区表的根表。
新功能增加 postgres_fdw 函数 postgres_fdw_get_connections() 以报告打开的外部服务器连接
附加模块 / postgres_fdw
增加 postgres_fdw 函数 postgres_fdw_get_connections() 以报告打开的外部服务器连接(Bharath Rupireddy)§
新功能允许控制外部服务器在事务完成后是否保持连接打开
附加模块 / postgres_fdw
允许控制外部服务器在事务完成后是否保持连接打开(Bharath Rupireddy)§
这由 keep_connections 控制,默认为开启。
新功能允许 postgres_fdw 在必要时重新连接到外部服务器
新功能增加 postgres_fdw 函数以丢弃缓存的连接
附加模块 / postgres_fdw
增加 postgres_fdw 函数以丢弃缓存的连接(Bharath Rupireddy)§
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.