多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# E.43\. 发布8.4.10 > **发布日期:** 2011-12-05 该发布包含8.4.9的各种修复, 关于8.4主要发布的新功能的信息, 参阅[Section E.53](#calibre_link-49)。 ## E.43.1\. 迁移到版本8.4.10 运行8.4.X不需要备份/恢复。 然而,在`information_schema.referential_constraints`视图的定义中 发现了一个长期错误。如果你依赖该视图的正确结果,那么 你应该像下面第一个更新记录项解释的替换它的定义。 同时,如果你从8.4.8更早版本更新,参阅8.4.8发布说明。 ## E.43.2\. 变化 * 修复`information_schema.referential_constraints`视图中错误(Tom Lane) 该视图对于匹配依赖主键的外键约束或者唯一性约束不够仔细。 这可能导致显示所有外键约束的错误,或者显示多次,或者 声明它取决于比确实存在的不同约束。 因为该视图定义是通过initdb安装的, 只是升级不会修复该问题。如果你需要在现有的安装中修复这个问题 ,你可以(作为一个超级用户)删除 `information_schema`模式,然后通过 `_SHAREDIR_`/information_schema.sql 重新创建它。 (如果你不确定`_SHAREDIR_`在哪里,运行`pg_config --sharedir`)必须在被修复的每个数据库中重复。 * 修复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以及之后版本的精确形式中, 但是我们补丁早期版本以及有其他编码路径下可以触发相同错误。 * 修复toast表访问陈旧syscache项中的竞争条件(Tom Lane) 典型症状是短暂错误像"为pg_toast_2619中toast值NNNNN丢失块号0", 其中引用的toast表总是从属于一个系统目录。 * 跟踪用于参数缺省表达式函数依赖(Tom Lane) 以前,被引用的对象没有删除或者修改函数而被删除, 当使用该函数时,导致错误操作。 请注意,仅仅安装此更新将不能修复丢失依赖项; 这样,你之后需要`CREATE OR REPLACE`每个函数。 如果你有缺省依赖非内置对象的函数,这样做是值得推荐的。 * 允许有多个OUT参数的设置返回SQL函数的内联(Tom Lane) * 使得`DatumGetInetP()`解压有1字节头的inet数据, 并且添加一个新宏, `DatumGetInetPP()`确实没有(Heikki Linnakangas) 这个变化不影响核心代码,但是 可能阻止希望`DatumGetInetP()` 按惯例产生解压数据的附加代码中崩溃。 * 提高`money`类型的输入和输出的区域支持(Tom Lane) 除了不支持所有标准的[`lc_monetary`](#calibre_link-1571) 格式选项,输入和输出函数是一致的, 意味着有区域备份`money`值不能被重读。 * 不要让 [`transform_null_equals`](#calibre_link-1572) 影响`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`视图中不能被正确显示。 * 保留psql的命令历史中该命令中的空白行(Robert Haas) 如果从字符串中删除空行,前者操作可能产生问题,比如。 * 修复pg_dump以备份自动生成类型之间用户定义的映射, 比如表rowtype(Tom Lane) * 使用xsubpp首选版本以编译PL/Perl, 不一定操作系统的主拷贝(David Wheeler和 Alex Hunsaker) * 修复`contrib/dict_int`和 `contrib/dict_xsyn`中错误编码(Tom Lane) 一些函数错误地假设通过`palloc()` 返回的内存保证为零 * 接受`pgstatindex()`中的 及时查询取消中断(Robert Haas) * 确保VPATH编译正确安装所有服务器头文件(Peter Eisentraut) * 缩短详细错误消息中报告的文件名(Peter Eisentraut) 规则编译一直被包含错误消息调用的C文件名报告, 但是VPATH编译之前报告绝对路径名。 * 修复中美洲Windows时区名解释(Tom Lane) 映射"中美洲标准时间"为`CST6`, 而不是`CST6CDT`, 因为在中美洲任何地方通常观察不到DST。 * 为了Brazil, Cuba, Fiji, Palestine, Russia和Samoa中DST变化规律 更新时区数据文件到tzdata发布2011n; 以及历史修正Alaska和British East Africa。