企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.59\. 发布8.3.18 > **发布日期:** 2012-02-27 该发布包含来自8.3.17各种修复。关于8.3主要发布中新特性信息, 参阅[Section E.77](#calibre_link-34)。 ## E.59.1\. 迁移到版本8.3.18 运行8.3.X不需要备份/恢复。 然而,如果你从8.3.17更早版本更新,参阅8.3.17发布说明。 ## E.59.2\. 变化 * 为`CREATE TRIGGER`需要触发器函数执行权限(Robert Haas) 这种缺失检查可能允许其他用户执行具有虚假输入数据的触发器函数, 通过所拥有的表上进行安装。 对于触发器函数标记`SECURITY DEFINER`是有意义的, 因为否则作为表的所有者运行触发器函数。 * 转换换行到写入pg_dump中名字中的空格(Robert Haas) pg_dump有关审查其输出脚本中SQL注释中发出的对象名称是不谨慎的。 包含新行的名字至少会呈现脚本语法不正确。 当脚本被重新加载的时候,恶意制作的对象名称可以提出一个SQL注入风险。 * 修复来自清理插入中的btree索引损坏(Tom Lane) 插入造成的索引页拆分有时可能会导致 同时运行`VACUUM`错过删除它应该删除的索引项。 对应表中的行被删除后, 悬空索引项会导致错误(如"不能读取文件块N..."),或者更糟的是,错误查询结果 在不相关行之后重新被插入到已释放表位置。 此bug已自8.2版本中存在, 但发生如此频繁直到现在并没有被诊断。 如果您有理由怀疑它出现在你的数据库中,重新索引受影响的索引会修复该问题。 * 允许`ALTER USER/DATABASE SET`中一些设置的非存在值(Heikki Linnakangas) 允许`default_text_search_config`, `default_tablespace`和`temp_tablespaces`设置为那些不知道的名字。 这是因为它们可能在另一个打算使用该设置的数据库中是已知的,或者表空间中, 因为该表空间可能尚未被创建。同样的问题之前公认为`search_path`, 并且这些设置现在像那一个。 * 正确跟踪WAL回放中OID计数器,即使它绕回(Tom Lane) 之前的OID计数器将继续保持高值,直到系统退出重放模式。 实际结果通常是零,但是存在这种情况,其中备用服务器被提升为主服务器可能需要较长的时间 推进OID计数器到一个合理的值,一旦需要该值的时候。 * 修复附加`*`的正则表达式反向引用(Tom Lane) 不是强制执行精确字符串匹配, 代码将有效地接受任何满足引用反向引用符号的模式子表达式的字符串。 类似的问题仍然困扰嵌入到较大量化表达式中的反向引用, 而不是量词的直接主题。 这将在未来的PostgreSQL版本中得到解决。 * 修复在处理`inet`/`cidr`值中最近引入的内存泄漏(Heikki Linnakangas) 在2011年12月发布PostgreSQL补丁导致操作中内存泄漏, 这可能在下面情况中非常重要,比如在这样的列中构建btree索引。 * 避免Windows上syslogger中文件句柄的双关闭(MauMau) 通常这种错误是不可见的,但是当运行Windows的调试版本时,它可能会导致异常。 * 修复plpgsql中I/O转换相关内存泄露(Andres Freund, Jan Urbanski, Tom Lane) 某些操作可能会造成内存泄漏,直到当前函数结束。 * 提高继承表列的pg_dump处理(Tom Lane) pg_dump处理不当的情况下,子列比其父列有不同的缺省表达式。 如果缺省等同于父缺省,但实际上并不是相同的(比如,因为模式搜索路径差异),它可能 不会被识别为不同的,以便转储之后恢复子列可能被允许继承父缺省。 子列是`NOT NULL`,其中父列不是的也可以错误地被恢复。 * 为INSERT形式表数据修复pg_restore指向数据库模式(Tom Lane) 当使用发布日期为9月或2011年12月份的pg_restore的时候, 直接到数据库从采用`--inserts`或者`--column-inserts`选项的归档文件恢复失败。 作为另一个问题修复的监督结果。 归档文件本身没有过错,而且文本模式输出是好的。 * 修复`contrib/intarray`'s `int[] & int[]`操作符中的错误(Guillaume Lelarge) 如果最小整数的两个输入数组的共同点是1,并且在任何数组中有较小的值, 那么1将被错误地从结果中忽略。 * 修复`contrib/pgcrypto`的 `encrypt_iv()`和`decrypt_iv()`中的错误检测(Marko Kreen) 这些函数没有报告无效输入错误的一些类型, 而是返回不正确输入的随机的垃圾值。 * 修复`contrib/test_parser`中一个字节缓冲区溢出(Paul Guyot) 该代码试图读取一个比它应该更多的字节,在极端情况中可能崩溃。 由于`contrib/test_parser`只是示例代码, 这本身并不是一个安全问题,但糟糕的示例代码仍然很糟糕。 * 如果可用,在ARM上为自旋锁使用`__sync_lock_test_and_set()`(Martin Pitt) 这个函数替代了我们先前使用的`SWPB`指令,它被废弃了, 并且在ARMv6及更高版本中不可用。报告表明旧的代码在最近的ARM上以明显的方式执行, 但根本没有互锁并发访问,导致多进程操作离奇故障。 * 当使用接受它的gcc版本构建的时候,使用`-fexcess-precision=standard`选项(Andrew Dunstan) 这可以防止各类情况,其中最近的gcc版本将产生创造性结果。 * 允许FreeBSD上线程Python的使用(Chris Rees) 我们的配置脚本之前认为这个组合不会正常工作; 但FreeBSD解决了这一问题,所以删除错误检查。