企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.49\. 发布8.4.4 > **发布日期:** 2010-05-17 该发布包含来自8.4.3的各种修复。关于8.4主要版本中的新特性的信息, 请参阅[Section E.53](#calibre_link-49)。 ## 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`的时候, 为继承`UPDATE`和`DELETE`目标表执行约束排除(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)到时区缩写的缺省设置中。