pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
发行日期:. 2015-10-08
本次发布包含对 9.1.18 的多方面修复。有关 9.1 大版本中新特性的信息,请参见 第 E.76 节。.
修复contrib/pgcrypto以检测并报告过短的crypt()盐值(Josh Kupershmidt)
某些无效的盐值参数会导致服务器崩溃或泄露少量服务器内存字节。我们尚未排除通过安排让泄露字节中出现机密信息实施攻击的可行性,但这种攻击似乎不太可能。(CVE-2015-5288)
修复属于外部子事务的门户(游标)失败后的子事务清理问题(Tom Lane、Michael Paquier)
在外部子事务游标中执行的函数可能因引用在内部子事务中创建的关系而导致断言失败或崩溃。
修复关系插入关系缓存“init 文件”的问题(Tom Lane)
最近几个小版本中一个补丁的疏忽导致pg_trigger_tgrelid_tgname_index被遗漏在 init 文件之外。后续会话检测到这一点后认定 init 文件已损坏并静默忽略它,导致会话启动时间显著退化。除修复该缺陷外,还加入了一些防护,使未来任何类似错误更明显。
避免向 SPI 查询结果插入大量元组时的 O(N^2) 行为(Neil Conway)
改进存在大量未读通知时LISTEN的启动时间(Matt Newell)
回移植 9.3 时代新增的逐资源所有者锁缓存(Jeff Janes)
当 pg_dump 尝试转储大量表时,这能显著提升性能。
默认禁用 SSL 重新协商(Michael Paquier、Andres Freund)
虽然使用 SSL 重新协商在理论上是个好主意,但实践中我们看到了太多缺陷,无论是底层 OpenSSL 库中还是我们对它的使用中。重新协商将在 9.5 及更高版本中完全移除。在较旧的分支中,只是把ssl_renegotiation_limit的默认值改为零(禁用)。
降低*_freeze_max_age参数的最小值(Andres Freund)
这主要是为了使相关行为的测试不那么耗时,但对磁盘空间有限的安装也可能有价值。
将wal_buffers的最大值限制为 2GB 以避免服务器崩溃(Josh Berkus)
修复numeric值相乘时罕见的内部溢出(Dean Rasheed)
防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出(Noah Misch)
修复日期时间输入中DOW和DOY的处理(Greg Stark)
这些记号本不应在日期时间值中使用,但过去它们导致的是难懂的内部错误消息,而不是“无效的输入语法”。
在正则表达式匹配中增加更多查询取消检查(Tom Lane)
为正则表达式、SIMILAR TO和LIKE匹配增加递归深度保护(Tom Lane)
合适的搜索模式加上较低的栈深度限制可能导致栈越界崩溃。
修复正则表达式执行中潜在的无限循环(Tom Lane)
一个表面上能匹配零长度字符串、但实际上因反向引用而不匹配的搜索模式可能导致无限循环。
修复正则表达式编译中的内存不足失败(Andreas Seltenreich)
修复正则表达式执行期间低概率的内存泄漏(Tom Lane)
修复事务中止期间锁清理中罕见的内存不足失败(Tom Lane)
修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题(Tom Lane)
修复qsort中极低概率的栈越界(Tom Lane)
修复在使用较大work_mem设置的哈希连接中出现“无效的内存分配请求大小”失败的问题(Tomas Vondra, Tom Lane)
修复若干规划器缺陷(Tom Lane)
这些错误可能导致给出错误结果的错误查询计划、启用断言的构建中的断言失败,或奇怪的规划器错误,例如“could not devise a query plan for the given query”、“could not find pathkey item to sort”、“plan should not reference subplan's variable”或“failed to assign all NestLoopParams to plan nodes”。感谢 Andreas Seltenreich 和 Piotr Stefaniak 通过模糊测试暴露了这些问题。
在所有受支持的分支中使用模糊路径代价平局判定规则(Tom Lane)
此变更旨在避免当候选计划选项的估计代价实际相同时出现平台特定的行为。
确保在 postmaster 启动时移除备库提升触发文件(Michael Paquier、Fujii Masao)
这可以防止这些文件出现在用于初始化新备库服务器的数据库备份中时发生不需要的提升。
在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字(Tom Lane)
这可以避免外部脚本在pg_ctl stop一返回就尝试启动新 postmaster 时出现竞争条件失败。
修复 postmaster 对崩溃恢复期间启动进程崩溃的处理(Tom Lane)
如果在崩溃恢复周期中,启动进程在尚未恢复数据库一致性时崩溃,我们会尝试启动一个新的启动进程,而这通常只会再次崩溃,导致无限循环。
当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度(Tom Lane)
防止服务器时钟被大幅回拨时自动清理启动器睡眠时间过长([Aacute]lvaro Herrera)
确保 GIN 索引待插入列表的清理可被取消请求中断(Jeff Janes)
允许重用 GIN 索引中的全零页(Heikki Linnakangas)
崩溃之后可能遗留这样的页。
修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告(Thomas Munro)
修复PL/pgSQL错误上下文消息中CONTINUE和MOVE语句类型误报的问题(Pavel Stehule, Tom Lane)
修复PL/Perl以正确处理非ASCII错误消息文本(Alex Hunsaker)
修复PL/Python在返回record结果的字符串表示时崩溃的问题(Tom Lane)
修复PL/Tcl中一些未检查malloc()调用失败的位置(Michael Paquier, [Aacute]lvaro Herrera)
在 contrib/isn 中,修复以 979 开头的 ISBN-13 号码的输出(Fabien Coelho)
以 979(但不以 9790)开头的 EAN 被视为 ISBN,但它们必须以新的 13 位格式而非 10 位格式打印。
改进libpq对内存耗尽情况的处理(Michael Paquier, Heikki Linnakangas)
修复ecpg中的内存泄漏和缺失的内存不足检查(Michael Paquier)
修复 psql 中对数字输出的区域感知格式化代码(Tom Lane)
\pset numericlocale on 所调用的格式化代码在一些不常见的情况下会出错,例如带指数但没有小数点的数字。它还可能破坏 money 数据类型已经区域化的输出。
防止在没有当前连接时psql的\c命令崩溃(Noah Misch)
修复pg_dump目录输出格式中默认zlib压缩级别的选择问题(Andrew Dunstan)
确保pg_dump以tar格式输出运行期间创建的临时文件不被全局可读(Michael Paquier)
修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况(Marti Raudsepp, Bruce Momjian)
修复 pg_dump 从过于陈旧而没有特定权限类型的服务器转储时对对象权限的处理(Tom Lane)
从 7.3 之前的服务器转储函数或过程语言时,pg_dump 会生成撤销所有者可授予权限、转而把所有权限授予 PUBLIC 的 GRANT/REVOKE 命令。由于涉及的权限只是 USAGE 和 EXECUTE,这不构成安全问题,但这确实是对旧系统行为令人惊讶的表示。已修复为在这些情况下保持默认权限状态不变。
修复pg_dump以转储 shell 类型(Tom Lane)
shell 类型(即尚未完全定义的类型)用处不大,但pg_dump仍应转储它们。
修复pg_dump及其他客户端程序中的若干小内存泄漏(Michael Paquier)
修复 PPC 硬件的自旋锁汇编代码使其与AIX本机汇编器兼容(Tom Lane)
如果gcc被配置为使用本机汇编器(这正变得越来越普遍),则用gcc构建无法工作。
在AIX上,测试-qlonglong编译器选项,而不是直接假定它可以安全使用(Noah Misch)
在AIX上,使用-Wl,-brtllib链接选项以允许符号在运行时解析(Noah Misch)
Perl 5.8.0 及更高版本依赖这一能力。
由于编译器缺陷,在使用 32 位xlc编译时避免使用内联函数(Noah Misch)
必要时使用librt提供sched_yield(),某些 Solaris 版本即是如此(Oskari Saarenmaa)
修复 Windowsinstall.bat脚本以处理包含空格的目标目录名(Heikki Linnakangas)
使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用(Michael Paquier)
将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。