pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
2010-10-04
本次发布包含对 8.4.4 的多方面修复。有关 8.4 大版本中新特性的信息,请参见 第 E.72 节。.
对于运行 8.4.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.4.2 的版本升级,请参阅 第 E.70 节。
在 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 DATABASE 和 ALTER 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_AsVoidPtr 和 PyCObject_FromVoidPtr 的空指针结果(Peter Eisentraut)
在 libpq 中,修复同时指定 host 和 hostaddr 情形下的完整 SSL 证书验证(Tom Lane)
让 psql 在自动提交关闭模式下把 DISCARD ALL 识别为不应包裹在事务块中的命令(Itagaki Takahiro)
修复 pg_dump 处理 SQL/MED 对象的一些问题(Tom Lane)
特别是,pg_dump 由非超级用户运行时总会失败,这并非本意。
改进 pg_dump 和 pg_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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。