pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2020-05-14
12.3 历史版本维护截止 2024-11-21
对于运行 12.X 的用户,不需要执行导出/恢复。
但是,如果是从早于 12.2 的版本升级,请参见第 E.21 节。
变更
修复 GENERATED 列可能发生的失败(David Rowley)§
如果 GENERATED 列的值是表中另一列的精确副本(且其数据类型按引用传递),就可能导致崩溃或向表中插入损坏的数据。虽然让 GENERATED 表达式仅复制另一列并没有多大意义,但如果表达式使用的函数有时原样返回输入,就可能产生这种情况。
变更
更好地处理生成列的继承(Peter Eisentraut)§
在 CREATE TABLE ... INHERITS 期间继承表列时,如果父列已标记为 GENERATED,则禁止更改任何生成属性;但当父列不是生成列时,允许将子列标记为 GENERATED。
变更
修复 CREATE TABLE LIKE INCLUDING GENERATED 中的跨列引用(Peter Eisentraut)§
CREATE TABLE ... LIKE 尝试复制引用物理位置更靠后的列的 GENERATED 表达式时会失败。
变更
将 ALTER TABLE ... SET STORAGE 传播到索引(Peter Eisentraut)§
非表达式索引列在创建时一直会复制对应表列的 attstorage 属性。现在执行 ALTER TABLE ... SET STORAGE 时也更新它们,以保持一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
保留由 ALTER TABLE 重写的索引的 indisclustered 设置(Amit Langote,Justin Pryzby)§
以前,ALTER TABLE 会丢失哪个索引曾用于 CLUSTER 的信息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
保留由 ALTER TABLE 重写的索引的复制标识属性(Quan Zongliang,Peter Eisentraut)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
保留由 REINDEX CONCURRENTLY 重建的索引的 indisclustered 设置(Justin Pryzby)§
变更
在 DROP OWNED BY 期间更早地锁定对象(Álvaro Herrera)§
这可以避免另一个会话同时删除部分相同对象时,因竞争条件而发生的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 CREATE ROLE ... IN ROLE 的错误情况处理(Andrew Gierth)§
某些错误情况会被报告为 “unexpected node type” 等消息,而非预期的消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保分离分区时移除所有从原父表克隆的触发器(Justin Pryzby)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复分区边界表达式中将 COLLATE 应用于不支持排序规则的类型时的崩溃(Dmitry Dolgov)§
变更
确保分区表上的唯一索引与分区键的相等语义一致(Guancheng Luo)§
这只会在索引操作符类采用不寻常的相等定义时成为问题,但理论上仍是错误,因此增加检查。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_read_all_stats 角色的成员可以按预期读取所有统计视图(Magnus Hagander)§
pg_stat_progress_* 视图的底层函数以前没有遵守这一要求。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 information_schema.triggers 视图的性能退化(Tom Lane)§
此补丁重新定义了该视图,使约束表名的外层 WHERE 子句可以下推到视图内部,从而只针对目标表的触发器进行计算,而非数据库中的所有触发器。在具有大量触发器的数据库中,这会显著提高此类查询的速度。由于 v11 之前就是这样工作的,这是一处潜在的性能退化。受此问题影响的用户可以替换视图定义来修复它(或许也可以直接删除并重新安装整个 information_schema 模式)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复浮点上溢和下溢检测的性能退化(Emre Hasegeli)§
以前的重构导致某些热点代码路径额外调用了 isinf()。
变更
修复全文检索,使其正确处理短语搜索之上的 NOT(Tom Lane)§
!(foo<->bar) 等查询在通过 GiST 或 GIN 索引搜索执行时,无法找到匹配行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复短语搜索包含同时具有前缀匹配和权重限制的项时的全文检索(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 gin_fuzzy_search_limit 处理中的缺陷(Adé Heyward,Tom Lane)§
较小的 gin_fuzzy_search_limit 值可能导致同一个索引页被意外重复扫描多次,从而运行异常缓慢。另一个代码路径则完全没有应用预期的过滤,可能返回过多的值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 circle 类型的输入按文档所述接受 “(” 格式(David Zhang)§x,y),r
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 get_bit() 和 set_bit() 函数能够处理长于 256MB 的 bytea 字符串(Movead Li)§
由于位编号参数只有 int4,无法使用这些函数访问长 bytea 值前 256MB 之外的位。我们将在 v13 中将该参数扩为 int8,但在此之前,先允许这些函数处理长 bytea 值的起始子串。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_ls_waldir() 及相关函数中忽略文件不存在错误(Tom Lane)§
这可以防止文件在看到其目录项与尝试对其执行 stat() 之间被移除时,因竞争条件而发生的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 pg_ls_dir()、pg_timezone_names()、pg_tablespace_databases() 及相关函数可能泄漏目录的打开文件描述符(Justin Pryzby)§ § §
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复多态函数的类型解析,使其仅给定 anyrange 输入时,也能正确推断 anyarray 输出的实际类型(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复服务器的连接启动逻辑,以处理因编译时未包含 GSSAPI 支持而拒绝 GSSAPI 连接、随后客户端改试 SSL 的情况(Andrew Gierth)§
这会导致虚假的 “unsupported frontend protocol” 错误。
变更
修复 GSSAPI 加密期间的内存泄漏(Tom Lane)§
使用 GSSAPI 加密时,后端和 libpq 都会泄漏与会话期间发送的数据总量相当的内存。
变更
修复查询 FROM 子句中使用集合返回函数时,持续到查询结束的内存泄漏(Andres Freund)§
变更
避免 hash 子计划的 hash 表在多次执行之间泄漏(Andreas Karlsson,Tom Lane)§
如果查询重复执行 hash 子计划的次数足够多,这一错误可能导致严重的内存膨胀。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进规划器对无实际作用的域类型强制转换的处理(Tom Lane)§
修复某些情况下无实际作用的域类型强制转换未被从表达式中完全移除的问题。
变更
避免 REINDEX 被会话关闭信号终止时不太可能发生的崩溃(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 EXPLAIN 输出可能不正确的哈希连接表统计信息(Konstantin Knizhnik,Tom Lane,Thomas Munro)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 VACUUM VERBOSE 对堆截断步骤耗时的报告(Tatsuhito Kasahara)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 VACUUM VERBOSE 输出中可能低估已删除 B-树索引页数量的问题(Peter Geoghegan)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在所有读写时间线历史文件的代码路径中报告 TimelineHistoryRead 和 TimelineHistoryWrite 等待状态(Masahiro Ikeda)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在进程的 PS 状态中可能两次显示 “waiting”(Masahiko Sawada)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 ANALYZE 替换扩展统计数据的目录元组时出现竞争条件(Dean Rasheed)§
变更
移除考虑不周的跳过“冗余”防回卷清理的行为(Michael Paquier)§
这可以避免一种边界情况:自动清理反复尝试、随后又跳过同一个清理任务,陷入循环。
变更
确保始终从 B-树枢轴元组中移除 INCLUDE 列(Peter Geoghegan)§
这一错误会在某些罕见情况下浪费空间,除此之外没有危害。
变更
处理 REINDEX CONCURRENTLY 失败后可能留下的无效 TOAST 索引(Julien Rouhaud)§
变更
确保 REINDEX CONCURRENTLY 失败后保留有效的索引依赖关系(Michael Paquier)§
以前,旧索引可能完全没有 pg_depend 链接,因此例如删除父表时,该索引不会被删除。
变更
避免自动清理尝试访问刚删除的临时模式时发生失败(Tom Lane)§
只有超级用户手动删除临时模式时才会出现这一隐患;这虽然不是常规做法,但也应该能够正常工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免归档恢复期间扫描无关的时间线(Kyotaro Horiguchi)§
这可以消除许多从归档存储中获取不存在的 WAL 文件的尝试,在归档访问缓慢时很有帮助。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除逻辑解码中不正确的 “subtransaction logged without previous top-level txn record” 错误检查(Arseny Sher,Amit Kapila)§
在多种场景中都可以正常出现这种情况,因此移除该检查。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免复制槽复制后因 WAL 数据过早移除而可能发生的失败(Masahiko Sawada,Arseny Sher)§
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保正确处理逻辑复制发出的更新中的生成列(Peter Eisentraut)§
变更
修复同步备库管理中的竞争条件(Tom Lane)§
更改 synchronous_standby_names 设置期间,存在一个时间窗口,可能错误判断是否可以放行正在等待同步提交的事务。如果一个 WAL 发送进程进程退出后立即被另一个替代,也存在作出类似错误判断的隐患。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为几个错误报告补上缺失的 SQLSTATE 值(Sawada Masahiko)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/pgSQL,使其可靠地拒绝将事件触发器函数作为普通函数执行(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 libpq 使用 sslmode=verify-full 时的内存泄漏(Roman Peshkurov)§
连接启动期间的证书验证可能泄漏一些内存。如果客户端进程在其生命周期内打开大量数据库连接,这就会成为问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg,使其在所有平台上都将仅包含 “-” 的参数解释为“从 stdin 读取”(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 尝试重新建立失败连接时的崩溃(Michael Paquier)§
变更
允许对 psql 的 \gx 命令的文件名参数进行 Tab 补全(Vik Fearing)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为 pg_dump 增加对 ALTER ... DEPENDS ON EXTENSION 的支持(Álvaro Herrera)§ § §
pg_dump 以前忽略了以这种方式添加的依赖关系,导致它们在转储/恢复或 pg_upgrade 期间丢失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump,使其转储 RLS 策略对象上的注释(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 中,将事件触发器的恢复推迟到最后(Fabrízio de Royes Mello,Hamid Akhtar,Tom Lane)§ §
这尽可能降低了事件触发器干扰其他对象恢复的风险。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_basebackup 生成有效的 tar 文件(Robert Haas)§
某些情况下,文件末尾会被添加一个不足整块的零值块。虽然对于常见版本的 tar 而言这似乎无害,但它不符合 POSIX 文件格式规范。
变更
使 pg_checksums 跳过属于其他 PostgreSQL 大版本的表空间子目录(Michael Banck,Bernd Helmle)§
这些子目录实际上不属于我们的数据库集簇,因此不得处理它们。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_checksums 及相关程序中忽略 pg_internal.init 的临时副本(Michael Paquier)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
直接调用 contrib/lo 的 lo_manage() 函数,而非作为触发器调用时,会发生崩溃(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/ltree 中,防止 ltree 和 lquery 长度字段溢出(Nikita Glukhov)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
规避 oldest_xact 值超过 2^31-1 时 contrib/pageinspect 的 bt_metap() 函数发生的失败(Peter Geoghegan)§
此类 XID 现在会被报告为负整数,这虽然不理想,但总比抛出错误好。v13 将把输出参数扩为 int8,以提供更合理的报告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/sepgsql 中的缓存引用泄漏(Michael Luo)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,避免 pg_ctl start 期间过早创建 postmaster 的日志文件(Alexander Lakhin)§
以前的代码可能以不允许 postmaster 写入的权限创建该文件。
变更
避免在 Windows 上处理 Unix 风格区域设置名称时发生失败(Juan José Santamaría Flecha)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,为支持 PG_COLOR 彩色显示的程序设置控制台 VT100 兼容模式(Juan José Santamaría Flecha)§
否则,彩色显示选项实际上不会生效。
变更
不再要求在 ereport() 调用中使用额外的括号(Andres Freund,Tom Lane)§
变更
在 configure 期间,如果 pkg-config 可用,则使用它定位 libxml2(Hugh McMaster,Tom Lane,Peter Eisentraut)§
如果 pkg-config 不存在,或不包含 libxml2 的信息,我们仍像以前一样查询 xml2-config。
某些构建过程通过将非默认版本的 xml2-config 放入 PATH,来让 PostgreSQL 使用该版本的 libxml2;此项修改可能使这些构建过程失效。应改为设置 XML2_CONFIG,使其指向非默认的 xml2-config。这种方法对较旧和较新的 PostgreSQL 发行版都适用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 libpq 和 ecpg 的 Makefile 依赖关系(Dagfinn Ilmari Mannsåker)§
变更
在 MSVC 构建中,处理 Python 路径名中的空格(Victor Wagner)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,修复 Visual Studio 版本检测,使其适用于更多语言设置(Andrew Dunstan)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,对高于 3.0 的 bison 版本使用 -Wno-deprecated,与非 Windows 构建现有行为一致(Andrew Dunstan)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 2020a 版,以反映摩洛哥和加拿大育空地区的夏令时法规变更,并修正上海的历史数据。(Tom Lane)§ § §
America/Godthab 时区已更名为 America/Nuuk,以反映当前英语用法;不过,旧名称仍作为兼容性链接保留。
另外,更新 initdb 的已知 Windows 时区名称列表,纳入最近新增的名称,提高在该平台上正确转换系统时区设置的可能性。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。