pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2012-08-17
9.1.5 历史版本维护截止 2016-10-27
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2012-3489 防止通过 XML 实体引用访问外部文件/URL | — | 9.1.5 |
| CVE-2012-3488 防止通过 contrib/xml2 的 xslt_process() 访问外部文件/URL | — | 9.1.5 |
对于运行 9.1.X 的用户,不需要进行转储/恢复。
不过,如果你是从早于 9.1.4 的版本升级,请参见第 E.21 节。
变更
防止通过 XML 实体引用访问外部文件/URL(Noah Misch、Tom Lane)
xml_parse() 会尝试按需获取外部文件或 URL 来解析 XML 值中的 DTD 和实体引用,从而使无特权数据库用户能够尝试以数据库服务器的权限获取数据。虽然外部数据不会直接返回给用户,但如果数据不能解析为有效 XML,其部分内容可能暴露在错误消息中;而且无论如何,仅仅能够检查文件是否存在对攻击者就可能有用。(CVE-2012-3489)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止通过 contrib/xml2 的 xslt_process() 访问外部文件/URL(Peter Eisentraut)
libxslt 提供通过样式表命令读写文件和 URL 的能力,从而使无特权数据库用户能够以数据库服务器的权限读写数据。现通过正确使用 libxslt 的安全选项禁用该能力。(CVE-2012-3488)
此外,移除了 xslt_process() 从外部文件/URL 获取文档和样式表的能力。虽然这是一个有记载的“特性”,但长期以来被认为是个坏主意。CVE-2012-3489 的修复破坏了该能力,与其花费精力修复它,我们干脆将其移除。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 btree 索引页被过早回收(Noah Misch)
当我们允许只读事务跳过分配 XID 时,引入了已删除 btree 页在只读事务仍在访问它时就被回收的可能性。这会导致错误的索引搜索结果。由于时序要求,这种错误在实际中发生的概率似乎很低,但仍应修复。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复新创建或重置序列的崩溃安全缺陷(Tom Lane)
如果在新创建或重置的序列上执行了 ALTER SEQUENCE,然后恰好对它调用了一次 nextval(),随后服务器崩溃,WAL 重放会把序列恢复到看起来没有执行过 nextval() 的状态,从而使下一个 nextval() 调用再次返回第一个序列值。这种情况尤其可能出现在 serial 列上,因为创建 serial 列的序列包含一个 ALTER SEQUENCE OWNED BY 步骤。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 enum 类型值比较中的竞态条件(Robert Haas、Tom Lane)
当遇到当前查询启动之后添加的枚举值时,比较可能失败。
变更
修复 txid_current(),使其在非热备下报告正确的纪元(epoch)(Heikki Linnakangas)
这修复了上一个小版本引入的退化。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止选择不合适的复制连接作为同步备库(Fujii Masao)
主库可能不当地选择 pg_receivexlog 或 pg_basebackup 等伪服务器作为同步备库,然后无限期等待它们。
变更
修复主库事务有大量子事务时热备启动的缺陷(Andres Freund)
这一失误导致报告为 “out-of-order XID insertion in KnownAssignedXids” 的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_start_backup() 之后对 backup_label 文件执行 fsync(Dave Kerr)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 walsender 进程中的超时处理(Tom Lane)
WAL 发送端后台进程疏于建立 SIGALRM 处理程序,这意味着在某些应发生超时的极端情况下它们会永远等待。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 walwriter 每次后台刷写之后唤醒 walsender(Andres Freund、Simon Riggs)
当负载只包含异步提交的事务时,这能大幅减少复制延迟。
变更
修复 LISTEN/NOTIFY,使其更好地应对 I/O 问题(例如磁盘空间耗尽)(Tom Lane)
写入失败之后,所有后续发送更多 NOTIFY 消息的尝试都会失败,并显示诸如 “Could not read from file "pg_notify/nnnn" at offset nnnnn: Success” 的消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
只允许被直接阻塞的进程自动取消自动清理(Tom Lane)
原始编码在某些情况下可能允许不一致的行为;特别是自动清理可能在不足 deadlock_timeout 宽限期之后就被取消。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进自动清理取消的日志记录(Robert Haas)
变更
修复日志收集器,使 log_truncate_on_rotation 在服务器启动后的第一次日志轮转期间就能工作(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复附加到嵌套集合操作(UNION/INTERSECT/EXCEPT)上的 WITH(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保对子查询的整行引用不包含任何多余的 GROUP BY 或 ORDER BY 列(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER TABLE ... ADD CONSTRAINT USING INDEX 期间生成的依赖(Tom Lane)
该命令为索引留下了一个多余的 pg_depend 条目,可能干扰后续操作,尤其是对被索引列之一的 ALTER TABLE ... ALTER COLUMN TYPE。
变更
修复 REASSIGN OWNED,使其能用于扩展(Alvaro Herrera)
变更
禁止在 CREATE TABLE 期间复制 CHECK 约束和索引定义中的整行引用(Tom Lane)
这种情况可能出现在带 LIKE 或 INHERITS 的 CREATE TABLE 中。被复制的整行变量被错误地标记为原表而不是新表的行类型。对 LIKE 拒绝这种情况似乎是合理的,因为行类型之后很可能分化。对 INHERITS,理想情况下应该允许它,并隐式强制转换为父表的行类型;但这需要的工作量超出了回移植的安全范围。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ARRAY(SELECT ...) 子查询中的内存泄漏(Heikki Linnakangas、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复规划器,使其向操作符选择率估计器传递正确的排序规则(Tom Lane)
此前任何核心选择率估计函数都不需要它,但第三方代码可能需要。
变更
修复从正则表达式中提取公共前缀的问题(Tom Lane)
代码可能被带量词的带括号子表达式(例如 ^(foo)?bar)混淆。这会导致对此类模式搜索的索引优化不正确。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复解析 interval 常量中带符号的 hh:mm 和 hh:mm:ss 字段的缺陷(Amit Kapila、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump,使其更好地处理包含部分 GROUP BY 列表的视图(Tom Lane)
只在 GROUP BY 中列出主键列、却把其他表列当作已分组的视图,会被标记为依赖于该主键。pg_dump 对这类主键依赖处理不当会导致转储顺序不佳,往好里说恢复效率低下,往坏里说可能导致并行 pg_restore 彻底失败。
变更
在 PL/Perl 中,避免在 SQL_ASCII 编码下设置 UTF8 标志(Alex Hunsaker、Kyotaro Horiguchi、Alvaro Herrera)
变更
在 PL/Python 中把 Python Unicode 字符串转换为服务器编码时,使用 Postgres 而不是 Python 的编码转换函数(Jan Urbanski)
这避免了一些极端情况的问题,尤其是 Python 并不支持 Postgres 的所有编码。一个显著的功能变化是:如果服务器编码是 SQL_ASCII,你将得到该字符串的 UTF-8 表示;此前字符串中的任何非 ASCII 字符都会导致错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Python 中 PostgreSQL 编码到 Python 编码的映射(Jan Urbanski)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/xml2 的 xslt_process() 中的错误报告(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把时区数据文件更新为 tzdata 版本 2012e,以反映摩洛哥和托克劳的夏令时法规变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。