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

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

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

E.53. 版本 9.1.23 #

发行日期:. 2016-08-11

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

PostgreSQL 社区将于 2016 年 9 月停止对 9.1.X 版本系列的更新。建议用户尽快更新到较新的版本分支。

E.53.1. 迁移到版本 9.1.23

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

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

E.53.2. 变更

  • 修复嵌套 CASE-WHEN 表达式可能被错误评估的问题(Heikki Linnakangas、Michael Paquier、Tom Lane)

    出现在另一个 CASE 的测试值子表达式中的 CASE 表达式,可能会混淆其自身的测试值是否为空。此外,内联实现 CASE 表达式所用相等操作符的 SQL 函数时,可能向该 SQL 函数体内 CASE 表达式中调用的函数传递错误的测试值。如果测试值的数据类型不同,可能导致崩溃;而且此类情况可被滥用以泄露服务器内存的部分内容。(CVE-2016-5423)

  • 修复客户端程序对数据库名和角色名中特殊字符的处理(Noah Misch、Nathan Bossart、Michael Paquier)

    vacuumdb 及其他客户端程序中的许多地方,可能会被包含双引号或反斜杠的数据库名和角色名弄混。收紧引用规则以使其安全。同时确保当 conninfo 字符串被用作这些程序的数据库名参数时,全程都被正确地如此对待。

    修复 psql\connect\password 命令中对成对双引号的处理,使其与文档一致。

    psql\connect 命令中引入新的 -reuse-previous 选项,以显式控制是否复用先前连接的连接参数。(若不使用该选项,则与以前一样,根据数据库名是否看起来像 conninfo 字符串来决定。)这使 pg_dumpall 脚本能够安全地处理包含特殊字符的数据库名。

    pg_dumpall 现在拒绝处理包含回车或换行的数据库名和角色名,因为在 Windows 上安全地引用这些字符似乎不切实际。将来我们可能会在服务器端拒绝此类名称,但尚未采取这一步骤。

    这些被视为安全修复,因为包含特殊字符的恶意构造的对象名,可能在超级用户下次执行 pg_dumpall 或其他例行维护操作时被用于以超级用户权限执行命令。(CVE-2016-5424)

  • 修复对嵌套组合值应用 IS NULL/IS NOT NULL 时的边界错误行为(Andrew Gierth、Tom Lane)

    SQL 标准规定,对于全空值的行,IS NULL 应返回 TRUE(因此 ROW(NULL,NULL) IS NULL 得到 TRUE),但这并不意味着递归适用(因此 ROW(NULL, ROW(NULL,NULL)) IS NULL 得到 FALSE)。核心执行器对此处理正确,但某些规划器优化把该测试当作递归的(因而在两种情况下都产生 TRUE),而 contrib/postgres_fdw 可能产生类似错误行为的远程查询。

  • 使 inetcidr 数据类型正确拒绝包含过多冒号分隔字段的 IPv6 地址(Tom Lane)

  • 防止 close_ps()point ## lseg 操作符)在输入坐标为 NaN 时崩溃(Tom Lane)

    使其返回 NULL 而不是崩溃。

  • 修复 to_number() 中几处一字节缓冲区过读(Peter Eisentraut)

    在几种情况下,to_number() 函数会从输入字符串中多读取一个字符。如果输入恰好位于内存末尾附近,则有很小的崩溃可能。

  • 避免在经过 heap_update() 的高开销路径中出现不安全的中间状态(Masahiko Sawada、Andres Freund)

    以前,这些情况会锁定目标元组(通过设置其 XMAX),但不为该动作记录 WAL,因此如果页面被刷出到磁盘,随后在元组更新完成之前发生数据库崩溃,就有数据完整性问题的风险。

  • 避免在 VACUUM 期间消耗事务 ID(Alexander Korotkov)

    VACUUM 中的某些情况会不必要地导致向当前事务分配 XID。通常这可以忽略不计,但如果已接近 XID 回卷限制,在防回卷清理期间消耗更多 XID 就非常糟糕了。

  • 避免在VACUUM FREEZE期间取消热备查询(Simon Riggs, [Aacute]lvaro Herrera)

    在原本空闲的主库服务器上执行VACUUM FREEZE可能导致其备库服务器上的查询被不必要地取消。

  • 当手动 ANALYZE 指定列列表时,不要重置表的 changes_since_analyze 计数器(Tom Lane)

    如果只分析部分列,就不应阻止其他列的例行自动分析。

  • 修复 ANALYZE 对包含大量空值的唯一或近似唯一列的 n_distinct 高估(Tom Lane)

    空值可能被当作它们本身就是不同的值来计数,导致某些类型查询中规划器的严重误估。

  • 防止自动清理为同一共享目录启动多个工作进程([Aacute]lvaro Herrera)

    通常这不是什么大问题,因为清理本来就不会花很长时间;但在目录严重膨胀的情况下,这可能导致除一个工作进程外的所有工作进程都在无用地等待,而不是对其他表做有用的工作。

  • 修复 contrib/btree_gin,使其正确处理 bigint 的最小可能值(Peter Eisentraut)

  • 让 libpq 能正确解码来自未来版本服务器的服务器版本号(Peter Eisentraut)

    计划在 9.6 之后的版本中把服务器版本号从三段式改为两段式。确保 PQserverVersion() 在此类情况下返回正确的值。

  • 修复 ecpgunsigned long long 数组元素的代码(Michael Meskes)

  • 使 pg_basebackup 接受 -Z 0 表示不压缩(Fujii Masao)

  • 恢复 pg_ctl start -w 的旧启发式超时(Tom Lane)

    9.1.20 采用的新方法在启用 silent_mode 时不工作,因此改回旧方法。

  • 修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全(Noah Misch)

  • 修复 TAP 测试和 MSVC 脚本,使其在构建目录路径名包含空格时也能工作(Michael Paquier、Kyotaro Horiguchi)

  • 使回归测试在丹麦语和威尔士语区域设置下安全(Jeff Janes、Tom Lane)

    修改了一些会触发这些区域设置特殊排序规则的测试数据。

  • 更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版(Tom Lane)

    这是为了应对时区数据文件未来预期的变更。它还修复了处理特殊时区方面的一些边界 bug。

  • 把时区数据文件更新到 tzdata 2016f 版,涉及克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史数据修正。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。