E.161. 版本8.3.17

E.161.1. 迁移到版本8.3.17
E.161.2. 变化

发布日期:. 2011-12-05

该发布包含来自8.3.16中各种修复。关于8.3主要发布中新特性信息, 参阅第 E.178 节

E.161.1. 迁移到版本8.3.17

运行8.3.X不需要备份/恢复。

然而,在information_schema.referential_constraints视图中发现长期的错误。 如果你依赖于该视图中正确的结果,那么你应该像下面第一个更新日志项解释的来代替它的定义。

另外,如果你从8.3.8更早版本更新,参阅8.3.8发布说明。

E.161.2. 变化

  • 修复information_schema.referential_constraints视图中错误(Tom Lane)

    该视图关于外键约束匹配依赖主或者唯一键约束是不够谨慎的, 这可能导致无法显示外键约束,或显示它多次,或声称它 取决于比起真正的一个不同的约束。

    由于视图定义是由initdb安装, 只是升级不会解决问题。如果您需要解决现有的安装中这个问题, 您可以(作为超级用户)删除information_schema模式,然后通过 SHAREDIR/information_schema.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表访问旧的syscache项中的竞争条件(Tom Lane)

    典型的症状是类似在pg_toast_2619中toast值NNNNN缺少块号0的短暂错误, 其中所引用的toast表将永远属于一个系统目录。

  • DatumGetInetP()解压具有1字节头的inet数据, 并添加一个新的宏,DatumGetInetPP()不这样做(Heikki Linnakangas)

    这种变化不会影响到核心代码, 但可能会阻止附加代码预期DatumGetInetP()按通常惯例产生解压缩数据而崩溃。

  • 提高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)

    虽然本身无害,在某些平台上这可能导致恼人的内核日志信息。

  • 保留psql命令历史中空白行(Robert Haas)

    比如,如果空行从一个字符串中被删除,前者操作可能会导致问题。

  • 修复pg_dump以备份自动生成类型之间用户定义的映射, 比如表行类型(Tom Lane)

  • 使用xsubpp的首选版本构建PL/Perl, 不一定是操作系统主拷贝(David Wheeler和Alex Hunsaker)

  • 修复contrib/dict_intcontrib/dict_xsyn中不正确编码(Tom Lane)

    一些函数错误假定通过palloc()返回的内存是零。

  • 实现pgstatindex()中查询取消及时中断(Robert Haas)

  • 确保VPATH构造正确安装所有服务器头文件(Peter Eisentraut)

  • 缩短详细错误消息中报告的文件名(Peter Eisentraut)

    常规构造一直报道包含错误消息调用的C文件名字,但VPATH构造之前报道绝对路径名。

  • 修复中美洲地区Windows时区名称解释(Tom Lane)

    映射Central America Standard TimeCST6,而不是 CST6CDT,因为在中美洲任何地方通常不会观察到DST。

  • 为Brazil, Cuba, Fiji, Palestine, Russia和Samoa更新时区数据文件到tzdata发布2011n; 同时为Alaska和British East Africa历史修正。