E.151. 版本 8.2.18
发布日期: 2010-10-04
这个版本包含各种自8.2.17以来的修复。关于8.2主版本的新特性信息, 请查看第 E.169 节。
E.151.1. 迁移到版本 8.2.18
运行8.2.X的用户不需要转储/恢复。不过,如果你是从一个早于8.2.14的版本升级而来, 那么请查看第 E.155 节。
E.151.2. 修改列表
-
为每个在PL/Perl和PL/Tcl中调用的SQL userid使用一个单独的解释器 (Tom Lane)
这个修改阻止了通过破坏稍后由另一个SQL用户身份在同一个会话中执行的Perl或Tcl 代码引起的安全问题(例如,在一个SECURITY DEFINER函数中)。 大多数脚本语言提供多种可能实现的方式,比如重新定义被目标函数调用的标准函数或操作符。 没有这个修改,任何拥有Perl或Tcl语言使用权限的SQL用户基本上都可以用目标函数所有者的SQL 权限做任何事情。
这个修改的代价是Perl和Tcl函数之间有意的沟通变得更加困难。 为了提供一个安全出口,PL/PerlU和PL/TclU函数继续每个会话只使用一个解释器。 这不认为是一个安全问题,因为所有这样的函数都早已在数据库超级用户的信任级别执行。
有可能第三方过程语言提供的受信任的执行有相似的安全问题。 我们建议为了安全鉴定的目的,联系任何你依赖的PL的作者。
感谢Tim Bunce指出这个问题 (CVE-2010-3433)。
通过不允许
pg_get_expr()
被一个不是系统目录字段的参数调用, 阻止它中可能的崩溃 (Heikki Linnakangas, Tom Lane)-
修复Windows共享内存分配代码 (Tsutomu Yamada, Magnus Hagander)
这个错误导致经常报道"不能重新连接上共享内存"错误消息。 这是一个后向修复,前段时间已经应用到了新的分支。
-
在Windows上将退出代码128(ERROR_WAIT_NO_CHILDREN)看做非严重错误 (Magnus Hagander)
在高负载下,Windows进程有时会带有这个错误代码在启动时失败。 以前主进程将它看做一个恐慌条件,并重启整个数据库,但是这样看起来像是过度反应。
修复可能的UNION ALL成员关系的重复扫描 (Tom Lane)
-
修复"不能处理未计划的子查询"错误 (Tom Lane)
这在子查询包含一个扩展成包含另一个子查询的表达式的连接别名引用时发生。
-
降低某些偶然报告的btree失败情况中的PANIC为ERROR, 并在结果错误消息中提供额外的详细信息 (Tom Lane)
这会提高系统损坏索引的鲁棒性。
阻止show_session_authorization()在自动清理进程中崩溃 (Tom Lane)
防御函数返回的记录集中不是所有返回的行都是相同的行类型 (Tom Lane)
修复哈希一个通过引用传递的函数结果时可能的失败 (Tao Ma, Tom Lane)
-
在写入锁文件时,小心同步锁文件的内容(postmaster.pid和套接字锁文件) (Tom Lane)
如果机器在主进程启动之后不久就崩溃了,那么这个疏忽会导致损坏锁文件的内容。 反过来阻止随后启动主进程的尝试成功,直到手动删除了锁文件。
-
避免指定XID到深度嵌套的子事务时递归 (Andres Freund, Robert Haas)
如果堆栈空间有限,那么原先的代码会导致崩溃。
修复log_line_prefix的%i转义, 它可能在后端启动时就产生垃圾 (Tom Lane)
修复启用归档时,ALTER TABLE ... SET TABLESPACE 中可能的数据损坏 (Jeff Davis)
允许CREATE DATABASE和ALTER DATABASE ... SET TABLESPACE 被查询取消中断 (Guillaume Lelarge)
在PL/Python中,防御来自
PyCObject_AsVoidPtr
和PyCObject_FromVoidPtr
的空指针结果 (Peter Eisentraut)改善contrib/dblink对包含删除字段的表的处理 (Tom Lane)
修复contrib/dblink中"重复的连接名" 错误之后的连接泄露 (Itagaki Takahiro)
修复contrib/dblink,正确的处理长于62字节的连接名 (Itagaki Takahiro)
-
添加
hstore(text, text)
函数到contrib/hstore (Robert Haas)推荐这个函数作为现在废弃的=>操作符的替代品。 它是后向修复的,所以不会过时的代码可以使用老的服务器版本。 请注意,该修复将只在特定的数据库中安装或重新安装了contrib/hstore 之后生效。用户可能更喜欢手动执行CREATE FUNCTION命令。
更新建立的基础结构和文档,反应源代码资源库从CVS搬到了Git (Magnus Hagander and others)
-
更新时区数据文件到tzdata版本20101, 因为DST规律在Egypt和Palestine发生了改变;还为Finland做了历史纠正。
这个修改还为两个Micronesian时区添加了新的名字: Pacific/Chuuk现在优先于Pacific/Truk(首选的缩写是CHUT不是TRUT), 和Pacific/Pohnpei优先于Pacific/Ponape。
-
让Windows的"N. Central Asia Standard Time"时区映射到Asia/Novosibirsk, 而不是Asia/Almaty (Magnus Hagander)
微软在KB976098的时区更新中修改了这个时区的DST行为。 Asia/Novosibirsk是它的新行为的最好的匹配。