发布日期: 2016-10-27
此版本包含9.3.14的各种修补程序。有关9.3主要版本中的新功能的信息,请查看 第 E.57 节。
运行9.3.X的用户不需要转储/恢复。
但是,如果您的安装受到以下修改列表中第一条描述的错误的影响, 那么在更新之后,您可能需要采取措施修复损坏的可用空间映射。
另外,如果您从早于9.3.9的版本进行升级, 请查看第 E.48 节。
修复关系自由空间映射和可见性映射截断的WAL日志记录 (Pavan Deolasee, Heikki Linnakangas)
在故障恢复期间可能无法正确恢复这些文件,或者在备用服务器上写入不正确。
自由空间映射中的伪造条目可能导致尝试访问已从关系本身截断的页面,
通常会产生像“could not read block XXX
:
read only 0 of 8192 bytes”这样的错误。如果启用校验和,
则可见性映射中的校验和失败也是可能的。
在https://wiki.postgresql.org/wiki/Free_Space_Map_Problems 中讨论确定这是否存在问题和修复它的步骤。
修复SELECT FOR UPDATE/SHARE
以正确锁定已由随后中止的事务更新的元组
(Álvaro Herrera)
在9.5及更高版本中,SELECT
有时根本无法返回这些元组。
在早期版本中未发生故障,但并发更新可能会发生。
修复涉及CTE扫描的EvalPlanQual重新检查 (Tom Lane)
重新检查总是会将CTE视为不返回行,通常会导致无法更新最近更新的行。
修复子查询中散列聚合的先前结果的不正确重复 (Andrew Gierth)
测试以查看我们是否可以重用先前计算的聚合状态值的散列表, 忽略了外部查询引用出现在聚合参数表达式中的可能性。 这种引用的值的改变应该导致重新计算散列表,但是没有。
当track_io_timing打开时,修复
EXPLAIN
发出有效的XML (Markus Winand)
以前,XML输出格式选项会产生语法上无效的标签,例如<I/O-Read-Time>
。
现在这呈现为<I-O-Read-Time>
。
在EXPLAIN
中禁止将无法测量的时间打印为零
(Maksim Milyutin)
某些选项组合导致实际上并未在该组合中进行测量的时间打印零值。我们在
EXPLAIN
中的一般策略是不打印这些字段,
所以在所有情况下都要一致。
修复VACUUM
等待独占表锁定时的超时长度,以便它可以截断表 (Simon Riggs)
超时时间应该是50毫秒,但实际上它只有50微秒,导致VACUUM
比预期更容易放弃截断。将其设置为预期值。
修复在创建或更改表时合并继承的CHECK
约束中的错误
(Tom Lane, Amit Langote)
允许按照任意顺序将相同的CHECK
约束添加到父表和子表中。
阻止合并父表中的有效约束与子节点上的NOT VALID
约束。
同样,阻止将NOT INHERIT
子约束与继承约束合并。
删除对numeric_in()
和numeric_recv()
接受的值的人为限制
(Tom Lane)
我们允许数值达到存储格式的限制(超过1e100000
),
所以看起来毫无意义的是numeric_in()
拒绝了高于1000的科学记数法指数。
同样,很愚蠢的是numeric_recv()
在输入值中拒绝超过1000位。
避免由于在不保留缓冲区锁定的情况下测试元组可见性而造成非常低概率的数据损坏 (Thomas Munro, Peter Geoghegan, Tom Lane)
修复截断大于1GB的临时关系时的文件描述符泄漏 (Andres Freund)
在开启了standby_mode
时,不允许启动一个独立的后端
(Michael Paquier)
这不能做任何有用的事情,因为没有WAL接收器过程来获取更多的WAL数据; 这可能会导致代码中的错误行为,而这些代码在设计时并未考虑到这种情况。
不要尝试在libpq中的多个连接之间共享SSL上下文 (Heikki Linnakangas)
这导致了各种各样的极端情况错误,尤其是在尝试为不同的连接使用不同的SSL参数时。
避免libpq中极端情况内存泄露 (Tom Lane)
所报告的问题涉及在PQreset()
期间泄漏错误报告,但可能存在相关情况。
让ecpg的--help
和--version
选项与我们的其他可执行文件保持一致 (Haribabu Kommi)
在pg_dump中,从不转储范围构造函数 (Tom Lane)
由于构造函数的重复创建,这种忽略导致pg_upgrade 扩展包含范围类型失败。
在pg_xlogdump中,使用
--follow
选项时重试打开新的WAL段
(Magnus Hagander)
这可以使服务器创建下一个段时可能出现延迟。
修复pg_xlogdump 以处理以跨越多个页面的延续记录开头的WAL文件 (Pavan Deolasee)
修复contrib/intarray/bench/bench.pl
以打印
EXPLAIN
在给出-e
选项时的结果
(Daniel Gustafsson)
更新Windows时区映射以识别最近Windows版本中添加的一些时区名称 (Michael Paquier)
防止过时的动态时区缩写失效 (Tom Lane)
如果动态时区缩写与参考时区中的任何条目都不匹配,请将其视为等同于时区名称。
这避免了IANA从他们的时区数据库中删除缩写时的意外失败,就像他们在
tzdata release 2016f中所做的一样,并且似乎未来可能再次发生。
后果不限于不承认个人缩写;任何不匹配都会导致pg_timezone_abbrevs
视图完全失败。
将时区数据文件更新为tzdata release 2016h, 用于巴勒斯坦和土耳其的DST法律变更,以及对土耳其和俄罗斯一些地区的历史更正。 切换到南极洲、前苏联和斯里兰卡的一些时区的数字缩写。
IANA时区数据库以前为所有时区提供了文本缩写,
有时会提供当地人口中流通很少或没有流通的缩写。他们正在推翻该政策,
赞成在没有现实世界中使用英文缩写的地区使用数字UTC偏移量。至少目前来说,
PostgreSQL将继续接受此类删除的时间戳输入缩写。
但它们不会显示在pg_timezone_names
视图中,也不会用于输出。
在此更新中,AMT
不再显示为用于表示亚美尼亚时间。因此,
我们已将Default
缩写集更改为将其解释为Amazon Time,
因此是UTC-4而不是UTC+4。