发布日期: 2017-02-09
此版本包含9.6.1的各种修复程序。有关9.6主要版本中的新功能的信息,请查看 第 E.9 节.
运行9.6.X的用户不需要转储/恢复。
但是,如果您的安装受到以下修改列表第一项中描述的错误的影响, 那么在更新之后,您可能需要采取措施修复损坏的索引。
另外,如果您是从9.6.1之前的版本升级,请查阅 第 E.8 节。
修复可能会导致使用CREATE INDEX CONCURRENTLY
构建的索引损坏的争用条件
(Pavan Deolasee, Tom Lane)
如果使用CREATE INDEX CONCURRENTLY
构建一个索引,
该索引依赖于先前未编制索引的列,那么通过与CREATE INDEX
命令同时运行的事务更新的行可能收到不正确索引条目。如果您怀疑可能发生了这种情况,
最可靠的解决方案是在安装此更新后重建受影响的索引。
确保用于目录扫描的特殊快照不会因过早的数据修剪而失效 (Tom Lane)
发布最旧的xmin时后端无法解释此快照,可能允许并发清理操作删除仍然需要的数据。 这会导致短暂的故障伴随行“cache lookup failed for relation 1255”。
修复BRIN索引不正确的WAL日志记录 (Kuntal Ghosh)
将索引元组移动到其他页面时,为BRIN “revmap”页面发出的WAL记录是不正确的。 重放会使索引的相关部分无用,迫使它重新计算。
无条件的WAL记录unlog表的“init fork”创建 (Michael Paquier)
以前,当wal_level = minimal
时会跳过它,
但实际上,即使在这种情况下也需要确保在崩溃后将未记录的表正确地重置为空。
如果状态收集器在热备用期间死亡,请重新启动它 (Takayuki Tsunakawa)
在备用服务器启动时启用热备用反馈时,确保它能正常工作 (Ants Aasma, Craig Ringer)
在热备用等待冲突查询时检查中断 (Simon Riggs)
避免在极端的情况下不断重新启动自动清理加载进程 (Amit Khandekar)
该修复避免了在名义关闭autovacuum并且有一些表需要冻结, 但所有此类表已由autovacuum工作进程处理的情况下出现问题。
不允许在synchronous_standby_names中设置
num_sync
字段为零 (Fujii Masao)
禁用同步备机的正确方法是将整个值设置为空字符串。
不要根据用户的连接限制计算后台工作进程 (David Rowley)
修复对何时可以删除扩展成员对象的检查 (Tom Lane)
扩展升级脚本应该能够删除成员对象, 但是这对于串行列序列以及可能的其他情况是不允许的。
修复跟踪扩展成员对象的初始权限,使其可以正常使用
ALTER EXTENSION ... ADD/DROP
(Stephen Frost)
在添加到扩展中时,对象的当前特权将被视为其默认特权; 只有随后的pg_dump运行才会转储其权限更改。
确保当重建索引时,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 ... SET DATA TYPE ... USING
(Álvaro Herrera)
在USING
表达式中未能调整列编号导致错误,
通常是“attribute N
has wrong type”。
当通过ALTER TABLE ... INHERIT
将具有OID的表关联到具有OID的父项时,
修复OID列的处理 (Amit Langote)
在这种情况下,OID列应该与普通用户列相同,但它不是, 导致在稍后的继承更改中出现奇怪的行为。
确保CREATE TABLE ... LIKE ... WITH OIDS
创建一个带有OID的表,无论LIKE
引用的表是否具有OID (Tom Lane)
修复CREATE OR REPLACE VIEW
在尝试应用新的视图选项之前更新视图查询 (Dean Rasheed)
如果新选项与旧视图定义不一致,以前命令会失败。
在ALTER TEXT SEARCH CONFIGURATION
中报告正确的对象标识
(Artur Zakirov)
将错误的目录OID报告给诸如逻辑解码之类的扩展。
修复提交时间戳机制在查询特殊XID FrozenTransactionId
和BootstrapTransactionId
时不会失败 (Craig Ringer)
修正将视图重定向的不正确的用作常规表重置选项 (Tom Lane)
当INSERT ... ON CONFLICT
的目标是带有级联选项的视图时,
出现的症状是虚假的“ON CONFLICT is not supported on table
... used as a catalog table”错误。
当在宽表上使用ON CONFLICT
时,
修复不正确的 “target lists can have at most N
entries”投诉 (Tom Lane)
修复在具有删除列的表上INSERT
或UPDATE
期间虚假的“query provides a value for a dropped column”错误 (Tom Lane)
在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&"..."
)中的最后一个字符,
会丢失此检查。
修复DISTINCT
的执行,
并在多个此类聚合能够共享相同的转换状态时排序聚合
(Heikki Linnakangas)
修复tsquery
中短语搜索运算符的实现
(Tom Lane)
删除尝试转换掉PHRASE运算符下出现的AND/OR/NOT运算符的错误和不一致应用的重写规则; 而是升级执行引擎以正确处理这些情况。这修复了包含此类组合的文本搜索查询的各种奇怪行为和可能的崩溃。 还修复嵌套的PHRASE运算符以简单的左深树以外的组合方式工作,纠正从短语搜索子句中删除停用词时的行为, 并确保索引搜索的行为与此类查询的简单顺序扫描应用程序一致。
确保一个纯粹否定的文本搜索查询(如!foo
)
匹配空的tsvector
(Tom Dunstan)
这种匹配是通过GIN索引搜索找到的,但不是通过顺序扫描或GiST索引搜索。
当ts_rewrite()
用一个空查询替换一个非顶级子树时防止崩溃 (Artur Zakirov)
修复ts_rewrite()
中的性能问题 (Tom Lane)
修复ts_rewrite()
对嵌套的NOT运算符的处理
(Tom Lane)
提高使用array_append()
作为转换函数的用户定义聚合的速度 (Tom Lane)
修复array_fill()
以正确处理空数组 (Tom Lane)
修复处理记录的数组时,array_position()
或array_positions()
中可能的崩溃
(Junseok Yang)
修复quote_literal_cstr()
中一个字节的缓冲区溢出
(Heikki Linnakangas)
只有当输入完全由单引号和/或反斜杠组成时才会发生溢出。
防止pg_start_backup()
和pg_stop_backup()
的多个调用同时运行 (Michael
Paquier)
这可以避免断言失败,并且如果有人试图并行运行这些功能,可能会更糟糕。
禁用尝试删除无操作AT TIME ZONE
转换的转换 (Tom Lane)
当在索引条件中使用简化表达式时,这会导致错误的答案。
避免丢弃并不是真的没有操作的interval
到interval
强制转换
(Tom Lane)
在某些情况下,应该导致低位interval
字段清零的强制转换被错误地视为没有操作并丢弃。
例如,从INTERVAL MONTH
转换为INTERVAL YEAR
无法清除月份字段。
修复在重新扫描期间可用于并行查询的工作进程数量减少时的崩溃 (Andreas Seltenreich)
修复将GUC参数值传输给并行工作进程的错误 (Michael Paquier, Tom Lane)
允许使用PREPARE
准备的语句得到并行计划
(Amit Kapila, Tobias Bussmann)
修复半连接并行计划的错误生成 (Tom Lane)
修复规划器对并行连接的基数估计 (Robert Haas)
确保这些估计值反映了每个工作人员进程预测可以看到的行数,而不是总数。
修复规划器以避免尝试对包含初始计划或子计划的计划节点进行并行化 (Tom Lane, Amit Kapila)
确保缓存的计划通过更改外部表选项而失效 (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
使用常量GROUP BY
子句修复为排序的部分聚合生成的计划
(Tom Lane)
在处理包含CTE引用的UNION ALL
时,
修复“could not find plan for CTE”规划器错误 (Tom Lane)
修复在强制将Material节点添加到子计划时错误处理initplans (Tom Lane)
这个错误的典型后果是“plan should not reference subplan's variable”错误。
修复半连接和反连接以及继承情况的基于外键的连接选择性估计 (Tom Lane)
考虑到外键关系存在的新代码在这些情况下做了错误的事情, 这使得估计值比9.6之前的代码差。
修复pg_dump以发出标记为扩展配置表的序列的数据 (Michael Paquier)
修复在pg_dump错误处理
ALTER DEFAULT PRIVILEGES ... REVOKE
(Stephen Frost)
pg_dump在使用ALTER DEFAULT PRIVILEGES
来减少权限的情况下,错过了发出所需的REVOKE
命令。
修复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)
改进initdb以将
xxx
_flush_after
参数的特定于平台的默认值插入到postgresql.conf
中
(Fabien Coelho, Tom Lane)
这种记录默认值的方式比以前使用的方式更加整洁。
修复可能对域检查约束和CASE
执行中扩展数组的错误处理
(Tom Lane)
在这些上下文中调用PL/pgSQL函数可能会修改甚至删除需要为其他操作保留的数组值。
修复在PL/pgSQL变量赋值期间评估的域检查约束等上下文中PL/pgSQL函数的嵌套用法 (Tom Lane)
确保我们为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)
修复psql的\crosstabview
中重复数据的错误报告 (Tom Lane)
当抱怨同一个交叉表单元格的多个条目时,psql 有时会引用错误的行和/或列值。
修复psql对ALTER DEFAULT PRIVILEGES
的
tab完成 (Gilles Darold, Stephen Frost)
修复psql对ALTER TABLE t
ALTER c DROP ...
的tab完成 (Kyotaro Horiguchi)
在psql中,将PAGER
环境变量的空白或全空白设置视为“no pager” (Tom Lane)
以前,这样的设置导致用于分页的输出完全消失。
改进contrib/dblink
对低级
libpq错误的报告,比如内存不足
(Joe Conway)
当使用contrib/postgres_fdw
外部服务器作为连接选项的来源时,
让contrib/dblink
忽略不相关的服务器选项
(Corey Huinker)
以前,如果外部服务器对象的选项不是libpq连接选项,
修复GIN索引的contrib/pageinspect
函数中的可移植性问题
(Peter Eisentraut, Tom Lane)
修复在Windows上等待时可能遗漏套接字读取事件 (Amit Kapila)
这个错误对大多数用途都是无害的,但是在尝试使用pldebugger扩展时会导致挂起。
在Windows上,确保将环境变量更改传播到使用调试选项构建的DLL (Christian Ullrich)
将我们的时区库副本与IANA发行版tzcode2016j同步 (Tom Lane)
这解决了各种问题,尤其是如果目标目录不支持硬链接,时区数据安装失败。
将时区数据文件更新为tzdata release 2016j。 用于北塞浦路斯(增加一个新区域Asia/Famagusta)、俄罗斯 (增加一个新区域Europe/Saratov)、汤加和南极洲/凯西的DST法律变更。 对意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史性更正。 为汤加切换至更受欢迎的数字区域缩写。