pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
2009-03-16
本次发布包含对 8.3.6 的多方面修复。有关 8.3 大版本中新特性的信息,请参见 第 E.96 节。.
对于运行 8.3.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.3.5 的版本升级,请参阅 第 E.91 节。
防止编码转换失败时的错误递归崩溃(Tom)
此变更扩展了上两个小版本中针对相关失败情形所做的修复。以前的修复是针对最初的问题报告量身定制的,但我们现在认识到,编码转换函数抛出的任何错误都可能在试图报告该错误时导致无限递归。因此,解决方案是:如果发现已处于递归错误报告情形,就禁用翻译和编码转换并报告错误消息的纯 ASCII 形式。(CVE-2009-0922)
不允许 CREATE CONVERSION 为指定的转换函数使用错误的编码(Heikki)
这防止了编码转换失败的一种可能情形。前一个变更是兜底,防范同一领域其他类型的失败。
修复 xpath(),使其仅在必要时修改路径表达式,并在必要时做更合理的尝试(Andrew)
SQL 标准暗示 xpath 应能处理文档片段形式的数据,但 libxml 不支持这一点,而且按照 XPath 标准这是否合理也确实不清楚。xpath 试图通过同时修改数据和路径表达式来绕过这一不匹配,但该修改有缺陷,可能导致有效搜索失败。现在 xpath 检查数据是否确实是格式良好的文档,如果是,则不加更改地把数据和路径表达式交给 libxml。否则,使用一种较不容易失败的另一种修改方法。
新的修改方法仍不能 100% 令人满意,而且似乎不可能有真正的解决方案。因此应把这个补丁视为权宜之计,以避免不必要地破坏现有应用程序。PostgreSQL 8.4 很可能干脆拒绝在非格式良好文档的数据上使用 xpath。
修复 to_char() 被给定与数据参数类型不适当的格式代码时的核心转储(Tom)
修复 C 区域设置与多字节编码一起使用时文本搜索可能失败的问题(Teodor)
在 wchar_t 比 int 窄的平台(特别是 Windows)上可能崩溃。
修复文本搜索解析器处理包含多个 @ 字符的类电子邮件字符串时的极端低效(Heikki)
修复较大子查询的输出列表中带子 SELECT 的规划器问题(Tom)
此缺陷的已知症状是 “定位分组列失败”错误,且与所涉及的数据类型有关;但也可能存在其他问题。
修复带隐式强制转换的 CASE WHEN 的反编译(Tom)
在试图检查或转储视图时,这一错误在启用断言的构建中可能导致断言失败,在其他情况下可能导致 “意外的 CASE WHEN 子句”错误消息。
修复 TOAST 表行类型所有者可能的错误分配(Tom)
如果 CLUSTER 或重写形式的 ALTER TABLE 由表所有者之外的人执行,表的 TOAST 表的 pg_type 条目最终会被标记为那个人所拥有。这不会立即引起问题,因为普通数据库操作不检查 TOAST 行类型的权限。但是,如果后来试图删除发出该命令的角色(在 8.1 或 8.2 中),或者在那之后 pg_dump 发出 “数据类型的所有者似乎无效”警告(在 8.3 中),则可能导致意外失败。
更改 UNLISTEN,如果当前会话从未执行过任何 LISTEN 命令则快速退出(Tom)
大多数时候这不是特别有用的优化,但由于 DISCARD ALL 会调用 UNLISTEN,以前的编码对大量使用 DISCARD ALL 的应用程序造成了显著的性能问题。
修复 PL/pgSQL:不再把字符串中任何位置的 INSERT 之后的 INTO 当作 INTO-变量子句,而不仅是开头;特别是不要对 CREATE RULE 内的 INSERT INTO 失败(Tom)
在块退出时完全清理 PL/pgSQL 错误状态变量(Ashesh Vashi 和 Dave Page)
这对 PL/pgSQL 本身不是问题,但这一疏漏可能导致 PL/pgSQL 调试器在检查函数状态时崩溃。
在 Windows 上重试失败的 CallNamedPipe() 调用(Steve Marshall、Magnus)
该函数有时似乎会瞬时失败;我们此前把任何失败都当作硬错误,这可能扰乱 LISTEN/NOTIFY 以及其他操作。
把 MUST(毛里求斯岛夏令时)加入已知时区缩写的默认列表(Xavier Bugaud)
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。