E.49. 发布8.4.4

发布日期: 2010-05-17

该发布包含来自8.4.3的各种修复。关于8.4主要版本中的新特性的信息, 请参阅Section E.53

E.49.1. 迁移到版本8.4.4

运行8.4.X不需要备份/恢复。然而,如果你从8.4.2更早版本更新,参阅8.4.2的发布说明。

E.49.2. 变化

  • 强制plperl中使用opmask限制应用于整个解释器, 而不是使用Safe.pm(Tim Bunce, Andrew Dunstan)

    最近发展使我们确信Safe.pm太不安全而不能依靠plperl可信赖。 此变化删除了Safe.pm的使用, 有利于使用应用于操作码掩码的一个单独的解析器。 该变化副作用包括以plperl中一种自然的方式使用Perl的strict编译是可能的, 并且Perl的$a$b变量按预期以排序程序执行,而且该函数编译显著更快。

  • 阻止PL/Tcl执行来自pltcl_modules的不信任代码(Tom)

    从一个数据库表中自动加载的Tcl代码的PL/Tcl的功能可以为了特洛伊木马攻击被开发, 因为对谁可以创建或插入该表是没有限制的。这种变化禁用该功能, 除非pltcl_modules是由超级用户拥有。 (然而,不检查该表上的权限,所以真正需要低于安全模块表中的安装仍然可以授予适当的权限给值得信赖的非超级用户)。 另外,防止加载代码到非限制"normal" Tcl解释器,除非我们真的要执行pltclu函数。

  • 修复ALTER ... SET TABLESPACE的WAL回放期间的数据损坏(Tom)

    archive_mode是on时,ALTER ... SET TABLESPACE生成WAL记录,其中 回放逻辑是不正确的。它可以将数据写入错误的地方,从而导致可能的不可恢复的数据损坏。 如果在提交ALTER之后和下一个检查点之前发生数据库崩溃和恢复, 数据损坏在备库上随时被观察,并且可能在主库上发生。?????

  • 如果在relcache项重建期间收到缓存复位信息,那么修复可能崩溃(Heikki)

    当修复相关错误的时候,在8.4.3中介绍这些错误。

  • 当为了该函数运行语言验证器的时候,应用每个函数GUC设置(Itagaki Takahiro)

    这避免了失败,如果该函数的代码没有该设置是无效的; 一个例子是,如果search_path不正确,SQL函数可能不被解析。

  • constraint_exclusion = partition的时候, 为继承UPDATEDELETE目标表执行约束排除(Tom)

    由于疏忽,该设置以前造成约束排除在SELECT命令中被检查。

  • 不允许未经授权的用户重置超级用户唯一的参数设置(Alvaro)

    以前,如果一个非特权用户为自身运行ALTER USER ... RESET ALL, 或为所拥有的数据库运行ALTER DATABASE ... RESET ALL, 这将删除用户或数据库的所有特殊参数设置, ????? 甚至是那些只应该由超级用户改变的设置。现在,ALTER将只删除该用户有权限改变的参数。

  • CONTEXT附加物为日志项时,如果发生宕机,避免后台关机时可能的崩溃(Tom)

    在某些情况中上下文输出函数可能失败,因为当它打印日志信息的时候,当前事务已经回滚。

  • 修复recovery_end_command%r参数的错误处理(Heikki)

    该值总是零。

  • 确保归档进程尽可能快地响应archive_command中变化(Tom)

  • 当case表达式是一个没有返回行的查询时,修复pl/pgsql的CASE 语句而不失败(Tom)

  • 更新pl/perl的ppport.h为现代Perl版本(Andrew)

  • 修复pl/python中各种内存泄露(Andreas Freund, Tom)

  • 正确处理ecpg中空字符串连接参数(Michael)

  • 当扩展引用自身的一个变量时,避免在psql中的无限递归(Tom)

  • 修复psql的\copy而在\copy (select ...)中点周围 不添加空格(Tom)

    在数值文字中小数点周围的空格可能导致语法错误。

  • 当在上下文环境中运行不匹配client_encoding的时候, 避免psql中格式错误(Tom)

  • 为了使用contrib/intarray操作符的不满足条件的查询, 修复不必要的"GIN索引不支持全局索引扫描"错误(Tom)

  • 确保contrib/pgstattuple函数反应及时取消中断(Tatsuhito Kasahara)

  • 确保服务器启动正确处理shmget()为已存在的共享内存段 返回EINVAL(Tom)

    在包括OS X中的BSD衍生的内核上观察这种操作, 这导致了抱怨共享内存请求大小过大的完全误导启动错误。

  • 避免Windows上syslogger处理过程中可能的崩溃(Heikki)

  • 更有力地处理Windows注册表中不完整的时区信息(Magnus)

  • 更新已知的Windows时区名字的设置(Magnus)

  • 为了Argentina, Australian Antarctic, Bangladesh, Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia中DST变化规律更新 时区数据文件到tzdata发布2010j。 同时为Taiwan历史修正。

    另外,添加PKST (Pakistan Summer Time)到时区缩写的缺省设置中。