发布日期: 2017-02-09
此版本包含9.4.10的各种修复程序。有关9.4主要版本中的新功能的信息,请查看 第 E.36 节.
运行9.4.X的用户不需要转储/恢复。
但是,如果您的安装受到以下修改列表第一项中描述的错误的影响, 那么在更新之后,您可能需要采取措施修复损坏的索引。
另外,如果您是从9.4.10之前的版本升级,请查阅 第 E.26 节。
修复可能会导致使用CREATE INDEX CONCURRENTLY
构建的索引损坏的争用条件
(Pavan Deolasee, Tom Lane)
如果使用CREATE INDEX CONCURRENTLY
构建一个索引,
该索引依赖于先前未编制索引的列,那么通过与CREATE INDEX
命令同时运行的事务更新的行可能收到不正确索引条目。如果您怀疑可能发生了这种情况,
最可靠的解决方案是在安装此更新后重建受影响的索引。
确保用于目录扫描的特殊快照不会因过早的数据修剪而失效 (Tom Lane)
发布最旧的xmin时后端无法解释此快照,可能允许并发清理操作删除仍然需要的数据。 这会导致短暂的故障伴随行“cache lookup failed for relation 1255”。
无条件的WAL记录unlog表的“init fork”创建 (Michael Paquier)
以前,当wal_level = minimal
时会跳过它,
但实际上,即使在这种情况下也需要确保在崩溃后将未记录的表正确地重置为空。
在重建btree索引清理操作期间减少备用服务器上的互锁 (Simon Riggs)
此更改避免了重播此类操作时发生的大量复制延迟。
如果状态收集器在热备用期间死亡,请重新启动它 (Takayuki Tsunakawa)
在备用服务器启动时启用热备用反馈时,确保它能正常工作 (Ants Aasma, Craig Ringer)
在热备用等待冲突查询时检查中断 (Simon Riggs)
避免在极端的情况下不断重新启动自动清理加载进程 (Amit Khandekar)
该修复避免了在名义关闭autovacuum并且有一些表需要冻结, 但所有此类表已由autovacuum工作进程处理的情况下出现问题。
修复对何时可以删除扩展成员对象的检查 (Tom Lane)
扩展升级脚本应该能够删除成员对象, 但是这对于串行列序列以及可能的其他情况是不允许的。
确保当重建索引时,ALTER TABLE
保留索引表空间分配
(Tom Lane, Michael Paquier)
以前default_tablespace的非默认设置会导致索引损坏。
修改使用ALTER TABLE ... ALTER CONSTRAINT
更改外键约束的延迟属性时触发器函数属性的更新不正确 (Tom Lane)
这在后来的外键操作中导致了奇怪的失败,因为触发器在错误的时间被触发。
如果引用的关系存在挂起的触发事件,则防止丢弃外键约束 (Tom Lane)
这避免了“could not find trigger NNN
”
或“relation NNN
has no triggers”错误。
当通过ALTER TABLE ... INHERIT
将具有OID的表关联到具有OID的父项时,
修复OID列的处理 (Amit Langote)
在这种情况下,OID列应该与普通用户列相同,但它不是, 导致在稍后的继承更改中出现奇怪的行为。
修复CREATE OR REPLACE VIEW
在尝试应用新的视图选项之前更新视图查询 (Dean Rasheed)
如果新选项与旧视图定义不一致,以前命令会失败。
在ALTER TEXT SEARCH CONFIGURATION
中报告正确的对象标识
(Artur Zakirov)
将错误的目录OID报告给诸如逻辑解码之类的扩展。
在报告约束违规失败之前检查可串行性冲突 (Thomas Munro)
在使用可串行化事务隔离时,由并发事务引起的任何错误最好表现为序列化失败, 从而提示应用程序重试可能成功。不幸的是,这对于由并发插入引起的重复键失败并不能可靠地发生。 如果应用程序在事务早期明确检查事务中是否存在冲突密钥(并且未找到该密钥), 则此更改可确保将此类错误报告为序列化错误。
在UPDATE
源表达式中防止
foo
.*
的多列扩展
(Tom Lane)
这导致“UPDATE target count mismatch --- internal error”。现在,语法被理解为整行变量,就像在其他上下文中一样。
确保为多行VALUES
构造准确确定了列typmods (Tom Lane)
这解决了当列中第一个值具有可确定的typmod(例如,varchar
值的长度)
但后面的值不共享相同限制时发生的问题。
在Unicode字符串的末尾抛出未完成的Unicode代理对错误 (Tom Lane)
通常,Unicode代理前导字符必须跟随一个Unicode代理尾随字符,
但如果前导字符是Unicode字符串文字(U&'...'
)
或Unicode标识符(U&"..."
)中的最后一个字符,
会丢失此检查。
确保一个纯粹否定的文本搜索查询(如!foo
)
匹配空的tsvector
(Tom Dunstan)
这种匹配是通过GIN索引搜索找到的,但不是通过顺序扫描或GiST索引搜索。
当ts_rewrite()
用一个空查询替换一个非顶级子树时防止崩溃 (Artur Zakirov)
修复ts_rewrite()
中的性能问题 (Tom Lane)
修复ts_rewrite()
对嵌套的NOT运算符的处理
(Tom Lane)
修复array_fill()
以正确处理空数组 (Tom Lane)
修复quote_literal_cstr()
中一个字节的缓冲区溢出
(Heikki Linnakangas)
只有当输入完全由单引号和/或反斜杠组成时才会发生溢出。
防止pg_start_backup()
和pg_stop_backup()
的多个调用同时运行 (Michael
Paquier)
这可以避免断言失败,并且如果有人试图并行运行这些功能,可能会更糟糕。
避免丢弃并不是真的没有操作的interval
到interval
强制转换
(Tom Lane)
在某些情况下,应该导致低位interval
字段清零的强制转换被错误地视为没有操作并丢弃。
例如,从INTERVAL MONTH
转换为INTERVAL YEAR
无法清除月份字段。
确保缓存的计划通过更改外部表选项而失效 (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
修复pg_dump以转储使用内置函数的用户定义的强制转换 (cast)和转换(transform) (Stephen Frost)
如果归档包含无法识别的DROP
命令,
修复使用--create --if-exists
的pg_restore
使其表现得更加理智 (Tom Lane)
这不会修复任何活动错误,但如果将pg_restore 用于由稍后的pg_dump版本生成的归档,它可能会改善此行为。
修复pg_basebackup在存在缓慢I/O时的速率限制 (Antonin Houska)
如果磁盘I/O暂时远低于指定的速率限制,则计算溢出,从而有效禁用剩余运行的速率限制。
修复pg_basebackup处理符号链接的pg_stat_tmp
和pg_replslot
子目录 (Magnus Hagander, Michael Paquier)
包含WAL文件时,修复备用服务器上可能的pg_basebackup故障 (Amit Kapila, Robert Haas)
确保我们为PL/Python创建的Python异常对象被正确引用计数 (Rafa de la Torre, Tom Lane)
这样可以避免在Python垃圾回收循环发生后使用对象时出现故障。
修复PL/Tcl以支持将.tupno
作为列名的表的触发器 (Tom Lane)
这与PL/Tcl的spi_exec
和spi_execp
命令的(以前未记录的)行为相匹配,即只有在没有真正的列名称时才插入
.tupno
列。
在~/.pgpass
文件中允许DOS风格的行结尾,即使在Unix上也是如此
(Vik Fearing)
这一更改简化了Unix和Windows机器上相同密码文件的使用。
如果给ecpg指定了一个以点结尾的文件名, 则修复一个字节的缓冲区溢出 (Takayuki Tsunakawa)
修复ALTER DEFAULT PRIVILEGES
的
psql的tab完成 (Gilles Darold, Stephen Frost)
在psql中,将PAGER
环境变量的空白或全空白设置视为“no pager” (Tom Lane)
以前,这样的设置导致用于分页的输出完全消失。
改进contrib/dblink
对低级
libpq错误的报告,比如内存不足
(Joe Conway)
当使用contrib/postgres_fdw
外部服务器作为连接选项的来源时,
让contrib/dblink
忽略不相关的服务器选项
(Corey Huinker)
以前,如果外部服务器对象的选项不是libpq连接选项, 则会发生错误。
在Windows上,确保将环境变量更改传播到使用调试选项构建的DLL (Christian Ullrich)
将我们的时区库副本与IANA发行版tzcode2016j同步 (Tom Lane)
这解决了各种问题,尤其是如果目标目录不支持硬链接,时区数据安装失败。
将时区数据文件更新为tzdata release 2016j。 用于北塞浦路斯(增加一个新区域Asia/Famagusta)、俄罗斯 (增加一个新区域Europe/Saratov)、汤加和南极洲/凯西的DST法律变更。 对意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史性更正。 为汤加切换至更受欢迎的数字区域缩写。