pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
2011-12-05
本次发布包含对 9.0.5 的多方面修复。有关 9.0 大版本中新特性的信息,请参见 第 E.49 节。.
对于运行 9.0.X 的用户,不需要进行转储/恢复。
不过,information_schema.referential_constraints 视图的定义中被发现存在一个长期错误。如果你依赖该视图的正确结果,应按下面第一条变更日志条目的说明替换其定义。
不过,如果你是从早于 9.0.4 的版本升级, 请参见 第 E.45 节。
修复 information_schema.referential_constraints 视图中的缺陷(Tom Lane)
该视图在把外键约束与它依赖的主键或唯一键约束匹配时不够谨慎。这可能导致某个外键约束完全不被显示、被显示多次,或者声称它依赖于一个并非其实际依赖的约束。
由于该视图定义是由 initdb 安装的,仅靠升级不会修复问题。如果需要修复现有安装,可以(以超级用户身份)删除 information_schema 模式,然后通过载入 重新创建它。(如果不确定 SHAREDIR/information_schema.sqlSHAREDIR 在哪里,运行 pg_config --sharedir。)这必须在每个要修复的数据库中重复执行。
修复连接到返回标量的函数输出的 UPDATE 或 DELETE 期间可能崩溃的问题(Tom Lane)
只有当目标行被并发更新时才可能崩溃,因此该问题只是间歇性出现。
修复 GIN 索引更新 WAL 记录的错误重放(Tom Lane)
这可能导致崩溃后或热备服务器上瞬时找不到索引项。不过,该问题会在该索引下一次 VACUUM 时被修复。
修复 CREATE TABLE dest AS SELECT * FROM src 或 INSERT INTO dest SELECT * FROM src 期间与 TOAST 相关的数据损坏(Tom Lane)
如果表曾被 ALTER TABLE ADD COLUMN 修改过,在某些极端情况下,尝试把它的数据原样复制到另一个表可能产生损坏的结果。该问题只会在 8.4 及更高版本中以这种确切形式出现,但我们也给更早的版本打了补丁,以防有其他代码路径可能触发同一缺陷。
修复热备启动期间可能的失败(Simon Riggs)
当初始快照不完整时更快地启动热备(Simon Riggs)
修复从过期 syscache 条目访问 toast 表时的竞态条件(Tom Lane)
典型症状是诸如 “missing chunk number 0 for toast value NNNNN in pg_toast_2619” 的瞬时错误,其中引用的 toast 表总是属于某个系统目录。
跟踪函数对参数默认值表达式中所用项的依赖(Tom Lane)
此前,被引用的对象可以在未删除或修改函数的情况下被删除,导致函数被使用时行为异常。注意,仅仅安装此更新不会修复缺失的依赖条目;要做到这一点,之后需要对每个这样的函数执行 CREATE OR REPLACE。如果你的函数默认值依赖于非内建对象,建议这样做。
允许内联带多个 OUT 参数的集合返回 SQL 函数(Tom Lane)
不要为连接消除信任延迟唯一索引(Tom Lane、Marti Raudsepp)
延迟唯一约束在事务内可能不成立,因此假设它成立可能给出错误的查询结果。
让 DatumGetInetP() 解包带 1 字节头的 inet datum,并新增一个不做此事的宏 DatumGetInetPP()(Heikki Linnakangas)
此变更不影响任何核心代码,但可能避免期望 DatumGetInetP() 按常规约定产生已解包 datum 的附加代码中的崩溃。
改进 money 类型输入和输出的区域支持(Tom Lane)
除了不支持所有标准 lc_monetary 格式化选项外,输入和输出函数还不一致,这意味着在某些区域设置下转储的 money 值无法重新读取。
不让 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 中做),但在现有版本中更改它似乎有风险。因此此补丁只更改触发器的创建顺序。遇到这类错误的用户应删除并重新创建外键约束,使其触发器处于正确顺序。
避免在跟踪缓冲区分配率时发生浮点下溢(Greg Matthews)
虽然这本身无害,但在某些平台上会导致烦人的内核日志消息。
在 Windows 下启动子进程时保留配置文件名和行号值(Tom Lane)
此前它们不会在 pg_settings 视图中正确显示。
修复 ecpg 的 SQLDA 区域中不正确的字段对齐(Zoltan Boszormenyi)
在 psql 的命令历史中保留命令内的空行(Robert Haas)
例如,如果从字符串字面量中删除了空行,先前的行为可能导致问题。
修复 pg_dump,使其转储自动生成类型(如表行类型)之间的用户定义转换(Tom Lane)
对 pg_upgrade 的若干修复(Bruce Momjian)
正确处理排他约束、避免 Windows 上的失败、不再对 8.4 数据库中不匹配的 toast 表名报错。
使用首选版本的 xsubpp 构建 PL/Perl,而不一定是操作系统的主副本(David Wheeler、Alex Hunsaker)
修复 contrib/dict_int 和 contrib/dict_xsyn 中的错误编码(Tom Lane)
一些函数错误地假定 palloc() 返回的内存保证被清零。
修复 contrib/unaccent 配置文件解析中的若干错误(Tom Lane)
让 pgstatindex() 及时响应查询取消中断(Robert Haas)
修复 Mac OS X 启动脚本中日志文件名的不正确引号(Sidar Lopez)
确保 VPATH 构建正确安装所有服务器头文件(Peter Eisentraut)
缩短详细错误消息中报告的文件名(Peter Eisentraut)
常规构建一直只报告包含错误消息调用的 C 文件的名称,但 VPATH 构建此前报告绝对路径名。
修复中美洲 Windows 时区名的解释(Tom Lane)
把“Central America Standard Time”映射为 CST6 而不是 CST6CDT,因为中美洲各地通常不实行夏令时。
把时区数据文件更新为 tzdata 版本 2011n for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; also historical corrections for Alaska and British East Africa。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。