E.78. 版本 8.2.23
发布日期: 2011-12-05
这个版本包含各种自8.2.22以来的修复。关于8.2主版本的新特性信息, 请查看Section E.101。
这预计是8.2.X系列的最后一个PostgreSQL版本。 建议用户尽快更新到一个新的版本分支。
E.78.1. 迁移到版本 8.2.23
运行8.2.X的用户不需要转储/恢复。
不过,在information_schema.referential_constraints
视图的定义中发现一个长期存在的错误。如果你依赖于该视图的正确结果, 你应该像下面解释的第一个更新日志项一样替换它的定义。
还有,如果你是从一个早于8.2.14的版本升级而来,那么请查看8.2.14的版本声明。
E.78.2. 修改列表
修复在
information_schema.referential_constraints
视图中的错误 (Tom Lane)这个视图在匹配外键约束到决定性的主键或唯一键约束上不够细心。 这会导致未能显示外键约束,或者多次显示外键约束, 或者抱怨它依赖于一个与它实际依赖的不同的约束。
因为视图定义是通过initdb安装的,只是升级将不能修复该问题。 如果你需要在一个现有的安装中修复该问题,你可以(作为超级用户) 删除
information_schema
模式,然后通过来源_SHAREDIR_
/informationschema.sql 重新创建它。(如果不确定`_SHAREDIR在哪里,运行
pg_config --sharedir`。)必须在每个要修复的数据库中重复该步骤。修复
CREATE TABLE dest AS SELECT * FROM src
或INSERT INTO dest SELECT * FROM src
期间TOAST相关的数据损坏 (Tom Lane)如果一个表通过
ALTER TABLE ADD COLUMN
修改了, 那么尝试逐字的拷贝它的数据到另外一个表可能在极端情况下产生损坏的结果。 这个问题只能在8.4及以后的版本中以这个精确的形式来验证, 不过我们也给早期的版本打了补丁,以防有其他的代码路径会触发相同的错误。修复toast表访问陈旧的系统缓存记录时的竞态条件 (Tom Lane)
典型的症状是像"missing chunk number 0 for toast value NNNNN in pg_toast_2619" 这样的瞬态错误,这里引用的toast表将总是属于一个系统目录。
改善
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中实现, 但是在现有的版本中修改它似乎是危险的。所以这个路径只是改变了触发器的创建顺序。 用户遇到这个类型的错误时应该删除并重建外键约束,以使它的触发器的顺序正确。保护psql命令历史中的命令中的空行 (Robert Haas)
例如,如果从一个字符串文本中删除了一个空行,前者的行为会导致问题。
使用xsubpp的首选版本建立PL/Perl, 不一定是操作系统的主要拷贝 (David Wheeler 和 Alex Hunsaker)
遵从
pgstatindex()
中的查询取消立即中断 (Robert Haas)确保VPATH构建适当的安装所有的服务器头文件 (Peter Eisentraut)
缩短在详细错误消息中报告的文件名 (Peter Eisentraut)
常规的构建总是只是报告包含错误消息调用的C文件的名字, 但是VPATH构建以前报告一个绝对路径名。
为Central America修复Windows时区名的解释 (Tom Lane)
映射"Central America Standard Time"到
CST6
, 而不是CST6CDT
,因为DST通常没有观察到Central America的每一个地方。更新时区数据文件到tzdata版本2011n,因为DST规律在 Brazil、Cuba、Fiji、Palestine、Russia和Samoa发生了改变; 还为Alaska和British East Africa做了历史纠正。