选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.3
历史版本PostgreSQL 9.3 已于 2018 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

E.16. 版本 9.3.10 #

发行日期:. 2015-10-08

本次发布包含对 9.3.9 的多方面修复。 有关 9.3 大版本中新特性的信息,请参见 第 E.26 节。.

E.16.1. 迁移到版本 9.3.10

对于运行 9.3.X 的用户,不需要进行转储/恢复。

不过,如果你是从早于 9.3.9 的版本升级, 请参见 第 E.17 节

E.16.2. 变更

  • 防御json解析中的栈溢出(Oskari Saarenmaa)

    如果应用程序从任意用户输入构造 PostgreSQL jsonjsonb值,应用程序的用户就能可靠地使 PostgreSQL 服务器崩溃,造成短暂的服务拒绝。(CVE-2015-5289)

  • 修复contrib/pgcrypto以检测并报告过短的crypt()盐值(Josh Kupershmidt)

    某些无效的盐值参数会导致服务器崩溃或泄露少量服务器内存字节。我们尚未排除通过安排让泄露字节中出现机密信息实施攻击的可行性,但这种攻击似乎不太可能。(CVE-2015-5288)

  • 修复属于外部子事务的门户(游标)失败后的子事务清理问题(Tom Lane、Michael Paquier)

    在外部子事务游标中执行的函数可能因引用在内部子事务中创建的关系而导致断言失败或崩溃。

  • 确保在更新语句期间正确锁定可更新视图引用的所有关系(Dean Rasheed)

  • 修复关系插入关系缓存init 文件的问题(Tom Lane)

    最近几个小版本中一个补丁的疏忽导致pg_trigger_tgrelid_tgname_index被遗漏在 init 文件之外。后续会话检测到这一点后认定 init 文件已损坏并静默忽略它,导致会话启动时间显著退化。除修复该缺陷外,还加入了一些防护,使未来任何类似错误更明显。

  • 避免向 SPI 查询结果插入大量元组时的 O(N^2) 行为(Neil Conway)

  • 改进存在大量未读通知时LISTEN的启动时间(Matt Newell)

  • 修复会话更改大量外键约束时的性能问题(Jan Wieck、Tom Lane)

    这主要在还原拥有数千张表的数据库的pg_dump输出时出现。

  • 默认禁用 SSL 重新协商(Michael Paquier、Andres Freund)

    虽然使用 SSL 重新协商在理论上是个好主意,但实践中我们看到了太多缺陷,无论是底层 OpenSSL 库中还是我们对它的使用中。重新协商将在 9.5 及更高版本中完全移除。在较旧的分支中,只是把ssl_renegotiation_limit的默认值改为零(禁用)。

  • 降低*_freeze_max_age参数的最小值(Andres Freund)

    这主要是为了使相关行为的测试不那么耗时,但对磁盘空间有限的安装也可能有价值。

  • wal_buffers的最大值限制为 2GB 以避免服务器崩溃(Josh Berkus)

  • 当只能在服务器启动时设置的参数在postgresql.conf中多次出现时,不再记录抱怨日志;并修复include_dir指令之后行号计数错误的问题(Tom Lane)

  • 修复numeric值相乘时罕见的内部溢出(Dean Rasheed)

  • 防御涉及记录类型、范围类型、jsonjsonbtsqueryltxtqueryquery_int的难以触发的栈溢出(Noah Misch)

  • 修复日期时间输入中DOWDOY的处理(Greg Stark)

    这些记号本不应在日期时间值中使用,但过去它们导致的是难懂的内部错误消息,而不是无效的输入语法

  • 在正则表达式匹配中增加更多查询取消检查(Tom Lane)

  • 为正则表达式、SIMILAR TOLIKE匹配增加递归深度保护(Tom Lane)

    合适的搜索模式加上较低的栈深度限制可能导致栈越界崩溃。

  • 修复正则表达式执行中潜在的无限循环(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 querycould not find pathkey item to sortplan should not reference subplan's variablefailed to assign all NestLoopParams to plan nodes。感谢 Andreas Seltenreich 和 Piotr Stefaniak 通过模糊测试暴露了这些问题。

  • 改进规划器在大型继承集合上执行UPDATE/DELETE的性能(Tom Lane, Dean Rasheed)

  • 确保在 postmaster 启动时移除备库提升触发文件(Michael Paquier、Fujii Masao)

    这可以防止这些文件出现在用于初始化新备库服务器的数据库备份中时发生不需要的提升。

  • 在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字(Tom Lane)

    这可以避免外部脚本在pg_ctl stop一返回就尝试启动新 postmaster 时出现竞争条件失败。

  • 修复 postmaster 对崩溃恢复期间启动进程崩溃的处理(Tom Lane)

    如果在崩溃恢复周期中,启动进程在尚未恢复数据库一致性时崩溃,我们会尝试启动一个新的启动进程,而这通常只会再次崩溃,导致无限循环。

  • 使针对多事务 ID 回卷的紧急自动清理更加健壮(Andres Freund)

  • 当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度(Tom Lane)

  • 防止服务器时钟被大幅回拨时自动清理启动器睡眠时间过长([Aacute]lvaro Herrera)

  • 确保 GIN 索引待插入列表的清理可被取消请求中断(Jeff Janes)

  • 允许重用 GIN 索引中的全零页(Heikki Linnakangas)

    崩溃之后可能遗留这样的页。

  • 修复 SP-GiST 索引中对全零页的处理(Heikki Linnakangas)

    VACUUM 曾试图回收此类页,但方式并非崩溃安全。

  • 修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的表面回卷警告(Thomas Munro)

  • 修复PL/pgSQL错误上下文消息中CONTINUEMOVE语句类型误报的问题(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 位格式打印。

  • 改进 contrib/postgres_fdw 对排序规则相关决策的处理(Tom Lane)

    预期主要的用户可见效果是:涉及 varchar 列的比较将比以前在更多情况下被发送到远程服务器执行。

  • 改进libpq对内存耗尽情况的处理(Michael Paquier, Heikki Linnakangas)

  • 修复ecpg中的内存泄漏和缺失的内存不足检查(Michael Paquier)

  • 修复 psql 中对数字输出的区域感知格式化代码(Tom Lane)

    \pset numericlocale on 所调用的格式化代码在一些不常见的情况下会出错,例如带指数但没有小数点的数字。它还可能破坏 money 数据类型已经区域化的输出。

  • 防止在没有当前连接时psql\c命令崩溃(Noah Misch)

  • 使pg_dump正确处理继承的NOT VALID检查约束(Tom Lane)

  • 修复pg_dump目录输出格式中默认zlib压缩级别的选择问题(Andrew Dunstan)

  • 确保pg_dumptar格式输出运行期间创建的临时文件不被全局可读(Michael Paquier)

  • 修复pg_dumppg_upgrade以支持postgrestemplate1数据库位于非默认表空间的情况(Marti Raudsepp, Bruce Momjian)

  • 修复 pg_dump 从过于陈旧而没有特定权限类型的服务器转储时对对象权限的处理(Tom Lane)

    从 9.2 之前的服务器转储数据类型,以及从 7.3 之前的服务器转储函数或过程语言时,pg_dump 会生成撤销所有者可授予权限、转而将所有权限授予 PUBLICGRANT/REVOKE 命令。由于所涉及的权限只是 USAGEEXECUTE,这不构成安全问题,但这种表示与旧系统的行为明显不符。现已修复,在这些情况下保持默认权限状态不变。

  • 修复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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。