文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 12.0 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
12.0
2019-10-03
12.0stable支持截止 2024-11-21
PostgreSQL 12.0
迁移与兼容性
对于希望从任何先前版本迁移数据的用户,需要使用pg_dumpall进行导出/恢复,或使用pg_upgrade或逻辑复制。有关迁移到新主版本的一般信息,请参见第 18.6 节。
版本 12 包含许多可能影响与先前版本兼容性的变更。请注意以下不兼容性:
兼容性移除 oid 列的特殊行为
兼容性移除数据类型 abstime、reltime 和 tinterval
兼容性
移除数据类型 abstime、reltime 和 tinterval(Andres Freund)§
这些类型已被 timestamp 等 SQL 标准类型取代。
兼容性移除 timetravel 扩展
兼容性
移除 timetravel 扩展(Andres Freund)§
兼容性将 recovery.conf 设置移入 postgresql.conf
兼容性
将 recovery.conf 设置移入 postgresql.conf(Masao Fujii,Simon Riggs,Abhijit Menon-Sen,Sergei Kornilov)§
不再使用 recovery.conf,如果该文件存在,服务器将无法启动。现在通过 recovery.signal 和 standby.signal 文件切换到非主库模式。trigger_file 设置已重命名为promote_trigger_file。standby_mode 设置已被移除。
兼容性不再允许指定多个相互冲突的 recovery_target* 设置
兼容性
不再允许指定多个相互冲突的 recovery_target* 设置(Peter Eisentraut)§
具体而言,recovery_target、recovery_target_lsn、recovery_target_name、recovery_target_time和recovery_target_xid中只允许指定一个。以前可以指定这些参数中的多个不同参数,并采用最后一个。现在只能指定其中一个,但同一个参数可以重复指定,并采用最后一次指定的值。
兼容性使恢复默认推进到最新时间线
兼容性
使恢复默认推进到最新时间线(Peter Eisentraut)§
具体而言,recovery_target_timeline现在默认为 latest,而以前默认为 current。
兼容性重构几何函数和操作符的代码
兼容性采用新算法输出 real 和 double precision 值,以提高性能
兼容性
采用新算法输出 real 和 double precision 值,以提高性能(Andrew Gierth)§ §
以前,显示的浮点值默认舍入到 6 位(real)或 15 位(double precision),并根据extra_float_digits的值进行调整。现在,只要 extra_float_digits 大于零(这也是现在的默认值),就只输出保留精确二进制值所需的最少位数。当 extra_float_digits 设置为零或更小时,行为与以前相同。
此外,浮点指数的格式现在在各平台上一致:除非必须使用三位数字,否则使用两位。在以前的版本中,Windows 构建始终输出三位数字。
兼容性random() 和 setseed() 现在在各平台上行为一致
兼容性更改 SQL 风格的 substring(),使其具有符合标准的贪婪匹配行为
兼容性
更改 SQL 风格的 substring(),使其具有符合标准的贪婪匹配行为(Tom Lane)§
当模式可以以多种方式匹配时,起始子模式现在会匹配尽可能少的文本,而非尽可能多的文本。例如,%#"aa*#"% 这样的模式现在会从输入中选择第一组 a,而非最后一组。
兼容性不再对 xpath() 或 XMLTABLE 结构的结果进行美化输出
兼容性将命令行工具 pg_verify_checksums 重命名为pg_checksums
兼容性
将命令行工具 pg_verify_checksums 重命名为pg_checksums(Michaël Paquier)§
兼容性在pg_restore中,要求指定 -f - 才能将转储内容发送到标准输出
兼容性
在pg_restore中,要求指定 -f - 才能将转储内容发送到标准输出(Euler Taveira)§
以前,如果未指定目标位置,默认会这样做,但这种行为被认为不够友好。
兼容性在 psql 的 \pset format 命令中禁止不唯一的缩写
兼容性在新建的 B-树索引中,将索引条目的最大长度减少八字节,以改进对重复条目的处理
兼容性如果没有提供参数列表且存在多个匹配对象,则使 DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE 报错
兼容性
如果没有提供参数列表且存在多个匹配对象,则使 DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE 报错(David Rowley)§
同时改进此类情况下的错误消息。
兼容性将 pg_statistic_ext 目录拆分为两个目录,并添加相应的 pg_stats_ext 视图
兼容性
将 pg_statistic_ext 目录拆分为两个目录,并添加相应的 pg_stats_ext 视图(Dean Rasheed,Tomas Vondra)§ §
此更改支持向无特权用户隐藏可能敏感的统计数据。
兼容性移除过时的 pg_constraint.consrc 列
兼容性
移除过时的 pg_constraint.consrc 列(Peter Eisentraut)§
此列早已弃用,因为它不会随其他目录变更(如列重命名)而更新。从 pg_constraint 获取检查约束表达式文本形式的推荐方法是 pg_get_expr(conbin, conrelid)。pg_get_constraintdef() 也是一种有用的替代方法。
兼容性移除过时的 pg_attrdef.adsrc 列
兼容性
移除过时的 pg_attrdef.adsrc 列(Peter Eisentraut)§
此列早已弃用,因为它不会随其他目录变更(如列重命名)而更新。从 pg_attrdef 获取默认值表达式文本形式的推荐方法是 pg_get_expr(adbin, adrelid)。
兼容性将 name 类型的表列标记为默认使用 “C” 排序规则
兼容性
将 name 类型的表列标记为默认使用 “C” 排序规则(Tom Lane,Daniel Vérité)§ §
数据类型 name 的比较操作符现在可以使用任何排序规则,而不再总是使用 “C” 排序规则。为保留查询以前的语义,现在将 name 类型的列显式标记为使用 “C” 排序规则。这一改动的副作用是,name 列上的正则表达式操作符现在默认使用 “C” 排序规则,而非数据库的排序规则,来确定依赖区域设置的正则表达式模式(例如 \w)的行为。如果希望 name 列上的正则表达式具有非 C 行为,请附加一个显式的 COLLATE 子句。(对于用户定义的 name 列,另一种方法是在建表时指定不同的排序规则;但这只是将向后不兼容性转移到了比较操作符上。)
兼容性将 information_schema 视图中的对象名列视为 name 类型,而非 varchar 类型
兼容性
将 information_schema 视图中的对象名列视为 name 类型,而非 varchar 类型(Tom Lane)§ § §
按照 SQL 标准,information_schema 视图中的对象名列被声明为域类型 sql_identifier。在 PostgreSQL 中,底层目录列实际为 name 类型。此更改使 sql_identifier 成为基于 name 的域,而非原来的 varchar。这消除了比较和排序行为中的语义不一致,可显著提高对 information_schema 视图中的对象名列施加限制的查询性能。不过请注意,不等式限制,例如
SELECT ... FROM information_schema.tables WHERE table_name < 'foo';
现在默认使用 “C” 区域设置的比较语义,而非像以前那样使用数据库的默认排序规则。对这些列进行排序也将遵循 “C” 排序规则。通过添加 COLLATE "default" 子句,可以强制使用以前的行为(及其低效率)。
兼容性移除禁用动态共享内存的功能
兼容性
移除禁用动态共享内存的功能(Kyotaro Horiguchi)§
具体而言,dynamic_shared_memory_type不再能够设置为 none。
兼容性更严格地解析 libpq 整数连接参数
兼容性
更严格地解析 libpq 整数连接参数(Fabien Coelho)§
在以前的版本中,为连接参数 connect_timeout、keepalives、keepalives_count、keepalives_idle、keepalives_interval 和 port 使用不正确的整数值,会导致 libpq 忽略这些值,或失败并给出不正确的错误消息。
性能提高分区表上许多操作的性能
新功能提高向分区表执行 COPY 的速度
服务器 / 分区
提高向分区表执行 COPY 的速度(David Rowley)§
新功能允许分区边界使用任意表达式
服务器 / 分区
允许分区边界使用任意表达式(Kyotaro Horiguchi,Tom Lane,Amit Langote)§
此类表达式在创建分区表时求值。以前,只允许将简单常量用作分区边界。
新功能允许 CREATE TABLE 为分区表指定的表空间影响其子分区的表空间
服务器 / 分区
允许 CREATE TABLE 为分区表指定的表空间影响其子分区的表空间(David Rowley,Álvaro Herrera)§
新功能如果已经按所需顺序扫描分区,则避免排序
服务器 / 分区
如果已经按所需顺序扫描分区,则避免排序(David Rowley)§
新功能降低执行 ALTER TABLE ATTACH PARTITION 的锁定要求
服务器 / 分区
降低执行 ALTER TABLE ATTACH PARTITION 的锁定要求(Robert Haas)§
新功能添加分区自省函数
服务器 / 分区
添加分区自省函数(Michaël Paquier,Álvaro Herrera,Amit Langote)§ § §
新函数 pg_partition_root() 返回分区树的最顶层父表,pg_partition_ancestors() 报告分区的所有祖先,pg_partition_tree() 显示分区信息。
新功能在系统视图 pg_indexes 中包含分区索引
服务器 / 分区
在系统视图 pg_indexes 中包含分区索引(Suraj Kharage)§
新功能添加 psql 命令 \dP,用于列出分区表和索引
服务器 / 分区
添加 psql 命令 \dP,用于列出分区表和索引(Pavel Stehule)§
新功能改进 psql 的 \d 和 \z 对分区表的显示
问题修复修复可能导致 ALTER TABLE DETACH PARTITION 留下不正确依赖状态的缺陷;这可能使后续操作行为异常,例如在删除表时未删除曾属于分区的子索引
服务器 / 分区
修复可能导致 ALTER TABLE DETACH PARTITION 留下不正确依赖状态的缺陷;这可能使后续操作行为异常,例如在删除表时未删除曾属于分区的子索引(Tom Lane)§
性能提高具有大量重复值的 B-树索引的性能和空间利用率
新功能允许多列 B-树索引占用更少空间
服务器 / 索引
允许多列 B-树索引占用更少空间(Peter Geoghegan,Heikki Linnakangas)
内部页面和叶子页面的最小/最大值指示项现在只存储到发生差异的键为止的索引键,而非全部索引键。这也提高了索引访问的局部性。
通过 pg_upgrade 从以前版本升级而来的索引无法获得这些好处。
新功能通过减少锁定开销提高 B-树索引插入速度
服务器 / 索引
通过减少锁定开销提高 B-树索引插入速度(Alexander Korotkov)§
新功能添加对 SP-GiST 索引的最近邻(KNN)搜索的支持
性能减少创建 GiST、GIN 和 SP-GiST 索引时的 WAL 写入开销
服务器 / 索引
减少创建 GiST、GIN 和 SP-GiST 索引时的 WAL 写入开销(Anastasia Lubennikova,Andrey V. Lepikhov)§
新功能提高多列索引上仅索引扫描的效率
服务器 / 索引
提高多列索引上仅索引扫描的效率(Konstantin Knizhnik)§
性能提高 GiST 索引清理扫描的性能
服务器 / 索引
提高 GiST 索引清理扫描的性能(Andrey Borodin,Konstantin Kuznetsov,Heikki Linnakangas)§
新功能在 GiST VACUUM 期间删除空的叶子页面
服务器 / 索引
在 GiST VACUUM 期间删除空的叶子页面(Andrey Borodin)§
新功能降低索引重命名的锁定要求
服务器 / 索引
降低索引重命名的锁定要求(Peter Eisentraut)§
新功能允许CREATE STATISTICS创建多列最常见值统计信息
服务器 / 优化器
允许CREATE STATISTICS创建多列最常见值统计信息(Tomas Vondra)§ §
这改进了对多个列进行测试、需要估算多个 WHERE 子句综合效果的查询的优化。如果这些列彼此相关且分布不均匀,多列统计信息将使估算显著改善。
新功能允许将公共表表达式(CTEs)内联到外层查询中
新功能允许控制何时为预备语句使用通用计划
服务器 / 优化器
允许控制何时为预备语句使用通用计划(Pavel Stehule)§
这由服务器参数plan_cache_mode控制。
新功能改进只有一个子项的分区查询和 UNION ALL 查询的优化
服务器 / 优化器
改进只有一个子项的分区查询和 UNION ALL 查询的优化(David Rowley)§
新功能提高优化器验证带有 IS NOT NULL 条件的部分索引可用于查询的能力
新功能使用为每列定义的排序规则计算 ANALYZE 统计信息
服务器 / 优化器
使用为每列定义的排序规则计算 ANALYZE 统计信息(Tom Lane)§
以前,所有统计信息都使用数据库的默认排序规则。对于使用非默认排序规则的列,这可能改善优化器行为。
问题修复修复某些 B-树比较操作符和支持函数的防泄漏属性标记
性能如果服务器构建时包含相应支持,则默认启用即时(JIT)编译
性能提高 position() 及相关函数中多字节字符的搜索性能
服务器 / 一般性能
提高 position() 及相关函数中多字节字符的搜索性能(Heikki Linnakangas)§
性能允许对经过 TOAST 处理的值仅解压所需的最小部分
性能允许 ALTER TABLE ... SET NOT NULL 避免不必要的表扫描
服务器 / 一般性能
允许 ALTER TABLE ... SET NOT NULL 避免不必要的表扫描(Sergei Kornilov)§
当可以识别出表的列约束不允许空值时,就能进行此项优化。
性能会话时区为 UTC 时,允许使用 ALTER TABLE ... SET DATA TYPE 在 timestamp 和 timestamptz 之间转换,而无需重写表
服务器 / 一般性能
会话时区为 UTC 时,允许使用 ALTER TABLE ... SET DATA TYPE 在 timestamp 和 timestamptz 之间转换,而无需重写表(Noah Misch)§
在 UTC 时区中,这两种数据类型是二进制兼容的。
性能提高将字符串转换为 int2 或 int4 整数的速度
服务器 / 一般性能
提高将字符串转换为 int2 或 int4 整数的速度(Andres Freund)§
性能允许在 SERIALIZABLE 隔离模式下使用并行查询
服务器 / 一般性能
允许在 SERIALIZABLE 隔离模式下使用并行查询(Thomas Munro)§
以前,在此模式下会禁用并行执行。
性能使用 pread() 和 pwrite() 执行随机 I/O
新功能允许仅记录一定比例事务中的语句
服务器 / 监控
允许仅记录一定比例事务中的语句(Adrien Nayrat)§
这由参数log_transaction_sample_rate控制。
新功能为 CREATE INDEX 和 REINDEX 操作添加进度报告
服务器 / 监控
为 CREATE INDEX 和 REINDEX 操作添加进度报告(Álvaro Herrera,Peter Eisentraut)§ §
进度通过 pg_stat_progress_create_index 系统视图报告。
新功能为 CLUSTER 和 VACUUM FULL 添加进度报告
服务器 / 监控
为 CLUSTER 和 VACUUM FULL 添加进度报告(Tatsuro Yamada)§
进度通过 pg_stat_progress_cluster 系统视图报告。
新功能为pg_checksums添加进度报告
服务器 / 监控
为pg_checksums添加进度报告(Michael Banck,Bernd Helmle)§
可通过 --progress 选项启用此功能。
新功能在 pg_stat_database 中添加校验和失败计数器
服务器 / 监控
在 pg_stat_database 中添加校验和失败计数器(Magnus Hagander)§
新功能在系统视图 pg_stat_database 中添加对全局对象的跟踪
服务器 / 监控
在系统视图 pg_stat_database 中添加对全局对象的跟踪(Julien Rouhaud)§
全局对象对应的 pg_stat_database.datid 值显示为零。
新功能添加列出归档目录内容的功能
服务器 / 监控
添加列出归档目录内容的功能(Christoph Moench-Tegeder)§
相应函数为 pg_ls_archive_statusdir()。
新功能添加列出临时目录内容的功能
服务器 / 监控
添加列出临时目录内容的功能(Nathan Bossart)§
相应函数 pg_ls_tmpdir() 允许选择性地指定表空间。
新功能在系统视图 pg_stat_ssl 中添加客户端证书信息
服务器 / 监控
在系统视图 pg_stat_ssl 中添加客户端证书信息(Peter Eisentraut)§
新增列为 client_serial 和 issuer_dn。为使含义更清楚,将 clientdn 列重命名为 client_dn。
新功能限制无特权用户在 pg_stat_ssl 中可见的行
服务器 / 监控
限制无特权用户在 pg_stat_ssl 中可见的行(Peter Eisentraut)§
新功能服务器启动时输出包含服务器版本号的日志消息
服务器 / 监控
服务器启动时输出包含服务器版本号的日志消息(Christoph Berg)§
新功能如果新连接立即被关闭,则避免记录 “incomplete startup packet”
服务器 / 监控
如果新连接立即被关闭,则避免记录 “incomplete startup packet”(Tom Lane)§
这避免了某些监控方式产生大量无用日志。
新功能如果设置了application_name,则在log_connections日志消息中包含它
服务器 / 监控
如果设置了application_name,则在log_connections日志消息中包含它(Don Seiler)§
新功能如果设置了集群名称,则让 WAL 接收进程将其应用名称设置为该集群名称
服务器 / 监控
如果设置了集群名称,则让 WAL 接收进程将其应用名称设置为该集群名称(Peter Eisentraut)§
新功能在 pg_stat_replication 中添加最后收到的备库消息的时间戳
服务器 / 监控
在 pg_stat_replication 中添加最后收到的备库消息的时间戳(Lim Myungkyu)§
新功能添加 GSSAPI 加密支持
服务器 / Authentication
添加 GSSAPI 加密支持(Robbie Harwood,Stephen Frost)§
此特性允许在使用 GSSAPI 认证时加密 TCP/IP 连接,无需另外配置 SSL 等加密设施。为支持此功能,在 pg_hba.conf 中增加了 hostgssenc 和 hostnogssenc 记录类型,用于选择使用或不使用 GSSAPI 加密的连接,分别对应现有的 hostssl 和 hostnossl 记录类型。另外,还增加了 libpq 选项gssencmode和系统视图pg_stat_gssapi。
新功能允许 pg_hba.conf 的 clientcert 选项检查数据库用户名是否与客户端证书的通用名匹配
服务器 / Authentication
允许 pg_hba.conf 的 clientcert 选项检查数据库用户名是否与客户端证书的通用名匹配(Julian Markwort,Marius Timmer)§
此项新检查通过 clientcert=verify-full 启用。
新功能允许使用 DNS SRV 记录发现 LDAP 服务器
新功能添加使用pg_checksums启用/禁用集群校验和的功能
服务器 / 服务器配置
添加使用pg_checksums启用/禁用集群校验和的功能(Michael Banck,Michaël Paquier)§
执行这些操作时必须关闭集群。
新功能将autovacuum_vacuum_cost_delay的默认值降低到 2ms
服务器 / 服务器配置
将autovacuum_vacuum_cost_delay的默认值降低到 2ms(Tom Lane)§
这使自动清理操作默认能够更快地执行。
新功能允许vacuum_cost_delay接受小数值,以指定亚毫秒级延迟
服务器 / 服务器配置
允许vacuum_cost_delay接受小数值,以指定亚毫秒级延迟(Tom Lane)§
新功能允许时间类服务器参数使用微秒(us)单位
服务器 / 服务器配置
新功能允许整数服务器参数接受小数输入
服务器 / 服务器配置
允许整数服务器参数接受小数输入(Tom Lane)§
例如,虽然 work_mem 是整数参数,现在也允许执行 SET work_mem = '30.1GB'。完成所有必要的单位转换后,该值会被舍入为整数。
新功能允许为浮点服务器参数定义单位
服务器 / 服务器配置
允许为浮点服务器参数定义单位(Tom Lane)§
新功能添加服务器参数wal_recycle和wal_init_zero,以控制 WAL 文件的循环利用
服务器 / 服务器配置
添加服务器参数wal_recycle和wal_init_zero,以控制 WAL 文件的循环利用(Jerry Jelinek)§
在 ZFS 等写时复制文件系统上,避免文件循环利用可能有益。
新功能添加服务器参数tcp_user_timeout,以控制服务器的 TCP 超时
服务器 / 服务器配置
添加服务器参数tcp_user_timeout,以控制服务器的 TCP 超时(Ryohei Nagaura)§
新功能允许控制最低和最高 SSL 协议版本
服务器 / 服务器配置
允许控制最低和最高 SSL 协议版本(Peter Eisentraut)§
新功能添加服务器参数ssl_library,以报告服务器使用的 SSL 库版本
服务器 / 服务器配置
添加服务器参数ssl_library,以报告服务器使用的 SSL 库版本(Peter Eisentraut)§
新功能添加服务器参数shared_memory_type,以控制所使用的共享内存类型
服务器 / 服务器配置
添加服务器参数shared_memory_type,以控制所使用的共享内存类型(Andres Freund)§
这允许在需要时选择 System V 共享内存。
新功能允许通过重新加载配置更改部分恢复参数
流复制和恢复
允许通过重新加载配置更改部分恢复参数(Peter Eisentraut)§
这些参数是archive_cleanup_command、promote_trigger_file、recovery_end_command和recovery_min_apply_delay。
新功能允许按连接设置流复制超时(wal_sender_timeout)
流复制和恢复
允许按连接设置流复制超时(wal_sender_timeout)(Takayuki Tsunakawa)§
以前,只能在整个集群范围内设置此参数。
新功能添加函数 pg_promote(),用于将备库提升为主库
流复制和恢复
添加函数 pg_promote(),用于将备库提升为主库(Laurenz Albe,Michaël Paquier)§ §
以前,只能使用pg_ctl或创建触发文件来执行此操作。
新功能允许复制复制槽
流复制和恢复
允许复制复制槽(Masahiko Sawada)§
相应函数为 pg_copy_physical_replication_slot() 和 pg_copy_logical_replication_slot()。
新功能不再将max_wal_senders计入max_connections
流复制和恢复
不再将max_wal_senders计入max_connections(Alexander Kukushkin)§
新功能为recovery_target_timeline添加显式值 current
流复制和恢复
为recovery_target_timeline添加显式值 current(Peter Eisentraut)§
新功能为REINDEX添加 CONCURRENTLY 选项,以允许在不阻塞写入的情况下重建索引
新功能为 COPY FROM 添加 WHERE 子句,以控制接受哪些行
新功能允许更灵活地添加枚举值
工具命令
允许更灵活地添加枚举值(Andrew Dunstan,Tom Lane,Thomas Munro)§
以前,不能在事务块中调用 ALTER TYPE ... ADD VALUE,除非它与创建该枚举类型的操作处于同一事务。现在可以在后续事务中调用,只要在提交之后才引用新的枚举值即可。
新功能添加结束当前事务并开始新事务的命令
工具命令
添加结束当前事务并开始新事务的命令(Peter Eisentraut)§
这些命令为 COMMIT AND CHAIN 和 ROLLBACK AND CHAIN。
新功能为VACUUM和 CREATE TABLE 添加选项,以阻止 VACUUM 截断尾部空页面
新功能允许 VACUUM 跳过索引清理
新功能添加跳过无法立即锁定的表上的 VACUUM 和 ANALYZE 操作的功能
工具命令
添加跳过无法立即锁定的表上的 VACUUM 和 ANALYZE 操作的功能(Nathan Bossart)§
此选项名为 SKIP_LOCKED。
新功能允许为 VACUUM 和 ANALYZE 的选项指定可选的布尔参数
工具命令
允许为 VACUUM 和 ANALYZE 的选项指定可选的布尔参数(Masahiko Sawada)§
新功能防止TRUNCATE、VACUUM 和 ANALYZE 对用户没有权限的表请求锁
新功能为EXPLAIN添加 SETTINGS 选项,以输出非默认的优化器设置
工具命令
为EXPLAIN添加 SETTINGS 选项,以输出非默认的优化器设置(Tomas Vondra)§
使用auto_explain时,也可通过设置 auto_explain.log_settings 获取这些输出。
新功能为CREATE AGGREGATE添加 OR REPLACE 选项
工具命令
为CREATE AGGREGATE添加 OR REPLACE 选项(Andrew Gierth)§
新功能允许使用ALTER TABLE修改系统目录的选项
工具命令
允许使用ALTER TABLE修改系统目录的选项(Peter Eisentraut)§
现在支持修改目录的 reloptions 和自动清理设置。(仍然需要设置allow_system_table_mods。)
新功能为外键选择默认约束名时,使用所有键列的名称
工具命令
为外键选择默认约束名时,使用所有键列的名称(Peter Eisentraut)§
以前,约束名中只包含第一个列名,导致多列外键存在歧义。
新功能更新各项 Unicode 相关信息,使其与 Unicode 12.1.0 一致
新功能更新 Snowball 词干提取词典,支持新的语言
新功能允许创建将按位不同的字符串判定为相等的排序规则
新功能添加对旧版 ICU 中 ICU 排序规则属性的支持
数据类型
添加对旧版 ICU 中 ICU 排序规则属性的支持(Peter Eisentraut)§
这使所有 ICU 版本都能以一致的方式自定义排序规则。
新功能允许 name 数据类型与其他文本类型更顺畅地比较
新功能添加对 SQL/JSON 路径语言的支持
新功能采用更精确的算法,提高 variance() 等统计聚合的精度
函数
采用更精确的算法,提高 variance() 等统计聚合的精度(Dean Rasheed)§
新功能允许 date_trunc() 接受额外参数来控制时区
函数
允许 date_trunc() 接受额外参数来控制时区(Vik Fearing,Tom Lane)§
这比使用 AT TIME ZONE 子句更快、更简单。
新功能调整 to_timestamp()/to_date() 函数,使其对模板不匹配更加宽容
函数
调整 to_timestamp()/to_date() 函数,使其对模板不匹配更加宽容(Artur Zakirov,Alexander Korotkov,Liudmila Mantrova)§
这种新行为更接近 Oracle 的同名函数。
问题修复修复 XML 函数中的各类缺陷
新功能允许在 XMLEXISTS 和 XMLTABLE 中使用 BY VALUE 子句
函数
允许在 XMLEXISTS 和 XMLTABLE 中使用 BY VALUE 子句(Chapman Flack)§
这个 SQL 标准子句在 PostgreSQL 的实现中没有作用,但以前被不必要地拒绝。
新功能防止并行工作进程运行 current_schema() 和 current_schemas(),因为它们并非并行安全
函数
防止并行工作进程运行 current_schema() 和 current_schemas(),因为它们并非并行安全(Michaël Paquier)§
新功能对于声明返回 RECORD 的表函数,允许在查询的列定义列表中使用 RECORD 和 RECORD[] 作为列类型
新功能允许在同一 PL/pgSQL 函数中使用 SQL 命令及与这些命令同名的变量
PL/pgSQL
允许在同一 PL/pgSQL 函数中使用 SQL 命令及与这些命令同名的变量(Tom Lane)§
例如,允许在调用 COMMENT SQL 命令的函数中存在名为 comment 的变量。以前,这种组合会导致解析错误。
新功能为 PL/pgSQL 添加新的可选警告和错误检查
PL/pgSQL
为 PL/pgSQL 添加新的可选警告和错误检查(Pavel Stehule)§
这些新检查允许在运行时验证 INTO 的列数以及结果是否为单行。
新功能添加连接参数tcp_user_timeout,以控制 libpq 的 TCP 超时
客户端接口
添加连接参数tcp_user_timeout,以控制 libpq 的 TCP 超时(Ryohei Nagaura)§
新功能允许 libpq(以及 psql)在错误消息中仅报告 SQLSTATE 值
客户端接口
允许 libpq(以及 psql)在错误消息中仅报告 SQLSTATE 值(Didier Gautheron)§
新功能添加 libpq 函数 PQresultMemorySize(),以报告查询结果使用的内存
客户端接口
添加 libpq 函数 PQresultMemorySize(),以报告查询结果使用的内存(Lars Kanis,Tom Lane)§
新功能移除 libpq 的 options 连接参数上的不显示/调试标志
客户端接口
移除 libpq 的 options 连接参数上的不显示/调试标志(Peter Eisentraut)§
这允许 postgres_fdw 设置该参数。
新功能允许ecpg创建 bytea 数据类型的变量
新功能为 ECPG 添加 PREPARE AS 支持
客户端接口
为 ECPG 添加 PREPARE AS 支持(Ryo Matsumura)§
新功能允许vacuumdb根据表的回卷视界选择需要清理的表
新功能允许 vacuumdb 禁用锁等待或禁用对全可见页面的跳过
客户端应用程序
允许 vacuumdb 禁用锁等待或禁用对全可见页面的跳过(Nathan Bossart)§
相应选项为 --skip-locked 和 --disable-page-skipping。
新功能为命令行工具的输出添加着色
客户端应用程序
为命令行工具的输出添加着色(Peter Eisentraut)§
将环境变量 PG_COLOR 设置为 always 或 auto 即可启用此功能。可以设置环境变量 PG_COLORS,使用 ANSI 颜色转义码调整具体颜色。例如,默认行为等同于 PG_COLORS="error=01;31:warning=01;35:locus=01"。
新功能在 psql 中添加 CSV 表格输出模式
客户端应用程序 / psql
在 psql 中添加 CSV 表格输出模式(Daniel Vérité)§
这通过 \pset format csv 或命令行选项 --csv 控制。
新功能在 psql 针对 SQL 命令的 \help 输出中显示手册页面的 URL
客户端应用程序 / psql
在 psql 针对 SQL 命令的 \help 输出中显示手册页面的 URL(Peter Eisentraut)§
新功能改进 CREATE TABLE、CREATE TRIGGER、CREATE EVENT TRIGGER、ANALYZE、EXPLAIN、VACUUM、ALTER TABLE、ALTER INDEX、ALTER DATABASE 和 ALTER INDEX ALTER COLUMN 的 Tab 补全
新功能允许将查询产生的值赋给 pgbench 变量
新功能提高 pgbench 的 --rate 选项的精度
客户端应用程序 / pgbench
提高 pgbench 的 --rate 选项的精度(Tom Lane)§
新功能以更清楚的消息和返回码改进 pgbench 的错误报告
客户端应用程序 / pgbench
以更清楚的消息和返回码改进 pgbench 的错误报告(Peter Eisentraut)§
新功能允许通过pg_ctl控制日志文件轮转
新功能在 pg_ctl start 期间正确分离新服务器进程
服务器应用程序
在 pg_ctl start 期间正确分离新服务器进程(Paul Guo)§
这可防止调用 pg_ctl 的 shell 脚本后来被中断时,服务器随之关闭。
新功能如果文件系统具有克隆功能,则允许pg_upgrade使用它
服务器应用程序
如果文件系统具有克隆功能,则允许pg_upgrade使用它(Peter Eisentraut)§
--clone 选项具有 --link 的优点,同时可以防止新集群启动后旧集群被改动。
新功能允许指定 pg_upgrade 使用的套接字目录
服务器应用程序
允许指定 pg_upgrade 使用的套接字目录(Daniel Gustafsson)§
这通过 --socketdir 控制,默认为当前目录。
新功能允许pg_checksums禁用 fsync 操作
服务器应用程序
允许pg_checksums禁用 fsync 操作(Michaël Paquier)§
这通过 --no-sync 选项控制。
问题修复修复pg_test_fsync,使其在 Windows 上报告准确的 open_datasync 耗时
服务器应用程序
修复pg_test_fsync,使其在 Windows 上报告准确的 open_datasync 耗时(Laurenz Albe)§ §
新功能当 pg_dump 通过 INSERT 命令而非 COPY 输出数据时,允许每条 INSERT 包含多行数据
新功能允许 pg_dump 输出 INSERT ... ON CONFLICT DO NOTHING
服务器应用程序 / pg_dump, pg_dumpall, pg_restore
允许 pg_dump 输出 INSERT ... ON CONFLICT DO NOTHING(Surafel Temesgen)§
这可避免恢复期间因冲突而失败。相应选项为 --on-conflict-do-nothing。
新功能将并行 pg_dump 的操作顺序与后续并行 pg_restore 使用的顺序解耦
服务器应用程序 / pg_dump, pg_dumpall, pg_restore
将并行 pg_dump 的操作顺序与后续并行 pg_restore 使用的顺序解耦(Tom Lane)§
这使 pg_restore 能够以更充分的并行度执行恢复,尤其是在原始转储未并行执行的情况下。并行 pg_dump 的调度也有所改进。
新功能允许为 pg_dump 和 pg_dumpall 指定extra_float_digits设置
服务器应用程序 / pg_dump, pg_dumpall, pg_restore
允许为 pg_dump 和 pg_dumpall 指定extra_float_digits设置(Andrew Dunstan)§
这主要用于生成能够在不同源服务器版本之间精确比较的转储。不建议在常规使用中这样做,因为恢复转储时可能丢失精度。
新功能为 pg_dumpall 添加 --exclude-database 选项
服务器应用程序 / pg_dump, pg_dumpall, pg_restore
为 pg_dumpall 添加 --exclude-database 选项(Andrew Dunstan)§
新功能添加CREATE ACCESS METHOD命令,用于创建新的表类型
新功能添加规划器支持函数接口,以改进优化器对函数的估算、内联和索引使用
新功能简化手动分配的 OID 的重新编号,并为此类 OID 的管理制定新的项目政策
源代码
简化手动分配的 OID 的重新编号,并为此类 OID 的管理制定新的项目政策(John Naylor,Tom Lane)§ §
为新的内置对象(如新函数)手动分配 OID 的补丁,现在应在 8000—9999 范围内随机选择 OID。在开发周期结束时,已提交补丁使用的 OID 将通过新的 renumber_oids.pl 脚本重新编号为较小的数字,目前大约位于 4xxx 范围内。这种做法应能大幅降低不同开发中补丁之间发生 OID 冲突的概率。
虽然没有专门为外部使用预留 OID 的政策,但建议分支项目及其他需要私有手动分配 OID 的项目,使用 7xxx 范围高端的编号。这将避免与最近合入的补丁冲突,而且核心项目应该要很久才会用到该范围。
新功能使用动态库而非静态库构建 Cygwin 二进制文件
源代码
使用动态库而非静态库构建 Cygwin 二进制文件(Marco Atzeri)§
新功能移除 configure 开关 --disable-strong-random
源代码
移除 configure 开关 --disable-strong-random(Michaël Paquier)§
现在必须有强随机数源。
新功能在 Postgres 代码中,printf 系列函数以及 strerror 和 strerror_r 现在在各平台上行为一致
新功能要求符合 C99 的编译器,并在 Windows 上要求 MSVC 2013 或更高版本
源代码
要求符合 C99 的编译器,并在 Windows 上要求 MSVC 2013 或更高版本(Andres Freund)§
新功能使用 pandoc 代替 lynx 生成纯文本文档输出文件
新功能支持在 PostgreSQL 文档中使用图像
源代码
支持在 PostgreSQL 文档中使用图像(Jürgen Purtz)§
新功能允许在更多情况下将 ORDER BY 排序和 LIMIT 子句下推到postgres_fdw外部服务器
附加模块
允许在更多情况下将 ORDER BY 排序和 LIMIT 子句下推到postgres_fdw外部服务器(Etsuro Fujita)§ §
新功能正确遵循引用 postgres_fdw 表的视图上的 WITH CHECK OPTION
附加模块
正确遵循引用 postgres_fdw 表的视图上的 WITH CHECK OPTION(Etsuro Fujita)§
虽然 postgres_fdw 表上的 CHECK OPTION 会被忽略(因为引用的是外部表),但此类表上的视图被视为本地视图,因此此更改会对它们实施 CHECK OPTION。以前,只有带有 RETURNING 子句且返回了 CHECK OPTION 值的 INSERT 和 UPDATE 才会得到验证。
新功能允许 pg_stat_statements_reset() 提供更细的控制粒度
附加模块
允许 pg_stat_statements_reset() 提供更细的控制粒度(Haribabu Kommi,Amit Kapila)§
此函数现在允许重置特定数据库、用户和查询的统计信息。
新功能允许控制auto_explain的日志级别
附加模块
允许控制auto_explain的日志级别(Tom Dunstan,Andrew Dunstan)§
默认值为 LOG。
新功能允许 unaccent 处理某些以组合字符编码的重音
附加模块
允许 unaccent 处理某些以组合字符编码的重音(Hugh Ranalli)§
新功能允许 unaccent 移除希腊字符的重音
附加模块
允许 unaccent 移除希腊字符的重音(Tasos Maschalidis)§
新功能为amcheck的 bt_index_parent_check() 函数添加参数,以从树根开始检查每个索引元组
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.