pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2017-08-10
9.2.22 历史版本维护截止 2017-11-09
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2017-7547 进一步限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码 | 8.5 | 9.2.22 |
| CVE-2017-7486 进一步限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码 | 8.5 | 9.2.21 |
| CVE-2017-7546 禁止在所有基于密码的认证方法中使用空密码 | 8.1 | 9.2.22 |
对于运行 9.2.X 的用户,不需要进行转储/恢复。
但是,如果你使用的外部数据服务器依赖用户密码进行认证,请参见下面的第一条变更日志条目。
不过,如果你是从早于 9.2.20 的版本升级,请参见第 E.5 节。
变更
进一步限制
pg_user_mappings.umoptions
的可见性,以保护存储为用户映射选项的密码(Noah Misch)
CVE-2017-7486 的修复不正确:它允许用户看到她自己用户映射中的选项,即使她对相关外部服务器没有 USAGE 权限。这种选项可能包含由服务器所有者而非用户自己提供的密码。由于
information_schema.user_mapping_options
在这种情况下不显示选项,pg_user_mappings
也不应该。(CVE-2017-7547)
此补丁本身只会修复新 initdb 的数据库中的行为。如果希望在现有数据库中应用此更改,需要执行以下操作:
在 postgresql.conf 中添加
allow_system_table_mods = true 后重启 postmaster。(在支持 ALTER SYSTEM 的版本中,可以用它进行配置更改,但仍需重启。)
在集簇的每个数据库中,以超级用户身份运行以下命令:
SET search_path = pg_catalog;
CREATE OR REPLACE VIEW pg_user_mappings AS
SELECT U.oid AS umid, S.oid AS srvid, S.srvname AS srvname,
U.umuser AS umuser,
CASE WHEN U.umuser = 0 THEN 'public' ELSE A.rolname END AS usename,
CASE WHEN (U.umuser <> 0 AND A.rolname = current_user
AND (pg_has_role(S.srvowner, 'USAGE')
OR has_server_privilege(S.oid, 'USAGE')))
OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
THEN U.umoptions ELSE NULL END AS umoptions
FROM pg_user_mapping U
LEFT JOIN pg_authid A ON (A.oid = U.umuser)
JOIN pg_foreign_server S ON (U.umserver = S.oid);
不要忘记包括 template0 和
template1 数据库,否则漏洞仍会存在于之后创建的数据库中。要修复 template0,需要暂时让它接受连接。在 PostgreSQL 9.5 及之后,可以使用
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
修复 template0 之后再撤销:
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
在更早的版本中,改用:
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
最后,移除 allow_system_table_mods 配置设置,并再次重启 postmaster。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止在所有基于密码的认证方法中使用空密码(Heikki Linnakangas)
libpq 忽略空的密码说明,不把它们传输给服务器。因此,如果用户的密码被设为空字符串,就无法通过
psql 或其他基于
libpq 的客户端用该密码登录。管理员可能因此认为把密码设为空等同于禁用密码登录。然而,使用修改过的或非
libpq 的客户端,登录可能是可能的,这取决于配置的认证方法。特别是最常见的方法 md5 接受空密码。更改服务器在所有情况下拒绝空密码。(CVE-2017-7546)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,如果在新进程中为共享内存保留地址范围失败,则重试进程创建(Tom Lane、Amit Kapila)
这有望修复可能由杀毒产品干扰导致的偶发子进程启动失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Windows 构建中共享谓词锁哈希表的低概率损坏(Thomas Munro、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免把 SSL 连接的干净关闭当作连接重置来记录(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止向客户端发送 SSL 会话票据(Tom Lane)
此修复防止使用票据感知的客户端 SSL 代码时的重连失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Solaris 上设置tcp_keepalives_idle的代码(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复统计收集器处理 postmaster 关闭并立即重启之后发出的查询消息(Tom Lane)
在上一个 postmaster 关闭之后半秒内发出的统计查询实际上被忽略。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保统计收集器的接收缓冲区大小至少为 100KB(Tom Lane)
这降低了默认接收缓冲区大小小于该值的老平台上统计数据丢失的风险。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复备库刚处理完 XLOG_SWITCH WAL 记录后被提升时可能创建无效 WAL 段的问题(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 walsender 进程中的 SIGHUP 和 SIGUSR1 处理(Petr Jelinek、Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 postmaster 中竞态条件导致的 walreceiver 进程不必要的缓慢重启(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 INSERT 或 UPDATE 对数组之上域类型的列的多个元素赋值的情况(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 ALTER ... RENAME 期间把自动生成的数组类型移开(Vik Fearing)
此前我们在 CREATE 期间会把冲突的自动生成数组类型重命名移开;此修复把该行为扩展到重命名操作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 ALTER USER ... SET 接受
ALTER ROLE ... SET 接受的所有语法变体(Peter Eisentraut)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把数据类型 I/O 函数的参数或返回类型从 opaque 更改为正确类型时正确更新依赖信息(Heikki Linnakangas)
CREATE TYPE 会更新以这种早已过时风格声明的 I/O
函数,但忘记记录对类型的依赖,允许随后的 DROP TYPE
留下损坏的函数定义。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少 ANALYZE 处理 tsvector 列时的内存使用(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 money 值乘以或除以整数或浮点数时不必要的精度丢失和草率舍入(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
收紧对解析标识符的函数(如
regprocedurein())中空白的检查(Tom Lane)
根据当前区域,这些函数可能把多字节字符的片段误解释为空白。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
编译 PL/Perl 时使用来自 Perl 的相关
#define 符号(Ashutosh Sharma、Tom Lane)
这避免了可移植性问题(通常表现为库加载期间的“握手”不匹配),在使用最近 Perl 版本时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 中,修复
COPY FROM STDIN 以键盘 EOF 信号结束后再尝试另一个 COPY FROM STDIN 时失败的问题(Thomas Munro)
这种错误行为在 BSD 衍生平台(包括 macOS)上观察到,但在大多数其他平台上没有。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 不再为空操作符类发出无效 SQL(Daniel Gustafsson)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 在 Windows 上输出到 stdout(Kuntal Ghosh)
由于未把文件描述符置为二进制模式,写到 stdout 的压缩纯文本转储会包含损坏的数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_get_ruledef() 为列被重命名的视图的
ON SELECT 规则打印正确输出(Tom Lane)
某些边界情况下 pg_dump 依靠
pg_get_ruledef() 转储视图,因此这个错误可能导致转储/恢复失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 FROM 子句中函数表达式不能反解析为看起来像函数调用的东西时的转储(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_basebackup 在 Windows 上输出到 stdout(Haribabu Kommi)
由于未把文件描述符置为二进制模式,写到 stdout 的备份会包含损坏的数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 确保结束 WAL 记录不具有wal_level = minimum(Bruce Momjian)
这一条件可能阻止升级后的备库服务器重新连接。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
用 gcc 构建共享库时始终使用 -fPIC 而不是
-fpic(Tom Lane)
这在有差别的平台上支持更大的扩展库。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复我们的 Microsoft MSVC 构建脚本中花括号未转义的问题,以避免较新的 Perl 版本发出警告或报错(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,处理 openssl 库不在
VC 子目录内的情况(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,为 libxml2 头文件添加正确的包含路径(Andrew Dunstan)
这修复了以前需要移动标准 Windows 安装的 libxml2 中某些东西的需要。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,识别名为 tcl86.lib 的 Tcl 库(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。