E.58. 版本 8.2.13 #
发行日期
2009-03-16
本次发布包含对 8.2.12 的多方面修复。有关 8.2 大版本中新特性的信息,请参见第 E.71 节。
E.58.1. 迁移到版本 8.2.13
对于运行 8.2.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.2.11 的版本升级,请参阅第 E.60 节。
E.58.2. 变更
防止编码转换失败时的错误递归崩溃(Tom)
此变更扩展了上两个小版本中针对相关失败情形所做的修复。以前的修复是针对最初的问题报告量身定制的,但我们现在认识到,编码转换函数抛出的任何错误都可能在试图报告该错误时导致无限递归。因此,解决方案是:如果发现已处于递归错误报告情形,就禁用翻译和编码转换并报告错误消息的纯 ASCII 形式。(CVE-2009-0922)
不允许
CREATE CONVERSION为指定的转换函数使用错误的编码(Heikki)这防止了编码转换失败的一种可能情形。前一个变更是兜底,防范同一领域其他类型的失败。
修复
to_char()被给定与数据参数类型不适当的格式代码时的核心转储(Tom)修复 C 区域设置与多字节编码一起使用时
contrib/tsearch2可能失败的问题(Teodor)在
wchar_t比int窄的平台(特别是 Windows)上可能崩溃。修复
contrib/tsearch2解析器处理包含多个@字符的类电子邮件字符串时的极端低效(Heikki)修复带隐式强制转换的
CASE WHEN的反编译(Tom)在试图检查或转储视图时,这一错误在启用断言的构建中可能导致断言失败,在其他情况下可能导致“意外的 CASE WHEN 子句”错误消息。
修复 TOAST 表行类型所有者可能的错误分配(Tom)
如果
CLUSTER或重写形式的ALTER TABLE由表所有者之外的人执行,表的 TOAST 表的pg_type条目最终会被标记为那个人所拥有。这不会立即引起问题,因为普通数据库操作不检查 TOAST 行类型的权限。但是,如果后来试图删除发出该命令的角色(在 8.1 或 8.2 中),或者在那之后 pg_dump 发出“数据类型的所有者似乎无效”警告(在 8.3 中),则可能导致意外失败。修复 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)