选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.3 已于 2018 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

E.118. 版本 8.4.5 #

发行日期:. 2010-10-04

本次发布包含对 8.4.4 的多方面修复。有关 8.4 大版本中新特性的信息,请参见 第 E.123 节。.

E.118.1. 迁移到版本 8.4.5

对于运行 8.4.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.4.2 的版本升级,请参阅 第 E.121 节

E.118.2. 变更

  • 在 PL/Perl 和 PL/Tcl 中为每个调用方 SQL 用户 ID 使用单独的解释器(Tom Lane)

    此变更防止了可通过破坏稍后将在同一会话中以另一 SQL 用户身份执行的 Perl 或 Tcl 代码(例如在 SECURITY DEFINER 函数内)而造成的安全问题。大多数脚本语言都提供许多实现这一点的手段,例如重新定义目标函数调用的标准函数或操作符。如果没有此变更,任何拥有 Perl 或 Tcl 语言使用权的 SQL 用户基本上都能以目标函数所有者的 SQL 权限为所欲为。

    此变更的代价是 Perl 和 Tcl 函数之间的有意通信变得更困难。为提供出路,PL/PerlU 和 PL/TclU 函数继续每会话只使用一个解释器。这不被视为安全问题,因为所有这类函数本来就以数据库超级用户的信任级别执行。

    声称提供可信执行的第三方过程语言很可能存在类似的安全问题。我们建议就安全关键用途联系你所依赖的任何 PL 的作者。

    感谢 Tim Bunce 指出此问题(CVE-2010-3433)。

  • 禁止以并非它预期配合使用的系统目录列的参数调用 pg_get_expr(),以防止可能的崩溃(Heikki Linnakangas、Tom Lane)

  • 在 Windows 上把退出码 128(ERROR_WAIT_NO_CHILDREN)视为非致命(Magnus Hagander)

    高负载下,Windows 进程有时会在启动时以此错误码失败。此前 postmaster 把这视为 panic 情况并重启整个数据库,但这似乎反应过度。

  • 修复占位符求值位置不正确的问题(Tom Lane)

    当外连接的内侧是输出列表中含非严格表达式的子 SELECT 时,该缺陷可能导致本应为空的查询输出非空。

  • 修复 UNION ALL 成员关系可能被重复扫描的问题(Tom Lane)

  • 修复 无法处理未规划的子查询 错误(Tom Lane)

    当子查询包含一个连接别名引用,而该引用展开成包含另一个子查询的表达式时,会出现此错误。

  • 修复对引用视图或子查询且出现在嵌套子查询中的整行 Var 的错误处理(Tom Lane)

  • 修复跨类型 IN 比较的错误处理(Tom Lane)

    如果规划器试图用先排序、再去重、再普通连接的计划实现 IN 连接,这可能导致失败。

  • 修复 tsvector 列的 ANALYZE 统计信息计算(Jan Urbanski)

    原来的编码可能产生不正确的统计信息,导致之后糟糕的计划选择。

  • 改进规划器对 array_agg()string_agg() 及类似聚合函数所用内存的估计(Hitoshi Harada)

    此前严重的低估可能因不当选择哈希聚合计划而导致内存不足失败。

  • 修复未将缓存计划标记为瞬态的失败(Tom Lane)

    如果在某个被引用表正在执行 CREATE INDEX CONCURRENTLY 期间准备了计划,应当在索引可供使用后重新规划。这此前没有可靠地发生。

  • 在偶有报告的 btree 失败情形中把 PANIC 降为 ERROR,并在产生的错误消息中提供更多细节(Tom Lane)

    这应能改进系统对损坏索引的健壮性。

  • 修复 GIN 索引部分匹配查询的错误搜索逻辑(Tom Lane)

    涉及多个 GIN 索引条件的 AND/OR 组合的情形并不总是给出正确答案,而且有时比必要的慢得多。

  • 防止 show_session_authorization() 在自动清理进程中崩溃(Tom Lane)

  • 防御返回 setof record 但并非所有返回行实际为同一行类型的函数(Tom Lane)

  • 修复子事务回滚期间待处理触发器事件列表可能损坏的问题(Tom Lane)

    这可能导致崩溃或触发器错误触发。

  • 修复对按引用传递的函数结果计算哈希时可能的失败(Tao Ma、Tom Lane)

  • 改进归并连接对连接列中 NULL 的处理(Tom Lane)

    如果排序顺序使 NULL 排在高位,归并连接现在可以在到达第一个 NULL 时完全停止。

  • 写入锁文件(postmaster.pid 和套接字锁文件两者)内容时注意对其执行 fsync(Tom Lane)

    如果机器在 postmaster 启动后不久崩溃,这一疏漏可能导致锁文件内容损坏。这又可能使后续启动 postmaster 的尝试失败,直到手工删除锁文件。

  • 避免在为深层嵌套的子事务分配 XID 时递归(Andres Freund、Robert Haas)

    在栈空间有限时,原来的编码可能导致崩溃。

  • 避免 walwriter 进程持有打开的旧 WAL 段(Magnus Hagander、Heikki Linnakangas)

    以前的编码会阻止删除不再需要的段。

  • 修复 log_line_prefix%i 转义,它可能在后端启动早期产生垃圾(Tom Lane)

  • 防止误解 TOAST 表的部分指定关系选项(Itagaki Takahiro)

    特别是,如果为表设置了任何其他 reloption,fillfactor 会被读为零,导致严重膨胀。

  • 修复 ALTER TABLE ... ADD CONSTRAINT 中的继承计数跟踪(Robert Haas)

  • 修复启用归档时 ALTER TABLE ... SET TABLESPACE 中可能的数据损坏(Jeff Davis)

  • 允许 CREATE DATABASEALTER DATABASE ... SET TABLESPACE 被查询取消中断(Guillaume Lelarge)

  • 改进 CREATE INDEX 对所提议索引表达式是否不可变的检查(Tom Lane)

  • 修复 REASSIGN OWNED 以处理操作符类和操作符族(Asko Tiidumaa)

  • 修复比较两个空 tsquery 值时可能的核心转储(Tom Lane)

  • 修复 LIKE 对包含 % 后跟 _ 的模式的处理(Tom Lane)

    我们此前修复过它,但仍有一些被错误处理的情形。

  • 重新允许输入公元 0001-01-01 之前的儒略日期(Tom Lane)

    'J100000'::date 这样的输入在 8.4 之前可行,但被新增的错误检查无意中破坏。

  • 修复 PL/pgSQL:如果在迭代某游标的 FOR 循环内关闭该游标,抛出错误而不是崩溃(Heikki Linnakangas)

  • 在 PL/Python 中,防御 PyCObject_AsVoidPtrPyCObject_FromVoidPtr 的空指针结果(Peter Eisentraut)

  • libpq 中,修复同时指定 hosthostaddr 情形下的完整 SSL 证书验证(Tom Lane)

  • 让 psql 在自动提交关闭模式下把 DISCARD ALL 识别为不应包裹在事务块中的命令(Itagaki Takahiro)

  • 修复 pg_dump 处理 SQL/MED 对象的一些问题(Tom Lane)

    特别是,pg_dump 由非超级用户运行时总会失败,这并非本意。

  • 改进 pg_dumppg_restore 对不可寻址归档文件的处理(Tom Lane、Robert Haas)

    这对并行恢复的正常运作很重要。

  • 改进并行 pg_restore 应对选择性恢复(-L 选项)的能力(Tom Lane)

    如果 -L 文件指定了非默认的恢复顺序,原来的代码倾向于失败。

  • 修复 ecpg 以正确处理来自 RETURNING 子句的数据(Michael Meskes)

  • 修复 ecpg 中的一些内存泄漏(Zoltan Boszormenyi)

  • 改进 contrib/dblink 对包含已删除列的表的处理(Tom Lane)

  • 修复 contrib/dblink重复连接名 错误后的连接泄漏(Itagaki Takahiro)

  • 修复 contrib/dblink 以正确处理超过 62 字节的连接名(Itagaki Takahiro)

  • contrib/hstore 新增 hstore(text, text) 函数(Robert Haas)

    此函数是现已废弃的 => 操作符的推荐替代。向后移植它使得面向未来的代码可以用于较旧的服务器版本。注意该补丁只有在 contrib/hstore 于特定数据库中安装或重新安装之后才生效。用户也可以改为手工执行 CREATE FUNCTION 命令。

  • 更新构建基础设施和文档,反映源代码仓库从 CVS 迁移到 Git 的变化(Magnus Hagander 等)

  • 把时区数据文件更新为 tzdata 版本 2010l for DST law changes in Egypt and Palestine; also historical corrections for Finland。

    此变更还为两个密克罗尼西亚时区新增了名称:Pacific/Chuuk 现在优先于 Pacific/Truk(首选缩写为 CHUT 而非 TRUT),Pacific/Pohnpei 优先于 Pacific/Ponape。

  • 让 Windows 的 N. Central Asia Standard Time 时区映射到 Asia/Novosibirsk 而不是 Asia/Almaty(Magnus Hagander)

    Microsoft 在 KB976098 的时区更新中改变了此区域的 DST 行为。Asia/Novosibirsk 更匹配其新行为。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。