pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
2009-03-16
本次发布包含对 8.2.12 的多方面修复。有关 8.2 大版本中新特性的信息,请参见 第 E.120 节。.
对于运行 8.2.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.2.11 的版本升级,请参阅 第 E.109 节。
防止编码转换失败时的错误递归崩溃(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)
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。