↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 12.0 的版本变更

本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

本次发布的全部变更

12.0

2019-10-03

导出 JSON
180项变更功能、修复与改进
1次版本发布按发行版本归档
0个 CVE本版说明中提及的漏洞编号

12.0 历史版本维护截止 2024-11-21

PostgreSQL 12.0

升级与兼容性说明

对于希望从任何先前版本迁移数据的用户,需要使用pg_dumpall进行导出/恢复,或使用pg_upgrade或逻辑复制。有关迁移到新主版本的一般信息,请参见第 18.6 节。

版本 12 包含许多可能影响与先前版本兼容性的变更。请注意以下不兼容性:

兼容性变化移除 oid 列的特殊行为

兼容性

移除 oid 列的特殊行为(Andres Freund,John Naylor)§

以前,可以在建表时使用 WITH OIDS 指定一个通常不可见的 oid 列;此功能已被移除。仍可将列显式声明为 oid 类型。对于包含使用 WITH OIDS 创建的列的表,其相关操作需要作出调整。

以前带有隐藏 oid 列的系统目录,现在改为具有普通的 oid 列。因此,SELECT * 现在会输出这些列,而以前只有显式选择时才会显示它们。

兼容性变化移除数据类型 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。

兼容性变化重构几何函数和操作符的代码

兼容性

重构几何函数和操作符的代码(Emre Hasegeli)§ § §

这可能产生比以前版本更精确但略有不同的结果。特别是,涉及 NaN、下溢、溢出和除以零的情况现在得到比以前更一致的处理。

兼容性变化采用新算法输出 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() 现在在各平台上行为一致

兼容性

random() 和 setseed() 现在在各平台上行为一致(Tom Lane)§ §

使用特定种子值调用 setseed() 后生成的 random() 值序列,现在可能与以前不同。不过,该序列也将是可重复的;以前由于服务器内部其他随机数用途的干扰,无法保证这一点。SQL random() 函数现在具有每个会话独立的私有状态,以防止这种干扰。

兼容性变化更改 SQL 风格的 substring(),使其具有符合标准的贪婪匹配行为

兼容性

更改 SQL 风格的 substring(),使其具有符合标准的贪婪匹配行为(Tom Lane)§

当模式可以以多种方式匹配时,起始子模式现在会匹配尽可能少的文本,而非尽可能多的文本。例如,%#"aa*#"% 这样的模式现在会从输入中选择第一组 a,而非最后一组。

兼容性变化不再对 xpath() 或 XMLTABLE 结构的结果进行美化输出

兼容性

不再对 xpath() 或 XMLTABLE 结构的结果进行美化输出(Tom Lane)§

在某些情况下,这些函数会在节点集值中插入额外的空白(换行和/或空格)。这并不合适,因为根据具体用途,这些空白可能具有语义意义。

兼容性变化将命令行工具 pg_verify_checksums 重命名为pg_checksums

兼容性

将命令行工具 pg_verify_checksums 重命名为pg_checksums(Michaël Paquier)§

兼容性变化在pg_restore中,要求指定 -f - 才能将转储内容发送到标准输出

兼容性

在pg_restore中,要求指定 -f - 才能将转储内容发送到标准输出(Euler Taveira)§

以前,如果未指定目标位置,默认会这样做,但这种行为被认为不够友好。

兼容性变化在 psql 的 \pset format 命令中禁止不唯一的缩写

兼容性

在 psql 的 \pset format 命令中禁止不唯一的缩写(Daniel Vérité)§ §

例如,以前 \pset format a 会选择 aligned;现在它会失败,因为这也可能表示 asciidoc。

兼容性变化在新建的 B-树索引中,将索引条目的最大长度减少八字节,以改进对重复条目的处理

兼容性

在新建的 B-树索引中,将索引条目的最大长度减少八字节,以改进对重复条目的处理(Peter Geoghegan)§

这意味着,对通过 pg_upgrade 从以前版本升级而来的索引执行REINDEX操作时,可能会失败。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

兼容性变化如果没有提供参数列表且存在多个匹配对象,则使 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 忽略这些值,或失败并给出不正确的错误消息。

性能改进提高分区表上许多操作的性能

服务器 / 分区

提高分区表上许多操作的性能(Amit Langote,David Rowley,Tom Lane,Álvaro Herrera)§ § § § §

对于拥有数千个子分区的表,只影响少量分区的操作现在能够高效处理。

新功能允许外键引用分区表

服务器 / 分区

允许外键引用分区表(Álvaro Herrera)§

新功能提高向分区表执行 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 对分区表的显示

服务器 / 分区

改进 psql 的 \d 和 \z 对分区表的显示(Pavel Stehule,Michaël Paquier,Álvaro Herrera)§ § §

BUG 修复修复可能导致 ALTER TABLE DETACH PARTITION 留下不正确依赖状态的缺陷;这可能使后续操作行为异常,例如在删除表时未删除曾属于分区的子索引

服务器 / 分区

修复可能导致 ALTER TABLE DETACH PARTITION 留下不正确依赖状态的缺陷;这可能使后续操作行为异常,例如在删除表时未删除曾属于分区的子索引(Tom Lane)§

性能改进提高具有大量重复值的 B-树索引的性能和空间利用率

服务器 / 索引

提高具有大量重复值的 B-树索引的性能和空间利用率(Peter Geoghegan,Heikki Linnakangas)§ § §

以前,重复索引条目在其重复值组内无序存储。这会增加索引插入的开销,因过多的页面分裂浪费空间,并降低 VACUUM 回收整个页面的能力。现在,重复索引条目按堆存储顺序排序。

通过 pg_upgrade 从以前版本升级而来的索引无法获得这些好处。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许多列 B-树索引占用更少空间

服务器 / 索引

允许多列 B-树索引占用更少空间(Peter Geoghegan,Heikki Linnakangas)

内部页面和叶子页面的最小/最大值指示项现在只存储到发生差异的键为止的索引键,而非全部索引键。这也提高了索引访问的局部性。

通过 pg_upgrade 从以前版本升级而来的索引无法获得这些好处。

新功能通过减少锁定开销提高 B-树索引插入速度

服务器 / 索引

通过减少锁定开销提高 B-树索引插入速度(Alexander Korotkov)§

新功能在 GiST 索引中支持 INCLUDE 列

服务器 / 索引

在 GiST 索引中支持 INCLUDE 列(Andrey Borodin)§

新功能添加对 SP-GiST 索引的最近邻(KNN)搜索的支持

服务器 / 索引

添加对 SP-GiST 索引的最近邻(KNN)搜索的支持(Nikita Glukhov,Alexander Korotkov,Vlad Sterzhanov)§

性能改进减少创建 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)内联到外层查询中

服务器 / 优化器

允许将公共表表达式(CTEs)内联到外层查询中(Andreas Karlsson,Andrew Gierth,David Fetter,Tom Lane)§ §

具体而言,如果 CTE 没有副作用、不是递归的,且在查询中只被引用一次,就会被自动内联。可以指定 MATERIALIZED 来阻止内联,也可以指定 NOT MATERIALIZED,强制内联被多次引用的 CTE。以前,CTE 从不被内联,总是在查询其余部分之前求值。

新功能允许控制何时为预备语句使用通用计划

服务器 / 优化器

允许控制何时为预备语句使用通用计划(Pavel Stehule)§

这由服务器参数plan_cache_mode控制。

新功能改进只有一个子项的分区查询和 UNION ALL 查询的优化

服务器 / 优化器

改进只有一个子项的分区查询和 UNION ALL 查询的优化(David Rowley)§

新功能改进对没有检查约束的域的处理

服务器 / 优化器

改进对没有检查约束的域的处理(Tom Lane)§

仅用作类型别名的域不再给优化带来困难。

新功能当参数为常量时,预先计算 LEAST 和 GREATEST 调用

服务器 / 优化器

当参数为常量时,预先计算 LEAST 和 GREATEST 调用(Vik Fearing)§

新功能提高优化器验证带有 IS NOT NULL 条件的部分索引可用于查询的能力

服务器 / 优化器

提高优化器验证带有 IS NOT NULL 条件的部分索引可用于查询的能力(Tom Lane,James Coleman)§ §

当调用查询包含类型转换或大型 x IN (array) 子句时,现在可以在更多情况下识别索引的可用性。

新功能使用为每列定义的排序规则计算 ANALYZE 统计信息

服务器 / 优化器

使用为每列定义的排序规则计算 ANALYZE 统计信息(Tom Lane)§

以前,所有统计信息都使用数据库的默认排序规则。对于使用非默认排序规则的列,这可能改善优化器行为。

新功能改进对 ctid 列进行不等式比较时的选择率估算

服务器 / 优化器

改进对 ctid 列进行不等式比较时的选择率估算(Edmund Horner)§

新功能改进对 tid 类型列进行连接时的优化

服务器 / 优化器

改进对 tid 类型列进行连接时的优化(Tom Lane)§ §

这些更改主要提高了对 ctid 列进行自连接的效率。

BUG 修复修复某些 B-树比较操作符和支持函数的防泄漏属性标记

服务器 / 优化器

修复某些 B-树比较操作符和支持函数的防泄漏属性标记(Tom Lane)§ §

这使一些以前在存在安全屏障视图或行级安全时无法应用的优化得以应用。

性能改进如果服务器构建时包含相应支持,则默认启用即时(JIT)编译

服务器 / 一般性能

如果服务器构建时包含相应支持,则默认启用即时(JIT)编译(Andres Freund)§

请注意,默认构建不包含此支持,必须在配置构建时显式选择。

性能改进加快关键字查找速度

服务器 / 一般性能

加快关键字查找速度(John Naylor,Joerg Sonnenberger,Tom Lane)§ §

性能改进提高 position() 及相关函数中多字节字符的搜索性能

服务器 / 一般性能

提高 position() 及相关函数中多字节字符的搜索性能(Heikki Linnakangas)§

性能改进允许对经过 TOAST 处理的值仅解压所需的最小部分

服务器 / 一般性能

允许对经过 TOAST 处理的值仅解压所需的最小部分(Paul Ramsey)§

这对只需检查经过 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

服务器 / 一般性能

使用 pread() 和 pwrite() 执行随机 I/O(Oskari Saarenmaa,Thomas Munro)§ §

这减少了 I/O 所需的系统调用次数。

性能改进提高在 FreeBSD 上设置进程标题的速度

服务器 / 一般性能

提高在 FreeBSD 上设置进程标题的速度(Thomas Munro)§

新功能允许仅记录一定比例事务中的语句

服务器 / 监控

允许仅记录一定比例事务中的语句(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)§

新功能为 WAL 段的 fsync 添加等待事件

服务器 / 监控

为 WAL 段的 fsync 添加等待事件(Konstantin Knizhnik)§

新功能添加 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 服务器

服务器 / Authentication

允许使用 DNS SRV 记录发现 LDAP 服务器(Thomas Munro)§

这使指定 ldapserver 不再是必需的。仅当 PostgreSQL 使用 OpenLDAP 编译时才支持此功能。

新功能添加使用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)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许时间类服务器参数使用微秒(us)单位

服务器 / 服务器配置

允许时间类服务器参数使用微秒(us)单位(Tom Lane)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许整数服务器参数接受小数输入

服务器 / 服务器配置

允许整数服务器参数接受小数输入(Tom Lane)§

例如,虽然 work_mem 是整数参数,现在也允许执行 SET work_mem = '30.1GB'。完成所有必要的单位转换后,该值会被舍入为整数。

新功能允许为浮点服务器参数定义单位

服务器 / 服务器配置

允许为浮点服务器参数定义单位(Tom Lane)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能添加服务器参数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)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许控制最低和最高 SSL 协议版本

服务器 / 服务器配置

允许控制最低和最高 SSL 协议版本(Peter Eisentraut)§

相应服务器参数为ssl_min_protocol_version和ssl_max_protocol_version。

新功能添加服务器参数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)§

新功能如果两阶段事务状态文件损坏,则使恢复失败

流复制和恢复

如果两阶段事务状态文件损坏,则使恢复失败(Michaël Paquier)§

以前,会记录一条警告并继续恢复,可能导致该事务丢失。

新功能为REINDEX添加 CONCURRENTLY 选项,以允许在不阻塞写入的情况下重建索引

工具命令

为REINDEX添加 CONCURRENTLY 选项,以允许在不阻塞写入的情况下重建索引(Michaël Paquier,Andreas Karlsson,Peter Eisentraut)§

这也可以通过reindexdb应用的 --concurrently 选项控制。

新功能添加对生成列的支持

工具命令

添加对生成列的支持(Peter Eisentraut)§

生成列的内容由表达式计算得出(可以引用同一表中的其他列),而非由 INSERT 或 UPDATE 命令指定。

新功能为 COPY FROM 添加 WHERE 子句,以控制接受哪些行

工具命令

为 COPY FROM 添加 WHERE 子句,以控制接受哪些行(Surafel Temesgen)§

这提供了过滤传入数据的简单方法。

新功能允许更灵活地添加枚举值

工具命令

允许更灵活地添加枚举值(Andrew Dunstan,Tom Lane,Thomas Munro)§

以前,不能在事务块中调用 ALTER TYPE ... ADD VALUE,除非它与创建该枚举类型的操作处于同一事务。现在可以在后续事务中调用,只要在提交之后才引用新的枚举值即可。

新功能添加结束当前事务并开始新事务的命令

工具命令

添加结束当前事务并开始新事务的命令(Peter Eisentraut)§

这些命令为 COMMIT AND CHAIN 和 ROLLBACK AND CHAIN。

新功能为VACUUM和 CREATE TABLE 添加选项,以阻止 VACUUM 截断尾部空页面

工具命令

为VACUUM和 CREATE TABLE 添加选项,以阻止 VACUUM 截断尾部空页面(Takayuki Tsunakawa)§ §

这些选项是 vacuum_truncate 和 toast.vacuum_truncate。使用这些选项可降低 VACUUM 的锁定要求,但会使其无法将磁盘空间归还给操作系统。

新功能允许 VACUUM 跳过索引清理

工具命令

允许 VACUUM 跳过索引清理(Masahiko Sawada)§ §

此更改添加了 VACUUM 命令选项 INDEX_CLEANUP,以及表存储选项 vacuum_index_cleanup。使用此选项会降低空间回收能力,并可能导致索引膨胀,但在主要目标是冻结旧元组时很有帮助。

新功能添加跳过无法立即锁定的表上的 VACUUM 和 ANALYZE 操作的功能

工具命令

添加跳过无法立即锁定的表上的 VACUUM 和 ANALYZE 操作的功能(Nathan Bossart)§

此选项名为 SKIP_LOCKED。

新功能允许为 VACUUM 和 ANALYZE 的选项指定可选的布尔参数

工具命令

允许为 VACUUM 和 ANALYZE 的选项指定可选的布尔参数(Masahiko Sawada)§

新功能防止TRUNCATE、VACUUM 和 ANALYZE 对用户没有权限的表请求锁

工具命令

防止TRUNCATE、VACUUM 和 ANALYZE 对用户没有权限的表请求锁(Michaël Paquier)§ §

这可防止未经授权的锁定干扰用户查询。

新功能为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 一致

数据类型

更新各项 Unicode 相关信息,使其与 Unicode 12.1.0 一致(Peter Eisentraut)§ §

例如,这修复了 psql 对包含组合字符的输出进行错误排版的情况。

新功能更新 Snowball 词干提取词典,支持新的语言

数据类型

更新 Snowball 词干提取词典,支持新的语言(Arthur Zakirov)§

这为全文检索添加了阿拉伯语、印度尼西亚语、爱尔兰语、立陶宛语、尼泊尔语和泰米尔语的词干提取支持。

新功能允许创建将按位不同的字符串判定为相等的排序规则

数据类型

允许创建将按位不同的字符串判定为相等的排序规则(Peter Eisentraut)§

此功能支持“非确定性”排序规则,可以定义不区分大小写和重音的相等比较。因此,例如在文本列上创建不区分大小写的唯一约束,会比以前更容易。只有 ICU 排序规则支持此功能。

新功能添加对旧版 ICU 中 ICU 排序规则属性的支持

数据类型

添加对旧版 ICU 中 ICU 排序规则属性的支持(Peter Eisentraut)§

这使所有 ICU 版本都能以一致的方式自定义排序规则。

新功能允许 name 数据类型与其他文本类型更顺畅地比较

数据类型

允许 name 数据类型与其他文本类型更顺畅地比较(Tom Lane)§

name 类型现在的行为很像基于 text 类型、默认排序规则为 “C” 的域。这使跨类型比较能够得到更高效的处理。

新功能添加对 SQL/JSON 路径语言的支持

函数

添加对 SQL/JSON 路径语言的支持(Nikita Glukhov,Teodor Sigaev,Alexander Korotkov,Oleg Bartunov,Liudmila Mantrova)§ § §

这允许使用符合 SQL 标准的语言对 JSON 值执行复杂查询。

新功能添加对双曲函数的支持

函数

添加对双曲函数的支持(Lætitia Avrot)§

同时为符合标准,添加 log10() 作为 log() 的别名。

新功能采用更精确的算法,提高 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 的同名函数。

BUG 修复修复 XML 函数中的各类缺陷

函数

修复 XML 函数中的各类缺陷(Pavel Stehule,Markus Winand,Chapman Flack)§

具体而言,修复 XMLTABLE、xpath() 和 xmlexists() 中某些节点没有输出、抛出意外错误,或遗漏 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[] 作为列类型

函数

对于声明返回 RECORD 的表函数,允许在查询的列定义列表中使用 RECORD 和 RECORD[] 作为列类型(Elvis Pranskevichus)§

新功能允许在同一 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)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许 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创建 bytea 数据类型的变量(Ryo Matsumura)§

这允许 ECPG 客户端直接处理 bytea 数据,而无需使用编码形式。

新功能为 ECPG 添加 PREPARE AS 支持

客户端接口

为 ECPG 添加 PREPARE AS 支持(Ryo Matsumura)§

新功能允许vacuumdb根据表的回卷视界选择需要清理的表

客户端应用程序

允许vacuumdb根据表的回卷视界选择需要清理的表(Nathan Bossart)§

相应选项为 --min-xid-age 和 --min-mxid-age。

新功能允许 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)§

新功能在 psql 的 \conninfo 中显示 IP 地址

客户端应用程序 / psql

在 psql 的 \conninfo 中显示 IP 地址(Fabien Coelho)§ §

新功能改进 CREATE TABLE、CREATE TRIGGER、CREATE EVENT TRIGGER、ANALYZE、EXPLAIN、VACUUM、ALTER TABLE、ALTER INDEX、ALTER DATABASE 和 ALTER INDEX ALTER COLUMN 的 Tab 补全

客户端应用程序 / psql

改进 CREATE TABLE、CREATE TRIGGER、CREATE EVENT TRIGGER、ANALYZE、EXPLAIN、VACUUM、ALTER TABLE、ALTER INDEX、ALTER DATABASE 和 ALTER INDEX ALTER COLUMN 的 Tab 补全(Dagfinn Ilmari Mannsåker,Tatsuro Yamada,Michaël Paquier,Tom Lane,Justin Pryzby)§ § § § § § § § §

新功能允许将查询产生的值赋给 pgbench 变量

客户端应用程序 / pgbench

允许将查询产生的值赋给 pgbench 变量(Fabien Coelho,Álvaro Herrera)§ §

相应命令为 \gset。

新功能提高 pgbench 的 --rate 选项的精度

客户端应用程序 / pgbench

提高 pgbench 的 --rate 选项的精度(Tom Lane)§

新功能以更清楚的消息和返回码改进 pgbench 的错误报告

客户端应用程序 / pgbench

以更清楚的消息和返回码改进 pgbench 的错误报告(Peter Eisentraut)§

新功能允许通过pg_ctl控制日志文件轮转

服务器应用程序

允许通过pg_ctl控制日志文件轮转(Kyotaro Horiguchi,Alexander Kuzmenkov,Alexander Korotkov)§

以前,只能通过 SQL 函数或进程信号来完成此操作。

新功能在 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_rewind禁用 fsync 操作

服务器应用程序

允许pg_rewind禁用 fsync 操作(Michaël Paquier)§

BUG 修复修复pg_test_fsync,使其在 Windows 上报告准确的 open_datasync 耗时

服务器应用程序

修复pg_test_fsync,使其在 Windows 上报告准确的 open_datasync 耗时(Laurenz Albe)§ §

新功能当 pg_dump 通过 INSERT 命令而非 COPY 输出数据时,允许每条 INSERT 包含多行数据

服务器应用程序 / pg_dump, pg_dumpall, pg_restore

当 pg_dump 通过 INSERT 命令而非 COPY 输出数据时,允许每条 INSERT 包含多行数据(Surafel Temesgen,David Rowley)§ §

控制此行为的选项为 --rows-per-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命令,用于创建新的表类型

源代码

添加CREATE ACCESS METHOD命令,用于创建新的表类型(Andres Freund,Haribabu Kommi,Álvaro Herrera,Alexander Korotkov,Dmitry Dolgov)§ § § § § § § § §

这使开发新的表访问方法成为可能,从而为不同使用场景优化存储。现有的 heap 访问方法仍是默认选项。

新功能添加规划器支持函数接口,以改进优化器对函数的估算、内联和索引使用

源代码

添加规划器支持函数接口,以改进优化器对函数的估算、内联和索引使用(Tom Lane)§ § §

这允许扩展创建规划器支持函数,提供针对特定函数的选择率、代价和行数估算,这些估算可以依赖函数参数。支持函数还可以提供简化的表示和索引条件,大幅扩展优化的可能性。

新功能简化手动分配的 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 现在在各平台上行为一致

源代码

在 Postgres 代码中,printf 系列函数以及 strerror 和 strerror_r 现在在各平台上行为一致(Tom Lane)§ § § §

特别是,printf 在所有平台上都能理解 %m;在 Windows 上,strerror 能够处理 Winsock 错误码(以前仅在后端代码中支持,前端代码不支持);strerror_r 则始终遵循 GNU 的返回约定。

新功能要求符合 C99 的编译器,并在 Windows 上要求 MSVC 2013 或更高版本

源代码

要求符合 C99 的编译器,并在 Windows 上要求 MSVC 2013 或更高版本(Andres Freund)§

新功能使用 pandoc 代替 lynx 生成纯文本文档输出文件

源代码

使用 pandoc 代替 lynx 生成纯文本文档输出文件(Peter Eisentraut)§ §

这仅影响 make dist 期间生成的 INSTALL 文件,以及很少使用的纯文本输出文件 postgres.txt。Pandoc 的输出优于 lynx,并能避免某些区域设置/编码问题。需要 Pandoc 1.13 或更高版本。

新功能支持在 PostgreSQL 文档中使用图像

源代码

支持在 PostgreSQL 文档中使用图像(Jürgen Purtz)§

新功能允许在更多情况下将 ORDER BY 排序和 LIMIT 子句下推到postgres_fdw外部服务器

附加模块

允许在更多情况下将 ORDER BY 排序和 LIMIT 子句下推到postgres_fdw外部服务器(Etsuro Fujita)§ §

新功能改进优化器对 postgres_fdw 查询的代价计算

附加模块

改进优化器对 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,Michaël Paquier)§

新功能允许 unaccent 处理某些以组合字符编码的重音

附加模块

允许 unaccent 处理某些以组合字符编码的重音(Hugh Ranalli)§

新功能允许 unaccent 移除希腊字符的重音

附加模块

允许 unaccent 移除希腊字符的重音(Tasos Maschalidis)§

新功能为amcheck的 bt_index_parent_check() 函数添加参数,以从树根开始检查每个索引元组

附加模块

为amcheck的 bt_index_parent_check() 函数添加参数,以从树根开始检查每个索引元组(Peter Geoghegan)§

新功能改进oid2name和vacuumlo的选项处理,使其与其他命令一致

附加模块

改进oid2name和vacuumlo的选项处理,使其与其他命令一致(Tatsuro Yamada)§ §

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。