ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# E.51\. 发布8.4.2 > **发布日期:** 2009-12-14 该发布包含来自8.4.1的各种修复。关于8.4主要发布中的新特性信息, 参阅[Section E.53](#calibre_link-49)。 ## E.51.1\. 迁移到版本8.4.2 运行8.4.X不需要备份/恢复。然而,如果有任何散列索引,在更新到8.4.2之后你应该 `REINDEX`它们,以修复可能受损。 ## E.51.2\. 变化 * 防止通过索引函数改变会话局部状态引起的间接安全威胁(Gurjeet Singh, Tom) 这一变化防止不变的索引函数打断超级用户会话(CVE-2009-4136)。 * 拒绝在普通名字(CN)字段中包含嵌入的空字节的SSL证书(Magnus) 这避免在SSL认证期间来自服务器或者客户端名字的证书的意外匹配(CVE-2009-4034)。 * 修复散列索引损坏(Tom) 该8.4变化使得散列索引保持通过散列值未能更新大量分裂和紧缩程序以保持排序的项。 所以这些操作的任何应用程序可能导致索引的永久性损坏,在这个意义上, 搜索可能无法找到存在的项。为了处理这个,推荐你已安装此更新后`REINDEX`任何散列索引。 * 修复后台启动时缓存初始化期间可能崩溃(Tom) * 避免空的同义词词典崩溃(Tom) * 避免在不安全时间中断`VACUUM`信号(Alvaro) 如果已经坚定元组动作之后取消了`VACUUM FULL`,该修复阻止PANIC。 如果在截断该表之后中断普通的`VACUUM`,阻止瞬态错误。? * 由于在哈希表大小计算中整数溢出,修复可能崩溃(Tom) 这可能发生大的规划器评估哈希连接结果。 * 如果在内部依赖对象上尝试`DROP`,修复崩溃(Tom) * 修复`inet`/`cidr`比较中稀少崩溃现象(Chris Mikkelson) * 确保不忽略通过预备事务持有的共享元组级别锁(Heikki) * 修复用于在子事务中访问的游标临时文件的提早删除(Heikki) * 当旋转到新的CSV日志文件时,修复syslogger处理中内存泄露(Tom) * 当重新解析`pg_hba.conf`的时候,修复postmaster中的内存泄露(Tom) * 修复Windows权限下降逻辑(Jesse Morris) 这修复了数据库在Windows上启动失败的一些情况, 通常带有误导性错误信息比如"不能定位匹配postgres可执行程序"。 * 使得在主查询中`FOR UPDATE/SHARE`不扩大到`WITH`查询中(Tom) 比如,在 ``` WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE ``` `FOR UPDATE`将影响`bar`而不是`foo`。 这比原来8.4操作更有用而且更加一致, 尝试扩散`FOR UPDATE`到`WITH`查询中, 但是却总是失败,因为匹配实现限制。它也遵循设计规则,如果主查询独立,执行`WITH`查询。 * 修复在另外一个中使用`WITH RECURSIVE`查询的错误(Tom) * 修复散列索引的并发错误(Tom) 并发插入可能导致索引扫描瞬时报告错误结果。 * 当分割取决于索引的非首列时,修复GiST索引页分割错误逻辑(Paul Ramsey) * 修复为多列GIN索引使用`fastupdate`激活的错误搜索结果(Teodor) * 修复GIN索引WAL项创建中的错误(Tom) 当`full_page_writes`为on的时候,这些错误被隐藏,但是如果在下一个检查点之前发生崩溃, 那么关闭WAL回放错误是一定的。 * 如果在检查点结尾回收或者删除旧的WAL文件失败,不要出错误(Heikki) 更好地将这个问题作为非致命性的并且允许完成检查点。未来的检查点将重试取消。 这样的问题没有预期的正常运行,但通过错误设计Windows杀毒和备份软件造成的。 * 确保Windows上WAL文件不再被重复归档(Heikki) 如果其他过程干扰不再需要的文件的删除,这可能发生另外一种情况。 * 修复PAM密码处理更加鲁棒性(Tom) 上面的代码伴随着Linux `pam_krb5` PAM模块与作为域控制器的Microsoft动态目录结合而失败。 它可能还有其他问题,因为它采用关于PAM堆栈传递给它什么参数的不合理假设。 * 提高GSSAPI和SSPI认证方法中最大认证令牌(Kerberos ticket)大小(Ian Turner) 当为Unix Kerberos 实现有足够多的旧的2000字节限制时, 通过Windows 域控制器发出标签可以更大。 * 确保域约束在`ARRAY[...]::domain`结构中被强制,其中域不在数值类型中(Heikki) * 修复为涉及复合类型列作为外键的情况中的外键逻辑(Tom) * 确保游标的快照在被创建后不被修改(Alvaro) 如果在同一事务中后续操作修改数据,这可能导致游标传递错误结果,应该返回游标。 * 修复`CREATE TABLE`以正确合并来自不同继承父表的缺省表达式(Tom) 这用于运行,但在8.4中被损坏。 * 重新启用序列访问统计收集(Akira Kurosawa) 这用于运行,但在8.3中被损坏。 * 修复`CREATE OR REPLACE FUNCTION`中所有依赖的处理(Tom) * 修复`WHERE``_x_`=`_x_`条件的错误处理(Tom) 在某些情况下,可以作为冗余忽略,但是它们不是— 它们等价于`_x_` `IS NOT NULL`。 * 当为文本相同易变表达式使用哈希聚合实现`DISTINCT`的时候, 修复不正确规划结构(Tom) * 修复易变`SELECT DISTINCT ON`表达式的断言错误(Tom) * 修复`ts_stat()`而在空的`tsvector`值上不失败(Tom) * 使得文本搜索解析器接受XML属性中下划线(Peter) * 修复`xml`二进制输入中编码处理(Heikki) 如果XML头没有指定编码,我们现在假设缺省UTF-8;先前处理是不一致的。 * 修复从`plperlu`调用`plperl`的错误,反之亦然(Tom) 从内部函数退出的错误可能导致崩溃,由于该错误为外部函数重新选择正确的Perl解释器。 * 当重新定义PL/Perl函数的时候,修复会话存在期内存泄露(Tom) * 当通过集合返回PL/Perl函数返回时,确保Perl数组正确转换为PostgreSQL数组(Andrew Dunstan, Abhijit Menon-Sen) 这些正常运行都为了非集合返回函数。 * 修复PL/Python中异常处理的罕见崩溃(Peter) * 修复`DECLARE CURSOR`语句中注释的ecpg问题(Michael) * 修复ecpg不把最近添加的关键字作为保留字(Tom) 这影响了关键字`CALLED`, `CATALOG`, `DEFINER`, `ENUM`, `FOLLOWING`, `INVOKER`, `OPTIONS`, `PARTITION`, `PRECEDING`, `RANGE`, `SECURITY`, `SERVER`, `UNBOUNDED`和`WRAPPER`。 * 重新允许psql的`\df`函数名字参数中的正则表达式特殊字符(Tom) * 在`contrib/fuzzystrmatch`中,纠正非缺省成本`levenshtein`距离计算(Marcin Mank) * 在`contrib/pg_standby`中,禁用Windows上带有信号触发器转移(Fujii Masao) 这没有什么有用的,因为Windows没有Unix风格讯号,但是最近变化确实崩溃。 * 将`FREEZE` and `VERBOSE`选项以正确顺序放置在`contrib/vacuumdb`产生的 `VACUUM`命令中(Heikki) * 当`contrib/dblink`遇到错误的时候,修复链接的可能泄露(Tatsuhito Kasahara) * 确保psql的flex模块与正确系统标题定义一起被编译(Tom) 这将修复平台上的编译错误,其中`--enable-largefile`在产生代码中导致的 不兼容变化。 * 使得postmaster忽略任何连接请求包中的`application_name`参数, 以优化与未来libpq版本的兼容(Tom) * 更新时区缩写文件以匹配当前实际情况(Joachim Wieland) 这包含添加`IDT`到缺省时区缩写设置。 * 为了Antarctica, Argentina, Bangladesh, Fiji, Novokuznetsk, Pakistan, Palestine, Samoa, Syria中DST变化规律更新时区数据文件到 tzdata发布2009s。也为了Hong Kong历史纠正。