PostgreSQL开发组发布了对数据库系统的所有支持版本的更新,包括9.6.1,9.5.5,9.4.10,9.3.15,9.2.19和9.1.24。 这也是PostgreSQL 9.1系列的最后一次更新,因为它将迎来生命周期的结束。 此版本修复了两个可能导致数据损坏的问题,下面将对此进行详细的介绍。 它还对过去三个月中报告的一些其他错误进行补丁修复。 该项目敦促用户在下次可能的停机时间应用此更新。
更新和修复:
一、WAL-logging的截断关系
在此版本之前,PostgreSQL实例有机会尝试访问不再存在于磁盘上的数据。 如果可用空间映射未更新以了解截断,PostgreSQL数据库可能返回已被截断的页面,并产生如下错误:
ERROR: could not read block 28991 in file "base/16390/572026": read only 0 of 8192 bytes
如果启用校验和,则还会出现可见性映射中的校验和故障。
(该问题存在于9.3,9.4,9.5和9.6系列的PostgreSQL版本中)
二、pg_upgrade在big-endian机器上的问题
在big-endian机器(例如许多非Intel CPU架构)上,pg_upgrade不正确地写入可见性映射的字节,导致pg_upgrade无法完成。
如果你使用的是big-endian机器(许多非Intel架构都是big-endian)并且使用pg_upgrade从9.6之前的版本升级,你应该假定所有的可见性映射都是不正确的,需要重新生成。 使用contrib / pg_visibility的pg_truncate_visibility_map()函数截断每个关系的可见性映射就足够了。
(该问题只存在于PostgreSQL 9.6.0版本中)
三、已有错误修复
此更新还修复了在过去几个月中报告的一些错误。其中一些问题只影响9.6系列,但许多影响所有支持的版本。该版本提供超过50个修订,包括:
-
修复使用DISTINCT执行聚合函数时的use-after-free风险,这可能导致崩溃
-
修复用作窗口函数的多态聚合的不正确处理,这可能导致崩溃
-
修复在big-endian机器上不正确创建GIN索引WAL记录
-
在截断大于1GB的临时关系时修复文件描述符泄漏
-
修复具有PRIMARY KEY或REPLICA IDENTITY索引的表的批量UPDATE中的查询 - query-lifespan内存泄漏
-
修复SELECT FOR UPDATE / SHARE以正确锁定由后续中止的事务更新的元组
-
使用已启用行级安全性的表中的列名单修复COPY
-
修复删除推测性插入的TOAST元组时退出INSERT ... ON CONFLICT
-
修复VACUUM等待排锁定时的超时长度,以便可以截断
-
在创建或更改表时修复合并中的错误继承的CHECK约束
-
修复jsonb_set()中数组元素的替换
-
修复在btree索引中中止使用缩写键时可能出现的排序错误
-
在Windows上,在access-denied错误后重试动态共享内存控制段的创建
-
修复pgbench的平均延迟计算
-
使pg_receivexlog在没有slots的情况下正常与--synchronous工作
-
使pg_rewind在源服务器上的会话中关闭synchronous_commit
-
不再尝试在libpq中的多个连接之间共享SSL上下文
-
支持OpenSSL 1.1.0
-
安装TAP测试基础架构,使其可用于扩展测试
-
逻辑WAL解码和复制槽的几个修复
-
修复几个在pg_dump,pg_xlogdump和pg_upgrade中的小问题
-
修复几个在查询计划器和EXPLAIN输出中的小问题
-
时区支持的几个修复
下载地址:
https://www.postgresql.org/download/