PostgreSQL全球开发组在2016-10-27日 发布了PostgreSQL数据库系统中所有支持版本的更新, 包括9.6.1,9.5.5,9.4.10,9.3.15,9.2.19和9.1.24。 这也是PostgreSQL 9.1系列的最后一次更新, 因为它现在结束维护生命周期。 此版本修复了两个可能导致数据损坏的问题,下 面将对此进行更详细的介绍。
它还修正了过去三个月中报告的一些其他错误。 项目组敦促用户在下次可能的停机时间应用此更新。
在此版本之前,存在一个可能遇到的问题, PostgreSQL实例将尝试访问不再存在于磁盘上的数据。 如果可用空间映射未更新以了解截断, 则 PostgreSQL 数据库可能返回已被截断的页面, 并产生如下错误:
ERROR: could not read block 28991 in file "base/16390/572026": read only 0 of 8192 bytes
如果启用校验和,则还会出现可见性映射中的校验和故障。
这个问题存在于 PostgreSQL 的9.3,9.4,9.5和9.6系列的版本中。
在大端机器(例如许多非Intel CPU架构)上,pg_upgrade
不正确地写入可见性映射的字节,
导致 pg_upgrade
无法完成。
如果你使用的是big-endian机器(许多非Intel架构都是big-endian)
并且使用pg_upgrade从9.6之前的版本升级,
你应该假定所有的可见性映射都不正确,需要重新生成。
使用 contrib/pg_visibility
的 pg_truncate_visibility_map()
函数截断每个关系的可见性映射就行了。
请阅读更新部分,
查阅文章末尾提到的安装说明,
可以了解相关在PostgreSQL实例上解决此问题的方法。
这个问题只存在于PostgreSQL 9.6.0版本中。
除了上述,此更新还修复了在过去几个月中报告的一些错误。 其中一些问题只影响9.6系列,但许多问题影响所有社区支持的版本。 此版本更新超过了50个修订,包括:
此更新还包含tzdata版本2016h为巴勒斯坦和土耳其的DST法律变化, 加上土耳其和俄罗斯一些地区的历史修正。 在南极洲,前苏联,斯里兰卡,切换到某些时区的数字缩写的问题。
IANA时区数据库中,以前为所有时区提供了缩写文本, 即使当地人口中几乎没有或没有货币的缩写。 他们正在改变这一策略, 倾向于在没有实际使用英语缩写的证据的区域中使用数字UTC偏移。 至少暂时,PostgreSQL将继续接受这样删除的缩写的时间戳输入。 但它们不会显示在pg_timezone_names视图中,也不用于输出。
在此更新中,AMT不再显示为正在使用中的亚美尼亚时间。
因此,我们更改了默认缩写集以将其解释为Amazon Time,
因此使用UTC-4
而不是 UTC+4
。
PostgreSQL版本9.1现在是End-of-Life(EOL)。
此版本的社区不会发布其他内容的更新或安全修补程序。 但仍然要求9.1的用户尽快升级。 相关详细信息, 请参阅我们的 版本控制策略。
所有PostgreSQL更新版本都是累积的。 与其他次要版本一样,用户不需要转储和重新加载其数据库, 或使用pg_upgrade应用此更新版本; 你可以简单地关闭PostgreSQL数据库,并更新其二进制文件实现更新。
如果你的系统受到大端系统pg_upgrade错误的影响, 请阅读可见性映射问题, 并按照说明,解决你的PostgreSQL实例上的这个问题。
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤; 有关详细信息,请参阅早期版本的发行说明。