E.119. 版本 8.4.4 #
发行日期:. 2010-05-17
本次发布包含对 8.4.3 的多方面修复。有关 8.4 大版本中新特性的信息,请参见第 E.123 节。.
E.119.1. 迁移到版本 8.4.4
对于运行 8.4.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.4.2 的版本升级,请参阅第 E.121 节。
E.119.2. 变更
用应用于整个解释器的操作码掩码来强制
plperl中的限制,而不是使用Safe.pm(Tim Bunce、Andrew Dunstan)近期的事态发展使我们确信
Safe.pm太不安全,不能依靠它使plperl可信。此变更完全移除了对Safe.pm的使用,改为使用始终应用操作码掩码的独立解释器。此变更的良好副作用包括:现在可以在plperl中以自然的方式使用 Perl 的strict编译指令,Perl 的$a和$b变量在排序例程中按预期工作,以及函数编译显著加快。(CVE-2010-1169)防止 PL/Tcl 执行来自
pltcl_modules的不可信代码(Tom)PL/Tcl 从数据库表自动装载 Tcl 代码的特性可能被利用于特洛伊木马攻击,因为对谁能创建该表或向其中插入没有限制。此变更禁用该特性,除非
pltcl_modules由超级用户拥有。(但是,不检查该表上的权限,因此确实需要较不安全的模块表的安装仍可以向受信任的非超级用户授予适当权限。)此外,除非确实要执行pltclu函数,否则防止把代码装载到无限制的“普通”Tcl 解释器中。(CVE-2010-1170)修复
ALTER ... SET TABLESPACE的 WAL 重放期间的数据损坏(Tom)当
archive_mode开启时,ALTER ... SET TABLESPACE生成的 WAL 记录的重放逻辑不正确。它可能把数据写到错误的位置,导致可能无法恢复的数据损坏。数据损坏会在备机从属上被观察到;如果在提交ALTER之后、下一个检查点之前发生数据库崩溃和恢复,主机上也可能发生。修复在重建 relcache 条目期间收到缓存重置消息时可能的崩溃(Heikki)
此错误是在 8.4.3 中修复相关失败时引入的。
在为函数运行语言验证器时应用逐函数 GUC 设置(Itagaki Takahiro)
这避免了函数代码在没有该设置时无效所导致的失败;例如
search_path不正确时 SQL 函数可能无法解析。当
constraint_exclusion=partition时,对继承的UPDATE和DELETE目标表做约束排除(Tom)由于疏忽,此设置此前只在
SELECT命令中触发约束排除检查。不允许非特权用户重置仅超级用户可用的参数设置(Alvaro)
此前,如果非特权用户为自己运行
ALTER USER ... RESET ALL,或为他拥有的数据库运行ALTER DATABASE ... RESET ALL,这将移除该用户或数据库的所有特殊参数设置,包括本应只可由超级用户更改的那些。现在,ALTER只移除用户有权更改的参数。避免后端关闭发生在需要向日志条目添加
CONTEXT内容时导致可能的崩溃(Tom)某些情况下上下文打印函数会失败,因为到打印日志消息时当前事务已被回滚。
修复
recovery_end_command中%r参数的错误处理(Heikki)该值总是出来为零。
确保归档进程尽快响应
archive_command的变更(Tom)修复 pl/pgsql 的
CASE语句在 case 表达式是不返回行的查询时不失败(Tom)为现代 Perl 版本更新 pl/perl 的
ppport.h(Andrew)修复 pl/python 中的若干内存泄漏(Andreas Freund、Tom)
在 ecpg 中正确处理空字符串连接参数(Michael)
防止 psql 在展开引用自身的变量时无限递归(Tom)
修复 psql 的
\copy,不在\copy (select ...)内的点周围添加空格(Tom)在数字字面量的小数点周围添加空格会导致语法错误。
避免 psql 在与
client_encoding不匹配的区域设置环境中运行时的格式化失败(Tom)修复使用
contrib/intarray操作符的不可满足查询产生不必要的 “GIN 索引不支持整索引扫描”错误(Tom)确保
contrib/pgstattuple函数及时响应取消中断(Tatsuhito Kasahara)让服务器启动正确处理
shmget()对已存在的共享内存段返回EINVAL的情形(Tom)此行为曾在包括 OS X 在内的 BSD 衍生内核上观察到。它导致完全误导性的启动失败,抱怨共享内存请求大小过大。
避免 Windows 上 syslogger 进程可能的崩溃(Heikki)
更健壮地处理 Windows 注册表中不完整的时区信息(Magnus)
更新已知 Windows 时区名称集合(Magnus)
把时区数据文件更新为 tzdata 版本 2010j for DST law changes in Argentina, Australian Antarctic, Bangladesh, Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; also historical corrections for Taiwan。
另外,把
PKST(巴基斯坦夏令时)加入默认时区缩写集合。