文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 9.1.2 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
9.1.2
2011-12-05
9.1.2stable支持截止 2016-10-27
PostgreSQL 9.1.2
迁移与兼容性
对于运行 9.1.X 的用户,不需要进行转储/恢复。
不过,information_schema.referential_constraints 视图的定义中被发现存在一个长期错误。如果你依赖该视图的正确结果,应按下面第一条变更日志条目的说明替换其定义。
此外,如果你使用 citext 数据类型,并且是通过运行 pg_upgrade 从前一个大版本升级的,应执行 CREATE EXTENSION citext FROM unpackaged,以避免 citext 操作中与排序规则相关的失败。如果恢复来自包含 citext 数据类型的 9.1 之前数据库的转储,也需要这样做。如果你在升级到 9.1.2 之前已经运行过 CREATE EXTENSION 命令,则需要按下面第二条变更日志条目的说明手工更新系统目录。
问题修复修复 information_schema.referential_constraints 视图中的缺陷
变更
修复 information_schema.referential_constraints 视图中的缺陷(Tom Lane)
该视图在把外键约束与它依赖的主键或唯一键约束匹配时不够谨慎。这可能导致某个外键约束完全不被显示、被显示多次,或者声称它依赖于一个并非其实际依赖的约束。
由于该视图定义是由 initdb 安装的,仅靠升级不会修复问题。如果需要修复现有安装,可以(以超级用户身份)删除 information_schema 模式,然后通过载入 重新创建它。(如果不确定 SHAREDIR/information_schema.sqlSHAREDIR 在哪里,运行 pg_config --sharedir。)这必须在每个要修复的数据库中重复执行。
问题修复让 contrib/citext 的升级脚本修复 citext 列和索引的排序规则
变更
让 contrib/citext 的升级脚本修复 citext 列和索引的排序规则(Tom Lane)
在从 9.1 之前服务器执行 pg_upgrade 期间,或者当包含 citext 类型的 9.1 之前转储被载入 9.1 服务器时,现有的 citext 列和索引不会被正确标记为可排序数据类型。这导致这些列上的操作失败,报诸如 “could not determine which collation to use for string comparison” 的错误。此变更允许它们在 CREATE EXTENSION citext FROM unpackaged 期间由把 citext 模块升级为正规 9.1 扩展的同一脚本修复。
如果你有一个此前升级的、正受此问题困扰的数据库,而且你已经运行过 CREATE EXTENSION 命令,可以(以超级用户身份)手工运行 末尾的 SHAREDIR/extension/citext--unpackaged--1.0.sqlUPDATE 命令。(如果不确定 SHAREDIR 在哪里,运行 pg_config --sharedir。)如果不确定,重复执行也没有害处。
问题修复修复连接到返回标量的函数输出的 UPDATE 或 DELETE 期间可能崩溃的问题
变更
修复连接到返回标量的函数输出的 UPDATE 或 DELETE 期间可能崩溃的问题(Tom Lane)
只有当目标行被并发更新时才可能崩溃,因此该问题只是间歇性出现。
问题修复修复 GIN 索引更新 WAL 记录的错误重放
变更
修复 GIN 索引更新 WAL 记录的错误重放(Tom Lane)
这可能导致崩溃后或热备服务器上瞬时找不到索引项。不过,该问题会在该索引下一次 VACUUM 时被修复。
关联记录 (1)
问题修复修复 CREATE TABLE dest AS SELECT * FROM src 或 INSERT INTO dest SELECT * FROM src 期间与 TOAST 相关的数据损坏
变更
修复 CREATE TABLE dest AS SELECT * FROM src 或 INSERT INTO dest SELECT * FROM src 期间与 TOAST 相关的数据损坏(Tom Lane)
如果表曾被 ALTER TABLE ADD COLUMN 修改过,在某些极端情况下,尝试把它的数据原样复制到另一个表可能产生损坏的结果。该问题只会在 8.4 及更高版本中以这种确切形式出现,但我们也给更早的版本打了补丁,以防有其他代码路径可能触发同一缺陷。
问题修复修复热备启动期间可能的失败
性能当初始快照不完整时更快地启动热备
问题修复修复从过期 syscache 条目访问 toast 表时的竞态条件
变更
修复从过期 syscache 条目访问 toast 表时的竞态条件(Tom Lane)
典型症状是诸如 “missing chunk number 0 for toast value NNNNN in pg_toast_2619” 的瞬时错误,其中引用的 toast 表总是属于某个系统目录。
改进跟踪函数对参数默认值表达式中所用项的依赖
变更
跟踪函数对参数默认值表达式中所用项的依赖(Tom Lane)
此前,被引用的对象可以在未删除或修改函数的情况下被删除,导致函数被使用时行为异常。注意,仅仅安装此更新不会修复缺失的依赖条目;要做到这一点,之后需要对每个这样的函数执行 CREATE OR REPLACE。如果你的函数默认值依赖于非内建对象,建议这样做。
关联记录 (1)
问题修复修复 nestloop 连接中占位符变量的错误管理
变更
修复 nestloop 连接中占位符变量的错误管理(Tom Lane)
已知该缺陷会导致 “variable not found in subplan target list” 规划器错误,并且在涉及外连接时可能导致错误的查询输出。
问题修复修复按涉及聚合的表达式排序的窗口函数
变更
修复按涉及聚合的表达式排序的窗口函数(Tom Lane)
此前它们可能报 “could not find pathkey item to sort” 规划器错误。
问题修复修复 “MergeAppend child's targetlist doesn't match MergeAppend” 规划器错误
变更
修复 “MergeAppend child's targetlist doesn't match MergeAppend” 规划器错误(Tom Lane)
问题修复修复对同时具有可排序和不可排序输入的操作符的索引匹配
变更
修复对同时具有可排序和不可排序输入的操作符的索引匹配(Tom Lane)
在 9.1.0 中,左输入类型不可排序而右输入类型可排序的可索引操作符不会被识别为匹配左列的索引。例如 hstore ? text 操作符。
改进允许内联带多个 OUT 参数的集合返回 SQL 函数
改进不要为连接消除信任延迟唯一索引
变更
不要为连接消除信任延迟唯一索引(Tom Lane、Marti Raudsepp)
延迟唯一约束在事务内可能不成立,因此假设它成立可能给出错误的查询结果。
关联记录 (1)
改进让 DatumGetInetP() 解包带 1 字节头的 inet datum,并新增一个不做此事的宏 DatumGetInetPP()
变更
让 DatumGetInetP() 解包带 1 字节头的 inet datum,并新增一个不做此事的宏 DatumGetInetPP()(Heikki Linnakangas)
此变更不影响任何核心代码,但可能避免期望 DatumGetInetP() 按常规约定产生已解包 datum 的附加代码中的崩溃。
改进改进 money 类型输入和输出的区域支持
变更
改进 money 类型输入和输出的区域支持(Tom Lane)
除了不支持所有标准 lc_monetary 格式化选项外,输入和输出函数还不一致,这意味着在某些区域设置下转储的 money 值无法重新读取。
关联记录 (1)
改进不让 transform_null_equals 影响 CASE foo WHEN NULL ... 构造
变更
不让 transform_null_equals 影响 CASE foo WHEN NULL ... 构造(Heikki Linnakangas)
transform_null_equals 只应影响用户直接写的 foo = NULL 表达式,而不是这种形式的 CASE 在内部生成的相等性检查。
改进更改外键触发器的创建顺序,以更好地支持自引用外键
变更
更改外键触发器的创建顺序,以更好地支持自引用外键(Tom Lane)
对于引用自身表的级联外键,行更新会作为一个事件同时触发 ON UPDATE 触发器和 CHECK 触发器。ON UPDATE 触发器必须先执行,否则 CHECK 会检查行的非最终状态,并可能抛出不恰当的错误。然而这些触发器的触发顺序由其名称决定,而由于触发器使用遵循 “RI_ConstraintTrigger_NNNN” 约定的自动生成名称,它们通常按创建顺序排序。彻底的修复需要修改该约定(我们将在 9.2 中做),但在现有版本中更改它似乎有风险。因此此补丁只更改触发器的创建顺序。遇到这类错误的用户应删除并重新创建外键约束,使其触发器处于正确顺序。
关联记录 (1)
问题修复修复 IF EXISTS 在 DROP OPERATOR FAMILY 中的正确工作
变更
修复 IF EXISTS 在 DROP OPERATOR FAMILY 中的正确工作(Robert Haas)
改进禁止从扩展自己的脚本内删除该扩展
变更
禁止从扩展自己的脚本内删除该扩展(Tom Lane)
这防止了扩展依赖管理不正确时的怪异行为。
改进不把自动生成的类型标记为扩展成员
变更
不把自动生成的类型标记为扩展成员(Robert Haas)
关系行类型和自动生成的数组类型不需要在 pg_depend 中有自己的扩展成员条目,创建这类条目会使扩展升级复杂化。
改进在 CREATE EXTENSION 期间应对无效的既有 search_path 设置
变更
在 CREATE EXTENSION 期间应对无效的既有 search_path 设置(Tom Lane)
改进避免在跟踪缓冲区分配率时发生浮点下溢
变更
避免在跟踪缓冲区分配率时发生浮点下溢(Greg Matthews)
虽然这本身无害,但在某些平台上会导致烦人的内核日志消息。
关联记录 (1)
改进防止自动清理事务以可序列化模式运行
变更
防止自动清理事务以可序列化模式运行(Tom Lane)
自动清理此前使用集簇范围的默认事务隔离级别,但它没有必要使用高于 READ COMMITTED 的级别,而使用 SERIALIZABLE 可能给其他进程带来不必要的延迟。
改进确保 walsender 进程及时响应 SIGTERM
变更
确保 walsender 进程及时响应 SIGTERM(Magnus Hagander)
改进把 postmaster.opts 排除在基础备份之外
变更
把 postmaster.opts 排除在基础备份之外(Magnus Hagander)
改进在 Windows 下启动子进程时保留配置文件名和行号值
变更
在 Windows 下启动子进程时保留配置文件名和行号值(Tom Lane)
此前它们不会在 pg_settings 视图中正确显示。
关联记录 (1)
问题修复修复 ecpg 的 SQLDA 区域中不正确的字段对齐
变更
修复 ecpg 的 SQLDA 区域中不正确的字段对齐(Zoltan Boszormenyi)
关联记录 (1)
改进在 psql 的命令历史中保留命令内的空行
变更
在 psql 的命令历史中保留命令内的空行(Robert Haas)
例如,如果从字符串字面量中删除了空行,先前的行为可能导致问题。
关联记录 (1)
改进避免 pg_dump 中平台特定的无限循环
变更
避免 pg_dump 中平台特定的无限循环(Steve Singer)
问题修复修复 pg_dump 纯文本输出格式的压缩
变更
修复 pg_dump 纯文本输出格式的压缩(Adrian Klaver、Tom Lane)
历史上,pg_dump 把不带 -F 开关的 -Z 理解为应输出纯文本输出的 gzip 压缩版本。现已恢复该行为。
问题修复修复 pg_dump,使其转储自动生成类型(如表行类型)之间的用户定义转换
变更
修复 pg_dump,使其转储自动生成类型(如表行类型)之间的用户定义转换(Tom Lane)
问题修复修复 pg_dump 中外部服务器名称漏加引号的问题
变更
修复 pg_dump 中外部服务器名称漏加引号的问题(Tom Lane)
问题修复对 pg_upgrade 的若干修复
变更
对 pg_upgrade 的若干修复(Bruce Momjian)
正确处理排他约束、避免 Windows 上的失败、不再对 8.4 数据库中不匹配的 toast 表名报错。
关联记录 (1)
改进在 PL/pgSQL 中,允许外部表定义行类型
变更
在 PL/pgSQL 中,允许外部表定义行类型(Alexander Soudakov)
问题修复修正 PL/Perl 函数结果的转换
变更
修正 PL/Perl 函数结果的转换(Alex Hunsaker、Tom Lane)
恢复 9.1 之前的行为:返回 void 的 PL/Perl 函数忽略其最后一条 Perl 语句的结果值;9.1.0 在该语句返回引用时会抛出错误。同时,确保可以为组合类型返回字符串值,只要该字符串符合该类型的输入格式。此外,当函数声明的结果类型不是数组或组合类型时,对分别尝试返回 Perl 数组或哈希的做法抛出错误。(9.1 之前的版本在这种情况下会返回诸如 ARRAY(0x221a9a0) 或 HASH(0x221aa90) 之类毫无用处的字符串。)
改进确保 PL/Perl 字符串总是正确地以 UTF8 编码
变更
确保 PL/Perl 字符串总是正确地以 UTF8 编码(Amit Khandekar、Alex Hunsaker)
改进使用首选版本的 xsubpp 构建 PL/Perl,而不一定是操作系统的主副本
变更
使用首选版本的 xsubpp 构建 PL/Perl,而不一定是操作系统的主副本(David Wheeler、Alex Hunsaker)
改进在 PL/Python 异常中正确传播 SQLSTATE
变更
在 PL/Python 异常中正确传播 SQLSTATE(Mika Eloranta、Jan Urbanski)
改进不为构建所针对的 Python 大版本之外的其他版本安装 PL/Python 扩展文件
变更
不为构建所针对的 Python 大版本之外的其他版本安装 PL/Python 扩展文件(Peter Eisentraut)
改进更改所有 contrib 扩展脚本文件,使其在被喂给 psql 时报告有用的错误消息
变更
更改所有 contrib 扩展脚本文件,使其在被喂给 psql 时报告有用的错误消息(Andrew Dunstan、Tom Lane)
这应有助于让人们了解使用 CREATE EXTENSION 加载这些文件的新方法。大多数情况下,直接载入脚本本来就会失败,只是错误消息更难理解。
问题修复修复 contrib/dict_int 和 contrib/dict_xsyn 中的错误编码
变更
修复 contrib/dict_int 和 contrib/dict_xsyn 中的错误编码(Tom Lane)
一些函数错误地假定 palloc() 返回的内存保证被清零。
改进把 contrib/sepgsql 测试从常规回归测试机制中移除
变更
把 contrib/sepgsql 测试从常规回归测试机制中移除(Tom Lane)
由于这些测试的设置需要 root 权限,自动运行不现实。改为手工方式,并提供一个测试脚本来协助。
问题修复修复 contrib/unaccent 配置文件解析中的若干错误
变更
修复 contrib/unaccent 配置文件解析中的若干错误(Tom Lane)
改进让 pgstatindex() 及时响应查询取消中断
问题修复修复 macOS 启动脚本中日志文件名的不正确引号
变更
修复 macOS 启动脚本中日志文件名的不正确引号(Sidar Lopez)
改进撤销无意中启用的 WAL_DEBUG
变更
撤销无意中启用的 WAL_DEBUG(Robert Haas)
幸运的是,就调试工具而言,这个相当廉价;但它并不打算默认启用,因此撤销。
改进确保 VPATH 构建正确安装所有服务器头文件
改进缩短详细错误消息中报告的文件名
变更
缩短详细错误消息中报告的文件名(Peter Eisentraut)
常规构建一直只报告包含错误消息调用的 C 文件的名称,但 VPATH 构建此前报告绝对路径名。
关联记录 (1)
问题修复修复中美洲 Windows 时区名的解释
变更
修复中美洲 Windows 时区名的解释(Tom Lane)
把“Central America Standard Time”映射为 CST6 而不是 CST6CDT,因为中美洲各地通常不实行夏令时。
关联记录 (1)
改进把时区数据文件更新为 tzdata 版本 2011n for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; also historical corrections for Alaska and British East Africa。
变更
把时区数据文件更新为 tzdata 版本 2011n for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; also historical corrections for Alaska and British East Africa。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.