↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 13.1 发布变化

此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。

此版本的完整变化
此版本的完整变化

包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。

完整发布变化

13.1

2020-11-12

导出 JSON ↓
49项变化功能、修复、改进
1个版本按版本分组
3CVE独立漏洞编号

13.1stable支持截止 2025-11-13

安全变化
CVE / 问题严重程度修复版本所选版本状态
CVE-2020-25695

禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器

13.1已记录修复
CVE-2020-25694

修复 pg_dump、pg_restore、clusterdb、reindexdb 和 vacuumdb 对复杂连接字符串参数的使用

13.1已记录修复
CVE-2020-25696

防止 psql 的 \gset 命令修改具有特殊处理方式的变量

13.1已记录修复

PostgreSQL 13.1

迁移与兼容性

对于运行 13.X 的用户,不需要执行导出/恢复。

安全禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器

变更

禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器(Noah Misch)§

这实际上是“安全受限操作”沙箱机制中的一个漏洞。有权创建非临时 SQL 对象的攻击者可以利用此漏洞,以超级用户身份执行任意 SQL 代码。

PostgreSQL 项目感谢 Etienne Stalmans 报告此问题。(CVE-2020-25695)

关联记录 (5)
安全修复 pg_dump、pg_restore、clusterdb、reindexdb 和 vacuumdb 对复杂连接字符串参数的使用

变更

修复 pg_dump、pg_restore、clusterdb、reindexdb 和 vacuumdb 对复杂连接字符串参数的使用(Tom Lane)§ §

pg_dump 和 pg_restore 的 -d 参数,以及其他上述程序的 --maintenance-db 参数,可以是包含多个连接参数的“连接字符串”,而不仅仅是数据库名称。当这些程序需要发起额外连接时,例如进行并行处理或处理多个数据库时,连接字符串会被遗忘,额外连接只会使用基本连接参数(数据库名称、主机、端口和用户名)。如果连接字符串包含其他必要信息,例如非默认的 SSL 或 GSS 参数,这可能导致连接失败。更糟的是,连接可能成功建立,却未按预期加密,或者可能遭受本应由指定连接参数防止的中间人攻击。(CVE-2020-25694)

关联记录 (5)
安全当 psql 的 \connect 命令复用连接参数时,确保复用先前连接字符串中所有未被覆盖的参数

变更

当 psql 的 \connect 命令复用连接参数时,确保复用先前连接字符串中所有未被覆盖的参数(Tom Lane)§

这可以避免因遗漏相关参数(例如非默认的 SSL 或 GSS 选项)而导致重新连接失败。更糟的情况是,重新连接可能成功,却未按预期加密,或者可能遭受本应由指定连接参数防止的中间人攻击。这与刚才提到的 pg_dump 等程序的问题基本相同,只是 psql 的行为更复杂,因为用户可能有意覆盖某些连接参数。(CVE-2020-25694)

关联记录 (5)
安全防止 psql 的 \gset 命令修改具有特殊处理方式的变量

变更

防止 psql 的 \gset 命令修改具有特殊处理方式的变量(Noah Misch)§

不带前缀的 \gset 会覆盖服务器要求其设置的任何变量。因此,被攻陷的服务器可以设置 PROMPT1 等受到特殊处理的变量,从而能够在用户会话中执行任意 shell 代码。

PostgreSQL 项目感谢 Nick Cleaton 报告此问题。(CVE-2020-25696)

关联记录 (5)
问题修复修复对复制协议的意外破坏

变更

修复对复制协议的意外破坏(Álvaro Herrera)§ §

WAL 发送进程会为 START_REPLICATION 报告两个命令完成事件。这没有文档记录,而且显然并非有意为之,因此我们没有注意到 13.0 后期的一项修改移除了重复事件。然而,事实证明,WAL 接收进程在某些代码路径中需要这个额外事件。最实际的修复方式是将该额外事件规定为协议的一部分,并恢复生成它。

改进确保在检查点期间对 SLRU 目录正确执行 fsync

变更

确保在检查点期间对 SLRU 目录正确执行 fsync(Thomas Munro)§

这可以防止后续操作系统崩溃时可能发生的数据丢失。

关联记录 (5)
问题修复修复对具有 BYPASSRLS 属性的用户执行 ALTER ROLE 的行为

变更

修复对具有 BYPASSRLS 属性的用户执行 ALTER ROLE 的行为(Tom Lane,Stephen Frost)§

只有超级用户才可以修改 BYPASSRLS 属性,但其他 ALTER ROLE 操作(例如修改密码)应该只需通过普通权限检查就可以执行。之前的代码错误地将对此类角色的所有修改都限制为只能由超级用户执行。

关联记录 (5)
改进存在子表时,禁止 ALTER TABLE ONLY ... DROP EXPRESSION

变更

存在子表时,禁止 ALTER TABLE ONLY ... DROP EXPRESSION(Peter Eisentraut)§

当前实现无法正确处理这种情况,因此暂时将其禁止。

改进确保 ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGER 不递归处理子表

变更

确保 ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGER 不递归处理子表(Álvaro Herrera)§

以前,ONLY 标志被忽略了。

关联记录 (2)
改进允许对自引用视图成功执行 LOCK TABLE

变更

允许对自引用视图成功执行 LOCK TABLE(Tom Lane)§

以前会抛出关于无限递归的错误,但似乎没有必要禁止这种情况。

关联记录 (2)
改进在 REINDEX CONCURRENTLY 前后保留索引的统计信息

变更

在 REINDEX CONCURRENTLY 前后保留索引的统计信息(Michael Paquier,Fabrízio de Royes Mello)§

非并发的索引重建一直会保留这些统计信息。

关联记录 (1)
问题修复修复 REINDEX CONCURRENTLY 不正确的进度报告

变更

修复 REINDEX CONCURRENTLY 不正确的进度报告(Matthias van de Meent,Michael Paquier)§

关联记录 (1)
改进确保通过规则或可更新视图更新 GENERATED 列所依赖的列时,生成列也得到更新

变更

确保通过规则或可更新视图更新 GENERATED 列所依赖的列时,生成列也得到更新(Tom Lane)§

此修复还处理了在这些情况下可能未能触发特定列触发器的问题。

关联记录 (1)
问题修复修复依赖排序规则的分区边界表达式所导致的失败

变更

修复依赖排序规则的分区边界表达式所导致的失败(Tom Lane)§

关联记录 (1)
改进支持对 text 数组进行 hash 运算

变更

支持对 text 数组进行 hash 运算(Peter Eisentraut)§

如果数组元素类型支持排序规则,对数组进行 hash 计算就会失败。尤其是,这使 text 数组列无法用作 hash 分区的分区键。

关联记录 (1)
问题修复防止跨类型日期时间比较中的内部溢出

变更

防止跨类型日期时间比较中的内部溢出(Nikita Glukhov,Alexander Korotkov,Tom Lane)§

以前,将日期与时间戳比较时,如果日期超出了时间戳的有效范围,就会失败。还有一些边界情况涉及接近限值的时间戳在时区转换期间溢出。

问题修复修复 to_date() 和 to_timestamp() 将负年份转换为公元前日期时相差一年的错误

变更

修复 to_date() 和 to_timestamp() 将负年份转换为公元前日期时相差一年的错误(Dar Alathar-Yemen,Tom Lane)§

另外,使负年份与显式 “BC” 标记相抵消,得到 AD 年份。

关联记录 (5)
改进允许 jsonpath 的 .datetime() 方法接受 ISO 8601 格式的时间戳

变更

允许 jsonpath 的 .datetime() 方法接受 ISO 8601 格式的时间戳(Nikita Glukhov)§ §

SQL 并未要求这样做,但这似乎是合适的,因为我们的 to_json() 函数为了兼容 Javascript,会生成这种时间戳格式。

改进确保 archive_mode 设为 always 时,备库会归档 WAL 时间线历史文件

变更

确保 archive_mode 设为 always 时,备库会归档 WAL 时间线历史文件(Grigory Smolkin,Fujii Masao)§

这一疏漏可能导致后续的 PITR 恢复尝试失败。

关联记录 (5)
问题修复修复在使用 kqueue() 的平台上检测 postmaster 过早终止时的边界情况

变更

修复在使用 kqueue() 的平台上检测 postmaster 过早终止时的边界情况(Thomas Munro)§ §

改进避免排序键为易变表达式时生成不正确的增量排序计划

变更

避免排序键为易变表达式时生成不正确的增量排序计划(James Coleman)§

问题修复修复 GEQO 规划期间考虑逐分区连接时可能发生的崩溃

变更

修复 GEQO 规划期间考虑逐分区连接时可能发生的崩溃(Tom Lane)§

关联记录 (1)
问题修复修复 TOAST 解压缩中可能出现的无限循环或输出数据损坏

变更

修复 TOAST 解压缩中可能出现的无限循环或输出数据损坏(Tom Lane)§ §

问题修复修复仅执行清理的 VACUUM 期间对 B-树索引条目数量的统计

变更

修复仅执行清理的 VACUUM 期间对 B-树索引条目数量的统计(Peter Geoghegan)§

改进确保数据插入 BRIN 索引之前,先将其从 TOAST 表示还原

变更

确保数据插入 BRIN 索引之前,先将其从 TOAST 表示还原(Tomas Vondra)§

索引条目本不应包含指向行外数据的 TOAST 指针,但 BRIN 没有遵守这一要求。这可能导致 “missing chunk number 0 for toast value NNN” 等错误。(如果现有索引出现这种错误,执行 REINDEX 应该就足以修复。)

关联记录 (5)
问题修复修复带缓冲的 GiST 索引构建,使其在索引具有内含列时正常工作

变更

修复带缓冲的 GiST 索引构建,使其在索引具有内含列时正常工作(Pavel Borisov)§

关联记录 (1)
问题修复修复 pg_hba_file_rules 视图中不具可移植性的 getnameinfo() 用法

变更

修复 pg_hba_file_rules 视图中不具可移植性的 getnameinfo() 用法(Tom Lane)§

在 FreeBSD 11 以及可能的其他平台上,此错误会使该视图的 address 和 netmask 列始终为空。

关联记录 (3)
问题修复避免启动并行工作进程时 debug_query_string 为 NULL 所导致的崩溃

变更

避免启动并行工作进程时 debug_query_string 为 NULL 所导致的崩溃(Noah Misch)§

关联记录 (2)
改进避免 BEFORE ROW UPDATE 触发器返回具有已删除列或“缺失”列的表中的“旧”行时发生失败

变更

避免 BEFORE ROW UPDATE 触发器返回具有已删除列或“缺失”列的表中的“旧”行时发生失败(Amit Langote,Tom Lane)§ §

这种阻止更新的方法可能导致崩溃、意外的 CHECK 约束失败或不正确的 RETURNING 输出,因为在这些操作中,“缺失”列会被读取为 NULL。(这里所说的“缺失”列,是指通过 ALTER TABLE ADD COLUMN 添加、具有非 NULL 常量默认值的列。)已删除的列也可能造成问题。

关联记录 (1)
问题修复修复 EXPLAIN 对增量排序计划的输出,使其在 XML 输出模式下具有正确的标签嵌套

变更

修复 EXPLAIN 对增量排序计划的输出,使其在 XML 输出模式下具有正确的标签嵌套(Daniel Gustafsson)§

改进避免通过共享内存队列传输很大的数据载荷时发生不必要的失败

变更

避免通过共享内存队列传输很大的数据载荷时发生不必要的失败(Markus Wanner)§

关联记录 (5)
问题修复修复 SQL 语言函数在某些情况下遗漏结果数据类型强制转换的问题

变更

修复 SQL 语言函数在某些情况下遗漏结果数据类型强制转换的问题(Tom Lane)§

根据所涉及的数据类型,这可能导致错误结果或崩溃。

问题修复修复 JIT 代码生成中对模板函数属性的不正确处理

变更

修复 JIT 代码生成中对模板函数属性的不正确处理(Andres Freund)§ §

已证实这会在 s390x 上导致崩溃,而且其他平台上很可能也存在其他情况。

关联记录 (2)
改进改进 PPC 上为 compare_exchange 和 fetch_add 操作生成的代码

变更

改进 PPC 上为 compare_exchange 和 fetch_add 操作生成的代码(Noah Misch)§ §

问题修复修复 RLS 策略相关的关系缓存内存泄漏

变更

修复 RLS 策略相关的关系缓存内存泄漏(Tom Lane)§

关联记录 (5)
问题修复修复 index_get_partition() 在边界情况下的内存泄漏

变更

修复 index_get_partition() 在边界情况下的内存泄漏(Justin Pryzby)§

关联记录 (1)
问题修复修复 SIGHUP 处理判定某个 GUC 变量的新值必须重启才能应用时出现的小量内存泄漏

变更

修复 SIGHUP 处理判定某个 GUC 变量的新值必须重启才能应用时出现的小量内存泄漏(Tom Lane)§

关联记录 (5)
问题修复修复 PL/pgsql 的 CALL 处理中的内存泄漏

变更

修复 PL/pgsql 的 CALL 处理中的内存泄漏(Pavel Stehule,Tom Lane)§

关联记录 (2)
改进在 Windows 版 libpq 中,每个进程只调用一次 WSAStartup(),完全不调用 WSACleanup()

变更

在 Windows 版 libpq 中,每个进程只调用一次 WSAStartup(),完全不调用 WSACleanup()(Tom Lane,Alexander Lakhin)§

以前,libpq 在连接开始时调用 WSAStartup(),在连接清理时调用 WSACleanup()。但调用 WSACleanup() 似乎会干扰程序的其他操作;特别是,我们观察到过无法将预期输出写入 stdout 的罕见失败。省略该调用似乎没有不良影响,因此予以省略。(这还消除了程序执行一连串数据库连接时,反复加载和卸载 DLL 所造成的性能问题。)

关联记录 (5)
问题修复修复 ecpg 库在 Windows 上的逐线程初始化逻辑

变更

修复 ecpg 库在 Windows 上的逐线程初始化逻辑(Tom Lane,Alexander Lakhin)§

多线程 ecpg 应用可能因锁定不正确而偶发行为异常。

关联记录 (5)
问题修复修复 ecpg 对 B'...' 和 X'...' 字面值的错误处理

变更

修复 ecpg 对 B'...' 和 X'...' 字面值的错误处理(Shenhao Wang)§ §

改进在 Windows 上,使 psql 以文本模式而非二进制模式读取反引号命令的输出

变更

在 Windows 上,使 psql 以文本模式而非二进制模式读取反引号命令的输出(Tom Lane)§

这可以确保正确处理换行符。

关联记录 (5)
改进确保 pg_dump 收集扩展配置表的逐列信息

变更

确保 pg_dump 收集扩展配置表的逐列信息(Fabrízio de Royes Mello,Tom Lane)§ §

未能这样做会导致指定 --inserts 时崩溃,或在使用 COPY 重载表数据时生成指定不完整(虽然通常正确)的 COPY 命令。

关联记录 (5)
改进使 pg_upgrade 检查目标集群中的表空间目录是否已存在

变更

使 pg_upgrade 检查目标集群中的表空间目录是否已存在(Bruce Momjian)§ §

关联记录 (5)
问题修复修复 contrib/pgcrypto 中潜在的内存泄漏

变更

修复 contrib/pgcrypto 中潜在的内存泄漏(Michael Paquier)§

关联记录 (5)
改进在 contrib/pgcrypto 中增加对一种不太可能发生的失败情况的检查

变更

在 contrib/pgcrypto 中增加对一种不太可能发生的失败情况的检查(Daniel Gustafsson)§

关联记录 (5)
问题修复修复最近添加的 timetz 测试用例,使其在美国未实行夏令时期间也能正常工作

变更

修复最近添加的 timetz 测试用例,使其在美国未实行夏令时期间也能正常工作(Tom Lane)§

关联记录 (3)
改进将时区数据文件更新到 tzdata 2020d 版,以反映斐济、摩洛哥、巴勒斯坦、加拿大育空地区、麦夸里岛和凯西站(南极洲)的夏令时法规变更,并修正法国、匈牙利、摩纳哥和巴勒斯坦的历史数据。

变更

将时区数据文件更新到 tzdata 2020d 版,以反映斐济、摩洛哥、巴勒斯坦、加拿大育空地区、麦夸里岛和凯西站(南极洲)的夏令时法规变更,并修正法国、匈牙利、摩纳哥和巴勒斯坦的历史数据。(Tom Lane)§ §

关联记录 (5)
改进将我们使用的时区库副本同步到 IANA tzcode 2020d 版

变更

将我们使用的时区库副本同步到 IANA tzcode 2020d 版(Tom Lane)§ §

这纳入了上游将 zic 默认输出选项从 “fat” 改为 “slim” 的修改。对我们而言,这只是表面上的变化,因为在 v13 之前的分支中,我们仍然选择 “fat” 模式。此项修改还确保 strftime() 只在失败时才改变 errno。

关联记录 (5)
如何生成比较结果?

比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

发布快照: 2026-09-26 · 安全快照: 2026-09-26

内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.