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

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

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

E.5. 版本 9.1.20 #

发行日期

2016-02-11

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

E.5.1. 迁移到版本 9.1.20

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

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

E.5.2. 变更

  • 修复正则表达式中的无限循环和缓冲区越界问题(Tom Lane)

    方括号表达式中非常大的字符范围在某些情况下可能导致无限循环,在另一些情况下可能导致内存覆写。(CVE-2016-0773)

  • 如果postmaster.pid文件被移除则执行立即关闭(Tom Lane)

    postmaster 现在大约每分钟检查一次postmaster.pid是否仍然存在且仍包含自己的 PID。如果不是,它会执行立即关闭,就像收到SIGQUIT一样。此变更的主要目的是确保失败的 buildfarm 运行无需人工干预即可被清理;同时也可在 DBA 强行删除postmaster.pid并启动新 postmaster 时限制不良影响。

  • SERIALIZABLE事务隔离模式下,插入期间的竞争条件可能导致漏掉串行化异常(Kevin Grittner, Thomas Munro)

  • 修复对非日志关系执行ALTER TABLE ... SET TABLESPACE时未发出适当 WAL 记录的问题(Michael Paquier、Andres Freund)

    尽管关系的数据是非日志的,但移动操作本身必须被记录,否则在备库提升为主库后该关系将不可访问。

  • 修复崩溃恢复结束时非日志关系可能被错误初始化的问题(Andres Freund, Michael Paquier)

  • 修复ALTER COLUMN TYPE以正确重建继承的检查约束(Tom Lane)

  • 修复REASSIGN OWNED以正确更改组合类型的所有权(Álvaro Herrera)

  • 修复REASSIGN OWNEDALTER OWNER在更改数据类型、外部数据包装器或外部服务器的所有者时正确更新已授权权限列表的问题(Bruce Momjian, Álvaro Herrera)

  • 修复REASSIGN OWNED忽略外部用户映射而不是报错的问题(Álvaro Herrera)

  • 当 GIN 索引的内部统计信息严重过时时,增加更多针对规划器错误代价估计的防护(Tom Lane)

  • 使规划器能够处理由索引顾问插件建议的假设性 GIN 索引(Julien Rouhaud)

  • 修复ROW()VALUES()列表中整行 Var 的转储问题(Tom Lane)

  • 修复numeric除法中可能出现的内部溢出(Dean Rasheed)

  • 修复正则表达式先行约束中括号内限制的执行(Tom Lane)

    根据手册,先行约束不允许包含反向引用,且其中的括号始终被视为非捕获括号。但代码未能正确处理括号子表达式内的这些情况,会给出意外的结果。

  • 将正则表达式转换为索引扫描边界时,可能从包含向前看约束的正则表达式生成错误边界(Tom Lane)

  • 修复正则表达式编译器使其处理约束弧构成的环(Tom Lane)

    为 CVE-2007-4772 添加的代码既不完整——未能处理涉及多个状态的环——又不正确——可能导致断言失败(不过在非断言构建中似乎没有不良后果)。多状态环会使编译器一直运行,直到查询被取消或达到状态数过多的错误条件。

  • 改进正则表达式编译器中的内存用量统计(Tom Lane)

    这使代码在一些以前耗费不合理时间和内存量的情况下发出 regular expression is too complex 错误。

  • 改进正则表达式编译器的性能(Tom Lane)

  • 使 log_line_prefix 中的 %h%r 转义对因 log_connections 而发出的消息也生效(Tom Lane)

    以前,%h/%r 要等到新会话发出connection received日志消息之后才开始生效;现在它们对该消息也生效。

  • 在 Windows 上,确保不需要共享内存映射句柄的子进程关闭该句柄(Tom Lane、Amit Kapila)

    只要 logging_collector 处于开启状态,这一疏忽就会导致无法从崩溃中恢复。

  • 修复 Windows 上非阻塞模式下可能无法检测套接字 EOF 的问题(Tom Lane)

    目前尚不完全清楚此问题是否会在 9.5 之前的分支中发生,但如果发生,其症状将是 walsender 进程无限等待而不是察觉到连接丢失。

  • 避免 SSPI 身份验证期间泄漏令牌句柄(Christian Ullrich)

  • psql 中,确保当终端窗口大小改变时更新 libreadline 所认知的屏幕尺寸(Merlin Moncure)

    此前,如果窗口在查询输出期间被调整大小,libreadline 不会察觉,导致之后输入多行查询时出现奇怪的行为。

  • 修复 psql\det 命令,使其以与其他可能带模式限定模式的 \d 命令相同的方式解释模式参数(Reece Hart)

  • 避免在以下情况下psql\c命令可能崩溃:先前连接是通过 Unix 套接字建立的,而命令指定了新的主机名和相同的用户名(Tom Lane)

  • pg_ctl start -w 中,直接测试子进程状态而不是依赖启发式方法(Tom Lane、Michael Paquier)

    此前,pg_ctl 依赖一个假设:新的 postmaster 总会在五秒内创建 postmaster.pid。但在高负载系统上这可能失败,导致 pg_ctl 错误地报告 postmaster 启动失败。

    除 Windows 外,此变更还意味着紧接另一个此类命令之后执行的 pg_ctl start -w 现在会可靠地失败,而此前如果在第一条命令后两秒内执行则会报告成功。

  • pg_ctl start -w 中,不再尝试使用通配监听地址连接 postmaster(Kondo Yuta)

    在 Windows 上,如果 listen_addresses 被设置为 0.0.0.0::pg_ctl 将无法检测到 postmaster 的启动,因为它会试图原样使用该值作为要连接的地址,而这行不通。现在改为假定应分别使用 127.0.0.1::1

  • 在 Windows 上的 pg_ctl 中,通过检查服务状态来决定输出发送到哪里,而不是检查标准输出是否为终端(Michael Paquier)

  • pg_dumppg_basebackup 中,采用 GNU 约定来处理超过 8GB 的 tar 归档成员(Tom Lane)

    tar 文件格式的 POSIX 标准不允许归档成员文件超过 8GB,但大多数现代 tar 实现支持解决此问题的扩展。采用这一扩展后,pg_dump 使用 -Ft 时不再在数据超过 8GB 的表上失败,pg_basebackup 也能处理大于 8GB 的文件。此外,还修复了一些可移植性问题,它们可能在某些平台上导致 4GB 到 8GB 之间的成员失败。这些问题有可能因备份文件不可读而造成不可恢复的数据丢失。

  • 修复 pg_dump 处理扩展成员对象时的若干边界 bug(Tom Lane)

  • 使 pg_dump 把视图的触发器标记为需要在其规则之后处理,以防止并行 pg_restore 期间可能出现的失败(Tom Lane)

  • 确保在 pg_dump 中正确引用关系选项值(Kouhei Sutou、Tom Lane)

    不是简单标识符或数字的 reloption 值可能因 pg_dump 发出的 CREATE 语句中的语法错误而导致转储/重载失败。核心 PostgreSQL 目前支持的任何 reloption 都不存在此问题,但扩展可能允许导致该问题的 reloption。

  • 修复pg_upgrade的文件复制代码在 Windows 上正确处理错误的问题(Bruce Momjian)

  • pgbench 中加入防护,防止计算脚本指定的除法或取模运算符期间的边界溢出情况(Fabien Coelho、Michael Paquier)

  • 防止某些 PL/Java 参数被非超级用户设置(Noah Misch)

    此变更缓解了 PL/Java 的一个安全 bug(CVE-2016-0766),该 bug 在 PL/Java 中已通过把这些参数标记为仅超级用户可用来修复。为了保护那些更新 PostgreSQLPL/Java 更频繁的站点,核心代码现在也识别这些参数。

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

  • 修复ecpg生成的typedef语句中参数顺序错误的问题(Michael Meskes)

  • ecpgPGTYPESnumeric_from_double()中使用%g而非%f格式(Tom Lane)

  • 修复 ecpg 提供的头文件,使其不包含从预处理指令行延续到下一行的注释(Michael Meskes)

    这样的注释会被 ecpg 拒绝。尚不清楚是否应该更改 ecpg 本身。

  • 确保contrib/pgcryptocrypt()函数可以被查询取消中断(Andreas Karlsson)

  • 接受晚于 2.5.x 的flex版本(Tom Lane、Michael Paquier)

    由于 flex 2.6.0 已发布,需要调整构建脚本中的版本检查。

  • 将我们的missing脚本安装到 PGXS 构建能找到的位置(Jim Nasby)

    这使得在缺少bison等构建工具的机器上进行 PGXS 构建时能有合理的行为。

  • 确保 dynloader.h 包含在 MSVC 构建安装的头文件中(Bruce Momjian、Michael Paquier)

  • 新增变体回归测试期望输出文件,以匹配当前libxml2的行为(Tom Lane)

    libxml2对 CVE-2015-7499 的修复导致它在某些过去会输出错误上下文报告的情况下不再输出。这似乎是一个缺陷,但我们可能不得不在一段时间内接受它,因此做了变通处理。

  • 把时区数据文件更新到 tzdata 2016a 版,涉及开曼群岛、梅特拉卡特拉和外贝加尔边疆区的夏令时法规变更,以及巴基斯坦的历史数据修正。

提交更正

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