企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.12\. 发布9.1.7 > **发布日期:** 2012-12-06 此版本包含了9.1.6的各种修复。 关于9.1主要版本中新功能的信息, 参阅[Section E.19](#calibre_link-148)。 ## E.12.1\. 迁移到版本9.1.7 为了运行在9.1.X上不需要转储/恢复。 然而,如果你正从9.1.6早期版本更新,那么参阅9.1.6发布说明。 ## E.12.2\. 变化 * 修复与`CREATE INDEX CONCURRENTLY` 相关的多个错误(Andres Freund, Tom Lane) 当改变索引的`pg_index`行状态时, 修复`CREATE INDEX CONCURRENTLY`使用适当更新。 这可以防止导致并发会话错过更新目标索引的竞争条件, 因此导致崩溃同时创建索引。 同时,修复各种其他操作以确保他们忽略来源于 失败的 `CREATE INDEX CONCURRENTLY`命令的无效索引。 这些中最重要的是`VACUUM`, 因为在采取的纠正措施用于修复或删除无效索引之前, 在表上自动清理可以很容易地被运行。 * 在WAL回放期间修复缓冲区锁定(Tom Lane) 当回放影响多页的WAL记录时,WAL回放代码对于锁定缓冲区不够小心。 这可能热备份查询瞬时看到不一致的状态, 导致错误结果或意外的失败。 * 修复GIN索引的WAL生成逻辑的错误(Tom Lane) 如果发生残缺页故障,那么这会导致索引崩溃。 * 当推进热备份服务器正常运行时, 正确删除启动进程的虚拟XID锁(Simon Riggs) 这种监督可以防止 某个操作的后续执行比如`CREATE INDEX CONCURRENTLY`。 * 在待机模式下 避免虚假"out-of-sequence timeline ID"错误(Heikki Linnakangas) * 在接收到停机信号后,防止发起新的子进程的postmaster(Tom Lane) 这个错误可能导致关闭更长比它应该的, 或者没有额外用户操作甚至不能完成。 * 当内存不足时,那么避免内部哈希表的崩溃(Hitoshi Harada) * 避免已删除表的文件描述符可以保持打开以往事务结束(Tom Lane) 这可以减少长时间已删除表继续占用磁盘空间的问题。 * 当一个新的子进程不能为它的锁创建一个管道,那么防止 数据库端崩溃以及重启(Tom Lane) 尽管新的进程失败, 没有充分的理由强迫数据库端重启,所以避免它。 当内核基本没有文件描述符时,那么这提高了鲁棒性。 * 修复外连接上非严格等价分句规划(Tom Lane) 规划器可以从等同于其它东西的非严格建构的分句中获取不正确约束, 比如 当`foo`来源于外连接失效端时,`WHERE COALESCE(foo, 0) = 0`。 * 在继承树上使用索引优化的`MIN`/`MAX` 修复`SELECT DISTINCT`(Tom Lane) 该规划器伴随着"没有重新找到MinMaxAggInfo记录"给定这些结合因素而失败。 * 提高从等价类证实排他约束的规划器能力(Tom Lane) * 修复在哈希子计划中部分行匹配以正确处理交叉类型情况(Tom Lane) 这影响多列`NOT IN`子计划, 比如`WHERE (a, b) NOT IN (SELECT x, y FROM ...)` 当比如`b`和`y`分别是`int4` 和`int8`的时候。这个错误导致错误结果 或者取决于依赖于涉及到的特定数据类型的崩溃。 * 当为`AFTER ROW UPDATE/DELETE`触发器重新读取旧的元组时, 那么获取缓冲锁(Andres Freund) 在非常罕见的情况下, 这一疏忽可能导致传递不正确数据到触发器`WHEN`条件, 或者为外键执行触发器预检查逻辑。这可能导致崩溃, 或者关于是否触发触发器的错误决定。 * 修复`ALTER COLUMN TYPE`以 正确处理已继承的检查约束(Pavan Deolasee) 这在8.4版本之前正常运行, 并且现在在8.4以及以后也正常运行。 * 修复`ALTER EXTENSION SET SCHEMA`的错误 以移动一些子对象到新的模式(Álvaro Herrera, Dimitri Fontaine) * 修复`REASSIGN OWNED`以 处理表空间授权(Álvaro Herrera) * 忽略视图系统列中不正确的`pg_attribute`项(Tom Lane) 视图没有任何系统列。然而,当转换表到视图时,我们忘了删除这项。 9.3以及以后的正确修复,但是在以前的分支中我们需要防御已经存在的 错误转换视图。 * 修复规则输出以正确备份 `INSERT INTO` `_table_`DEFAULT VALUES(Tom Lane) * 当在查询中有很多`UNION`/`INTERSECT`/`EXCEPT`子句时, 避免栈溢出(Tom Lane) * 当将最小可能整数值除以-1时,避免平台相关故障(Xi Wang, Tom Lane) * 修复日期解析中字符串可能的访问先前终止部分(Hitoshi Harada) * 在检查点期间如果产生XID重叠,修复先前XID纪元错误,并且 `wal_level`是`hot_standby` (Tom Lane, Andres Freund) 当这个错误对PostgreSQL自身没有特别影响, 对于依赖于`txid_current()`和相关函数:TXID值可能出现回退, 这是一个不好的应用。 * 修复页面边界上`pg_stat_replication`.`sync_state` 的显示(Kyotaro Horiguchi) * 如果为了Unix域套接字路径名长度超过了特定平台限制, 那么产生一个可理解的错误信息(Tom Lane, Andrew Dunstan) 以前,这可能导致一些无用的东西,比如 "域名解析中不可恢复错误" * 当发送复合列值到客户端时,修复内存泄露(Tom Lane) * 使得pg_ctl对读取`postmaster.pid` 文件更具有鲁棒性(Heikki Linnakangas) 修复竞争条件和可能的文件描述符泄露。 * 如果提出错误的编码数据,修复psql中可能的错误, 并且`client_encoding`设置是客户端编码,比如SJIS (Jiang Guiqing) * 在不是归档的预先数据部分的数据中使得 pg_dump备份`SEQUENCE SET`项(Tom Lane) 该变化修复被标记为扩展配置表的序列的备份。 * 修复在`tar`输出格式中通过pg_dump 发出的`restore.sql`脚本中的错误(Tom Lane) 该脚本可能在它的名字包含大写字符的表中完全失败。 另外,使得脚本有能力存储数据到 `--inserts`模式和规则的COPY模式。 * 修复pg_restore以 接受POSIX标准`tar`文件(Brian Weaver, Tom Lane) pg_dump的`tar`输出模式的原编码产生与 POSIX标准不完全一致的文件。这是9.3版本的校正。 这个补丁更新先前分支,以致于它们接受正确的和不正确格式, 当发布9.3时,希望避免兼容性问题。 * 修复通过pg_basebackup到POSIX一致 发出的`tar`文件(Brian Weaver, Tom Lane) * 当给定一个数据目录的相对路径时,修复pg_resetxlog 以正确定位`postmaster.pid`(Tom Lane) 这个错误可能导致pg_resetxlog没有注意到 有使用数据目录的活跃postmaster。 * 修复libpq的`lo_import()`和 `lo_export()`函数以正确报告文件I/O错误(Tom Lane) * 修复嵌套结构指针变量的ecpg处理(Muhammad Usama) * 修复ecpg的`ecpg_get_data`函数 以正确处理数组(Michael Meskes) * 当正在检查页的时候,使得`contrib/pageinspect`的btree 页检查函数带有缓冲锁(Tom Lane) * 确保`make install`为扩展创建`extension` 安装目录(Cédric Villemain) 先前,如果在扩展的Makefile中设置`MODULEDIR`,可以忽略这步。 * 修复pgxs在AIX上支持创建可加载模块(Tom Lane) 编译起初源码树外部模块在AIX上不工作。 * 在Cuba, Israel, Jordan, Libya, Palestine, Western Samoa以及Brazil地区中为DST变化规律更新时区数据文件到 tzdata发布2012j。