E.88. 版本 8.2.13
发布日期: 2009-03-16
这个版本包含各种自8.2.12以来的修复。关于8.2主版本的新特性信息, 请查看Section E.101。
E.88.1. 迁移到版本 8.2.13
运行8.2.X的用户不需要转储/恢复。不过,如果你是从一个早于8.2.11的版本升级而来, 那么请查看8.2.11的版本声明。
E.88.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
(Mauritius Island Summer Time) 到已知的时区缩写的缺省列表 (Xavier Bugaud)