文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 9.6.5 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
9.6.5
2017-08-31
9.6.5stable支持截止 2021-11-11
PostgreSQL 9.6.5
迁移与兼容性
对于运行 9.6.X 的用户,不需要转储/恢复。
不过,如果你是从 9.6.4 之前的版本升级,参见第 E.21 节。
改进在 information_schema.table_privileges 视图中显示外部表
变更
在 information_schema.table_privileges 视图中显示外部表(Peter Eisentraut)
所有其他相关的 information_schema 视图都包含外部表,只有这一个忽略了它们。
由于这个视图定义是由 initdb 安装的,仅升级不会修复问题。如果需要在现有安装中修复,可以以超级用户身份在 psql 中执行以下操作:
SET search_path TO information_schema;
CREATE OR REPLACE VIEW table_privileges AS
SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
CAST(grantee.rolname AS sql_identifier) AS grantee,
CAST(current_database() AS sql_identifier) AS table_catalog,
CAST(nc.nspname AS sql_identifier) AS table_schema,
CAST(c.relname AS sql_identifier) AS table_name,
CAST(c.prtype AS character_data) AS privilege_type,
CAST(
CASE WHEN
-- object owner always has grant options
pg_has_role(grantee.oid, c.relowner, 'USAGE')
OR c.grantable
THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
FROM (
SELECT oid, relname, relnamespace, relkind, relowner,
(aclexplode(coalesce(relacl, acldefault('r', relowner))).*
FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
pg_namespace nc, pg_authid u_grantor,
(
SELECT oid, rolname FROM pg_authid
UNION ALL
SELECT 0::oid, 'PUBLIC'
) AS grantee (oid, rolname)
WHERE c.relnamespace = nc.oid
AND c.relkind IN ('r', 'v', 'f')
AND c.grantee = grantee.oid
AND c.grantor = u_grantor.oid
AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
AND (pg_has_role(u_grantor.oid, 'USAGE')
OR pg_has_role(grantee.oid, 'USAGE')
OR grantee.rolname = 'PUBLIC');
这必须在每个要修复的数据库中重复,包括 template0。
改进清理尝试对失败事务执行 ROLLBACK 时发生致命退出(例如因收到 SIGTERM)的处理
变更
清理尝试对失败事务执行 ROLLBACK 时发生致命退出(例如因收到 SIGTERM)的处理(Tom Lane)
这种情况可能导致断言失败。在生产构建中退出仍会发生,但会记录一条关于 “cannot drop active portal” 的意外消息。
改进移除致命退出期间可能触发的断言
变更
移除致命退出期间可能触发的断言(Tom Lane)
改进正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列
变更
正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列(Tom Lane)
某些更改复合类型或域类型定义的 ALTER 命令本应在该类型有存储值时失败,因为它们缺少更新或检查这类值所需的基础设施。此前这些检查可能遗漏包裹在范围类型或子域中的相关值,可能允许数据度变得不一致。
问题修复防止把定长按引用传递数据类型传给并行工作者进程时崩溃
变更
防止把定长按引用传递数据类型传给并行工作者进程时崩溃(Tom Lane)
问题修复修复使用并行模式并使用列表文件选择要恢复条目子集时 pg_restore 的崩溃
变更
修复使用并行模式并使用列表文件选择要恢复条目子集时 pg_restore 的崩溃(Fabrízio de Royes Mello)
改进更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句
变更
更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句(Michael Meskes)
这允许 ecpg 程序包含在内部使用 RETURNING(例如在 CTE 内)而不是用它定义返回给客户端的值的 SQL 构造。
改进更改 ecpg 的解析器识别 C 预处理命令行的反斜线续行
变更
更改 ecpg 的解析器识别 C 预处理命令行的反斜线续行(Michael Meskes)
改进改进 Windows 上 PL/Perl 编译器标志的选择
变更
改进 Windows 上 PL/Perl 编译器标志的选择(Tom Lane)
此修复避免了因对 time_t 值宽度的假定不一致而可能的 PL/Perl 崩溃。扩展开发者可能看到的一个副作用是 _USE_32BIT_TIME_T 不再在 PostgreSQL Windows 构建中全局定义。这预计不会引起问题,因为 time_t 类型没有用于任何 PostgreSQL API 定义。
问题修复修复通过非 GNU make 程序调用时 make check 的正确行为
变更
修复通过非 GNU make 程序调用时 make check 的正确行为(Thomas Munro)
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.