↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 版本对比

对比两个 PostgreSQL 大版本或小版本,查看沿途新增的功能、修复的问题与 CVE 安全记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

小版本更新

9.5→9.5.25

2016-01-07 2021-02-11

导出 JSON
833项变更功能、修复与改进
25次版本发布按发行版本归档
31个 CVE按漏洞编号去重

9.5.0 历史版本维护截止 2021-02-11

9.5.25 历史版本维护截止 2021-02-11

安全修复索引 31 个 CVE
版本区间内的 CVE 安全记录,按评分从高到低排列
CVE / 问题严重程度修复版本
CVE-2020-25695

禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器

目标版本已修复
8.8高危9.5.24
CVE-2018-1058

记录如何配置安装和应用以防受其他用户依赖 search_path 的特洛伊木马攻击

目标版本已修复
8.8高危9.5.12
CVE-2018-10915

修复连接尝试之间未能完全重置 libpq 状态的问题

目标版本已修复
8.5高危9.5.14
CVE-2017-7547

进一步限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码

目标版本已修复
8.5高危9.5.8
CVE-2017-7486

限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码

目标版本已修复
8.5高危9.5.7
CVE-2016-5424

修复客户端程序对数据库名和角色名中特殊字符的处理

目标版本已修复
8.5高危9.5.4
CVE-2019-3466

pg_ctlcluster script in postgresql-common does not drop privileges when creating socket/statistics temporary directories

目标版本已修复
8.4高危9.5.20
CVE-2017-12172

修复示例服务器启动脚本在打开 $PGLOG 之前变成 $PGUSER

目标版本已修复
8.4高危9.5.10
CVE-2020-25694

修复 pg_dump、pg_restore、 clusterdb、reindexdb 和 vacuumdb 中复杂连接字符串参数的用法

目标版本已修复
8.1高危9.5.24
CVE-2017-7546

禁止在所有基于密码的认证方法中使用空密码

目标版本已修复
8.1高危9.5.8
CVE-2017-7485

恢复 libpq 对 PGREQUIRESSL 环境变量的识别

目标版本已修复
8.1高危9.5.7
CVE-2019-10211

Windows installer bundled OpenSSL executes code from unprotected directory

目标版本已修复
7.8高危9.5.19
CVE-2020-25696

防止 psql 的 \gset 命令修改特殊处理的变量

目标版本已修复
7.5高危9.5.24
CVE-2019-10208

要求使用函数式转换语法转换到临时类型时进行模式限定

目标版本已修复
7.5高危9.5.19
CVE-2016-7048

Interactive installer downloads software over plain HTTP, then executes it

目标版本已修复
7.5高危9.5.5
CVE-2020-14350

使 contrib 模块的安装脚本更安全

目标版本已修复
7.1高危9.5.23
CVE-2018-10925

修复通过不只是 SELECT * FROM ... 的视图执行 INSERT ... ON CONFLICT UPDATE 的问题

目标版本已修复
7.1高危9.5.14
CVE-2019-10128

EnterpriseDB Windows installer does not clear permissive ACL entries

目标版本已修复
7.0高危9.5.17
CVE-2019-10127

BigSQL Windows installer does not clear permissive ACL entries.

目标版本已修复
7.0高危9.5.17
CVE-2020-10733

Windows installer runs executables from uncontrolled directories

目标版本已修复
6.7中危9.5.22
CVE-2019-10210

Windows installer writes superuser password to unprotected temporary file

目标版本已修复
6.7中危9.5.19
CVE-2018-1053

确保 pg_upgrade 创建的所有临时文件对其他用户不可读

目标版本已修复
6.7中危9.5.11
CVE-2016-0773

修复正则表达式中的无限循环和缓冲区越界问题

目标版本已修复
6.5中危9.5.1
CVE-2017-7484

防止通过泄漏型操作符暴露统计信息

目标版本已修复
4.3中危9.5.7
CVE-2017-15098

修复 json{b}_populate_recordset() 中行类型不匹配导致的崩溃

目标版本已修复
4.3中危9.5.10
CVE-2016-5423

修复嵌套 CASE-WHEN 表达式可能被错误评估的问题

目标版本已修复
4.3中危9.5.4
CVE-2016-2193

在缓存计划中正确维护行安全性状态

目标版本已修复
4.2中危9.5.2
CVE-2019-10130

防止通过选择率估计器绕过行级安全策略

目标版本已修复
3.1低危9.5.17
CVE-2017-7548

让 lo_put() 检查对目标大对象的 UPDATE 权限

目标版本已修复
3.1低危9.5.8
CVE-2017-15099

确保 INSERT ... ON CONFLICT DO UPDATE 在所有情况下检查表权限和 RLS 策略

目标版本已修复
3.1低危9.5.10
CVE-2016-3065

为 contrib/pageinspect 的一些新函数添加必须是超级用户的检查

目标版本已修复
3.1低危9.5.2
目标版本仍有 48 个已知漏洞
目标版本仍受影响的 CVE,按评分从高到低排列
CVE / 问题严重程度修复版本
CVE-2026-6637

PostgreSQL refint allows stack buffer overflow and SQL injection

8.8高危该分支未提供
CVE-2026-6477

PostgreSQL libpq lo_* functions let server superuser overwrite client stack memory

8.8高危该分支未提供
CVE-2026-6475

PostgreSQL pg_basebackup and pg_rewind can overwrite unrelated files of origin superuser choice

8.8高危该分支未提供
CVE-2026-6473

PostgreSQL server undersizes allocations, via integer wraparound

8.8高危该分支未提供
CVE-2026-2006

PostgreSQL missing validation of multibyte character length executes arbitrary code

8.8高危该分支未提供
CVE-2026-2005

PostgreSQL pgcrypto heap buffer overflow executes arbitrary code

8.8高危该分支未提供
CVE-2026-2004

PostgreSQL intarray missing validation of type of input to selectivity estimator executes arbitrary code

8.8高危该分支未提供
CVE-2026-19385

PostgreSQL pg_dump heap buffer overflow executes arbitrary code

8.8高危该分支未提供
CVE-2026-18408

PostgreSQL psql \unrestrict lets superuser of pg_dump origin server execute arbitrary code in psql client

8.8高危该分支未提供
CVE-2026-16239

PostgreSQL type confusion in cursor CLOSE + DECLARE executes arbitrary code

8.8高危该分支未提供
CVE-2026-15742

PostgreSQL fuzzystrmatch writes effectively-arbitrary addresses, via integer wraparound

8.8高危该分支未提供
CVE-2026-15741

PostgreSQL expression deparse allows SQL injection via EXTRACT argument

8.8高危该分支未提供
CVE-2026-14680

PostgreSQL type confusion via "internal" arguments

8.8高危该分支未提供
CVE-2026-14677

PostgreSQL 32-bit pltcl and plperl undersize allocations, via integer wraparound

8.8高危该分支未提供
CVE-2026-14671

PostgreSQL refint plan cache type confusion executes arbitrary code

8.8高危该分支未提供
CVE-2026-14670

PostgreSQL plperl tied object heap buffer overflow executes arbitrary code

8.8高危该分支未提供
CVE-2026-14669

PostgreSQL to_char heap buffer overflow executes arbitrary code

8.8高危该分支未提供
CVE-2026-14664

PostgreSQL regexp heap buffer overflow executes arbitrary code

8.8高危该分支未提供
CVE-2026-14662

PostgreSQL tsvector and tsquery undersize allocations, via integer wraparound

8.8高危该分支未提供
CVE-2025-8714

PostgreSQL pg_dump lets superuser of origin server execute arbitrary code in psql client

8.8高危该分支未提供
CVE-2024-7348

PostgreSQL relation replacement during pg_dump executes arbitrary SQL

8.8高危该分支未提供
CVE-2024-10979

PostgreSQL PL/Perl environment variable changes execute arbitrary code

8.8高危该分支未提供
CVE-2026-14679

PostgreSQL stack buffer overflow in argument match writes 0x0 and 0x1 to server memory

8.2高危该分支未提供
CVE-2026-6464

PostgreSQL psql COPY FROM STDIN early failure processes data lines as psql commands

8.1高危该分支未提供
CVE-2026-14668

PostgreSQL ctid type confusion in selectivity estimator discloses derivative of arbitrary read

8.1高危该分支未提供
CVE-2025-1094

PostgreSQL quoting APIs miss neutralizing quoting syntax in text that fails encoding validation

8.1高危该分支未提供
CVE-2024-0985

PostgreSQL non-owner REFRESH MATERIALIZED VIEW CONCURRENTLY executes arbitrary SQL

8.0高危该分支未提供
CVE-2026-6479

PostgreSQL SSL/GSS init causes denial of service, via uncontrolled recursion

7.5高危该分支未提供
CVE-2026-6471

PostgreSQL logical decoding can dlopen arbitrary file

7.2高危该分支未提供
CVE-2026-6478

PostgreSQL discloses MD5-hashed passwords via covert timing channel

6.5中危该分支未提供
CVE-2026-14663

PostgreSQL pgcrypto, for OpenSSL-disabled ciphers, silently encrypts to and decrypts from cleartext

6.5中危该分支未提供
CVE-2025-4207

PostgreSQL GB18030 encoding validation can read one byte past end of allocation for text that fails validation

5.9中危该分支未提供
CVE-2025-12818

PostgreSQL libpq undersizes allocations, via integer wraparound

5.9中危该分支未提供
CVE-2026-6472

PostgreSQL CREATE TYPE does not check multirange schema CREATE privilege

5.4中危该分支未提供
CVE-2026-6474

PostgreSQL timeofday() can disclose portions of server memory

4.3中危该分支未提供
CVE-2026-6470

PostgreSQL fails to check type USAGE privilege

4.3中危该分支未提供
CVE-2026-2003

PostgreSQL oidvector discloses a few bytes of memory

4.3中危该分支未提供
CVE-2026-18024

PostgreSQL ascii() function reads past end of buffer

4.3中危该分支未提供
CVE-2026-14678

PostgreSQL pg_trgm picksplit reads past end of buffer

4.3中危该分支未提供
CVE-2026-14666

PostgreSQL row security caching disregards role modifications

4.2中危该分支未提供
CVE-2024-10978

PostgreSQL SET ROLE, SET SESSION AUTHORIZATION reset to wrong user ID

4.2中危该分支未提供
CVE-2024-10976

PostgreSQL row security below e.g. subqueries disregards user ID changes

4.2中危该分支未提供
CVE-2026-6469

PostgreSQL ALTER TABLE ALTER TYPE resets extended statistics ownership

3.8低危该分支未提供
CVE-2026-16241

PostgreSQL ECPG integer underflow can crash the client

3.8低危该分支未提供
CVE-2026-14673

PostgreSQL amcheck does not clear untrusted search path

3.8低危该分支未提供
CVE-2025-8713

PostgreSQL optimizer statistics can expose sampled data within a view, partition, or child table

3.1低危该分支未提供
CVE-2025-12817

PostgreSQL CREATE STATISTICS does not check for schema CREATE privilege

3.1低危该分支未提供
CVE-2024-10977

PostgreSQL libpq retains an error message from man-in-the-middle

3.1低危该分支未提供

PostgreSQL 9.5.25

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,请看下面的第一条变更日志条目,它描述了升级之后可能宜对索引执行 REINDEX 的几种情况。

另外,如果你是从 9.5.20 之前的版本升级,参见第 E.6 节。

BUG 修复修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务

变更

修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务(Andrey Borodin)

在 CREATE INDEX CONCURRENTLY 等待所有并发事务完成以便能看到它们插入的行的那个时刻,出于同样的原因,它也必须等待所有预备事务完成。此前没有这样做,意味着预备事务插入的行可能被遗漏在新索引之外,导致依赖该索引的查询漏掉这些行。在启用了预备事务的安装(max_prepared_transactions > 0)中,如果并发构建索引时可能发生过此问题,建议对这些索引执行 REINDEX。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免对计划包含 MergeAppend 节点的游标应用 WHERE CURRENT OF 时出现错误结果

变更

避免对计划包含 MergeAppend 节点的游标应用 WHERE CURRENT OF 时出现错误结果(Tom Lane)

这种情况不受支持(一般而言,使用 ORDER BY 的游标不保证是简单可更新的);但代码此前没有拒绝它,并且可能静默地给出假匹配。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对计划包含自定义扫描节点的游标应用 WHERE CURRENT OF 时的崩溃

变更

修复对计划包含自定义扫描节点的游标应用 WHERE CURRENT OF 时的崩溃(David Geier)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复规划器对在某个连接层级计算且仅在同一层级使用的占位符的处理

变更

修复规划器对在某个连接层级计算且仅在同一层级使用的占位符的处理(Tom Lane)

这一疏漏可能导致“failed to build any N-way joins”规划器错误。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更谨慎地判断索引访问方法是否支持 mark/restore

变更

更谨慎地判断索引访问方法是否支持 mark/restore(Andrew Gierth)

这防止了罕见边界情况下缺少支持函数的错误。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ALTER DEFAULT PRIVILEGES 安全处理重复参数的问题

变更

修复 ALTER DEFAULT PRIVILEGES 安全处理重复参数的问题(Michael Paquier)

同一条命令中重复的角色或模式名可能导致“tuple already updated by self”错误或唯一约束冲突。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进当 pg_authid 变化时刷新与 ACL 相关的缓存

变更

当 pg_authid 变化时刷新与 ACL 相关的缓存(Noah Misch)

这一更改确保与权限相关的决策能及时反映 ALTER ROLE ... [NO] INHERIT 的结果。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止对有歧义的 CREATE TABLE LIKE 子句的错误处理

变更

防止对有歧义的 CREATE TABLE LIKE 子句的错误处理(Tom Lane)

LIKE 子句在新表初始创建之后会被重新检查,以处理索引等的导入。这一重新检查有可能找到同名的另一张表,导致意外的行为;一个例子是新表是与 LIKE 目标同名的临时表。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进调整 CREATE TABLE LIKE 中操作的顺序,使索引在外键约束构建之前被克隆

变更

调整 CREATE TABLE LIKE 中操作的顺序,使索引在外键约束构建之前被克隆(Tom Lane)

这修复了外层 CREATE TABLE 中声明的自引用外键约束依赖于来自 LIKE 子句的索引的情况。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止把继承子表转换为视图

变更

禁止把继承子表转换为视图(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保已删除关系占用的磁盘空间在提交时被及时释放

变更

确保已删除关系占用的磁盘空间在提交时被及时释放(Thomas Munro)

此前,如果被删除的关系跨越多个 1GB 段,只有第一段被立即截断。其他段只是被解除链接,只要还有其他后端打开着这些文件,这不会让内核释放存储。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 COPY FROM 中反斜线转义的多字节字符的处理

变更

修复 COPY FROM 中反斜线转义的多字节字符的处理(Heikki Linnakangas)

反斜线后跟多字节字符的情况没有被正确处理。在某些客户端字符编码下,这可能导致把多字节字符的一部分误解释为字段分隔符或复制数据结束标记。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免不带 ANALYZE 的 EXPLAIN 预先分配执行器哈希表

变更

避免不带 ANALYZE 的 EXPLAIN 预先分配执行器哈希表(Alexey Bashtanov)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 LISTEN/NOTIFY 队列处理中新近引入的竞态条件

变更

修复 LISTEN/NOTIFY 队列处理中新近引入的竞态条件(Tom Lane)

新监听的后端可能试图读取正在被截断的 SLRU 页,可能导致错误。

队列尾指针可能被设置为一个不等于任何后端队列位置的值,导致队列截断逻辑被有效禁用。继续使用 NOTIFY 随后会导致队列填满警告,最终在服务器重启之前无法再发送任何通知。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 jsonb 连接操作符处理 JSON 数据类型的所有组合

变更

允许 jsonb 连接操作符处理 JSON 数据类型的所有组合(Tom Lane)

我们可以连接两个 JSON 对象或两个 JSON 数组。其他情况通过把非数组输入包装成单元素数组再执行数组连接来处理。此前,某些输入组合遵循此规则,另一些则任意地抛出错误。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 BRE 模式正则表达式中解析 * 量词时使用未初始化值的问题

变更

修复 BRE 模式正则表达式中解析 * 量词时使用未初始化值的问题(Tom Lane)

这个错误可能导致量词表现为非贪婪,即表现得像完整正则表达式中的 *? 量词那样。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止因错误检测 SLRU 日志回卷点而可能发生的的数据丢失

变更

防止因错误检测 SLRU 日志回卷点而可能发生的的数据丢失(Noah Misch)

回卷点通常落在页中间,必须把它舍入到页边界,而这一步没有正确完成。除非安装已经到达距 SLRU 溢出不到一页的位置(在正常运行的系统中不太可能),否则不会出现问题。如果真的发生,之后会表现为“apparent wraparound”或“could not access status of transaction”错误。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 walsender 进程在为逻辑解码发送新快照期间的内存泄漏

变更

修复 walsender 进程在为逻辑解码发送新快照期间的内存泄漏(Amit Kapila)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 walsender 在终止复制之后接受其他命令的问题

变更

修复 walsender 在终止复制之后接受其他命令的问题(Jeff Davis)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免检查带 TRANSFORM 选项的函数时 pg_get_functiondef() 的断言失败

变更

避免检查带 TRANSFORM 选项的函数时 pg_get_functiondef() 的断言失败(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码

变更

在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码(Tom Lane)

这过去可以工作,但最近的一次 bug 修复导致密码被忽略(结果是提示输入密码)。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 psql 的 \help 命令的若干 bug

变更

修复 psql 的 \help 命令的若干 bug(Kyotaro Horiguchi、Tom Lane)

带两个参数词的 \help 未能只用第一个词找到命令说明,例如 \help reset all 本应显示 RESET 的帮助但没有。此外,\help 常常在应该调用分页器时没有调用。它还泄漏内存。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_rewind 中,确保回卷备库服务器时所有 WAL 都被考虑到

变更

在 pg_rewind 中,确保回卷备库服务器时所有 WAL 都被考虑到(Ian Barwick、Heikki Linnakangas)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在部分客户端程序的连接失败错误消息中报告正确的数据库名

变更

在部分客户端程序的连接失败错误消息中报告正确的数据库名(Álvaro Herrera)

如果数据库名是默认推断而非在命令行上给出的,pg_dumpall、pgbench、oid2name 和 vacuumlo 在连接失败之后会产生误导性的错误消息。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/auto_explain 中的内存泄漏

变更

修复 contrib/auto_explain 中的内存泄漏(Japin Li)

生成 EXPLAIN 输出期间消耗的内存直到当前事务结束(对顶层语句)或外围语句结束(对嵌套语句)才被释放。在启用 log_nested_statements 时这尤其成问题。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏到远程服务器的打开连接

变更

在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏到远程服务器的打开连接(Bharath Rupireddy)

依赖于被删除用户映射或外部服务器的打开连接不再能被引用,但此前它们仍会在本地会话期间被保留。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数的错误返回

变更

在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数的错误返回(Michael Paquier)

我们并不真的预期这里会出错,但这一更改能让静态分析工具安静下来。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 contrib/pg_trgm 的 GiST 索引支持中,避免 picksplit 恰好在两个索引项上被调用这一罕见情况下的崩溃

变更

在 contrib/pg_trgm 的 GiST 索引支持中,避免 picksplit 恰好在两个索引项上被调用这一罕见情况下的崩溃(Andrew Gierth、Alexander Korotkov)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中超时的计算错误

变更

修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中超时的计算错误(Alexey Kondratov、Tom Lane)

contrib/pg_prewarm 的 autoprewarm 父进程的主循环把期望的睡眠时间低估了 1000 倍,导致消耗远超预期的 CPU。在等待远程服务器的结果时,contrib/postgres_fdw 把期望的超时高估了 1000 倍(不过这个错误已被 60 秒的钳制所缓解)。

这两个错误都源于把秒和微秒错误地转换为毫秒。引入新的 API TimestampDifferenceMilliseconds(),使将来更容易做对。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式

变更

改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式(Tom Lane)

当 Xcode 比底层操作系统更新时,新方法更可能产生理想的结果。选择与操作系统版本不匹配的 sysroot 可能导致不可用的可执行文件。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 macOS 上构建时,在链接步骤和编译步骤中一样指定 -isysroot

变更

在 macOS 上构建时,在链接步骤和编译步骤中一样指定 -isysroot(James Hilliard)

这同样改进了 Xcode 与操作系统不同步时的结果。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2021a,涉及俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,以及澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史修正。

变更

更新时区数据文件到 tzdata 版本 2021a,涉及俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,以及澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史修正。

值得注意的是,Australia/Currie 时区已被修正到与 Australia/Hobart 相同的程度。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.24

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.20 之前的版本升级,参见第 E.6 节。

安全相关禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器

变更

禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器(Noah Misch)

这本质上是“安全受限操作”沙箱机制中的一种泄漏。有权创建非临时 SQL 对象的攻击者可以利用此泄漏以超级用户身份执行任意 SQL 代码。

PostgreSQL 项目感谢 Etienne Stalmans 报告此问题。(CVE-2020-25695)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关修复 pg_dump、pg_restore、 clusterdb、reindexdb 和 vacuumdb 中复杂连接字符串参数的用法

变更

修复 pg_dump、pg_restore、 clusterdb、reindexdb 和 vacuumdb 中复杂连接字符串参数的用法(Tom Lane)

pg_dump 和 pg_restore 的 -d 参数,或所述其他程序的 --maintenance-db 参数,可以是包含多个连接参数的“连接字符串”而不只是数据库名。在这些程序需要发起额外连接的场合(如并行处理或多数据库处理),连接字符串被遗忘,额外连接只使用了基本连接参数(数据库名、主机、端口和用户名)。如果连接字符串包含任何其他必要信息(如非默认的 SSL 或 GSS 参数),这可能导致连接失败。更糟的是,连接可能成功但没有按预期加密,或者容易受到原本预期的连接参数可以阻止的中间人攻击。(CVE-2020-25694)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关当 psql 的 \connect 命令复用连接参数时,确保先前连接字符串中所有未被覆盖的参数都被复用

变更

当 psql 的 \connect 命令复用连接参数时,确保先前连接字符串中所有未被覆盖的参数都被复用(Tom Lane)

这避免了因遗漏相关参数(如非默认的 SSL 或 GSS 选项)而导致重连失败的情况。更糟的是,重连可能成功但没有按预期加密,或者容易受到原本预期的连接参数可以阻止的中间人攻击。这与刚才提到的 pg_dump 等程序的问题基本相同,不过 psql 的行为更复杂,因为用户可能有意覆盖某些连接参数。(CVE-2020-25694)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关防止 psql 的 \gset 命令修改特殊处理的变量

变更

防止 psql 的 \gset 命令修改特殊处理的变量(Noah Misch)

不带前缀的 \gset 会覆盖服务器让它设置的任何变量。因此,一个被攻破的服务器可以设置 PROMPT1 等特殊处理的变量,从而能够在用户的会话中执行任意 shell 代码。

PostgreSQL 项目感谢 Nick Cleaton 报告此问题。(CVE-2020-25696)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止并发截断 SLRU 日志可能导致的数据丢失

变更

防止并发截断 SLRU 日志可能导致的数据丢失(Noah Misch)

这一罕见问题之后会表现为 “apparent wraparound” 或 “could not access status of transaction” 错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保检查点期间正确 fsync SLRU 目录

变更

确保检查点期间正确 fsync SLRU 目录(Thomas Munro)

这防止了后续操作系统崩溃时可能的数据丢失。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对具有 BYPASSRLS 属性的用户的 ALTER ROLE

变更

修复对具有 BYPASSRLS 属性的用户的 ALTER ROLE(Tom Lane、Stephen Frost)

BYPASSRLS 属性只允许超级用户更改,但其他 ALTER ROLE 操作(如更改密码)应只需普通权限检查即可。原来的编码错误地把对此类角色的所有更改都限制为超级用户。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复带继承的 CREATE TABLE LIKE 中表达式的处理

变更

修复带继承的 CREATE TABLE LIKE 中表达式的处理(Tom Lane)

如果一条 CREATE TABLE 命令同时使用了 LIKE 和传统继承,来自 LIKE 父表的 CHECK 约束和表达式索引中的列引用容易被编错号,导致错误答案和/或离奇的错误消息。在拥有该特性的分支中,GENERATED 表达式也可能发生同样的问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 to_date() 和 to_timestamp() 中负年份转换为公元前日期的差一错误

变更

修复 to_date() 和 to_timestamp() 中负年份转换为公元前日期的差一错误(Dar Alathar-Yemen、Tom Lane)

同时,让负年份与显式“BC”标记的组合相互抵消并产生公元日期。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 archive_mode 设为 always 时备库服务器会归档 WAL 时间线历史文件

变更

确保 archive_mode 设为 always 时备库服务器会归档 WAL 时间线历史文件(Grigory Smolkin、Fujii Masao)

这一疏漏可能导致后续 PITR 恢复尝试失败。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免因 SIGQUIT 退出时运行 atexit 处理器

变更

避免因 SIGQUIT 退出时运行 atexit 处理器(Kyotaro Horiguchi、Tom Lane)

大多数服务器进程已经遵循这一做法,但归档器进程被遗漏了。仍在等待客户端启动包的后端也做错了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免错误优化引用表面常量分组列的子查询限定条件

变更

避免错误优化引用表面常量分组列的子查询限定条件(Tom Lane)

如果“常量”子查询输出列是只出现在部分分组集中的分组列,它就不是真正的常量。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 SQL 函数内联改变潜在可哈希子计划比较表达式形状时的失败

变更

避免 SQL 函数内联改变潜在可哈希子计划比较表达式形状时的失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在构建或重建索引期间,容忍并发更新导致的新 HOT 链的出现

变更

在构建或重建索引期间,容忍并发更新导致的新 HOT 链的出现(Anastasia Lubennikova、Álvaro Herrera)

这一疏漏可能导致 “failed to find parent tuple for heap-only tuple” 错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保数据在插入 BRIN 索引之前被解 TOAST

变更

确保数据在插入 BRIN 索引之前被解 TOAST(Tomas Vondra)

索引条目不应包含外联 TOAST 指针,但 BRIN 没有遵守这一点。这可能导致 “missing chunk number 0 for toast value NNN” 之类的错误。(如果现有索引报出这种错误,REINDEX 就足以修复。)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 BRIN 索引扫描期间正确处理并发取消摘要

变更

在 BRIN 索引扫描期间正确处理并发取消摘要(Alexander Lakhin、Álvaro Herrera)

此前,如果某个页范围恰好在错误的时间被取消摘要,索引扫描可能错误地报出指示索引损坏的错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复多列 GIN 索引扫描中罕见的 “lost saved point in index” 错误

变更

修复多列 GIN 索引扫描中罕见的 “lost saved point in index” 错误(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复事件触发器监视 ALTER TABLE 操作时的释放后使用风险

变更

修复事件触发器监视 ALTER TABLE 操作时的释放后使用风险(Jehan-Guillaume de Rorthais)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复关于移动聚合数据类型不一致的错误错误消息

变更

修复关于移动聚合数据类型不一致的错误错误消息(Jeff Janes)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免并行工作者报告很长的错误消息时的锁死

变更

避免并行工作者报告很长的错误消息时的锁死(Vignesh C)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免通过共享内存队列传输超大载荷时不必要的失败

变更

避免通过共享内存队列传输超大载荷时不必要的失败(Markus Wanner)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 RLS 策略导致的关系缓存内存泄漏

变更

修复 RLS 策略导致的关系缓存内存泄漏(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 SIGHUP 处理判定新的 GUC 变量值必须重启才能应用时的小内存泄漏

变更

修复 SIGHUP 处理判定新的 GUC 变量值必须重启才能应用时的小内存泄漏(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 libpq 支持 .pgpass 文件中任意长度的行

变更

让 libpq 支持 .pgpass 文件中任意长度的行(Tom Lane)

这主要用于允许使用很长的安全令牌作为密码。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 的 libpq 中,每进程调用一次 WSAStartup(),完全不调用 WSACleanup()

变更

在 Windows 的 libpq 中,每进程调用一次 WSAStartup(),完全不调用 WSACleanup()(Tom Lane、Alexander Lakhin)

此前,libpq 在连接开始时调用 WSAStartup(),在连接清理时调用 WSACleanup()。然而,调用 WSACleanup() 似乎会干扰其他程序操作;特别是,我们观察到向 stdout 输出预期内容偶尔失败。省略该调用似乎没有不良影响,因此就这么做。(这还消除了程序执行一系列数据库连接时因反复加载和卸载 DLL 导致的性能问题。)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 库在 Windows 上的每线程初始化逻辑

变更

修复 ecpg 库在 Windows 上的每线程初始化逻辑(Tom Lane、Alexander Lakhin)

多线程的 ecpg 应用可能因错误的锁定而出现罕见的错误行为。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,让 psql 以文本模式而非二进制模式读取反引号命令的输出

变更

在 Windows 上,让 psql 以文本模式而非二进制模式读取反引号命令的输出(Tom Lane)

这确保正确处理换行符。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 pg_dump 收集扩展配置表的逐列信息

变更

确保 pg_dump 收集扩展配置表的逐列信息(Fabrízio de Royes Mello、Tom Lane)

没有做到这一点会导致指定 --inserts 时崩溃,或在使用 COPY 重新装载表数据时生成欠指定(虽然通常正确)的 COPY 命令。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 pg_upgrade 检查目标集簇中表空间目录的预先存在

变更

让 pg_upgrade 检查目标集簇中表空间目录的预先存在(Bruce Momjian)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pgcrypto 中潜在的内存泄漏

变更

修复 contrib/pgcrypto 中潜在的内存泄漏(Michael Paquier)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 contrib/pgcrypto 中为一个不太可能发生的失败情况添加检查

变更

在 contrib/pgcrypto 中为一个不太可能发生的失败情况添加检查(Daniel Gustafsson)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 configure 的测试程序中使用 return 而非 exit()

变更

在 configure 的测试程序中使用 return 而非 exit()(Peter Eisentraut)

这避免了更挑剔的编译器下的失败。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2020d,涉及斐济、摩洛哥、巴勒斯坦、加拿大育空、麦夸里岛和凯西站(南极洲)的夏令时法规变更,以及法国、匈牙利、摩纳哥和巴勒斯坦的历史修正。

变更

更新时区数据文件到 tzdata 版本 2020d,涉及斐济、摩洛哥、巴勒斯坦、加拿大育空、麦夸里岛和凯西站(南极洲)的夏令时法规变更,以及法国、匈牙利、摩纳哥和巴勒斯坦的历史修正。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们的时区库副本与 IANA tzcode 版本 2020d 同步

变更

把我们的时区库副本与 IANA tzcode 版本 2020d 同步(Tom Lane)

这吸收了上游把 zic 默认输出选项从 “fat” 改为 “slim” 的变更。对我们的用途而言这只是表面变化,因为我们在 v13 之前的分支中继续选择 “fat” 模式。这一更改还确保 strftime() 不会在未失败时更改 errno。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.23

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.20 之前的版本升级,参见第 E.6 节。

安全相关使 contrib 模块的安装脚本更安全

变更

使 contrib 模块的安装脚本更安全(Tom Lane)

如果攻击者能在扩展的目标模式或某个前置扩展的模式中创建对象,就可以对扩展安装脚本发动类似 CVE-2018-1058 所述的攻击。由于扩展的安装通常需要超级用户权限,这就开辟了一条获得超级用户权限的路径。为降低此风险,我们更加谨慎地处理运行安装脚本所用的 search_path;在脚本内禁用 check_function_bodies;并修复部分 contrib 模块中使用的目录调整查询以确保其安全。同时提供文档帮助第三方扩展作者使其安装脚本安全。这不是完整的解决方案;依赖其他扩展的扩展如果安装时不小心,仍然可能有风险。(CVE-2020-14350)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题

变更

修复逻辑复制 walsender 在发送 keepalive 消息之后未能发送反馈消息的问题(Álvaro Herrera)

在使用内置逻辑复制时这是个相对次要的问题,因为内置 walreceiver 本来就会相当频繁地发送反馈应答(从而清除错误状态)。但在使用 pglogical 等其他复制系统时,它会导致显著的性能问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 repeat() 函数可以被查询取消中断

变更

确保 repeat() 函数可以被查询取消中断(Joe Conway)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进撤销 EXPLAIN 非文本输出格式中对索引名的双重引号

变更

撤销 EXPLAIN 非文本输出格式中对索引名的双重引号(Tom Lane、Euler Taveira)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ALTER TABLE 中约束重新验证的时机

变更

修复 ALTER TABLE 中约束重新验证的时机(David Rowley)

如果 ALTER TABLE 既需要完全重写表内容(例如因为更改列的数据类型),又需要扫描表以重新验证外键或 CHECK 约束,它有时会以错误的顺序行事,导致诸如 “could not read block 0 in file "base/nnnnn/nnnnn": read only 0 of 8192 bytes” 之类的奇怪错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用

变更

正确处理 FROM 子句中未展平子 SELECT 上附加的限定子句中的 LATERAL 引用(Tom Lane)

这一疏漏可能导致查询执行时的断言失败或崩溃。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免认为从未分析过的外部表有零个元组

变更

避免认为从未分析过的外部表有零个元组(Tom Lane)

这主要影响规划器对 GROUP BY 将得到的分组数的估计。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进服务器 buffile 模块中的错误处理

变更

改进服务器 buffile 模块中的错误处理(Thomas Munro)

修复了一些 I/O 错误与到达 EOF 无法区分、或者根本不被报告的情况。还在适当之处添加了块号和字节数等细节。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 SERIALIZABLE 隔离模式下的冲突检查异常

变更

修复 SERIALIZABLE 隔离模式下的冲突检查异常(Peter Geoghegan)

如果一个并发插入的元组被另一个并发事务更新,而这两个元组版本对当前事务的快照都不可见,序列化冲突检查可能就元组是否与当前事务的结果相关得出错误结论。这可能使一个可序列化事务在不该提交时(本应报序列化错误)成功提交。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免重复把死 btree 索引条目标记为死

变更

避免重复把死 btree 索引条目标记为死(Masahiko Sawada)

虽然功能上无害,但在启用校验和或打开 wal_log_hints 时,这会导致无用的 WAL 流量。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复某些代码路径在修改 pg_control 之前未获取正确锁的问题

变更

修复某些代码路径在修改 pg_control 之前未获取正确锁的问题(Nathan Bossart、Fujii Masao)

这一疏漏可能使 pg_control 以不一致的校验和写出,之后可能引起麻烦,包括在下一次 pg_control 更新之前崩溃时无法重启数据库。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 currtid() 和 currtid2() 中的错误

变更

修复 currtid() 和 currtid2() 中的错误(Michael Paquier)

这些函数(未写入文档且只被古老版本的 ODBC 驱动使用)包含可导致崩溃的编码错误,或者在应用于没有存储的关系时产生诸如 “could not open file” 之类令人困惑的错误消息。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在持有自旋锁时调用 elog() 或 palloc()

变更

避免在持有自旋锁时调用 elog() 或 palloc()(Michael Paquier、Tom Lane)

与复制槽相关的逻辑有几处违反了这一编码规则。虽然出问题的几率很低,但被调用函数中的错误会导致自旋锁卡死。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误

变更

在 pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误(Justin Pryzby、Tom Lane、Álvaro Herrera)

某些代码路径会产生诸如 “could not write file: Success” 之类的可笑报告。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复同时具有表级权限和列级权限的表的并行恢复

变更

修复同时具有表级权限和列级权限的表的并行恢复(Tom Lane)

表级权限授予必须先被应用,但并行恢复不能可靠地按此排序;这可能导致 “tuple concurrently updated” 错误,或某些列级权限授予消失。修复方法是在归档文件中的此类条目之间包含依赖链接,这意味着必须用修正后的 pg_dump 重新转储,以确保问题不会复发。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零

变更

确保 pg_upgrade 在目标集簇中运行时 vacuum_defer_cleanup_age 被设为零(Bruce Momjian)

如果目标集簇的配置被修改为把 vacuum_defer_cleanup_age 设为非零值,会妨碍系统目录的冻结正常工作,导致升级以令人困惑的方式失败。确保升级期间覆盖任何此类设置。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_recvlogical 在退出前排空未决消息的问题

变更

修复 pg_recvlogical 在退出前排空未决消息的问题(Noah Misch)

没有这一修复,复制发送端可能检测到发送失败并在对复制槽 LSN 位置进行预期的最终更新之前退出。这导致下次连接之后重新传输数据。还可能错过 pg_recvlogical 想消费的最后数据之后发送的错误消息。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_rewind 对源数据目录中刚被删除文件的处理

变更

修复 pg_rewind 对源数据目录中刚被删除文件的处理(Justin Pryzby、Michael Paquier)

使用在线源数据库工作时,并发文件删除是可能的,但如果删除恰好发生在看到文件目录项与用 stat() 检查它之间, pg_rewind 就会困惑。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式

变更

让 pg_test_fsync 在 Windows 上使用二进制 I/O 模式(Michael Paquier)

此前它以文本模式写测试文件,这不能准确反映 PostgreSQL 的实际用法。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/dblink 未能正确初始化本地状态的问题

变更

修复 contrib/dblink 未能正确初始化本地状态的问题(Joe Conway)

在恰当的环境组合下,这可能导致 dblink_close() 发出意外的远程 COMMIT。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pgcrypto 对 deflate() 的误用

变更

修复 contrib/pgcrypto 对 deflate() 的误用(Tom Lane)

由于错误处理 zlib 的 API 要求,pgp_sym_encrypt 函数可能产生错误的压缩数据。我们没有收到过这个错误在原版 zlib 下显现的报告,但在使用 IBM 的 zlibNX 实现时可以看到。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况

变更

修复 contrib/pgcrypto 的 pgp_sym_decrypt 函数中解压逻辑的边界情况(Kyotaro Horiguchi、Michael Paquier)

压缩流可以合法地以空包结束,但解压器未能处理这一点,会抱怨数据损坏。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[]

变更

用 POSIX 标准的 strsignal() 取代 BSD 风格的 sys_siglist[](Tom Lane)

这避免了在非常新的 glibc 版本下的构建失败。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码

变更

支持用 Microsoft Visual Studio 2015 或更高版本构建我们的 NLS 代码(Juan José Santamaría Flecha、Davinder Singh、Amit Kapila)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题

变更

避免源代码树之上若干层存在名为 configure 的文件时我们的 MSVC 安装脚本可能失败的问题(Arnold Müller)

这可能干扰某些通过寻找 configure 来识别源代码树顶层的逻辑。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.22

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.20 之前的版本升级,参见第 E.6 节。

其他改进保留被 ALTER TABLE 重写的索引的 indisclustered 设置

变更

保留被 ALTER TABLE 重写的索引的 indisclustered 设置(Amit Langote、Justin Pryzby)

此前,ALTER TABLE 会丢失哪个索引用于过 CLUSTER 的记录。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进保留被 ALTER TABLE 重写的索引的副本身份属性

变更

保留被 ALTER TABLE 重写的索引的副本身份属性(Quan Zongliang、Peter Eisentraut)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 DROP OWNED BY 期间更早地锁定对象

变更

在 DROP OWNED BY 期间更早地锁定对象(Álvaro Herrera)

这避免了另一会话正在删除部分相同对象的竞态情况下的失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 CREATE ROLE ... IN ROLE 的错误情况处理

变更

修复 CREATE ROLE ... IN ROLE 的错误情况处理(Andrew Gierth)

某些错误情况会被报告为 “unexpected node type” 之类,而不是预期的消息。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 gin_fuzzy_search_limit 处理中的 bug

变更

修复 gin_fuzzy_search_limit 处理中的 bug(Adé Heyward、Tom Lane)

gin_fuzzy_search_limit 的值较小时,可能因无意中多次重新扫描同一索引页而导致意外缓慢。另一条代码路径则完全没有应用预期的过滤,可能返回过多的值。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 circle 类型的输入接受文档所述的 “(x,y),r” 格式

变更

允许 circle 类型的输入接受文档所述的 “(x,y),r” 格式(David Zhang)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 get_bit() 和 set_bit() 函数应对长于 256MB 的 bytea 字符串

变更

让 get_bit() 和 set_bit() 函数应对长于 256MB 的 bytea 字符串(Movead Li)

由于位号参数只有 int4,不可能用这些函数访问长 bytea 前 256MB 之外的位。我们将在 v13 中把参数放宽为 int8,但在此之前,允许这些函数处理长 bytea 的初始子串。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 pg_ls_dir()、pg_timezone_names()、pg_tablespace_databases() 及相关函数可能泄漏打开的目录文件描述符

变更

避免 pg_ls_dir()、pg_timezone_names()、pg_tablespace_databases() 及相关函数可能泄漏打开的目录文件描述符(Justin Pryzby)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复多态函数类型解析,使其在只给出 anyrange 输入时正确推断 anyarray 输出的实际类型

变更

修复多态函数类型解析,使其在只给出 anyrange 输入时正确推断 anyarray 输出的实际类型(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 REINDEX 被会话关闭信号终止时不太可能的崩溃

变更

避免 REINDEX 被会话关闭信号终止时不太可能的崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 EXPLAIN 打印可能不正确的哈希连接表统计信息

变更

防止 EXPLAIN 打印可能不正确的哈希连接表统计信息(Konstantin Knizhnik、Tom Lane、Thomas Munro)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 VACUUM VERBOSE 中堆截断步骤所用时间的报告

变更

修复 VACUUM VERBOSE 中堆截断步骤所用时间的报告(Tatsuhito Kasahara)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免进程的 PS 状态中可能两次显示 “waiting”

变更

避免进程的 PS 状态中可能两次显示 “waiting”(Masahiko Sawada)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免崩溃恢复期间过早回收 WAL 段

变更

避免崩溃恢复期间过早回收 WAL 段(Jehan-Guillaume de Rorthais)

崩溃恢复期间变为可归档的 WAL 段有可能在未被归档的情况下就被回收。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免归档恢复期间扫描无关时间线

变更

避免归档恢复期间扫描无关时间线(Kyotaro Horiguchi)

这可以消除许多从归档存储获取不存在 WAL 文件的尝试,在归档访问缓慢时很有帮助。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进移除逻辑解码中虚假的 “subtransaction logged without previous top-level txn record” 错误检查

变更

移除逻辑解码中虚假的 “subtransaction logged without previous top-level txn record” 错误检查(Arseny Sher、Amit Kapila)

这一条件在各种场景下都可以合法达到,因此移除该检查。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保复制槽的 io_in_progress_lock 在失败代码路径中被释放

变更

确保复制槽的 io_in_progress_lock 在失败代码路径中被释放(Pavan Deolasee)

这可能导致 walsender 之后卡在等待该锁上。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保备库服务器上 nextXid 不会倒退

变更

确保备库服务器上 nextXid 不会倒退(Eka Palamadai)

这一竞态条件可能使错误的热备反馈消息被发回主库,可能导致主库过早运行 VACUUM。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进为少数错误报告补上缺失的 SQLSTATE 值

变更

为少数错误报告补上缺失的 SQLSTATE 值(Sawada Masahiko)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/pgSQL,使其可靠地拒绝把事件触发器函数当作普通函数执行

变更

修复 PL/pgSQL,使其可靠地拒绝把事件触发器函数当作普通函数执行(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复使用 sslmode=verify-full 时 libpq 中的内存泄漏

变更

修复使用 sslmode=verify-full 时 libpq 中的内存泄漏(Roman Peshkurov)

连接启动期间的证书验证可能泄漏一些内存。如果客户端进程在其生命周期内打开许多数据库连接,这就会成为问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 在所有平台上都把仅为 “-” 的参数当作“从 stdin 读取”

变更

修复 ecpg 在所有平台上都把仅为 “-” 的参数当作“从 stdin 读取”(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 转储 RLS 策略对象上的注释

变更

修复 pg_dump 转储 RLS 策略对象上的注释(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_dump 中,把事件触发器的恢复推迟到最后

变更

在 pg_dump 中,把事件触发器的恢复推迟到最后(Fabrízio de Royes Mello、Hamid Akhtar、Tom Lane)

这能把事件触发器干扰其他对象恢复的风险降到最低。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 createdb 实用程序中 --encoding、--lc-ctype 和 --lc-collate 值的引号处理

变更

修复 createdb 实用程序中 --encoding、--lc-ctype 和 --lc-collate 值的引号处理(Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进contrib/lo 的 lo_manage() 函数在被直接调用而非作为触发器调用时崩溃

变更

contrib/lo 的 lo_manage() 函数在被直接调用而非作为触发器调用时崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 contrib/ltree 中,防止 ltree 和 lquery 长度字段溢出

变更

在 contrib/ltree 中,防止 ltree 和 lquery 长度字段溢出(Nikita Glukhov)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/sepgsql 中的缓存引用泄漏

变更

修复 contrib/sepgsql 中的缓存引用泄漏(Michael Luo)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在 Windows 上处理 Unix 风格区域名时的失败

变更

避免在 Windows 上处理 Unix 风格区域名时的失败(Juan José Santamaría Flecha)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中,处理 Python 路径名中的空格

变更

在 MSVC 构建中,处理 Python 路径名中的空格(Victor Wagner)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 MSVC 构建中,修复 Visual Studio 版本检测以适应更多语言设置

变更

在 MSVC 构建中,修复 Visual Studio 版本检测以适应更多语言设置(Andrew Dunstan)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中,对 3.0 之后的 bison 版本使用 -Wno-deprecated,与非 Windows 构建已经做的一样

变更

在 MSVC 构建中,对 3.0 之后的 bison 版本使用 -Wno-deprecated,与非 Windows 构建已经做的一样(Andrew Dunstan)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2020a,涉及摩洛哥和加拿大育空的夏令时法规变更,以及上海的历史修正。

变更

更新时区数据文件到 tzdata 版本 2020a,涉及摩洛哥和加拿大育空的夏令时法规变更,以及上海的历史修正。

America/Godthab 时区已更名为 America/Nuuk 以反映当前英语用法;不过,旧名称仍作为兼容链接可用。

同时,更新 initdb 的已知 Windows 时区名列表以包含新近添加的名称,提高它在该平台上正确翻译系统时区设置的几率。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.21

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.20 之前的版本升级,参见第 E.6 节。

其他改进修复大事务必须被溢出到许多单独临时文件时逻辑解码的失败

变更

修复大事务必须被溢出到许多单独临时文件时逻辑解码的失败(Amit Khandekar)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复数据库崩溃并重启之后逻辑复制发布方的失败

变更

修复数据库崩溃并重启之后逻辑复制发布方的失败(Vignesh C)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免没有空闲动态共享内存槽位时的内存泄漏

变更

避免没有空闲动态共享内存槽位时的内存泄漏(Thomas Munro)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进对临时表执行索引创建、删除或重建时忽略 CONCURRENTLY 选项

变更

对临时表执行索引创建、删除或重建时忽略 CONCURRENTLY 选项(Michael Paquier、Heikki Linnakangas、Andres Freund)

这避免了临时表带有 ON COMMIT 动作时的奇怪失败。反正对临时表使用 CONCURRENTLY 没有益处,因为其他会话无法访问该表,额外的处理毫无意义。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能的失败

变更

修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能的失败(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对 box、range 和 inet 数据类型执行 BRIN 索引操作时可能的崩溃

变更

修复对 box、range 和 inet 数据类型执行 BRIN 索引操作时可能的崩溃(Heikki Linnakangas)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GIN 索引中对已删除页的处理

变更

修复 GIN 索引中对已删除页的处理(Alexander Korotkov)

避免可能的死锁、已删除页状态的错误更新,以及穿过最近删除页的遍历失败。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能的崩溃

变更

修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能的崩溃(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复按引用传递的聚合转换状态不太可能的崩溃

变更

修复按引用传递的聚合转换状态不太可能的崩溃(Andres Freund、Teodor Sigaev)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 to_date() 和 to_timestamp() 中的错误报告

变更

改进 to_date() 和 to_timestamp() 中的错误报告(Tom Lane、Álvaro Herrera)

关于输入字符串中不正确月份或日期名称的报告,可能在多字节字符中间截断输入,导致错误编码的错误消息并引发后续失败。现在改为在下一个空白处截断。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复公元前日期的 EXTRACT(ISOYEAR FROM timestamp) 的差一结果

变更

修复公元前日期的 EXTRACT(ISOYEAR FROM timestamp) 的差一结果(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免系统目录中存在自引用视图时 information_schema 视图中的栈溢出

变更

避免系统目录中存在自引用视图时 information_schema 视图中的栈溢出(Tom Lane)

自引用视图无法工作;它总是导致无限递归。我们在尝试执行该视图时能正确处理这种情况,但在查询它是否自动可更新时不能。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进改进有超大内侧关系的哈希连接的性能

变更

改进有超大内侧关系的哈希连接的性能(Thomas Munro)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 <@ 和 @> 范围操作符选择率计算中的边界崩溃和估计错误

变更

修复 <@ 和 @> 范围操作符选择率计算中的边界崩溃和估计错误(Michael Paquier、Andrey Borodin、Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进对试图在带条件 INSTEAD 规则的视图上使用自动更新的错误报告

变更

改进对试图在带条件 INSTEAD 规则的视图上使用自动更新的错误报告(Dean Rasheed)

这从未被支持过,但此前错误只在执行时抛出,因此可能被规划器错误掩盖。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止复合类型通过范围类型间接包含自身

变更

防止复合类型通过范围类型间接包含自身(Tom Lane、Julien Rouhaud)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对禁止类型索引表达式的错误报告

变更

修复对禁止类型索引表达式的错误报告(Amit Langote)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复仅包含 VALUES 列表的视图的转储,以处理视图输出列被改名的情况

变更

修复仅包含 VALUES 列表的视图的转储,以处理视图输出列被改名的情况(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 libpq 在未编译 GSSAPI 代码时也解析所有与 GSS 相关的连接参数

变更

允许 libpq 在未编译 GSSAPI 代码时也解析所有与 GSS 相关的连接参数(Tom Lane)

这使行为与我们的 SSL 支持相似——很久以前我们就认为始终接受所有相关参数是个好主意,即使在特定构建中因缺少该特性而忽略或限制某些参数。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数中 %b 和 %B 格式代码的错误处理

变更

修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数中 %b 和 %B 格式代码的错误处理(Tomas Vondra)

由于差一错误,这些代码会打印错误的月份名称,或者可能崩溃。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复并行 pg_dump/pg_restore 更优雅地处理工作者进程创建失败

变更

修复并行 pg_dump/pg_restore 更优雅地处理工作者进程创建失败(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复防止试图通过信号终止并行 pg_dump/ pg_restore 运行时可能的崩溃或锁死

变更

防止试图通过信号终止并行 pg_dump/ pg_restore 运行时可能的崩溃或锁死(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_upgrade 中,搜索表中不可升级数据类型时深入数组和范围内部

变更

在 pg_upgrade 中,搜索表中不可升级数据类型时深入数组和范围内部(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进对 createuser 的 --connection-limit 选项应用更彻底的语法检查

变更

对 createuser 的 --connection-limit 选项应用更彻底的语法检查(Álvaro Herrera)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 contrib/dict_int 中,拒绝小于一的 maxlen 设置

变更

在 contrib/dict_int 中,拒绝小于一的 maxlen 设置(Tomas Vondra)

这防止了该参数的愚蠢设置可能导致的崩溃。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止 contrib/tablefunc 的 crosstab() 函数中的 NULL 类别值

变更

禁止 contrib/tablefunc 的 crosstab() 函数中的 NULL 类别值(Joe Conway)

这种情况从来就不能正常工作,而且在某些平台上会崩溃。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把一些超时和统计跟踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们

变更

把一些超时和统计跟踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们(Pascal Legrand)

这适用于 lock_timeout、statement_timeout、track_activities、track_counts 和 track_functions。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复导致 Windows 上进程间信号延迟传递的竞态条件

变更

修复导致 Windows 上进程间信号延迟传递的竞态条件(Amit Kapila)

这导致 NOTIFY 中可见的时机异常,或许还有其他错误行为。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,ERROR_ACCESS_DENIED 文件访问失败后重试几次

变更

在 Windows 上,ERROR_ACCESS_DENIED 文件访问失败后重试几次(Alexander Lakhin、Tom Lane)

这有助于应对目标文件已被标记为删除但尚未真正消失而导致打开失败的情况。例如,pg_ctl 在探测 postmaster 是否已关闭时经常因这种错误而失败。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.20

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你在 contrib/intarray 扩展中使用了 GiST 索引,并且依赖 <@ 操作符的索引搜索,请参见下面相关条目。

另外,如果你是从 9.5.13 之前的版本升级,参见第 E.13 节。

其他改进如果不是所有父表都被更改,禁止更改多重继承列的类型

变更

如果不是所有父表都被更改,禁止更改多重继承列的类型(Tom Lane)

此前这是允许的,随后对此时已不同步的父表的查询会失败。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 VACUUM 尝试冻结涉及仍在运行的事务的旧多事务 ID

变更

防止 VACUUM 尝试冻结涉及仍在运行的事务的旧多事务 ID(Nathan Bossart、Jeremy Schneider)

这种情况会导致 VACUUM 失败,直到旧事务结束。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保查询表达式被改写时 WINDOW 子句中的偏移表达式也得到处理

变更

确保查询表达式被改写时 WINDOW 子句中的偏移表达式也得到处理(Andrew Gierth)

这一疏漏可能在偏移是非平凡表达式时导致各种失败。一个例子是,如果函数被内联,此类表达式中的函数参数引用会失败。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 WITH CHECK OPTION 表达式和行级安全策略表达式中整行变量的处理

变更

修复 WITH CHECK OPTION 表达式和行级安全策略表达式中整行变量的处理(Andres Freund)

此前,这种用法可能导致关于行类型不匹配的虚假错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免并行查询在没有空闲 postmaster 子进程数组槽位时请求后台工作者导致 postmaster 失败

变更

避免并行查询在没有空闲 postmaster 子进程数组槽位时请求后台工作者导致 postmaster 失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 BEFORE UPDATE 触发器原样返回旧元组且它不是最后一个此类触发器时可能的双重释放

变更

防止 BEFORE UPDATE 触发器原样返回旧元组且它不是最后一个此类触发器时可能的双重释放(Thomas Munro)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在并行工作者启动期间设置 GUC 参数发生错误时提供相关的错误上下文行

变更

在并行工作者启动期间设置 GUC 参数发生错误时提供相关的错误上下文行(Thomas Munro)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在可序列化模式下,确保对正确版本的行获取行级谓词锁

变更

在可序列化模式下,确保对正确版本的行获取行级谓词锁(Thomas Munro、Heikki Linnakangas)

如果行的可见版本经过 HOT 更新,锁可能被加到它现已死亡的前身上,导致细微的序列化保证失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 fsync() 只应用于以读/写方式打开的文件

变更

确保 fsync() 只应用于以读/写方式打开的文件(Andres Freund、Michael Paquier)

某些代码路径在以只读方式打开文件后试图这样做,但在某些平台上这会导致 “bad file descriptor” 或类似错误。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许编码转换在比以前更长的字符串上成功

变更

允许编码转换在比以前更长的字符串上成功(Álvaro Herrera、Tom Lane)

此前输入字符串有 0.25GB 的硬限制,但现在只要转换后的输出不超过 1GB 就能工作。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 repalloc() 在大块被缩小时归还空间

变更

允许 repalloc() 在大块被缩小时归还空间(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保归档恢复结束时移除临时 WAL 和历史文件

变更

确保归档恢复结束时移除临时 WAL 和历史文件(Sawada Masahiko)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免启用 recovery_min_apply_delay 时归档恢复的失败

变更

避免启用 recovery_min_apply_delay 时归档恢复的失败(Fujii Masao)

recovery_min_apply_delay 通常不用于这种配置,但它应当能工作。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免逻辑复制 walsender 关闭期间的不必要延迟

变更

避免逻辑复制 walsender 关闭期间的不必要延迟(Craig Ringer、Álvaro Herrera)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进为逻辑解码正确地为复制消息打时间戳

变更

为逻辑解码正确地为复制消息打时间戳(Jeff Janes)

这一疏漏导致例如 pg_stat_subscription.last_msg_send_time 通常读作 NULL。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在逻辑解码中,确保重建快照时正确统计子事务

变更

在逻辑解码中,确保重建快照时正确统计子事务(Masahiko Sawada)

这个错误导致断言失败;生产构建中是否存在不良影响尚不清楚。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复后端进程此前等待过同步复制时,后端退出期间的竞态条件

变更

修复后端进程此前等待过同步复制时,后端退出期间的竞态条件(Dongming Liu)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ALTER SYSTEM 应对 postgresql.auto.conf 中重复条目的问题

变更

修复 ALTER SYSTEM 应对 postgresql.auto.conf 中重复条目的问题(Ian Barwick)

ALTER SYSTEM 本身不会产生这种状态,但修改 postgresql.auto.conf 的外部工具可能这样做。目标变量的重复条目现在会被移除,然后新的设置(如果有)会被追加到末尾。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进拒绝配置文件中文件名为空的 include 指令,并更清晰地报告 include 文件递归

变更

拒绝配置文件中文件名为空的 include 指令,并更清晰地报告 include 文件递归(Ian Barwick、Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免使用 PAM 认证时记录关于废弃连接的抱怨

变更

避免使用 PAM 认证时记录关于废弃连接的抱怨(Tom Lane)

基于 libpq 的客户端在需要密码时通常会做两次连接尝试,因为它们直到第一次连接尝试失败才提示用户输入密码。因此服务器的编码被设计成当客户端在被要求输入密码时关闭连接不产生无用的日志垃圾。然而 PAM 认证代码没有收到这份备忘,会生成几条关于幻影认证失败的消息。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 time with time zone 输入中某些未检测到不完整日期规格的情况

变更

修复 time with time zone 输入中某些未检测到不完整日期规格的情况(Alexander Lakhin)

如果指定的时区 UTC 偏移量随时间变化,那么也必须指定日期才能解析偏移量。根据所用的语法,这一检查在某些情况下未被强制执行,允许产生虚假输出。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 bitshiftright() 的错误行为

变更

修复 bitshiftright() 的错误行为(Tom Lane)

当位串长度不是 8 的倍数时,位串右移操作符未能把结果最后一字节中存在的填充空间清零。虽然对大多数操作不可见,但那里的任何非零位都会导致意外的比较行为,因为位串比较不会特意忽略多余的位,而是预期它们始终为零。

如果你因把 bitshiftright() 的输出保存到表中而有不一致的数据,可以用类似下面的语句修复:

UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复间隔乘法中边界整数溢出的检测

变更

修复间隔乘法中边界整数溢出的检测(Yuya Watari)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GIN posting 列表的错误压缩逻辑

变更

修复 GIN posting 列表的错误压缩逻辑(Heikki Linnakangas)

如果相邻被索引 TID 之间的距离超过 16TB,一个 GIN posting 列表项可能需要 7 字节。逻辑中的一步与此不同步,可能试图把值写入 6 字节缓冲区。原则上这可能导致栈越界,但在大多数体系结构上,下一个字节很可能是未使用的对齐填充,使该 bug 无害。无论如何,这个 bug 都很难被触发到。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 KNN-GiST 中对无穷大、NaN 和 NULL 值的处理

变更

修复 KNN-GiST 中对无穷大、NaN 和 NULL 值的处理(Alexander Korotkov)

如果为非空列值计算的某些距离是无穷大或 NaN,查询的输出顺序可能错误(与普通排序的结果不同)。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 KNN-SP-GiST 中对 NULL 搜索的处理

变更

修复 KNN-SP-GiST 中对 NULL 搜索的处理(Nikita Glukhov)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,识别 “Norwegian (Bokmål)” 区域名的更多拼法

变更

在 Windows 上,识别 “Norwegian (Bokmål)” 区域名的更多拼法(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 ECPG 客户端在定义了 ENABLE_NLS 的情况下包含 ecpglib.h 时编译失败

变更

避免 ECPG 客户端在定义了 ENABLE_NLS 的情况下包含 ecpglib.h 时编译失败(Tom Lane)

这个风险是由一个错位的声明造成的:ecpg_gettext() 不应对客户端代码可见。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 psql 中,意外连接丢失并成功重连之后重新同步关于服务器的内部状态

变更

在 psql 中,意外连接丢失并成功重连之后重新同步关于服务器的内部状态(Peter Billen、Tom Lane)

通常这是不必要的,因为状态反正会相同。但在边界情况下可能有关系,例如连接可能通向几台服务器之一。这一更改使 psql 重新发出它在启动时会发出的任何交互式消息,例如关于是否使用 SSL。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 psql 中平台相关的空指针解引用

变更

避免 psql 中平台相关的空指针解引用(Quentin Rameau)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 对视图中循环依赖的处理

变更

修复 pg_dump 对视图中循环依赖的处理(Tom Lane)

某些情况下视图可能依赖于 pg_dump 需要在视图之后转储的对象;最常见的例子是在主键列上使用 GROUP BY 的查询在没有主键时可能在语义上无效。现在通过发出一个仅建立视图列名和类型的虚拟 CREATE VIEW 命令、之后再发出带完整视图定义的 CREATE OR REPLACE VIEW 来处理。此前虚拟定义实际上是一条 CREATE TABLE 命令,之后通过 CREATE RULE 命令自动转换成视图。这种新方法在 PostgreSQL 版本 10 及之后已经成功使用。现在把它向后移植到较旧的版本,是因为有报告称以前的方法会导致关于视图副本身份状态的虚假错误消息。这一更改还避免了在涉及此类视图的恢复期间尝试使用 --clean 选项时的问题。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_dump 中,确保同名触发器和行级安全策略对象的稳定输出顺序

变更

在 pg_dump 中,确保同名触发器和行级安全策略对象的稳定输出顺序(Benjie Gillam)

此前,如果不同表上的两个触发器同名,它们会按基于 OID 的顺序排序,这不如按表名排序理想。RLS 策略同理。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 重新与 8.3 之前的源服务器工作的问题

变更

修复 pg_dump 重新与 8.3 之前的源服务器工作的问题(Tom Lane)

此前的一次修复使 pg_dump 总是试图查询 pg_opfamily,但该目录在 8.3 版之前不存在。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_restore 中,把 -f - 当作“输出到 stdout”

变更

在 pg_restore 中,把 -f - 当作“输出到 stdout”(Álvaro Herrera)

这使 pg_restore 的行为与其他一些应用同步,特别是使 v12 之前的分支表现得与版本 12 的 pg_restore 相似,简化了跨多个 PostgreSQL 版本的转储/恢复脚本的创建。在此更改之前,pg_restore 把这种开关解释为“输出到名为 - 的文件”,但很少有人会想要那样。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 pg_upgrade 对使用表示已更改的数据类型(如 line)的检查

变更

改进 pg_upgrade 对使用表示已更改的数据类型(如 line)的检查(Tomas Vondra)

原来的编码可能被所关注数据类型构成域或复合类型的存储列底层的情况所欺骗。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进检测 pg_basebackup 期间的文件读取错误

变更

检测 pg_basebackup 期间的文件读取错误(Jeevan Chalke)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在带在线源集簇的 pg_rewind 中,禁用超时,与 pg_dump 的做法类似

变更

在带在线源集簇的 pg_rewind 中,禁用超时,与 pg_dump 的做法类似(Alexander Kukushkin)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_waldump 使用 -s 选项且延续 WAL 记录恰好在页边界结束时失败的问题

变更

修复 pg_waldump 使用 -s 选项且延续 WAL 记录恰好在页边界结束时失败的问题(Andrey Lepikhov)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_waldump 中,在 btree 页分裂记录中包含 newitemoff 字段

变更

在 pg_waldump 中,在 btree 页分裂记录中包含 newitemoff 字段(Peter Geoghegan)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_waldump 使用 --bkp-details 选项时,避免为涉及整页写入的 WAL 记录输出多余换行

变更

在 pg_waldump 使用 --bkp-details 选项时,避免为涉及整页写入的 WAL 记录输出多余换行(Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_waldump 中的小内存泄漏

变更

修复 pg_waldump 中的小内存泄漏(Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 vacuumdb 使用高 --jobs 选项时更好地处理文件描述符耗尽

变更

修复 vacuumdb 使用高 --jobs 选项时更好地处理文件描述符耗尽(Michael Paquier)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/intarray 的 GiST 操作符类在空数组使用 <@ 时不失败的问题

变更

修复 contrib/intarray 的 GiST 操作符类在空数组使用 <@ 时不失败的问题(Tom Lane)

像 array_column <@ constant_array 这样的子句被认为可索引,但索引搜索可能找不到空数组值;当然,这种条目应当平凡地匹配搜索。

唯一实际可向后移植的修复要求 <@ 索引搜索扫描整个索引,本补丁就是这么做的。这很不幸:这意味着查询性能可能比 plain 顺序扫描更差。

性能受此更改不利影响的应用有两种选择。可以改用没有此 bug 的 GIN 索引,或者把 array_column <@ constant_array 替换为 array_column <@ constant_array AND array_column && constant_array。后者的性能与之前大致相同,并且会找到给定常数数组的所有非空子集——这本来就是以前对该查询唯一能可靠期望得到的。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 configure --with-python 在只能找到 python3 或只能找到 python2 时成功

变更

允许 configure --with-python 在只能找到 python3 或只能找到 python2 时成功(Peter Eisentraut、Tom Lane)

先搜索 python,再搜索 python3,再搜索 python2,使 configure 在没有名为 python 的可执行文件这一日益常见的情况下也能成功。仍然可以通过设置 PYTHON 环境变量覆盖这一选择。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 configure 的 libperl 存在性测试,使其在最近的 Red Hat 版本上工作

变更

修复 configure 的 libperl 存在性测试,使其在最近的 Red Hat 版本上工作(Tom Lane)

此前,如果用户把 CFLAGS 设为 -O0,它可能失败。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复确保 PowerPC 上自旋锁的正确代码生成

变更

确保 PowerPC 上自旋锁的正确代码生成(Noah Misch)

原来的自旋锁编码允许编译器为一条不接受寄存器零的汇编指令选择寄存器零,导致构建失败。我们只见过一份很久以前与此 bug 匹配的报告,但它可能给尝试构建修改过的 PostgreSQL 代码或使用非典型编译器选项的人带来问题。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 PowerPC 上,避免依赖 xlc 编译器的 __fetch_and_add() 函数

变更

在 PowerPC 上,避免依赖 xlc 编译器的 __fetch_and_add() 函数(Noah Misch)

xlc 13 及更新版本以与我们的用法不兼容的方式解释该函数,导致 PostgreSQL 的构建不可用。改用自定义汇编代码修复。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 AIX 上,不使用编译器选项 -qsrcmsg

变更

在 AIX 上,不使用编译器选项 -qsrcmsg(Noah Misch)

这避免了 xlc v16.1.0 的内部编译器错误,除了更改编译器错误消息的格式之外几乎没有其他后果。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 MSVC 构建过程以应对 OpenSSL 文件路径中的空格

变更

修复 MSVC 构建过程以应对 OpenSSL 文件路径中的空格(Andrew Dunstan)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2019c,涉及斐济和诺福克岛的夏令时法规变更,以及艾伯塔、奥地利、比利时、不列颠哥伦比亚、柬埔寨、香港、印第安纳(佩里县)、加里宁格勒、肯塔基、密歇根、诺福克岛、韩国和土耳其的历史修正。

变更

更新时区数据文件到 tzdata 版本 2019c,涉及斐济和诺福克岛的夏令时法规变更,以及艾伯塔、奥地利、比利时、不列颠哥伦比亚、柬埔寨、香港、印第安纳(佩里县)、加里宁格勒、肯塔基、密歇根、诺福克岛、韩国和土耳其的历史修正。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.19

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.13 之前的版本升级,参见第 E.13 节。

安全相关要求使用函数式转换语法转换到临时类型时进行模式限定

变更

要求使用函数式转换语法转换到临时类型时进行模式限定(Noah Misch)

我们长期以来一直要求临时函数的调用显式指定临时模式,即 pg_temp.func_name(args)。现在把这一要求同样应用于使用函数表示法转换到临时类型,例如 pg_temp.type_name(arg)。否则有可能截获使用临时对象的函数调用,从而以与我们在 CVE-2007-2138 中封堵的方式大致相同的途径实现权限提升。(CVE-2019-10208)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在一条命令中更改多列类型时 ALTER TABLE ... ALTER COLUMN TYPE 的失败

变更

修复在一条命令中更改多列类型时 ALTER TABLE ... ALTER COLUMN TYPE 的失败(Tom Lane)

这修复了最近几个小版本中引入的回归:使用被更改列的索引未被正确处理,导致 ALTER TABLE 期间的奇怪失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免对某些带 GROUPING SETS 的查询使用不必要的排序步骤

变更

避免对某些带 GROUPING SETS 的查询使用不必要的排序步骤(Andrew Gierth、Richard Guo)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复重建外键约束时多列外键的处理不当

变更

修复重建外键约束时多列外键的处理不当(Tom Lane)

如果键的所有列不都是同一类型,ALTER TABLE 可能对是否需要重新验证外键做出错误决定。看来该错误的方向总是保守的,即不必要地重新验证。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止对以 infinity 为端点的日期范围的错误规范化

变更

防止对以 infinity 为端点的日期范围的错误规范化(Laurenz Albe)

如果端点是无穷,试图通过递增或递减端点值把开区间转换为闭区间或反之都是不正确的;因此在这种情况下保持范围不变。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复把非常大的 money 值转换为 numeric 时小数位数的丢失

变更

修复把非常大的 money 值转换为 numeric 时小数位数的丢失(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 MIPS CPU 的自旋锁汇编代码,使其在 MIPS r6 上工作

变更

修复 MIPS CPU 的自旋锁汇编代码,使其在 MIPS r6 上工作(YunQiang Su)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 libpq 忽略连接服务文件中的回车(\r)

变更

让 libpq 忽略连接服务文件中的回车(\r)(Tom Lane、Michael Paquier)

在某些边界情况下,包含 Windows 风格换行的服务文件可能被错误解析,导致连接失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 确保自定义操作符类以正确的顺序转储

变更

修复 pg_dump 确保自定义操作符类以正确的顺序转储(Tom Lane)

如果用户定义的操作符类是某个用户定义范围类型的子类型操作符类,相关对象会以错误的顺序转储,产生无法恢复的转储。(操作符类依赖处理的这一底层失败也可能在其他情况下显现,但这是唯一已知的情况。)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/passwordcheck 与 check_password_hook 的其他使用者共存的问题

变更

修复 contrib/passwordcheck 与 check_password_hook 的其他使用者共存的问题(Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/sepgsql 测试在最近的 SELinux 版本下工作的问题

变更

修复 contrib/sepgsql 测试在最近的 SELinux 版本下工作的问题(Mike Palmiotto)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进减少 pg_upgrade 测试脚本的 stderr 输出

变更

减少 pg_upgrade 测试脚本的 stderr 输出(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持用 Microsoft Visual Studio 2019 构建 Postgres

变更

支持用 Microsoft Visual Studio 2019 构建 Postgres(Haribabu Kommi)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Visual Studio 构建中,尊重 WindowsSDKVersion 环境变量(如果已设置)

变更

在 Visual Studio 构建中,尊重 WindowsSDKVersion 环境变量(如果已设置)(Peifeng Qiu)

这修复了某些配置下的构建失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Visual Studio 构建中支持 OpenSSL 1.1.0 及更新版本

变更

在 Visual Studio 构建中支持 OpenSSL 1.1.0 及更新版本(Juan José Santamaría Flecha、Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许在顶层调用非 GNU make 时把 make 选项传递给 gmake

变更

允许在顶层调用非 GNU make 时把 make 选项传递给 gmake(Thomas Munro)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 initdb 期间选择 localtime 或 posixrules 作为 TimeZone

变更

避免 initdb 期间选择 localtime 或 posixrules 作为 TimeZone(Tom Lane)

某些情况下 initdb 会选择这些人工时区名之一而不是“真实”时区名。让任何其他与 C 库时区行为相匹配的时区都优先于这两个。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进调整 pg_timezone_names 视图,使其仅当 Factory 时区有短缩写时才显示它

变更

调整 pg_timezone_names 视图,使其仅当 Factory 时区有短缩写时才显示它(Tom Lane)

历史上,IANA 为这个人工时区设置的“缩写”形如 Local time zone must be set--see zic manual page。现代版本的 tzdb 数据库显示 -00,但某些平台修改了数据以显示历史措辞之一或另一个。仅当该时区使用现代缩写时才显示它。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们的时区库副本与 IANA tzcode 版本 2019b 同步

变更

把我们的时区库副本与 IANA tzcode 版本 2019b 同步(Tom Lane)

这增加了对 zic 新的 -b slim 选项的支持,以缩小安装的时区文件。我们目前没有使用它,但将来可能启用。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2019b,涉及巴西的夏令时法规变更,以及香港、意大利和巴勒斯坦的历史修正。

变更

更新时区数据文件到 tzdata 版本 2019b,涉及巴西的夏令时法规变更,以及香港、意大利和巴勒斯坦的历史修正。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.18

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.13 之前的版本升级,参见第 E.13 节。

BUG 修复修复表带有部分排他约束时 ALTER TABLE ... ALTER COLUMN TYPE 的失败

变更

修复表带有部分排他约束时 ALTER TABLE ... ALTER COLUMN TYPE 的失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对域约束的注释执行 COMMENT 命令的失败

变更

修复对域约束的注释执行 COMMENT 命令的失败(Daniel Gustafsson、Michael Paquier)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复带重复连接名的查询的错误打印

变更

修复带重复连接名的查询的错误打印(Philip Dubé)

这一疏漏导致包含此类查询的视图在转储/恢复时失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复正则表达式中 {1,1} 量词的错误优化

变更

修复正则表达式中 {1,1} 量词的错误优化(Tom Lane)

此类量词被当作无操作而被优化掉;但文档规定它们会给所附加的子表达式施加贪婪性,或者对于非贪婪变体 {1,1}? 施加非贪婪性,而这没有发生。只有当子表达式包含捕获圆括号或反向引用时才会出现错误行为。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免初始化新进程的 pg_stat_activity 数据时可能的失败

变更

避免初始化新进程的 pg_stat_activity 数据时可能的失败(Tom Lane)

某些可能失败的操作(如把从 SSL 证书提取的字符串转换为数据库编码)在关键节内执行。那里的失败会因违反共享 pg_stat_activity 数据的访问协议而导致数据库范围的锁死。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复检查冲突 postmaster 是否仍在使用既有共享内存段的竞态条件

变更

修复检查冲突 postmaster 是否仍在使用既有共享内存段的竞态条件(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在未连接到特定数据库的进程中尝试为参数检查做数据库访问

变更

避免在未连接到特定数据库的进程中尝试为参数检查做数据库访问(Vignesh C、Andres Freund)

这个错误可能导致诸如 “cannot read pg_class without having selected a database” 之类的失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免使用 SSL 且 OpenSSL 未决数据缓冲区包含恰为 256 字节整数倍的数据时 libpq 可能的挂起

变更

避免使用 SSL 且 OpenSSL 未决数据缓冲区包含恰为 256 字节整数倍的数据时 libpq 可能的挂起(David Binderman)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 initdb 对系统时区多个等价名称的处理

变更

改进 initdb 对系统时区多个等价名称的处理(Tom Lane、Andrew Gierth)

让 initdb 检查 /etc/localtime 符号链接(如果存在),以在系统时区的等价名称之间打破平局。这使 initdb 在存在多个相同时区时更可能选择用户期望的时区名。如果 /etc/localtime 不是指向时区数据文件的符号链接,或者时区是由 TZ 环境变量确定的,则不会改变行为。

另外,当 TZ 和 /etc/localtime 都未提供提示时,优先选择 UTC 而不是该时区的其他拼法。这修复了 tzdata 2019a 把 UCT 和 UTC 时区名变为等价而引入的烦恼:initdb 随后偏爱 UCT,而几乎没人想要它。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 reindexdb 的误导性错误报告

变更

修复 reindexdb 的误导性错误报告(Julien Rouhaud)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复确保使用并行作业时发生错误 vacuumdb 返回正确的状态

变更

确保使用并行作业时发生错误 vacuumdb 返回正确的状态(Julien Rouhaud)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 contrib/postgres_fdw 中,考虑本地 BEFORE ROW UPDATE 触发器可能做的数据修改

变更

在 contrib/postgres_fdw 中,考虑本地 BEFORE ROW UPDATE 触发器可能做的数据修改(Shohei Mochizuki)

如果触发器修改了 UPDATE 本不会更改的列,新值不会被传输到远程服务器。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,避免数据库编码设为 SQL_ASCII 而我们尝试记录非 ASCII 字符串时的失败

变更

在 Windows 上,避免数据库编码设为 SQL_ASCII 而我们尝试记录非 ASCII 字符串时的失败(Noah Misch)

代码此前假定这种字符串必须是 UTF-8,如果它们看起来不是有效编码就会抛出错误。现在,只是把未翻译的字节传给日志。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 PL/pgSQL 的头文件对 C++ 安全

变更

使 PL/pgSQL 的头文件对 C++ 安全(George Tarasov)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.17

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.13 之前的版本升级,参见第 E.13 节。

安全相关防止通过选择率估计器绕过行级安全策略

变更

防止通过选择率估计器绕过行级安全策略(Dean Rasheed)

规划器的一些选择率估计器会对 pg_statistic 中的值(如最常见值)应用用户定义的操作符。因此,泄漏型操作符可以泄露数据列中的一些条目,即使调用用户没有读取该列的权限。我们在 CVE-2017-7484 中加了限制来防止这一点,但没有考虑到行级安全的影响。有 SQL 权限读取某列、但因 RLS 策略被禁止看到某些行的用户,仍可能通过泄漏型操作符了解这些行的内容。本补丁进一步收紧规则,仅当没有相关 RLS 策略时才允许把泄漏型操作符应用于统计数据。(CVE-2019-10130)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对每个表都可被排除的继承树或分区表执行 UPDATE 或 DELETE 时的行为

变更

修复对每个表都可被排除的继承树或分区表执行 UPDATE 或 DELETE 时的行为(Amit Langote、Tom Lane)

这类情况下,当存在 RETURNING 子句时,查询没有报告正确的输出列集合;如果有应当触发的语句级触发器,它也没有触发。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复目标关系是可更新视图时带多行 VALUES 的 INSERT ... VALUES 命令中显式 DEFAULT 项的处理

变更

修复目标关系是可更新视图时带多行 VALUES 的 INSERT ... VALUES 命令中显式 DEFAULT 项的处理(Amit Langote、Dean Rasheed)

当可更新视图对该列没有默认值而其底层表有时,单行 INSERT ... VALUES 会使用底层表的默认值。然而在多行情况下,总是使用 NULL。已纠正为与单行情况一致。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 CREATE VIEW 允许零列视图

变更

修复 CREATE VIEW 允许零列视图(Ashutosh Sharma)

为了与允许零列表保持一致,我们应当允许这一点。由于表可以被转换为视图,即使有此限制也能创建零列视图,从而导致转储/恢复失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进补上对 CREATE TABLE IF NOT EXISTS ... AS EXECUTE ... 的缺失支持

变更

补上对 CREATE TABLE IF NOT EXISTS ... AS EXECUTE ... 的缺失支持(Andreas Karlsson)

IF NOT EXISTS 与 EXECUTE 的组合应当能工作,但语法中遗漏了它。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复确保行级安全策略表达式中出现的子 SELECT 以正确的用户权限执行

变更

确保行级安全策略表达式中出现的子 SELECT 以正确的用户权限执行(Dean Rasheed)

此前,如果带 RLS 策略的表是通过视图访问的,这种检查可能以调用视图的用户而非应有的视图所有者身份执行。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 xmloption 设为 content 时按 SQL:2006 及后续标准的要求接受 XML 文档作为 xml 类型的有效值

变更

在 xmloption 设为 content 时按 SQL:2006 及后续标准的要求接受 XML 文档作为 xml 类型的有效值(Chapman Flack)

此前 PostgreSQL 遵循不允许这么做的 SQL:2003 定义。但这给转储/恢复带来了严重问题:没有哪个 xmloption 设置能接受所有有效 XML 数据。因此切换到 2006 定义。

还修改了 pg_dump,使其在恢复数据期间发出 SET xmloption = content,确保即使当前设置是 document 转储/恢复也能工作。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进服务器启动时对既有共享内存段是否仍在使用的检查

变更

改进服务器启动时对既有共享内存段是否仍在使用的检查(Noah Misch)

即使 postmaster.pid 文件已被移除,postmaster 现在也更可能检测到上一个 postmaster 实例仍有活动进程。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GIN 索引 WAL 记录的不兼容

变更

修复 GIN 索引 WAL 记录的不兼容(Alexander Korotkov)

二月份小版本中应用的一个修复对向后兼容性不够谨慎,导致那个年代的备库服务器读取前一个小版本的主库生成的 GIN 页删除 WAL 记录时出问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在适当的情况下容忍 fsync 和 sync_file_range 调用的 EINVAL 和 ENOSYS 错误结果

变更

在适当的情况下容忍 fsync 和 sync_file_range 调用的 EINVAL 和 ENOSYS 错误结果(Thomas Munro、James Sewell)

此前对文件同步失败就 panic 的更改对于某些失败可预见且基本上意味着“操作不受支持”的情况显得过于偏执。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 FULL 外连接中通向外部横向引用导致的 “failed to build any N-way joins” 规划器失败

变更

修复 FULL 外连接中通向外部横向引用导致的 “failed to build any N-way joins” 规划器失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在执行关于让泄漏型操作符看到 pg_statistic 数据的规则时,检查正确用户的权限

变更

在执行关于让泄漏型操作符看到 pg_statistic 数据的规则时,检查正确用户的权限(Dean Rasheed)

当底层表通过视图被访问时,在决定是否可以把泄漏型操作符应用于该表的统计数据时,考虑视图所有者的权限而不是发起查询的用户的权限。这使规划器关于哪些数据可见的规则与执行器的规则一致,避免了不必要的低劣计划。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免回滚创建了许多表的事务时的 O(N^2) 性能问题

变更

避免回滚创建了许多表的事务时的 O(N^2) 性能问题(Tomas Vondra)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复动态共享内存管理中的竞态条件

变更

修复动态共享内存管理中的竞态条件(Thomas Munro)

这些可能导致 “dsa_area could not attach to segment” 或 “cannot unpin a segment that is not pinned” 错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复热备 postmaster 收到 smart 关闭请求后可能不关闭的竞态条件

变更

修复热备 postmaster 收到 smart 关闭请求后可能不关闭的竞态条件(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复给 pg_identify_object_as_address() 无效输入时可能的崩溃

变更

修复给 pg_identify_object_as_address() 无效输入时可能的崩溃(Álvaro Herrera)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进收紧对编码后的 SCRAM-SHA-256 和 MD5 口令的验证

变更

收紧对编码后的 SCRAM-SHA-256 和 MD5 口令的验证(Jonathan Katz)

开头字符正确的口令字符串可能被误认为是已正确哈希为 SCRAM-SHA-256 或 MD5 格式的口令。这种口令会被接受但之后无法使用。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对隐含与数据库编码不同的编码的 lc_time 设置的处理

变更

修复对隐含与数据库编码不同的编码的 lc_time 设置的处理(Juan José Santamaría Flecha、Tom Lane)

包含非 ASCII 字符的本地化月份或日期名此前在此类区域中导致意外错误或错误输出。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复涉及一元减号操作符的不正确 operator_precedence_warning 检查

变更

修复涉及一元减号操作符的不正确 operator_precedence_warning 检查(Rikard Falkeborn)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止把 NaN 用作浮点服务器参数的值

变更

禁止把 NaN 用作浮点服务器参数的值(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进重排 REINDEX 处理,避免对 pg_class 的单个索引重建时断言失败

变更

重排 REINDEX 处理,避免对 pg_class 的单个索引重建时断言失败(Andres Freund、Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复参数化虚拟路径的规划器断言失败

变更

修复参数化虚拟路径的规划器断言失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 SnapBuildInitialSnapshot() 的结果中插入正确的测试函数

变更

在 SnapBuildInitialSnapshot() 的结果中插入正确的测试函数(Antonin Houska)

没有核心代码关心这一点,但一些扩展关心。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 Windows 上间歇性的 “could not reattach to shared memory” 会话启动失败

变更

修复 Windows 上间歇性的 “could not reattach to shared memory” 会话启动失败(Noah Misch)

这些失败的一个此前未被识别的来源是为进程默认线程池创建线程栈。安排把这种栈分配在不同的内存区域。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 Windows 上目录扫描中的错误检测

变更

修复 Windows 上目录扫描中的错误检测(Konstantin Knizhnik)

诸如缺少读取目录权限之类的错误没有被正确检测或报告;代码而是静默地表现为目录为空。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 中的语法问题

变更

修复 ecpg 中的语法问题(Tom Lane)

一个缺失的分号导致 ecpg 程序中的 SET variable = DEFAULT(但不是 SET variable TO DEFAULT)被错误翻译,产生服务器会拒绝的语法无效输出。此外,在列出多个类型名的 DROP TYPE 或 DROP DOMAIN 命令中,实际上只处理了第一个类型名。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把 ecpg 的 CREATE TABLE AS 语法与服务器的同步

变更

把 ecpg 的 CREATE TABLE AS 语法与服务器的同步(Daisuke Higuchi)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 处理 include 文件名时可能的缓冲区越界

变更

修复 ecpg 处理 include 文件名时可能的缓冲区越界(Liu Huailing、Fei Wu)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 lo_unlink() 调用失败时 contrib/vacuumlo 崩溃

变更

避免 lo_unlink() 调用失败时 contrib/vacuumlo 崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们的时区库副本与 IANA tzcode 版本 2019a 同步

变更

把我们的时区库副本与 IANA tzcode 版本 2019a 同步(Tom Lane)

这更正了 zic 的一个小 bug——它在 Africa/Casablanca 时区输出错误的 2440 年转换,并增加了对 zic 新 -r 选项的支持。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2019a,涉及巴勒斯坦和梅特拉卡特拉的夏令时法规变更,以及以色列的历史修正。

变更

更新时区数据文件到 tzdata 版本 2019a,涉及巴勒斯坦和梅特拉卡特拉的夏令时法规变更,以及以色列的历史修正。

Etc/UCT 现在是指向 Etc/UTC 的向后兼容链接,而不再是生成缩写 UCT 的独立时区 ——如今 UCT 通常是笔误。PostgreSQL 仍然接受 UCT 作为输入时区缩写,但不会输出它。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.16

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.13 之前的版本升级,参见第 E.13 节。

BUG 修复默认情况下,fsync() 失败后 panic 而不是重试,以避免可能的数据损坏

变更

默认情况下,fsync() 失败后 panic 而不是重试,以避免可能的数据损坏(Craig Ringer、Thomas Munro)

一些流行的操作系统在无法写出内核数据缓冲区时会将其丢弃,并把这报告为 fsync() 失败。如果我们重新发出 fsync() 请求它会成功,但实际上数据已经丢失,因此继续下去有数据库损坏的风险。通过引发 panic 条件,我们可以从 WAL 重放——这种情况下 WAL 中可能包含数据的唯一剩余副本。虽然这无疑丑陋且低效,但几乎没有其他选择,所幸这种情况很少发生。

新增了服务器参数data_sync_retry来控制这一行为;如果你确定你的内核在此类场景下不会丢弃脏数据缓冲区,可以把 data_sync_retry 设为 on 恢复旧行为。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进每个大版本分支的文档只包含该分支的发行说明,而不是该分支及所有之后分支的

变更

每个大版本分支的文档只包含该分支的发行说明,而不是该分支及所有之后分支的(Tom Lane)

以前的政策造成的重复越来越失控。我们的计划是在项目网站上提供完整的发行说明归档,而不是在每个发行版中重复它。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免获取多个缓冲区锁时可能的死锁

变更

避免获取多个缓冲区锁时可能的死锁(Nishant Fnu)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免热备查询与 GIN 索引页删除重放之间的死锁

变更

避免热备查询与 GIN 索引页删除重放之间的死锁(Alexander Korotkov)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复使用索引表达式或谓词时逻辑复制可能的崩溃

变更

修复使用索引表达式或谓词时逻辑复制可能的崩溃(Peter Eisentraut)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免表重写期间对 TOAST 数据无用而昂贵的逻辑解码

变更

避免表重写期间对 TOAST 数据无用而昂贵的逻辑解码(Tomas Vondra)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复启用同步复制时只停止一部分 WAL 发送者的逻辑

变更

修复启用同步复制时只停止一部分 WAL 发送者的逻辑(Paul Guo、Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在元组删除 WAL 记录中可能写入错误的副本身份字段

变更

避免在元组删除 WAL 记录中可能写入错误的副本身份字段(Stas Kelvich)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让归档器在选择下一个要归档的文件时,把 WAL 历史文件的优先级置于 WAL 数据文件之上

变更

让归档器在选择下一个要归档的文件时,把 WAL 历史文件的优先级置于 WAL 数据文件之上(David Steele)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复使用子 SELECT 作为源的多 SET 子句 UPDATE 可能的崩溃

变更

修复使用子 SELECT 作为源的多 SET 子句 UPDATE 可能的崩溃(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 libxml2 返回空错误消息时崩溃

变更

避免 libxml2 返回空错误消息时崩溃(Sergio Conde Gómez)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复排序规则分配处理不一致导致的虚假分组相关分析器错误

变更

修复排序规则分配处理不一致导致的虚假分组相关分析器错误(Andrew Gierth)

某些情况下,如果表达式包含对可排序数据类型的操作,本应被视为匹配的表达式没有被看作匹配。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏,而不是直接假定它防泄漏

变更

检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏,而不是直接假定它防泄漏(Tom Lane)

btree 比较函数的实际信息泄漏通常很难诱发,但原则上可能发生。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复必须在外部表扫描处求值横向引用的查询的错误规划

变更

修复必须在外部表扫描处求值横向引用的查询的错误规划(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复归并连接代价的边界低估

变更

修复归并连接代价的边界低估(Tom Lane)

当外键范围远小于内键范围时,即使内侧有如此多的重复键以至于这是糟糕的选择,规划器也可能偏爱归并连接。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免查询包含数千个可索引子句时 O(N^2) 的规划时间增长

变更

避免查询包含数千个可索引子句时 O(N^2) 的规划时间增长(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 ANALYZE 对并发更新行的处理

变更

改进 ANALYZE 对并发更新行的处理(Jeff Janes、Tom Lane)

此前,进行中事务删除的行被排除在 ANALYZE 的样本之外,但事实证明这比包含它们导致更多不一致。现在,样本实际上对应 ANALYZE 开始时刻的 MVCC 快照。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 TRUNCATE 忽略作为其他会话临时表的继承子表

变更

让 TRUNCATE 忽略作为其他会话临时表的继承子表(Amit Langote、Michael Paquier)

这使 TRUNCATE 与其他命令的行为一致。此前这种情况通常以失败告终。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 TRUNCATE 更新正确表的统计计数器

变更

修复 TRUNCATE 更新正确表的统计计数器(Tom Lane)

如果被截断的表有 TOAST 表,被重置的却是那张表的计数器。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许在热备模式下执行 UNLISTEN

变更

允许在热备模式下执行 UNLISTEN(Shay Rojansky)

这必然是无操作,因为热备模式下不允许 LISTEN;但允许这个哑操作可以简化客户端的会话状态重置逻辑。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复某些模式和数据类型权限列表中缺失的角色依赖

变更

修复某些模式和数据类型权限列表中缺失的角色依赖(Tom Lane)

某些情况下可以删除已被授予权限的角色。这不会立即造成问题,但之后的转储/恢复或升级会失败,症状涉及尝试向全数字角色名授予权限。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保重命名约束之后正确更新关系缓存

变更

确保重命名约束之后正确更新关系缓存(Amit Langote)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让自动清理更积极地移除遗留的临时表,并在 DISCARD TEMP 期间也移除遗留临时表

变更

让自动清理更积极地移除遗留的临时表,并在 DISCARD TEMP 期间也移除遗留临时表(Álvaro Herrera)

这有助于确保崩溃会话的残留更及时地被清理。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止空 GIN 索引页被过快回收导致并发搜索失败

变更

防止空 GIN 索引页被过快回收导致并发搜索失败(Andrey Borodin、Alexander Korotkov)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复浮点到整数强制转换的边界失败

变更

修复浮点到整数强制转换的边界失败(Andrew Gierth、Tom Lane)

略高于最大有效整数值的值可能未被拒绝,随后发生溢出,产生最小有效整数。另外,本应舍入到最小或最大整数值的值可能被错误拒绝。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止把 client_min_messages 设得比 ERROR 更高

变更

禁止把 client_min_messages 设得比 ERROR 更高(Jonah Harris、Tom Lane)

此前可以把该变量设为 FATAL 或 PANIC,效果是抑制向客户端传输普通错误消息。然而这违背了 PostgreSQL 线上协议规范中给出的保证,并导致一些客户端非常困惑。在已发布分支中,通过把这种设置静默地当作 ERROR 处理来修复。版本 12 及之后将彻底拒绝这些选项。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()

变更

修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()(Michael Meskes、Tom Lane)

由于 setlocale() 不是线程局部的,甚至可能不是线程安全的,原来的编码在多线程 ecpg 应用中造成问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复通过 ecpg SQLDA(SQL 描述符区域)传递的 numeric 数据的错误结果

变更

修复通过 ecpg SQLDA(SQL 描述符区域)传递的 numeric 数据的错误结果(Daisuke Higuchi)

带前导零的值没有被正确复制。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 psql 的 \g target 元命令与 COPY TO STDOUT 配合工作的问题

变更

修复 psql 的 \g target 元命令与 COPY TO STDOUT 配合工作的问题(Daniel Vérité)

此前 target 选项被忽略,复制数据总是流向当前的查询输出目标。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 psql 的 LaTeX 输出格式正确渲染特殊字符

变更

让 psql 的 LaTeX 输出格式正确渲染特殊字符(Tom Lane)

反斜线和某些其他 ASCII 标点字符没有被正确渲染,导致文档语法错误或输出中的错误字符。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 对间接依赖主键的物化视图的处理

变更

修复 pg_dump 对间接依赖主键的物化视图的处理(Tom Lane)

这导致此类视图的转储归档条目被错误标记,产生关于 “archive items not in correct section order” 的无害警告;更有害的是,依赖这些标签的选择性恢复选项(如 --section)可能行为异常。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 pg_dump 或 pg_restore 尝试报告错误时在某些平台上的空指针解引用崩溃

变更

避免 pg_dump 或 pg_restore 尝试报告错误时在某些平台上的空指针解引用崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值

变更

修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值(Andrew Gierth)

原来的编码给出的结果与更新版本创建的空 hstore 值不同,因此可能导致哈希连接或哈希聚合的错误结果。如果表可能包含最早存储于 8.4 且此后从未转储/恢复过的数据,建议对 hstore 列上的哈希索引执行 REINDEX。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 contrib/intarray 的 gist__int_ops 索引支持处理大输入时崩溃和过长运行时间

变更

避免 contrib/intarray 的 gist__int_ops 索引支持处理大输入时崩溃和过长运行时间(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进调整 configure 对线程相关编译器标志和库的选择,使其与后续 PostgreSQL 版本的做法一致

变更

调整 configure 对线程相关编译器标志和库的选择,使其与后续 PostgreSQL 版本的做法一致(Tom Lane)

此前 9.4 和 9.5 分支中使用的代码在一些较新的平台上彻底失败,因此将其与 9.6 及更高版本的做法同步。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS

变更

支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS(Christoph Berg)

这简化了扩展构建过程的自定义。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 Perl 编写的构建脚本不假定 “.” 在搜索路径中,因为最近的 Perl 版本不包含它

变更

修复 Perl 编写的构建脚本不假定 “.” 在搜索路径中,因为最近的 Perl 版本不包含它(Andrew Dunstan)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 OpenBSD 上服务器命令行选项解析的问题

变更

修复 OpenBSD 上服务器命令行选项解析的问题(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2018i,涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二,创建了新时区 Asia/Qostanay,因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。

变更

更新时区数据文件到 tzdata 版本 2018i,涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二,创建了新时区 Asia/Qostanay,因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.15

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.13 之前的版本升级,参见第 E.13 节。

BUG 修复修复 has_foo_privilege() 函数族的边界失败

变更

修复 has_foo_privilege() 函数族的边界失败(Tom Lane)

提供无效对象 OID 时返回 NULL 而不是抛出错误。其中一些函数本来就做对了,但并非全部。has_column_privilege() 在某些平台上还可能崩溃。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免正则表达式匹配/拆分函数在长字符串上的 O(N^2) 减速

变更

避免正则表达式匹配/拆分函数在长字符串上的 O(N^2) 减速(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复紧随注释或 + 或 - 之后的标准多字符操作符的解析

变更

修复紧随注释或 + 或 - 之后的标准多字符操作符的解析(Andrew Gierth)

这一疏漏可能导致解析错误或优先级的不正确分配。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免词法分析器对长串 + 或 - 字符的 O(N^3) 减速

变更

避免词法分析器对长串 + 或 - 字符的 O(N^3) 减速(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复外层查询被反向扫描时 SubPlan 的错误执行

变更

修复外层查询被反向扫描时 SubPlan 的错误执行(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复回卷所引用游标后 UPDATE/DELETE ... WHERE CURRENT OF ... 的失败

变更

修复回卷所引用游标后 UPDATE/DELETE ... WHERE CURRENT OF ... 的失败(Tom Lane)

扫描多个关系(特别是继承树)的游标如果被回卷到较早的关系,可能产生错误行为。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 EvalPlanQual 正确处理条件执行的 InitPlan

变更

修复 EvalPlanQual 正确处理条件执行的 InitPlan(Andrew Gierth、Tom Lane)

如果并发更新包含诸如 CASE 构造内的不相关子 SELECT 之类的代码,这会导致难以重现的崩溃或错误答案。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复字符类检查在 Windows 上对 U+FFFF 以上的 Unicode 字符不再失败

变更

修复字符类检查在 Windows 上对 U+FFFF 以上的 Unicode 字符不再失败(Tom Lane、Kenji Uno)

此 bug 影响全文搜索操作以及 contrib/ltree 和 contrib/pg_trgm。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保外部表拥有的序列由该表上的 ALTER OWNER 处理

变更

确保外部表拥有的序列由该表上的 ALTER OWNER 处理(Peter Eisentraut)

所有权更改应当也传播到这种序列,但外部表的情况被遗漏了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保服务器在等待客户端输入之前处理已收到的 NOTIFY 和 SIGTERM 中断

变更

确保服务器在等待客户端输入之前处理已收到的 NOTIFY 和 SIGTERM 中断(Jeff Janes、Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 array_out() 结果字符串的空间过度分配

变更

修复 array_out() 结果字符串的空间过度分配(Keiichi Hirobe)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复重复 SP-GiST 索引扫描中的内存泄漏

变更

修复重复 SP-GiST 索引扫描中的内存泄漏(Tom Lane)

目前已知只有当使用 SP-GiST 的排他约束在单条命令中接收许多新索引条目时,这才会达到显著程度。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 ApplyLogicalMappingFile() 用完后关闭映射文件

变更

确保 ApplyLogicalMappingFile() 用完后关闭映射文件(Tomas Vondra)

此前文件描述符被泄漏,最终导致逻辑解码期间的失败。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑解码处理被映射目录表被反复重写(例如被 VACUUM FULL)的情况

变更

修复逻辑解码处理被映射目录表被反复重写(例如被 VACUUM FULL)的情况(Andres Freund)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止以低到无法支持现有复制槽的 wal_level 启动服务器

变更

防止以低到无法支持现有复制槽的 wal_level 启动服务器(Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免实用命令导致无限递归时崩溃

变更

避免实用命令导致无限递归时崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进初始化热备时,应对由主库两阶段事务引起的重复 XID

变更

初始化热备时,应对由主库两阶段事务引起的重复 XID(Michael Paquier、Konstantin Knizhnik)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复事件触发器处理嵌套 ALTER TABLE 命令

变更

修复事件触发器处理嵌套 ALTER TABLE 命令(Michael Paquier、Álvaro Herrera)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把父进程的事务和语句开始时间戳传播给并行工作者

变更

把父进程的事务和语句开始时间戳传播给并行工作者(Konstantin Knizhnik)

这防止工作者中执行 transaction_timestamp() 等函数时的错误行为。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 WAL 文件回收逻辑在备库服务器上正确工作

变更

修复 WAL 文件回收逻辑在备库服务器上正确工作(Michael Paquier)

根据 archive_mode 的设置,备库可能无法移除一些本可以移除的 WAL 文件。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复恢复期间提交时间戳追踪的处理

变更

修复恢复期间提交时间戳追踪的处理(Masahiko Sawada、Michael Paquier)

如果提交时间戳追踪曾被打开或关闭,恢复可能因为试图获取未记录提交时间戳的事务的提交时间戳而失败。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 bootstrap 和独立后端以及 initdb 中随机化 random() 的种子

变更

在 bootstrap 和独立后端以及 initdb 中随机化 random() 的种子(Noah Misch)

这一更改的主要实际效果是避免一种场景:initdb 因总是使用相同的随机种子导致的名称冲突,而错误地断定 POSIX 共享内存不可用。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 DSM 分配被中断

变更

允许 DSM 分配被中断(Chris Travers)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进正确处理动态打开 full_page_writes

变更

正确处理动态打开 full_page_writes(Kyotaro Horiguchi)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免从 WAL 重放 GIN 页重压缩时可能的缓冲区越界

变更

避免从 WAL 重放 GIN 页重压缩时可能的缓冲区越界(Alexander Korotkov、Sivasubramanian Ramasubramanian)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复遗漏的对复制槽目录的 fsync

变更

修复遗漏的对复制槽目录的 fsync(Konstantin Knizhnik、Michael Paquier)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免在缓慢的服务器上使用 wal_sender_timeout 时的意外超时

变更

避免在缓慢的服务器上使用 wal_sender_timeout 时的意外超时(Noah Misch)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复确保热备进程使用正确的 WAL 一致点

变更

确保热备进程使用正确的 WAL 一致点(Alexander Kukushkin、Michael Paquier)

这防止备库服务器在 WAL 重放期间刚达到一致数据库状态之后可能的行为异常。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 postmaster 在完成数据库启动之前收到快速关闭请求时正确停止后台工作者

变更

确保 postmaster 在完成数据库启动之前收到快速关闭请求时正确停止后台工作者(Alexander Kukushkin)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进服务 SIGQUIT 时不运行 atexit 回调

变更

服务 SIGQUIT 时不运行 atexit 回调(Heikki Linnakangas)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进不要把外部服务器用户映射记录为扩展的成员

变更

不要把外部服务器用户映射记录为扩展的成员(Tom Lane)

如果在扩展脚本中执行 CREATE USER MAPPING,会为用户映射创建扩展依赖,这是意料之外的。角色不能是扩展成员,因此用户映射也不应该是。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 syslogger 更能抵御打开 CSV 日志文件的失败

变更

让 syslogger 更能抵御打开 CSV 日志文件的失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 psql 以及文档示例,在每次调用 PQnotifies() 之前先调用 PQconsumeInput()

变更

修复 psql 以及文档示例,在每次调用 PQnotifies() 之前先调用 PQconsumeInput()(Tom Lane)

这修复了 psql 直到下一条命令之后才报告收到 NOTIFY 消息的情况。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 对不相似对象名排序可能的不一致

变更

修复 pg_dump 对不相似对象名排序可能的不一致(Jacob Champion)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 pg_restore 发出 DISABLE/ENABLE TRIGGER 命令时对表名进行模式限定

变更

确保 pg_restore 发出 DISABLE/ENABLE TRIGGER 命令时对表名进行模式限定(Tom Lane)

这避免了以受限搜索路径运行恢复的新策略导致的失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_upgrade 正确处理扩展中的事件触发器

变更

修复 pg_upgrade 正确处理扩展中的事件触发器(Haribabu Kommi)

pg_upgrade 未能保留事件触发器的扩展成员身份。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_upgrade 的集簇状态检查在备库服务器上正确工作

变更

修复 pg_upgrade 的集簇状态检查在备库服务器上正确工作(Bruce Momjian)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在所有 contrib/cube 函数中强制执行 cube 类型的维度限制

变更

在所有 contrib/cube 函数中强制执行 cube 类型的维度限制(Andrey Borodin)

此前某些与 cube 相关的函数可以构造出会被 cube_in() 拒绝的值,导致转储/恢复失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/unaccent 的 unaccent() 函数使用与该函数同模式中的 unaccent 文本搜索词典

变更

修复 contrib/unaccent 的 unaccent() 函数使用与该函数同模式中的 unaccent 文本搜索词典(Tom Lane)

此前它尝试用搜索路径查找词典,如果搜索路径是受限值就可能失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 macOS 10.14(Mojave)上的构建问题

变更

修复 macOS 10.14(Mojave)上的构建问题(Tom Lane)

调整 configure 向 CPPFLAGS 添加 -isysroot 开关;没有它,PL/Perl 和 PL/Tcl 在 macOS 10.14 上无法配置或构建。所用的具体 sysroot 可以在配置或构建时通过在 configure 或 make 的参数中设置 PG_SYSROOT 变量来覆盖。

现在建议与 Perl 相关的扩展在其编译器标志中写 $(perl_includespec) 而不是 -I$(perl_archlibexp)/CORE。后者在大多数平台上继续有效,但在最近的 macOS 上不行。

此外,在最近的 macOS 版本上构建 PL/Tcl 应该不再需要手动指定 --with-tclconfig。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 MSVC 构建和回归测试脚本在最近的 Perl 版本上工作

变更

修复 MSVC 构建和回归测试脚本在最近的 Perl 版本上工作(Andrew Dunstan)

Perl 不再默认在搜索路径中包含当前目录;绕过这一点。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,允许由管理员账户运行回归测试

变更

在 Windows 上,允许由管理员账户运行回归测试(Andrew Dunstan)

为了安全地做到这一点,pg_regress 现在在启动时放弃任何此类权限。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持在 Windows 上使用 Visual Studio 2015 或 Visual Studio 2017 构建

变更

支持在 Windows 上使用 Visual Studio 2015 或 Visual Studio 2017 构建(Michael Paquier、Haribabu Kommi)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 btree 比较函数返回 INT_MIN

变更

允许 btree 比较函数返回 INT_MIN(Tom Lane)

到目前为止,我们禁止数据类型相关的比较函数返回 INT_MIN,这允许调用者只需对比较结果取反即可颠倒排序顺序。然而,对于直接返回 memcmp()、strcmp() 等结果的比较函数,这从来都不安全,因为 POSIX 没有对这些函数施加任何此类限制。至少某些最近版本的 memcmp() 可以返回 INT_MIN,导致错误的排序。因此我们移除了这一限制。调用者现在如果想颠倒排序顺序,必须使用 INVERT_COMPARE_RESULT() 宏。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复共享失效消息处理中的递归风险

变更

修复共享失效消息处理中的递归风险(Tom Lane)

这个错误可能导致例如无法访问刚被 VACUUM FULL 处理过的系统目录或索引。

这一更改给 LockAcquire 添加了新的结果码,可能影响该函数的外部调用者,尽管只有非常不寻常的使用模式才会有问题。LockAcquireExtended 的 API 也有更改。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 SPI_connect() 和 SPI_finish() 期间保存和恢复 SPI 的全局变量

变更

在 SPI_connect() 和 SPI_finish() 期间保存和恢复 SPI 的全局变量(Chapman Flack、Tom Lane)

这防止一个使用 SPI 的函数调用另一个时可能的干扰。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在向后分支中提供 ALLOCSET_DEFAULT_SIZES 及同级宏

变更

在向后分支中提供 ALLOCSET_DEFAULT_SIZES 及同级宏(Tom Lane)

这些宏自 9.6 起就已存在,但有请求把它们添加到较旧的分支,以便扩展无需针对分支编写特定代码即可依赖它们。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免使用可能未充分对齐的页缓冲区

变更

避免使用可能未充分对齐的页缓冲区(Tom Lane)

发明了新的联合类型 PGAlignedBlock 和 PGAlignedXLogBlock,并用它们代替普通的 char 数组,确保编译器不能把缓冲区放在未对齐的起始地址。这修复了对齐挑剔平台上可能的核心转储,并且即使在允许未对齐的平台上也可能改进性能。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 src/port/snprintf.c 遵循 C99 标准对 snprintf() 结果值的定义

变更

使 src/port/snprintf.c 遵循 C99 标准对 snprintf() 结果值的定义(Tom Lane)

在使用此代码的平台(主要是 Windows)上,其前 C99 行为可能导致无法检测缓冲区越界(如果调用代码假定 C99 语义)。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 i386 上用 clang 编译器构建时,要求使用 -msse2

变更

在 i386 上用 clang 编译器构建时,要求使用 -msse2(Andres Freund)

这避免了浮点溢出检查遗漏的问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 configure 对 strerror_r() 结果类型的检测

变更

修复 configure 对 strerror_r() 结果类型的检测(Tom Lane)

原来的编码在 Linux 上用 icc 构建时(或许其他情况下)得到错误答案,导致 libpq 不能为系统报告的错误返回有用的错误消息。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2018g,涉及智利、斐济、摩洛哥和俄罗斯(伏尔加格勒)的夏令时法规变更,以及中国、夏威夷、日本、澳门和朝鲜的历史修正。

变更

更新时区数据文件到 tzdata 版本 2018g,涉及智利、斐济、摩洛哥和俄罗斯(伏尔加格勒)的夏令时法规变更,以及中国、夏威夷、日本、澳门和朝鲜的历史修正。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.14

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.13 之前的版本升级,参见第 E.13 节。

安全相关修复连接尝试之间未能完全重置 libpq 状态的问题

变更

修复连接尝试之间未能完全重置 libpq 状态的问题(Tom Lane)

dblink 或 postgres_fdw 的无权限用户可以绕过旨在防止使用服务器端凭据(如运行服务器的操作系统用户拥有的 ~/.pgpass 文件)的检查。允许本地连接上对等认证的服务器尤其容易受影响。其他攻击(如向 postgres_fdw 会话注入 SQL)也是可能的。以这种方式攻击 postgres_fdw 需要能够创建带选定连接参数的外部服务器对象,但任何能访问 dblink 的用户都可以利用该问题。一般而言,能够为使用 libpq 的应用选择连接参数的攻击者都可能作恶,尽管其他合理的攻击场景更难想到。感谢 Andrew Krasichkov 报告此问题。(CVE-2018-10915)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关修复通过不只是 SELECT * FROM ... 的视图执行 INSERT ... ON CONFLICT UPDATE 的问题

变更

修复通过不只是 SELECT * FROM ... 的视图执行 INSERT ... ON CONFLICT UPDATE 的问题(Dean Rasheed、Amit Langote)

如果视图的 SELECT 列表与底层表的列不是一一对应,可更新视图的错误展开可能导致崩溃或 “attribute ... has the wrong type” 错误。此外,如果攻击用户对表的其他某些列有 INSERT 和 UPDATE 权限,此 bug 可被利用来更新该用户没有 UPDATE 权限的列。任何用户还可以利用它泄露服务器内存。(CVE-2018-10925)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保对“钉住”的系统目录的 relfrozenxid 和 relminmxid 值的更新被及时处理

变更

确保对“钉住”的系统目录的 relfrozenxid 和 relminmxid 值的更新被及时处理(Andres Freund)

过于乐观的缓存规则可能阻止其他会话看到这些更新,导致虚假错误和/或数据损坏。对于 pg_authid 等共享目录,问题明显更严重,因为过期的缓存数据不仅存在于现有会话,还会持续到新会话中。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复刚提升的备库在完成第一个恢复后检查点之前崩溃的情况

变更

修复刚提升的备库在完成第一个恢复后检查点之前崩溃的情况(Michael Paquier、Kyotaro Horiguchi、Pavan Deolasee、Álvaro Herrera)

这导致服务器在后续 WAL 重放期间认为自己没有达到一致的数据库状态,无法重启。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免回收全零 btree 页时发出虚假 WAL 记录

变更

避免回收全零 btree 页时发出虚假 WAL 记录(Amit Kapila)

这个错误曾被观察到导致断言失败,并且可能让热备服务器上发生不必要的查询取消。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 WAL 重放期间,防范损坏的记录长度超过 1GB

变更

在 WAL 重放期间,防范损坏的记录长度超过 1GB(Michael Paquier)

把这种情况当作损坏数据。此前代码会试图分配空间并得到硬错误,使恢复无法进行。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进结束恢复时,尽可能推迟写入时间线历史文件

变更

结束恢复时,尽可能推迟写入时间线历史文件(Heikki Linnakangas)

这避免了恢复清理期间的失败(如两阶段状态文件的问题)导致磁盘上时间线状态不一致的一些情况。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进改进删除许多关系的事务的 WAL 重放性能

变更

改进删除许多关系的事务的 WAL 重放性能(Fujii Masao)

这一更改减少了共享缓冲区被扫描的次数,因此在该设置较大时收益最大。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进改进备库服务器 WAL 重放中锁释放的性能

变更

改进备库服务器 WAL 重放中锁释放的性能(Thomas Munro)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让逻辑 WAL 发送者正确报告流状态

变更

让逻辑 WAL 发送者正确报告流状态(Simon Riggs、Sawada Masahiko)

代码此前错误判断是否已追上上游服务器。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑解码期间快照处理中的 bug,罕见情况下可能导致错误的解码结果

变更

修复逻辑解码期间快照处理中的 bug,罕见情况下可能导致错误的解码结果(Arseny Sher、Álvaro Herrera)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保索引创建中途失败后正确重建表的缓存索引列表

变更

确保索引创建中途失败后正确重建表的缓存索引列表(Peter Geoghegan)

此前失败索引的 OID 可能留在列表中,在同一会话中之后引起问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GIN 索引中空未压缩 posting 列表页的处理不当

变更

修复 GIN 索引中空未压缩 posting 列表页的处理不当(Sivasubramanian Ramasubramanian、Alexander Korotkov)

这可能导致 9.4 之前的 GIN 索引经 pg_upgrade 之后的断言失败(9.4 及之后不会创建这种页)。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 VACUUM 在 btree 页删除循环中响应信号

变更

确保 VACUUM 在 btree 页删除循环中响应信号(Andres Freund)

损坏的 btree 索引可能在这里导致无限循环,而此前不强制崩溃就无法中断。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复涉及复合类型列的等价类的错误优化

变更

修复涉及复合类型列的等价类的错误优化(Tom Lane)

这导致未能识别复合列上的索引可以为该列上的归并连接提供所需的排序顺序。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 SQL 标准 FETCH FIRST 语法允许参数($n),正如标准所期望的

变更

修复 SQL 标准 FETCH FIRST 语法允许参数($n),正如标准所期望的(Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 getObjectDescription 输出中某些对象名未做模式限定的问题

变更

修复 getObjectDescription 输出中某些对象名未做模式限定的问题(Kyotaro Horiguchi、Tom Lane)

排序规则、转换和文本搜索对象的名称在应当模式限定时没有限定。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把 COPY FROM 的当前行号计数器从 32 位加宽到 64 位

变更

把 COPY FROM 的当前行号计数器从 32 位加宽到 64 位(David Rowley)

这避免了超过 4G 行输入的两个问题:COPY FROM WITH HEADER 会每 4G 行丢弃一行而不只是第一行;错误报告可能显示错误的行号。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进向 ecpg 的 pgtypes 库添加字符串释放函数,以避免 Windows 上的跨模块内存管理问题

变更

向 ecpg 的 pgtypes 库添加字符串释放函数,以避免 Windows 上的跨模块内存管理问题(Takayuki Tsunakawa)

在 Windows 上,如果给定内存块的 free 调用不是来自 malloc 该内存的同一 DLL,就会发生崩溃。pgtypes 库有时返回期望调用者释放的字符串,使得无法遵循这一规则。添加了仅包装 free 的 PGTYPESchar_free() 函数,允许应用遵循规则。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 在 Windows 以及其他非标准声明 strtoll/strtoull 或根本不声明的平台上对 long long 变量的支持

变更

修复 ecpg 在 Windows 以及其他非标准声明 strtoll/strtoull 或根本不声明的平台上对 long long 变量的支持(Dang Minh Huong、Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复规则更改导致会话内语句语义改变时 PL/pgSQL 对 SQL 语句类型的错误识别

变更

修复规则更改导致会话内语句语义改变时 PL/pgSQL 对 SQL 语句类型的错误识别(Tom Lane)

这个错误导致断言失败,或者罕见情况下未能按预期执行 INTO STRICT 选项。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复客户端程序中的密码提示,使 Windows 上 stdin 不是终端时正确关闭回显

变更

修复客户端程序中的密码提示,使 Windows 上 stdin 不是终端时正确关闭回显(Matthew Stickney)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复进一步修复转储中列表值 GUC 变量值的错误引号

变更

进一步修复转储中列表值 GUC 变量值的错误引号(Tom Lane)

此前对 pg_dump 输出中 search_path 及其他列表值变量加引号的修复,对空字符串列表元素行为不当,并且有截断长文件路径的风险。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 未能转储约束索引的 REPLICA IDENTITY 属性

变更

修复 pg_dump 未能转储约束索引的 REPLICA IDENTITY 属性(Tom Lane)

手动创建的唯一索引被正确标记,但声明 UNIQUE 或 PRIMARY KEY 约束创建的没有。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 pg_upgrade 检查旧服务器是否被干净地关闭

变更

让 pg_upgrade 检查旧服务器是否被干净地关闭(Bruce Momjian)

原来的检查可能被立即模式关闭欺骗。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/hstore_plperl 透过 Perl 标量引用查看,以及在预期位置找不到哈希引用时不崩溃

变更

修复 contrib/hstore_plperl 透过 Perl 标量引用查看,以及在预期位置找不到哈希引用时不崩溃(Tom Lane)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/ltree 的 lca() 函数在输入数组为空时崩溃的问题

变更

修复 contrib/ltree 的 lca() 函数在输入数组为空时崩溃的问题(Pierre Ducroquet)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复若干可能报告错误错误码的错误处理代码路径

变更

修复若干可能报告错误错误码的错误处理代码路径(Michael Paquier、Tom Lane、Magnus Hagander)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进重排 makefile,确保程序链接到新构建的库(如 libpq.so)而不是系统库目录中可能存在的

变更

重排 makefile,确保程序链接到新构建的库(如 libpq.so)而不是系统库目录中可能存在的(Tom Lane)

这避免了在提供旧版 PostgreSQL 库副本的平台上构建时的问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2018e,涉及朝鲜的夏令时法规变更,以及捷克斯洛伐克的历史修正。

变更

更新时区数据文件到 tzdata 版本 2018e,涉及朝鲜的夏令时法规变更,以及捷克斯洛伐克的历史修正。

此更新包括对爱尔兰以及纳米比亚和捷克斯洛伐克某些过去年份“夏令时”的重新定义。在这些司法管辖区,法律上夏季实行标准时间、冬季实行夏令时,因此夏令时偏移比标准时间晚一小时而不是早一小时。这不影响实际 UTC 偏移或所用的时区缩写;唯一已知的效果是这些情况下 pg_timezone_names 视图的 is_dst 列现在冬季为真、夏季为假。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.13

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果下面第一条变更日志条目中提到的函数标记错误影响到你,你可能需要采取措施更正数据库系统目录。

另外,如果你是从 9.5.12 之前的版本升级,参见第 E.14 节。

BUG 修复修复少数内建函数上不正确的易变性标记

变更

修复少数内建函数上不正确的易变性标记(Thomas Munro、Tom Lane)

函数 query_to_xml、cursor_to_xml、cursor_to_xmlschema、query_to_xmlschema 和 query_to_xml_and_xmlschema 应标记为 volatile,因为它们执行可能包含易变操作的用户提供的查询。它们没有被这样标记,导致错误查询优化的风险。新安装已通过更正初始目录数据修复,但现有安装将继续包含错误标记。实际使用这些函数似乎危害不大,但如遇到麻烦,可以手动更新这些函数的 pg_proc 条目来修复,例如 ALTER FUNCTION pg_catalog.query_to_xml(text, boolean, boolean, text) VOLATILE。(注意安装中的每个数据库都需要这样做。)另一个选择是把数据库 pg_upgrade 到包含更正后初始数据的版本。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免重用与已死但尚未清理的 TOAST 条目匹配的 TOAST 值 OID

变更

避免重用与已死但尚未清理的 TOAST 条目匹配的 TOAST 值 OID(Pavan Deolasee)

一旦 OID 计数器回卷,就可能分配一个 OID 与同一 TOAST 表中先前删除的条目匹配的 TOAST 值。如果该条目尚未被清理,就会导致 “unexpected chunk number 0 (expected 1) for toast value nnnnn” 错误,并持续到 VACUUM 移除死条目为止。修复方法是创建新 TOAST 条目时不选择这种 OID。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更改 ANALYZE 更新 pg_class.reltuples 的算法

变更

更改 ANALYZE 更新 pg_class.reltuples 的算法(David Gould)

此前,ANALYZE 未实际扫描的页被假定保留其旧的元组密度。在 ANALYZE 只采样很少一部分页的大表中,这意味着总体元组密度估计不会有太大变化,因此无论表中实际发生什么,reltuples 都几乎与表物理大小(relpages)的变化成比例地变化。据观察,这会导致 reltuples 远大于实际值,以致实际上关闭了自动清理。为修复,假定 ANALYZE 的样本是表的无偏统计样本(本应如此),直接把这些页中观察到的密度外推到整表。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免在 SERIALIZABLE 或 REPEATABLE READ 事务隔离下运行的并发 CREATE INDEX CONCURRENTLY 命令中的死锁

变更

避免在 SERIALIZABLE 或 REPEATABLE READ 事务隔离下运行的并发 CREATE INDEX CONCURRENTLY 命令中的死锁(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 REFRESH MATERIALIZED VIEW CONCURRENTLY 可能缓慢的执行

变更

修复 REFRESH MATERIALIZED VIEW CONCURRENTLY 可能缓慢的执行(Thomas Munro)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 UPDATE/DELETE ... WHERE CURRENT OF 在所引用游标使用仅索引扫描计划时不失败

变更

修复 UPDATE/DELETE ... WHERE CURRENT OF 在所引用游标使用仅索引扫描计划时不失败(Yugo Nagata、Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复下推到参数化路径的连接子句的错误规划

变更

修复下推到参数化路径的连接子句的错误规划(Andrew Gierth、Tom Lane)

这个错误可能把本应是普通“过滤”条件的条件错误分类为外连接的“连接过滤”,导致错误的连接输出。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复同一表列出现在多个索引列中,且只有部分索引列使用能返回该列值的操作符类时,仅索引扫描计划可能不正确的生成

变更

修复同一表列出现在多个索引列中,且只有部分索引列使用能返回该列值的操作符类时,仅索引扫描计划可能不正确的生成(Kyotaro Horiguchi)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对顶层 AND/OR 条件带有可证明为 NULL 子子句的 CHECK 约束的错误优化

变更

修复对顶层 AND/OR 条件带有可证明为 NULL 子子句的 CHECK 约束的错误优化(Tom Lane、Dean Rasheed)

这可能导致例如约束排除错误地排除不应从查询中排除的子表。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复某些 GROUPING SET 用法中因双重释放导致的执行器崩溃

变更

修复某些 GROUPING SET 用法中因双重释放导致的执行器崩溃(Peter Geoghegan)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免可能与能调用此类触发器的命令并发添加表重写事件触发器时崩溃

变更

避免可能与能调用此类触发器的命令并发添加表重写事件触发器时崩溃(Álvaro Herrera、Andrew Gierth、Tom Lane)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免提交预备事务时发生查询取消或会话终止中断时失败

变更

避免提交预备事务时发生查询取消或会话终止中断时失败(Stas Kelvich)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复重复执行的哈希连接中的查询生命周期内存泄漏

变更

修复重复执行的哈希连接中的查询生命周期内存泄漏(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 heap_prepare_freeze_tuple 中过于严格的健全性检查

变更

修复 heap_prepare_freeze_tuple 中过于严格的健全性检查(Álvaro Herrera)

在从 9.2 或更早版本 pg_upgrade 过来的数据库中,这可能导致错误的 “cannot freeze committed xmax” 失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 C 编写的 before-update 行触发器返回“旧”元组时的悬空指针解引用

变更

防止 C 编写的 before-update 行触发器返回“旧”元组时的悬空指针解引用(Rushabh Lathia)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进减少自动清理工作者调度期间的锁定

变更

减少自动清理工作者调度期间的锁定(Jeff Janes)

原来的行为导致有许多表的数据库中潜在工作者并发性的急剧丧失。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保把 pg_stat_activity 数据复制到本地内存时复制客户端主机名

变更

确保把 pg_stat_activity 数据复制到本地内存时复制客户端主机名(Edmund Horner)

此前,这个本应本地的快照包含指向共享内存的指针,使客户端主机名列可能因任何现有会话断开而意外改变。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ispell 词典中多个复合词缀的错误处理

变更

修复 ispell 词典中多个复合词缀的错误处理(Arthur Zakirov)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 text 列上 SP-GiST 索引中的排序规则感知搜索(即使用不等操作符的索引扫描)

变更

修复 text 列上 SP-GiST 索引中的排序规则感知搜索(即使用不等操作符的索引扫描)(Tom Lane)

在大多数非 C 区域中,这种搜索会返回错误的行集合。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 SP-GiST 索引初始构建期间正确计数索引元组数

变更

在 SP-GiST 索引初始构建期间正确计数索引元组数(Tomas Vondra)

此前,元组数被报告为与底层表相同,如果索引是部分索引就错了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 GiST 索引清理期间正确计数索引元组数

变更

在 GiST 索引清理期间正确计数索引元组数(Andrey Borodin)

此前它报告的是估计的堆元组数,可能不准确,而且如果索引是部分索引则肯定错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复流式备库在 WAL 延续记录处卡住的一个边界情况

变更

修复流式备库在 WAL 延续记录处卡住的一个边界情况(Kyotaro Horiguchi)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在逻辑解码中,避免 walsender 重启时 WAL 数据可能被双重处理

变更

在逻辑解码中,避免 walsender 重启时 WAL 数据可能被双重处理(Craig Ringer)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 scalarltsel 和 scalargtsel 用于非核心数据类型

变更

允许 scalarltsel 和 scalargtsel 用于非核心数据类型(Tomas Vondra)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进减少收集了大量查询输出之后服务器报告错误时 libpq 的内存消耗

变更

减少收集了大量查询输出之后服务器报告错误时 libpq 的内存消耗(Tom Lane)

在处理错误消息之前而不是之后丢弃先前的输出。在某些平台(特别是 Linux)上,这可以改变应用之后的内存占用。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 中的双重释放崩溃

变更

修复 ecpg 中的双重释放崩溃(Patrick Krecker、Jeevan Ladhe)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 在 MSVC 构建中正确处理 long long int 变量

变更

修复 ecpg 在 MSVC 构建中正确处理 long long int 变量(Michael Meskes、Andrew Gierth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复转储中列表值 GUC 变量值的错误引号

变更

修复转储中列表值 GUC 变量值的错误引号(Michael Paquier、Tom Lane)

local_preload_libraries、session_preload_libraries、shared_preload_libraries 和 temp_tablespaces 变量在 pg_dump 输出中没有正确加引号。如果这些变量的设置出现在 CREATE FUNCTION ... SET 或 ALTER DATABASE/ROLE ... SET 子句中,这会导致问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_recvlogical 对 v10 之前的 PostgreSQL 服务器不失败的问题

变更

修复 pg_recvlogical 对 v10 之前的 PostgreSQL 服务器不失败的问题(Michael Paquier)

此前的一次修复使 pg_recvlogical 不论服务器版本都发出一条命令,但它只应对 v10 及之后的服务器发出。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 pg_rewind 删除目标服务器上在运行期间从源服务器上删除的文件

变更

确保 pg_rewind 删除目标服务器上在运行期间从源服务器上删除的文件(Takayuki Tsunakawa)

不这样做可能导致目标上的数据不一致,特别是当相关文件是 WAL 段时。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_rewind 正确处理非默认表空间中的表

变更

修复 pg_rewind 正确处理非默认表空间中的表(Takayuki Tsunakawa)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/pgSQL 整数 FOR 循环中的溢出处理

变更

修复 PL/pgSQL 整数 FOR 循环中的溢出处理(Tom Lane)

原来的编码在一些非 gcc 编译器上未能检测到循环变量的溢出,导致无限循环。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进调整 PL/Python 回归测试在 Python 3.7 下通过

变更

调整 PL/Python 回归测试在 Python 3.7 下通过(Peter Eisentraut)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持用 Python 3 和 MSVC 构建时测试 PL/Python 及相关模块

变更

支持用 Python 3 和 MSVC 构建时测试 PL/Python 及相关模块(Andrew Dunstan)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持使用 Microsoft Visual Studio 2015 构建

变更

支持使用 Microsoft Visual Studio 2015 构建(Michael Paquier)

为了兼容 VS2015 所需的各种修复此前已回移植到 9.5 分支,但遗漏了这一处。

其他改进重命名内部 b64_encode 和 b64_decode 函数,避免与 Solaris 11.4 内置函数冲突

变更

重命名内部 b64_encode 和 b64_decode 函数,避免与 Solaris 11.4 内置函数冲突(Rainer Orth)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们的时区库副本与 IANA tzcode 版本 2018e 同步

变更

把我们的时区库副本与 IANA tzcode 版本 2018e 同步(Tom Lane)

这修复了 zic 时区数据编译器应对负夏令时偏移的能力。虽然 PostgreSQL 项目不会立即发布这种时区数据,但 zic 可能被用于直接从 IANA 获得的时区数据,因此现在更新 zic 是审慎的。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2018d,涉及巴勒斯坦和南极洲(凯西站)的夏令时法规变更,以及葡萄牙及其殖民地、恩德伯里、牙买加、特克斯和凯科斯群岛及乌拉圭的历史修正。

变更

更新时区数据文件到 tzdata 版本 2018d,涉及巴勒斯坦和南极洲(凯西站)的夏令时法规变更,以及葡萄牙及其殖民地、恩德伯里、牙买加、特克斯和凯科斯群岛及乌拉圭的历史修正。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.12

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你运行的安装中并非所有用户都相互信任,或者你维护打算在任意场合使用的应用或扩展,强烈建议阅读下面第一条变更日志条目所述的文档更改,并采取适当步骤确保你的安装或代码安全。

另外,下面第二条变更日志条目所述的更改可能导致索引表达式或物化视图中使用的函数在自动分析期间或从转储重新装载时失败。升级之后,请监控服务器日志中此类问题,并修复受影响的函数。

另外,如果你是从 9.5.10 之前的版本升级,参见第 E.16 节。

安全相关记录如何配置安装和应用以防受其他用户依赖 search_path 的特洛伊木马攻击

变更

记录如何配置安装和应用以防受其他用户依赖 search_path 的特洛伊木马攻击(Noah Misch)

使用包含任何可被恶意用户写入的模式的 search_path 设置,会使该用户能够截获查询的控制,然后以被攻击用户的权限运行任意 SQL 代码。虽然可以写出能防范此类劫持的查询,但记法上很繁琐,而且很容易遗漏漏洞。因此,我们现在推荐不把任何不受信任模式放入搜索路径的配置。相关文档见第 5.8.6 节(面向数据库管理员和用户)、第 31.1 节(面向应用作者)、第 35.15.5 节(面向扩展作者)和CREATE FUNCTION(面向 SECURITY DEFINER 函数的作者)。(CVE-2018-1058)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关避免在 pg_dump 和其他客户端程序中使用不安全的 search_path 设置

变更

避免在 pg_dump 和其他客户端程序中使用不安全的 search_path 设置(Noah Misch、Tom Lane)

pg_dump、pg_upgrade、 vacuumdb 等 PostgreSQL 自带的应用本身也容易受到上一条变更日志条目所述劫持的影响;由于这些应用通常由超级用户运行,它们是特别有吸引力的目标。为使它们无论整个安装是否已被加固都安全,修改它们使其 search_path 设置只包含 pg_catalog 模式。自动清理工作者进程现在也同样如此。

当用户提供的函数被这些程序间接执行时(例如索引表达式中的用户提供函数),更严格的 search_path 可能导致错误,需要通过调整这些用户提供的函数使其不对被调用时的搜索路径做任何假定来更正。这从来都是良好实践,但现在这是正确行为的必要条件。(CVE-2018-1058)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复子计划中出现 CTE 引用时并发更新重检查的错误行为

变更

修复子计划中出现 CTE 引用时并发更新重检查的错误行为(Tom Lane)

如果 CTE(WITH 子句引用)被用于 InitPlan 或 SubPlan,且查询因试图更新或锁定并发更新的行而需要重检查,可能得到错误结果。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复外连接中重叠 mergejoin 子句导致的规划器失败

变更

修复外连接中重叠 mergejoin 子句导致的规划器失败(Tom Lane)

这些错误在边界情况下导致 “left and right pathkeys do not match in mergejoin” 或 “outer pathkeys do not match mergeclauses” 规划器错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_upgrade 未能为物化视图保留 relfrozenxid 的问题

变更

修复 pg_upgrade 未能为物化视图保留 relfrozenxid 的问题(Tom Lane、Andres Freund)

这一疏漏可能导致升级后物化视图中的数据损坏,表现为 “could not access status of transaction” 或 “found xmin from before relfrozenxid” 错误。很少刷新的物化视图,或只用 REFRESH MATERIALIZED VIEW CONCURRENTLY 维护的物化视图更可能出现问题。

如果观察到这种损坏,可以通过刷新物化视图(不带 CONCURRENTLY)来修复。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复错误 CONTEXT 栈中 PL/Python 函数名的错误报告

变更

修复错误 CONTEXT 栈中 PL/Python 函数名的错误报告(Tom Lane)

嵌套 PL/Python 函数调用(即通过 SPI 查询从另一个 PL/Python 函数到达的调用)中发生的错误会导致栈跟踪把内层函数名显示两次,而不是预期的结果。此外,嵌套 PL/Python DO 块中的错误在某些平台上可能导致空指针解引用崩溃。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 contrib/auto_explain 的 log_min_duration 设置范围达到 INT_MAX,即约 24 天而不是 35 分钟

变更

允许 contrib/auto_explain 的 log_min_duration 设置范围达到 INT_MAX,即约 24 天而不是 35 分钟(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.11

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.10 之前的版本升级,参见第 E.16 节。

安全相关确保 pg_upgrade 创建的所有临时文件对其他用户不可读

变更

确保 pg_upgrade 创建的所有临时文件对其他用户不可读(Tom Lane、Noah Misch)

pg_upgrade 通常将其临时文件限制为只有调用用户可读写。但如果用户的 umask 设置允许,包含 pg_dumpall -g 输出的临时文件会是组可读或全局可读,甚至可写。在多用户机器的典型用法中,umask 和/或工作目录的权限会足够严格以防止问题;但可能有人在 pg_upgrade 的这一疏漏允许向不友好者泄露数据库密码的场景下使用它。(CVE-2018-1053)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对在键共享锁定下被更新的元组的清理

变更

修复对在键共享锁定下被更新的元组的清理(Andres Freund、Álvaro Herrera)

某些情况下,VACUUM 即使这些元组现在已经死亡也不会移除它们,导致各种数据损坏场景。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复某些 LSN 获取中不充分的缓冲区锁定

变更

修复某些 LSN 获取中不充分的缓冲区锁定(Jacob Champion、Asim Praveen、Ashwin Agrawal)

这些错误可能导致并发负载下的行为异常。潜在后果尚未完全弄清。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复子查询输出用于 GROUPING SETS 时子查询展平相关情况的错误查询结果

变更

修复子查询输出用于 GROUPING SETS 时子查询展平相关情况的错误查询结果(Heikki Linnakangas)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免与 ALTER TABLE NO INHERIT 并发地从树中移除某个子表时对继承树的查询不必要的失败

变更

避免与 ALTER TABLE NO INHERIT 并发地从树中移除某个子表时对继承树的查询不必要的失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复多个会话运行 CREATE INDEX CONCURRENTLY 时的虚假死锁失败

变更

修复多个会话运行 CREATE INDEX CONCURRENTLY 时的虚假死锁失败(Jeff Janes)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复继承树包含外部子表时的失败

变更

修复继承树包含外部子表时的失败(Etsuro Fujita)

继承树中普通表和外部表的混合导致为 UPDATE 和 DELETE 查询创建错误计划。这在某些情况下导致可见的失败,特别是当外部子表上有行级触发器时。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 LATERAL 子查询内 VALUES 内相关子 SELECT 的失败

变更

修复 LATERAL 子查询内 VALUES 内相关子 SELECT 的失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复横向子查询内嵌套 UNION ALL 的某些情况下 “could not devise a query plan for the given query” 规划器失败

变更

修复横向子查询内嵌套 UNION ALL 的某些情况下 “could not devise a query plan for the given query” 规划器失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑解码正确清理崩溃事务的磁盘文件

变更

修复逻辑解码正确清理崩溃事务的磁盘文件(Atsushi Torikoshi)

逻辑解码可能为生成许多 WAL 记录的事务把 WAL 记录溢出到磁盘。通常这些文件在事务的提交或中止记录到达后清理;但如果从未看到这样的记录,移除代码就会行为不当。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复处理大事务时的 walsender 超时失败和中断响应失败

变更

修复处理大事务时的 walsender 超时失败和中断响应失败(Petr Jelinek)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 has_sequence_privilege() 像其他权限测试函数一样支持 WITH GRANT OPTION 测试

变更

修复 has_sequence_privilege() 像其他权限测试函数一样支持 WITH GRANT OPTION 测试(Joe Conway)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在使用 UTF8 编码的数据库中,忽略断言不同编码的 XML 声明

变更

在使用 UTF8 编码的数据库中,忽略断言不同编码的 XML 声明(Pavel Stehule、Noah Misch)

我们总是以数据库编码存储 XML 字符串,因此允许 libxml 对另一种编码的声明采取行动会给出错误结果。在 UTF8 之外的编码中,我们本来就不承诺支持非 ASCII XML 数据,因此为错误兼容保留以前的行为。这一更改只影响 xpath() 及相关函数;其他 XML 代码路径已经这样做了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进为与未来次版本协议的前向兼容做准备

变更

为与未来次版本协议的前向兼容做准备(Robert Haas、Badrul Chowdhury)

到目前为止,PostgreSQL 服务器只是拒绝使用比 3.0 更新的协议版本的请求,因此协议版本号的主部分和次部分之间没有功能差别。允许客户端请求 3.x 版本而不失败,发回一条表明服务器只理解 3.0 的消息。这目前没有区别,但向后移植此更改应能更快引入未来的次协议升级。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进应对并行工作者进程启动失败

变更

应对并行工作者进程启动失败(Amit Kapila、Robert Haas)

此前如果工作者无法启动(因 fork() 失败或其他低概率问题),并行查询往往无限挂起。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免使用 __int128 时做出不安全的对齐假定

变更

避免使用 __int128 时做出不安全的对齐假定(Tom Lane)

通常编译器假定 __int128 变量按 16 字节边界对齐,但我们的内存分配基础设施不能保证这一点,而且出于多种原因增大 MAXALIGN 的设置似乎不可行。调整代码,只在能让编译器假定较低对齐时才允许使用 __int128。到目前为止此问题的唯一已知症状是某些并行聚合查询中的崩溃。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复防止规划极深层嵌套集合操作(UNION/INTERSECT/EXCEPT)时的栈溢出崩溃

变更

防止规划极深层嵌套集合操作(UNION/INTERSECT/EXCEPT)时的栈溢出崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_hba.conf 中出现的某些类型 LDAP URL 的空指针崩溃

变更

修复 pg_hba.conf 中出现的某些类型 LDAP URL 的空指针崩溃(Thomas Munro)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/pgSQL 文档中的 INSTR() 示例函数

变更

修复 PL/pgSQL 文档中的 INSTR() 示例函数(Yugo Nagata、Tom Lane)

这些函数声称与 Oracle® 兼容,但并不完全如此。特别是对负第三参数的解释有分歧:Oracle 认为负值表示目标子串可以开始出现的最后一个位置,而我们的函数把它当作目标可以结束的最后一个位置。此外,Oracle 对零或负第四参数抛出错误,而我们的函数返回零。

示例代码已被调整以更精确地匹配 Oracle 的行为。把这段代码复制到其应用中的用户可能希望更新其副本。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 使 ACL(权限)、注释和安全标签条目在归档输出格式中可靠可识别

变更

修复 pg_dump 使 ACL(权限)、注释和安全标签条目在归档输出格式中可靠可识别(Tom Lane)

ACL 归档条目的“标记”部分通常只是相关对象的名称。使它以对象类型开头,使 ACL 与注释和安全标签归档条目已使用的约定一致。同时修复整个数据库的注释和安全标签条目(如果存在),使其标记以 DATABASE 开头,从而也遵循这一约定。这防止试图通过查看标记是否以 LARGE OBJECT 开头来识别大对象相关条目的代码发生假匹配。那可能导致条目被错误分类为数据而非模式,在仅模式或仅数据转储中产生不希望的结果。

注意,这一更改在 pg_restore --list 的输出中有用户可见的结果。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进重命名 pg_rewind 的 copy_file_range 函数,避免与该名称的新 Linux 系统调用冲突

变更

重命名 pg_rewind 的 copy_file_range 函数,避免与该名称的新 Linux 系统调用冲突(Andres Freund)

这一更改防止了更新 glibc 版本下的构建失败。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 ecpg 中,检测长度不正确的指示符数组并报错

变更

在 ecpg 中,检测长度不正确的指示符数组并报错(David Rader)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 contrib/hstore 中因对相同源和目标指针使用 memcpy() 而触发 libc 断言

变更

避免 contrib/hstore 中因对相同源和目标指针使用 memcpy() 而触发 libc 断言(Tomas Vondra)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进提供在 macOS 上自动启动 Postgres 的现代示例

变更

提供在 macOS 上自动启动 Postgres 的现代示例(Tom Lane)

contrib/start-scripts/osx 中的脚本使用已被弃用十多年的基础设施,并且在过去几年的 macOS 版本中已完全不能工作。添加了包含使用较新 launchd 基础设施的脚本的新子目录 contrib/start-scripts/macos。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 Windows 上为 OpenSSL 错误选择配置特定的库

变更

修复 Windows 上为 OpenSSL 错误选择配置特定的库(Andrew Dunstan)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持链接到 MinGW 构建的 libperl 版本

变更

支持链接到 MinGW 构建的 libperl 版本(Noah Misch)

这允许用一些常见的 Windows Perl 发行版构建 PL/Perl。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 MSVC 构建测试 32 位 libperl 是否需要 -D_USE_32BIT_TIME_T

变更

修复 MSVC 构建测试 32 位 libperl 是否需要 -D_USE_32BIT_TIME_T(Noah Misch)

可用的 Perl 发行版在这点上不一致,且没有报告它的可靠手段,因此求助于对所使用的库实际行为的构建时测试。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,在 postmaster 启动更早阶段安装崩溃转储处理器

变更

在 Windows 上,在 postmaster 启动更早阶段安装崩溃转储处理器(Takayuki Tsunakawa)

这可以允许为一些以前不产生转储的早期启动失败收集核心转储。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 Windows 上,避免 postmaster 启动极早期发出消息时与编码转换相关的崩溃

变更

在 Windows 上,避免 postmaster 启动极早期发出消息时与编码转换相关的崩溃(Takayuki Tsunakawa)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们现有的 Motorola 68K 自旋锁代码也用于 OpenBSD 而不只是 NetBSD

变更

把我们现有的 Motorola 68K 自旋锁代码也用于 OpenBSD 而不只是 NetBSD(David Carlier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进为 Motorola 88K 添加自旋锁支持

变更

为 Motorola 88K 添加自旋锁支持(David Carlier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2018c,涉及巴西以及圣多美和普林西比的夏令时法规变更,加上玻利维亚、日本和南苏丹的历史修正。US/Pacific-New 时区已被移除(它本来只是 America/Los_Angeles 的别名)。

变更

更新时区数据文件到 tzdata 版本 2018c,涉及巴西以及圣多美和普林西比的夏令时法规变更,加上玻利维亚、日本和南苏丹的历史修正。US/Pacific-New 时区已被移除(它本来只是 America/Los_Angeles 的别名)。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.10

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你使用 BRIN 索引,请参见下面第四条变更日志条目。

另外,如果你是从 9.5.8 之前的版本升级,参见第 E.18 节。

安全相关确保 INSERT ... ON CONFLICT DO UPDATE 在所有情况下检查表权限和 RLS 策略

变更

确保 INSERT ... ON CONFLICT DO UPDATE 在所有情况下检查表权限和 RLS 策略(Dean Rasheed)

INSERT ... ON CONFLICT DO UPDATE 的更新路径需要对仲裁者索引的列具有 SELECT 权限,但在仲裁者由约束名指定的情况下没有检查这一点。此外,对于启用了行级安全的表,它没有根据表的 SELECT 策略检查被更新的行(无论仲裁者索引如何指定)。(CVE-2017-15099)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关修复 json{b}_populate_recordset() 中行类型不匹配导致的崩溃

变更

修复 json{b}_populate_recordset() 中行类型不匹配导致的崩溃(Michael Paquier、Tom Lane)

这些函数使用 FROM ... AS 子句中指定的结果行类型,而没有检查它与所提供元组值的实际行类型匹配。如果不匹配,通常会导致崩溃,尽管泄露服务器内存内容似乎也有可能。(CVE-2017-15098)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关修复示例服务器启动脚本在打开 $PGLOG 之前变成 $PGUSER

变更

修复示例服务器启动脚本在打开 $PGLOG 之前变成 $PGUSER(Noah Misch)

此前,postmaster 日志文件是在仍以 root 运行时打开的。因此数据库所有者可以通过让 $PGLOG 成为指向某个其他文件的符号链接来攻击另一个系统用户,该文件随后会因追加日志消息而被损坏。

默认情况下这些脚本不会安装到任何地方。使用了它们的用户需要手动重新复制,或对其修改版应用相同的更改。如果现有的 $PGLOG 文件为 root 所有,在用修正后的脚本重启服务器之前需要把它移开或重命名。(CVE-2017-12172)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 BRIN 索引摘要正确处理并发表扩展

变更

修复 BRIN 索引摘要正确处理并发表扩展(Álvaro Herrera)

此前,一个竞态条件允许一些表行被遗漏在索引之外。可能需要对现有 BRIN 索引执行 REINDEX 以从此问题的既往发生中恢复。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 BRIN 索引并发更新期间可能的失败

变更

修复 BRIN 索引并发更新期间可能的失败(Tom Lane)

这些竞态条件可能导致诸如 “invalid index offnum” 或 “inconsistent range map” 之类的错误。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复从使用 SPI 的函数(特别是任何用 PL 语言编写的函数)调用逻辑解码时崩溃

变更

修复从使用 SPI 的函数(特别是任何用 PL 语言编写的函数)调用逻辑解码时崩溃(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 json_build_array()、json_build_object() 及其 jsonb 等价函数正确处理显式 VARIADIC 参数

变更

修复 json_build_array()、json_build_object() 及其 jsonb 等价函数正确处理显式 VARIADIC 参数(Michael Paquier)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进正确拒绝把无穷大浮点值转换为 numeric 类型的尝试

变更

正确拒绝把无穷大浮点值转换为 numeric 类型的尝试(Tom Lane、KaiGai Kohei)

此前行为是与平台相关的。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在视图末尾添加列后的边界崩溃

变更

修复在视图末尾添加列后的边界崩溃(Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在视图或规则包含 FieldSelect 或 FieldStore 表达式节点时记录正确的依赖

变更

在视图或规则包含 FieldSelect 或 FieldStore 表达式节点时记录正确的依赖(Tom Lane)

缺少这些依赖可能允许本应失败的列或数据类型 DROP 成功执行,从而导致之后使用该视图或规则时出错。此补丁不会保护现有视图/规则,只保护将来创建的。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进正确检测范围数据类型的可哈希性

变更

正确检测范围数据类型的可哈希性(Tom Lane)

规划器错误地假定任何范围类型都可以哈希用于哈希连接或哈希聚合,但实际上必须检查范围的子类型是否有哈希支持。这不影响任何内置范围类型,因为它们反正都是可哈希的。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在确定关系唯一性时正确忽略 RelabelType 表达式节点

变更

在确定关系唯一性时正确忽略 RelabelType 表达式节点(David Rowley)

这使子查询结果列为 varchar 类型时能够进行预期的优化。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复因 XID 回卷导致的低概率 NOTIFY 消息丢失

变更

修复因 XID 回卷导致的低概率 NOTIFY 消息丢失(Marko Tiikkaja、Tom Lane)

如果一个会话在超过 20 亿个事务期间不执行查询而只是监听通知,它就开始遗漏来自并发提交事务的一些通知。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 Linux 上 DSM 内存请求超过 tmpfs 可用空间时的 SIGBUS 崩溃

变更

避免 Linux 上 DSM 内存请求超过 tmpfs 可用空间时的 SIGBUS 崩溃(Thomas Munro)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复防止嵌套触发器触发处理中的低概率崩溃

变更

防止嵌套触发器触发处理中的低概率崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 COPY 的 FREEZE 选项在事务隔离级别为 REPEATABLE READ 或更高时工作

变更

允许 COPY 的 FREEZE 选项在事务隔离级别为 REPEATABLE READ 或更高时工作(Noah Misch)

这种情况意外地被之前的 bug 修复破坏。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进COPY 或 lo_export() 中文件创建失败时正确恢复 umask 设置

变更

COPY 或 lo_export() 中文件创建失败时正确恢复 umask 设置(Peter Eisentraut)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进为 ANALYZE 中的重复列名给出更好的错误消息

变更

为 ANALYZE 中的重复列名给出更好的错误消息(Nathan Bossart)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对不以换行结尾的 pg_hba.conf 文件最后一行的错误解析

变更

修复对不以换行结尾的 pg_hba.conf 文件最后一行的错误解析(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_basebackup 对表空间路径的匹配,在比较前规范化两个路径

变更

修复 pg_basebackup 对表空间路径的匹配,在比较前规范化两个路径(Michael Paquier)

这在 Windows 上特别有帮助。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 libpq 不要求用户的主目录存在

变更

修复 libpq 不要求用户的主目录存在(Tom Lane)

在 v10 中,尝试读取 ~/.pgpass 时找不到主目录被当作硬错误,但它应该只是导致找不到该文件。v10 和以前的发布分支在读取 ~/.pg_service.conf 时犯了同样的错误,不过这不太明显,因为除非指定了服务名否则不寻找该文件。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 libpq 防范 PGresult 行数中的整数溢出

变更

修复 libpq 防范 PGresult 行数中的整数溢出(Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 对带指针或数组变量的超出作用域游标声明的处理

变更

修复 ecpg 对带指针或数组变量的超出作用域游标声明的处理(Michael Meskes)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 ecpglib 中,根据是否设置了 standard_conforming_strings 正确处理字符串字面量中的反斜线

变更

在 ecpglib 中,根据是否设置了 standard_conforming_strings 正确处理字符串字面量中的反斜线(Tsunakawa Takayuki)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 ecpglib 的 Informix 兼容模式按预期忽略整数输入串中的小数位

变更

让 ecpglib 的 Informix 兼容模式按预期忽略整数输入串中的小数位(Gao Zengqi、Michael Meskes)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复类 check Make 目标缺失的临时安装先决条件

变更

修复类 check Make 目标缺失的临时安装先决条件(Noah Misch)

一些本应像 make check 一样工作的非默认测试流程未能确保临时安装是最新的。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们的时区库副本与 IANA tzcode2017c 同步

变更

把我们的时区库副本与 IANA tzcode2017c 同步(Tom Lane)

这修复了若干问题;唯一可能对用户可见的是,当时区数据目录中没有 posixrules 文件时,POSIX 风格时区名的默认夏令时规则现在匹配当前美国法律而不是十几年前的。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2017c,涉及斐济、纳米比亚、北塞浦路斯、苏丹、汤加以及特克斯和凯科斯群岛的夏令时法规变更,加上阿拉斯加、阿皮亚、缅甸、加尔各答、底特律、爱尔兰、纳米比亚和帕果帕果的历史修正。

变更

更新时区数据文件到 tzdata 版本 2017c,涉及斐济、纳米比亚、北塞浦路斯、苏丹、汤加以及特克斯和凯科斯群岛的夏令时法规变更,加上阿拉斯加、阿皮亚、缅甸、加尔各答、底特律、爱尔兰、纳米比亚和帕果帕果的历史修正。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.9

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.8 之前的版本升级,参见第 E.18 节。

其他改进在 information_schema.table_privileges 视图中显示外部表

变更

在 information_schema.table_privileges 视图中显示外部表(Peter Eisentraut)

所有其他相关的 information_schema 视图都包含外部表,只有这一个忽略了它们。

由于这个视图定义是由 initdb 安装的,仅升级不会修复问题。如果需要在现有安装中修复,可以以超级用户身份在 psql 中执行以下操作:

SET search_path TO information_schema;
CREATE OR REPLACE VIEW table_privileges AS
SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
       CAST(grantee.rolname AS sql_identifier) AS grantee,
       CAST(current_database() AS sql_identifier) AS table_catalog,
       CAST(nc.nspname AS sql_identifier) AS table_schema,
       CAST(c.relname AS sql_identifier) AS table_name,
       CAST(c.prtype AS character_data) AS privilege_type,
       CAST(
         CASE WHEN
          -- object owner always has grant options
          pg_has_role(grantee.oid, c.relowner, 'USAGE')
          OR c.grantable
          THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
       CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
FROM (
       SELECT oid, relname, relnamespace, relkind, relowner,
              (aclexplode(coalesce(relacl, acldefault('r', relowner))).*
       FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
     pg_namespace nc, pg_authid u_grantor,
     (
       SELECT oid, rolname FROM pg_authid
       UNION ALL
       SELECT 0::oid, 'PUBLIC'
     ) AS grantee (oid, rolname)
WHERE c.relnamespace = nc.oid
      AND c.relkind IN ('r', 'v', 'f')
      AND c.grantee = grantee.oid
      AND c.grantor = u_grantor.oid
      AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
      AND (pg_has_role(u_grantor.oid, 'USAGE')
           OR pg_has_role(grantee.oid, 'USAGE')
           OR grantee.rolname = 'PUBLIC');

这必须在每个要修复的数据库中重复,包括 template0。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进清理尝试对失败事务执行 ROLLBACK 时发生致命退出(例如因收到 SIGTERM)的处理

变更

清理尝试对失败事务执行 ROLLBACK 时发生致命退出(例如因收到 SIGTERM)的处理(Tom Lane)

这种情况可能导致断言失败。在生产构建中退出仍会发生,但会记录一条关于 “cannot drop active portal” 的意外消息。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进移除致命退出期间可能触发的断言

变更

移除致命退出期间可能触发的断言(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列

变更

正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列(Tom Lane)

某些更改复合类型或域类型定义的 ALTER 命令本应在该类型有存储值时失败,因为它们缺少更新或检查这类值所需的基础设施。此前这些检查可能遗漏包裹在范围类型或子域中的相关值,可能允许数据度变得不一致。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复使用并行模式并使用列表文件选择要恢复条目子集时 pg_restore 的崩溃

变更

修复使用并行模式并使用列表文件选择要恢复条目子集时 pg_restore 的崩溃(Fabrízio de Royes Mello)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句

变更

更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句(Michael Meskes)

这允许 ecpg 程序包含在内部使用 RETURNING(例如在 CTE 内)而不是用它定义返回给客户端的值的 SQL 构造。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 Windows 上 PL/Perl 编译器标志的选择

变更

改进 Windows 上 PL/Perl 编译器标志的选择(Tom Lane)

此修复避免了因对 time_t 值宽度的假定不一致而可能的 PL/Perl 崩溃。扩展开发者可能看到的一个副作用是 _USE_32BIT_TIME_T 不再在 PostgreSQL Windows 构建中全局定义。这预计不会引起问题,因为 time_t 类型没有用于任何 PostgreSQL API 定义。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复通过非 GNU make 程序调用时 make check 的正确行为

变更

修复通过非 GNU make 程序调用时 make check 的正确行为(Thomas Munro)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.8

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你使用的外部数据服务器依靠用户密码进行身份验证,请参见下面第一条变更日志条目。

另外,如果你是从 9.5.7 之前的版本升级,参见第 E.19 节。

安全相关进一步限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码

变更

进一步限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码(Noah Misch)

CVE-2017-7486 的修复不正确:它允许用户看到她自己用户映射中的选项,即使她对相关外部服务器没有 USAGE 权限。这种选项可能包含由服务器所有者而非用户自己提供的密码。由于 information_schema.user_mapping_options 在这种情况下不显示选项,pg_user_mappings 也不应该。(CVE-2017-7547)

此补丁本身只会修复新 initdb 的数据库中的行为。如果希望在现有数据库中应用此更改,需要执行以下操作:

  1. 在 postgresql.conf 中添加 allow_system_table_mods = true 后重启 postmaster。(在支持 ALTER SYSTEM 的版本中,可以用它进行配置更改,但仍需重启。)

  2. 在集簇的每个数据库中,以超级用户身份运行以下命令:

    SET search_path = pg_catalog;
    CREATE OR REPLACE VIEW pg_user_mappings AS
    SELECT U.oid AS umid, S.oid AS srvid, S.srvname AS srvname,
           U.umuser AS umuser,
           CASE WHEN U.umuser = 0 THEN 'public' ELSE A.rolname END AS usename,
           CASE WHEN (U.umuser <> 0 AND A.rolname = current_user
                       AND (pg_has_role(S.srvowner, 'USAGE')
                            OR has_server_privilege(S.oid, 'USAGE')))
                    OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
                    OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
                THEN U.umoptions ELSE NULL END AS umoptions
    FROM pg_user_mapping U
         LEFT JOIN pg_authid A ON (A.oid = U.umuser)
         JOIN pg_foreign_server S ON (U.umserver = S.oid);
    
  3. 不要忘记包括 template0 和 template1 数据库,否则漏洞仍会存在于之后创建的数据库中。要修复 template0,需要暂时让它接受连接。在 PostgreSQL 9.5 及之后,可以使用

    ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
    

    修复 template0 之后再撤销:

    ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
    

    在更早的版本中,改用:

    UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
    UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
    
  4. 最后,移除 allow_system_table_mods 配置设置,并再次重启 postmaster。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关禁止在所有基于密码的认证方法中使用空密码

变更

禁止在所有基于密码的认证方法中使用空密码(Heikki Linnakangas)

libpq 忽略空的密码说明,不把它们传输给服务器。因此,如果用户的密码被设为空字符串,就无法通过 psql 或其他基于 libpq 的客户端用该密码登录。管理员可能因此认为把密码设为空等同于禁用密码登录。然而,使用修改过的或非 libpq 的客户端,登录可能是可能的,这取决于配置的认证方法。特别是最常见的方法 md5 接受空密码。更改服务器在所有情况下拒绝空密码。(CVE-2017-7546)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关让 lo_put() 检查对目标大对象的 UPDATE 权限

变更

让 lo_put() 检查对目标大对象的 UPDATE 权限(Tom Lane、Michael Paquier)

lo_put() 理所当然应要求与 lowrite() 相同的权限,但检查缺失,允许任何用户更改大对象中的数据。(CVE-2017-7548)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复更正关于用 pg_upgrade 升级备库服务器过程的文档

变更

更正关于用 pg_upgrade 升级备库服务器过程的文档(Bruce Momjian)

原来的文档指示用户在运行 pg_upgrade 之后、同步备库之前启动/停止主服务器。这个顺序是不安全的。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复元组更新链的并发锁定

变更

修复元组更新链的并发锁定(Álvaro Herrera)

如果多个会话用非冲突锁模式并使用旧快照并发锁定一条元组更新链,且都成功,由于竞态条件其中一些仍可能失败(并得出没有存活元组版本的结论)。这会导致诸如外键检查看不到一个确实存在但正被并发更新的元组之类的后果。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复冻结 XMAX 是恰好只有一个仍感兴趣成员的多事务的元组时可能的数据损坏

变更

修复冻结 XMAX 是恰好只有一个仍感兴趣成员的多事务的元组时可能的数据损坏(Teodor Sigaev)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免在内存中排序超过十亿元组时的整数溢出和随之而来的崩溃

变更

避免在内存中排序超过十亿元组时的整数溢出和随之而来的崩溃(Sergey Koposov)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,如果在新进程中为共享内存保留地址范围失败,则重试进程创建

变更

在 Windows 上,如果在新进程中为共享内存保留地址范围失败,则重试进程创建(Tom Lane、Amit Kapila)

这有望修复可能由杀毒产品干扰导致的偶发子进程启动失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 Windows 构建中共享谓词锁哈希表的低概率损坏

变更

修复 Windows 构建中共享谓词锁哈希表的低概率损坏(Thomas Munro、Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免把 SSL 连接的干净关闭当作连接重置来记录

变更

避免把 SSL 连接的干净关闭当作连接重置来记录(Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止向客户端发送 SSL 会话票据

变更

防止向客户端发送 SSL 会话票据(Tom Lane)

此修复防止使用票据感知的客户端 SSL 代码时的重连失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 Solaris 上设置tcp_keepalives_idle的代码

变更

修复 Solaris 上设置tcp_keepalives_idle的代码(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复统计收集器处理 postmaster 关闭并立即重启之后发出的查询消息

变更

修复统计收集器处理 postmaster 关闭并立即重启之后发出的查询消息(Tom Lane)

在上一个 postmaster 关闭之后半秒内发出的统计查询实际上被忽略。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保统计收集器的接收缓冲区大小至少为 100KB

变更

确保统计收集器的接收缓冲区大小至少为 100KB(Tom Lane)

这降低了默认接收缓冲区大小小于该值的老平台上统计数据丢失的风险。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复备库刚处理完 XLOG_SWITCH WAL 记录后被提升时可能创建无效 WAL 段的问题

变更

修复备库刚处理完 XLOG_SWITCH WAL 记录后被提升时可能创建无效 WAL 段的问题(Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 walsender 在客户端请求关闭时及时退出

变更

修复 walsender 在客户端请求关闭时及时退出(Tom Lane)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 walsender 进程中的 SIGHUP 和 SIGUSR1 处理

变更

修复 walsender 进程中的 SIGHUP 和 SIGUSR1 处理(Petr Jelinek、Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止关闭检查点期间 walsender 引发的 panic

变更

防止关闭检查点期间 walsender 引发的 panic(Andres Freund、Michael Paquier)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 postmaster 中竞态条件导致的 walreceiver 进程不必要的缓慢重启

变更

修复 postmaster 中竞态条件导致的 walreceiver 进程不必要的缓慢重启(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑解码期间溢出到磁盘的小子事务的泄漏

变更

修复逻辑解码期间溢出到磁盘的小子事务的泄漏(Andres Freund)

这导致临时文件消耗过多的磁盘空间。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进减少创建逻辑解码槽期间构建快照所需的工作

变更

减少创建逻辑解码槽期间构建快照所需的工作(Andres Freund、Petr Jelinek)

原来的算法在有大量打开事务的服务器上昂贵得不可行。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复可能无限延迟逻辑解码槽创建的竞态条件

变更

修复可能无限延迟逻辑解码槽创建的竞态条件(Andres Freund、Petr Jelinek)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进减少处理系统缓存失效事件的开销

变更

减少处理系统缓存失效事件的开销(Tom Lane)

这对逻辑解码特别有帮助,它触发频繁的缓存失效。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 INSERT 或 UPDATE 对数组之上域类型的列的多个元素赋值的情况

变更

修复 INSERT 或 UPDATE 对数组之上域类型的列的多个元素赋值的情况(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许在聚合函数参数内的子 SELECT 中使用窗口函数

变更

允许在聚合函数参数内的子 SELECT 中使用窗口函数(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 ALTER ... RENAME 期间把自动生成的数组类型移开

变更

在 ALTER ... RENAME 期间把自动生成的数组类型移开(Vik Fearing)

此前我们在 CREATE 期间会把冲突的自动生成数组类型重命名移开;此修复把该行为扩展到重命名操作。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复表中约束带有注释时 ALTER TABLE 中的悬空指针

变更

修复表中约束带有注释时 ALTER TABLE 中的悬空指针(David Rowley)

把注释重新应用于重建后的约束时可能因奇怪的错误消息失败,甚至崩溃。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 ALTER USER ... SET 接受 ALTER ROLE ... SET 接受的所有语法变体

变更

确保 ALTER USER ... SET 接受 ALTER ROLE ... SET 接受的所有语法变体(Peter Eisentraut)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复把数据类型 I/O 函数的参数或返回类型从 opaque 更改为正确类型时正确更新依赖信息

变更

把数据类型 I/O 函数的参数或返回类型从 opaque 更改为正确类型时正确更新依赖信息(Heikki Linnakangas)

CREATE TYPE 会更新以这种早已过时风格声明的 I/O 函数,但忘记记录对类型的依赖,允许随后的 DROP TYPE 留下损坏的函数定义。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进减少 ANALYZE 处理 tsvector 列时的内存使用

变更

减少 ANALYZE 处理 tsvector 列时的内存使用(Heikki Linnakangas)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 money 值乘以或除以整数或浮点数时不必要的精度丢失和草率舍入

变更

修复 money 值乘以或除以整数或浮点数时不必要的精度丢失和草率舍入(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进收紧对解析标识符的函数(如 regprocedurein())中空白的检查

变更

收紧对解析标识符的函数(如 regprocedurein())中空白的检查(Tom Lane)

根据当前区域,这些函数可能把多字节字符的片段误解释为空白。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进编译 PL/Perl 时使用来自 Perl 的相关 #define 符号

变更

编译 PL/Perl 时使用来自 Perl 的相关 #define 符号(Ashutosh Sharma、Tom Lane)

这避免了可移植性问题(通常表现为库加载期间的“握手”不匹配),在使用最近 Perl 版本时。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 libpq 中,连接尝试失败后正确重置 GSS/SASL 和 SSPI 认证状态

变更

在 libpq 中,连接尝试失败后正确重置 GSS/SASL 和 SSPI 认证状态(Michael Paquier)

不这样做意味着当从 SSL 回退到非 SSL 连接时,SSL 尝试中的 GSS/SASL 失败总是导致非 SSL 尝试失败。SSPI 不会失败,但泄漏内存。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 psql 中,修复 COPY FROM STDIN 以键盘 EOF 信号结束后再尝试另一个 COPY FROM STDIN 时失败的问题

变更

在 psql 中,修复 COPY FROM STDIN 以键盘 EOF 信号结束后再尝试另一个 COPY FROM STDIN 时失败的问题(Thomas Munro)

这种错误行为在 BSD 衍生平台(包括 macOS)上观察到,但在大多数其他平台上没有。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 和 pg_restore 把 REFRESH MATERIALIZED VIEW 命令放在最后发出

变更

修复 pg_dump 和 pg_restore 把 REFRESH MATERIALIZED VIEW 命令放在最后发出(Tom Lane)

这防止了物化视图引用其他用户拥有的表时转储/恢复期间的错误。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 pg_dump/pg_restore 对源自 zlib 的错误情况的报告

变更

改进 pg_dump/pg_restore 对源自 zlib 的错误情况的报告(Vladimir Kunschikov、Álvaro Herrera)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 使用 --clean 选项按预期删除事件触发器

变更

修复 pg_dump 使用 --clean 选项按预期删除事件触发器(Tom Lane)

它现在还正确分配事件触发器的所有权;此前它们被恢复为归运行恢复脚本的超级用户所有。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 不再为空操作符类发出无效 SQL

变更

修复 pg_dump 不再为空操作符类发出无效 SQL(Daniel Gustafsson)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 在 Windows 上输出到 stdout

变更

修复 pg_dump 在 Windows 上输出到 stdout(Kuntal Ghosh)

由于未把文件描述符置为二进制模式,写到 stdout 的压缩纯文本转储会包含损坏的数据。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_get_ruledef() 为列被重命名的视图的 ON SELECT 规则打印正确输出

变更

修复 pg_get_ruledef() 为列被重命名的视图的 ON SELECT 规则打印正确输出(Tom Lane)

某些边界情况下 pg_dump 依靠 pg_get_ruledef() 转储视图,因此这个错误可能导致转储/恢复失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复带空约束外连接(如没有公共列的 NATURAL LEFT JOIN 的结果)的转储

变更

修复带空约束外连接(如没有公共列的 NATURAL LEFT JOIN 的结果)的转储(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 FROM 子句中函数表达式不能反解析为看起来像函数调用的东西时的转储

变更

修复 FROM 子句中函数表达式不能反解析为看起来像函数调用的东西时的转储(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_basebackup 在 Windows 上输出到 stdout

变更

修复 pg_basebackup 在 Windows 上输出到 stdout(Haribabu Kommi)

由于未把文件描述符置为二进制模式,写到 stdout 的备份会包含损坏的数据。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_rewind 正确处理超过 2GB 的文件

变更

修复 pg_rewind 正确处理超过 2GB 的文件(Kuntal Ghosh、Michael Paquier)

通常这种文件不会出现在 PostgreSQL 数据目录中,但在某些情况下可能存在。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_upgrade 确保结束 WAL 记录不具有wal_level = minimum

变更

修复 pg_upgrade 确保结束 WAL 记录不具有wal_level = minimum(Bruce Momjian)

这一条件可能阻止升级后的备库服务器重新连接。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_xlogdump 对 WAL 记录长度的计算

变更

修复 pg_xlogdump 对 WAL 记录长度的计算(Andres Freund)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 postgres_fdw 中,ALTER SERVER 或 ALTER USER MAPPING 命令之后重建到远程服务器的连接

变更

在 postgres_fdw 中,ALTER SERVER 或 ALTER USER MAPPING 命令之后重建到远程服务器的连接(Kyotaro Horiguchi)

这确保影响连接参数的选项更改被及时应用。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 postgres_fdw 中,允许取消远程事务控制命令

变更

在 postgres_fdw 中,允许取消远程事务控制命令(Robert Haas、Rafia Sabih)

这一更改使我们能在比以前多得多的情况下快速摆脱对无响应远程服务器的等待。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进增大 MAX_SYSCACHE_CALLBACKS,为扩展提供更多空间

变更

增大 MAX_SYSCACHE_CALLBACKS,为扩展提供更多空间(Tom Lane)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进用 gcc 构建共享库时始终使用 -fPIC 而不是 -fpic

变更

用 gcc 构建共享库时始终使用 -fPIC 而不是 -fpic(Tom Lane)

这在有差别的平台上支持更大的扩展库。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复我们的 Microsoft MSVC 构建脚本中花括号未转义的问题,以避免较新的 Perl 版本发出警告或报错

变更

修复我们的 Microsoft MSVC 构建脚本中花括号未转义的问题,以避免较新的 Perl 版本发出警告或报错(Andrew Dunstan)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中,处理 openssl 库不在 VC 子目录内的情况

变更

在 MSVC 构建中,处理 openssl 库不在 VC 子目录内的情况(Andrew Dunstan)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中,为 libxml2 头文件添加正确的包含路径

变更

在 MSVC 构建中,为 libxml2 头文件添加正确的包含路径(Andrew Dunstan)

这修复了以前需要移动标准 Windows 安装的 libxml2 中某些东西的需要。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中,识别名为 tcl86.lib 的 Tcl 库

变更

在 MSVC 构建中,识别名为 tcl86.lib 的 Tcl 库(Noah Misch)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中,尊重 vcregress.pl 命令行上的 PROVE_FLAGS 设置

变更

在 MSVC 构建中,尊重 vcregress.pl 命令行上的 PROVE_FLAGS 设置(Andrew Dunstan)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.7

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你使用的外部数据服务器依靠用户密码进行身份验证,请参见下面第一条变更日志条目。

另外,如果你使用依赖“逻辑解码”的第三方复制工具,请参见下面第四条变更日志条目。

另外,如果你是从 9.5.6 之前的版本升级,参见第 E.20 节。

安全相关限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码

变更

限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码(Michael Paquier、Feike Steenbergen)

原来的编码允许外部服务器对象的所有者,或任何被他授予服务器 USAGE 权限的人,看到与该服务器关联的所有用户映射的选项。这很可能包括其他用户的密码。调整视图定义以匹配 information_schema.user_mapping_options 的行为,即这些选项对被映射的用户可见,或者当映射针对 PUBLIC 且当前用户是服务器所有者时,或者当前用户是超级用户时可见。(CVE-2017-7486)

此补丁本身只会修复新 initdb 的数据库中的行为。如果希望在现有数据库中应用此更改,请遵循第 E.18 节中 CVE-2017-7547 变更日志条目所示的更正程序。

安全相关防止通过泄漏型操作符暴露统计信息

变更

防止通过泄漏型操作符暴露统计信息(Peter Eisentraut)

规划器的一些选择率估计函数会对从 pg_statistic 获得的值(如最常见值和直方图条目)应用用户定义操作符。这发生在表权限检查之前,因此恶意用户可以利用这一行为获得他无权读取的表列的这些值。为修复,当操作符的实现函数未被证明防泄漏且调用用户无权读取所需统计信息的表列时,回退到默认估计。实践中大多数情况下至少满足这些准则之一。(CVE-2017-7484)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关恢复 libpq 对 PGREQUIRESSL 环境变量的识别

变更

恢复 libpq 对 PGREQUIRESSL 环境变量的识别(Daniel Gustafsson)

对这个环境变量的处理在 PostgreSQL 9.3 中被意外丢弃,但其文档还在。这造成了安全隐患,因为用户可能依赖该环境变量强制 SSL 加密连接,但这不再有保证。恢复对该变量的处理,但其优先级低于 PGSSLMODE,以避免破坏在 9.3 之后代码下正常工作的配置。(CVE-2017-7485)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑解码初始快照可能无效的问题

变更

修复逻辑解码初始快照可能无效的问题(Petr Jelinek、Andres Freund)

为逻辑解码复制槽创建的初始快照可能不正确。这可能导致使用逻辑解码复制不完整/不一致初始数据的第三方工具。如果创建槽时源服务器繁忙,或者已存在另一个逻辑槽,更有可能发生。

如果你使用依赖逻辑解码的复制工具,并且它本应在复制开始时复制了非空数据集,建议在安装此更新后重建副本,或对照源服务器验证其内容。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复未记录索引的“init fork”可能的损坏

变更

修复未记录索引的“init fork”可能的损坏(Robert Haas、Michael Paquier)

这可能导致未记录索引在崩溃和重启之后被置为无效状态。这种问题将持续到索引被删除并重建为止。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复备库重放已预备但未提交的两阶段事务时 pg_subtrans 条目的错误重建

变更

修复备库重放已预备但未提交的两阶段事务时 pg_subtrans 条目的错误重建(Tom Lane)

大多数情况下这没有可见的不良影响,但在边界情况下可能导致 pg_subtrans 中的循环引用,可能使检查两阶段事务所修改行的查询陷入无限循环。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 walsender 因未能初始化字符串缓冲区而可能的崩溃

变更

避免 walsender 因未能初始化字符串缓冲区而可能的崩溃(Stas Kelvich、Fujii Masao)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GiST 索引上最近邻仅索引扫描重扫描时可能的崩溃

变更

修复 GiST 索引上最近邻仅索引扫描重扫描时可能的崩溃(Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 postmaster 对后台工作者进程 fork() 失败的处理

变更

修复 postmaster 对后台工作者进程 fork() 失败的处理(Tom Lane)

此前 postmaster 会像进程成功启动一样更新其状态的一部分,导致后续的混乱。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GROUPING SETS 列的数据类型可哈希但不可排序时的崩溃或错误答案

变更

修复 GROUPING SETS 列的数据类型可哈希但不可排序时的崩溃或错误答案(Pavan Deolasee)

其他改进避免把“物理目标列表”优化应用于自定义扫描

变更

避免把“物理目标列表”优化应用于自定义扫描(Dmitry Ivanov、Tom Lane)

这一优化假定检索元组的所有列代价低廉,对普通 Postgres 元组确实如此;但对自定义扫描提供者未必。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复应用 FOR ALL 行级安全策略时使用正确的子表达式

变更

应用 FOR ALL 行级安全策略时使用正确的子表达式(Stephen Frost)

某些情况下会应用 WITH CHECK 限制,而 USING 限制更合适。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保扩展脚本中查询的解析能看到紧邻的前一条 DDL 的结果

变更

确保扩展脚本中查询的解析能看到紧邻的前一条 DDL 的结果(Julien Rouhaud、Tom Lane)

由于扩展脚本文件中命令之间缺少缓存刷新步骤,非实用查询可能看不到紧邻的目录更改(如 ALTER TABLE ... RENAME)的效果。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进当 ALTER TABLE ... ALTER COLUMN TYPE 重建现有索引时跳过表空间权限检查

变更

当 ALTER TABLE ... ALTER COLUMN TYPE 重建现有索引时跳过表空间权限检查(Noah Misch)

如果调用用户当前对包含索引的表空间没有 CREATE 权限,命令就会失败。这种行为似乎无益,因此跳过检查,允许索引在原地重建。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ALTER TABLE ... VALIDATE CONSTRAINT 在约束被标记 NO INHERIT 时不递归到子表

变更

修复 ALTER TABLE ... VALIDATE CONSTRAINT 在约束被标记 NO INHERIT 时不递归到子表(Amit Langote)

此修复防止子表中不存在匹配约束时不需要的 “constraint does not exist” 失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免源表上行级安全激活时 COPY ... TO 中的悬空指针

变更

避免源表上行级安全激活时 COPY ... TO 中的悬空指针(Tom Lane)

通常这没有不良影响,但有时会导致意外错误或崩溃。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在 CLUSTER 和 VACUUM FULL 中访问已关闭的关系缓存条目

变更

避免在 CLUSTER 和 VACUUM FULL 中访问已关闭的关系缓存条目(Tom Lane)

运气不好时,这可能导致目标关系上的索引被以错误的持久性设置重建。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 VACUUM 正确考虑因页 pin 冲突而无法扫描的页

变更

修复 VACUUM 正确考虑因页 pin 冲突而无法扫描的页(Andrew Gierth)

这往往导致低估表中的元组数。在小型高争用表的最坏情况下,VACUUM 可能错误地报告表不包含任何元组,导致非常糟糕的计划选择。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保哈希连接中的批量元组传输循环可被查询取消请求中断

变更

确保哈希连接中的批量元组传输循环可被查询取消请求中断(Tom Lane、Thomas Munro)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 interval 比较中的整数溢出问题

变更

修复 interval 比较中的整数溢出问题(Kyotaro Horiguchi、Tom Lane)

interval 类型的比较操作符对超过约 296000 年的间隔可能给出错误答案。包含这种大值的列上的索引应执行 REINDEX,因为它们可能已损坏。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 cursor_to_xml() 在 tableforest = false 时产生有效输出

变更

修复 cursor_to_xml() 在 tableforest = false 时产生有效输出(Thomas Munro、Peter Eisentraut)

此前它未能产生包裹的 <table> 元素。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 float8_timestamptz() 和 make_interval() 中的舍入问题

变更

修复 float8_timestamptz() 和 make_interval() 中的舍入问题(Tom Lane)

这些函数在把浮点值转换为整数微秒时是截断而不是舍入;这可能导致意外的差一结果。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_get_object_address() 正确处理操作符族的成员

变更

修复 pg_get_object_address() 正确处理操作符族的成员(Álvaro Herrera)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进改进 pg_timezone_names 视图的性能

变更

改进 pg_timezone_names 视图的性能(Tom Lane、David Rowley)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进减少包含许多大块的内存上下文的内存管理开销

变更

减少包含许多大块的内存上下文的内存管理开销(Tom Lane)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对 lseek() 和 close() 边界情况错误的草率处理

变更

修复对 lseek() 和 close() 边界情况错误的草率处理(Tom Lane)

这两个系统调用在典型情况下不太可能失败,但如果失败,fd.c 会变得相当混乱。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对 postmaster 是否作为 Windows 服务运行的不正确检查

变更

修复对 postmaster 是否作为 Windows 服务运行的不正确检查(Michael Paquier)

这可能导致在事件日志不可访问时尝试写入它,以至于完全不进行日志记录。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 支持 COMMIT PREPARED 和 ROLLBACK PREPARED

变更

修复 ecpg 支持 COMMIT PREPARED 和 ROLLBACK PREPARED(Masahiko Sawada)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 中处理美元引用字符串字面量时的双重释放错误

变更

修复 ecpg 中处理美元引用字符串字面量时的双重释放错误(Michael Meskes)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 pg_dump 中,修复某些类型数据库对象的注释和安全标签的模式和所有者标记错误

变更

在 pg_dump 中,修复某些类型数据库对象的注释和安全标签的模式和所有者标记错误(Giuseppe Broccolo、Tom Lane)

简单情况下这没有不良影响;但例如,选择性模式恢复可能遗漏本应包含的注释,因为它们没有被标记为属于其相关对象的模式。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 SQL 对象名包含换行时 pg_restore -l 发出无效列表文件

变更

避免 SQL 对象名包含换行时 pg_restore -l 发出无效列表文件(Tom Lane)

用空格替换换行,这足以使输出对 pg_restore -L 的用途有效。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_upgrade 传输附加到“大对象”(blob)的注释和安全标签

变更

修复 pg_upgrade 传输附加到“大对象”(blob)的注释和安全标签(Stephen Frost)

此前,blob 被正确传输到新数据库,但附加到它们的任何注释或安全标签都丢失了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 contrib/adminpack 的 pg_file_write() 函数中的错误处理

变更

改进 contrib/adminpack 的 pg_file_write() 函数中的错误处理(Noah Misch)

值得注意的是,它未能检测 fclose() 报告的错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 contrib/dblink 中,建立新的未命名连接时避免泄漏先前的未命名连接

变更

在 contrib/dblink 中,建立新的未命名连接时避免泄漏先前的未命名连接(Joe Conway)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pg_trgm 从正则表达式提取三元组的问题

变更

修复 contrib/pg_trgm 从正则表达式提取三元组的问题(Tom Lane)

某些情况下它会产生永远无法匹配任何东西的损坏数据结构,导致使用三元组索引的 GIN 或 GiST 索引扫描找不到与正则表达式的任何匹配。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 contrib/postgres_fdw 中,把查询取消请求传输到远程服务器

变更

在 contrib/postgres_fdw 中,把查询取消请求传输到远程服务器(Michael Paquier、Etsuro Fujita)

以前,本地查询取消请求不会导致已发送的远程查询提前终止。这是对最初为 9.6 完成的工作的回移植。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中支持 Tcl 8.6

变更

在 MSVC 构建中支持 Tcl 8.6(Álvaro Herrera)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们的时区库副本与 IANA tzcode2017b 同步

变更

把我们的时区库副本与 IANA tzcode2017b 同步(Tom Lane)

这修复了影响 2038 年 1 月某些夏令时转换的 bug。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2017b,涉及智利、海地和蒙古的夏令时法规变更,加上厄瓜多尔、哈萨克斯坦、利比里亚和西班牙的历史修正。南美洲、太平洋和印度洋以及一些亚洲和中东国家的众多时区改用数字缩写。

变更

更新时区数据文件到 tzdata 版本 2017b,涉及智利、海地和蒙古的夏令时法规变更,加上厄瓜多尔、哈萨克斯坦、利比里亚和西班牙的历史修正。南美洲、太平洋和印度洋以及一些亚洲和中东国家的众多时区改用数字缩写。

IANA 时区数据库以前为所有时区提供文本缩写,有时编造在当地居民中几乎或完全没有使用的缩写。他们正在逆转这一政策,改为在没有证据表明实际使用英文缩写的区域使用数字 UTC 偏移。至少目前,PostgreSQL 将继续接受这种被移除的缩写用于时间戳输入。但它们不会显示在 pg_timezone_names 视图中,也不用于输出。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 MSVC 构建中对 POSIX 风格时区名使用正确的夏令时规则

变更

在 MSVC 构建中对 POSIX 风格时区名使用正确的夏令时规则(David Rowley)

Microsoft MSVC 构建脚本忽略了把 posixrules 文件安装到时区目录树中。这导致时区代码回退到它内置的关于 POSIX 风格时区名应假定什么 DST 行为的规则。由于历史原因,那仍然对应美国 2007 年之前使用的 DST 规则(即 4 月第一个星期日和 10 月最后一个星期日更改)。有了此修复,POSIX 风格时区名将使用 US/Eastern 时区的当前和历史 DST 转换日期。如果不希望这样,移除 posixrules 文件,或用其他某个时区文件的副本替换它(见第 8.5.3 节)。注意由于缓存,可能需要重启服务器才能使这种更改生效。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.6

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你的安装受到下面第一条变更日志条目所述 bug 的影响,更新之后你可能需要采取行动修复损坏的索引。

另外,如果你是从 9.5.5 之前的版本升级,参见第 E.21 节。

BUG 修复修复可能导致用 CREATE INDEX CONCURRENTLY 构建的索引损坏的竞态条件

变更

修复可能导致用 CREATE INDEX CONCURRENTLY 构建的索引损坏的竞态条件(Pavan Deolasee、Tom Lane)

如果 CREATE INDEX CONCURRENTLY 被用于构建一个依赖于先前未被索引的列的索引,那么与 CREATE INDEX 命令并发运行的事务所更新的行可能收到错误的索引条目。如果怀疑这可能已发生,最可靠的解决方案是在安装此更新后重建受影响的索引。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保用于目录扫描的特殊快照不被过早的数据修剪失效

变更

确保用于目录扫描的特殊快照不被过早的数据修剪失效(Tom Lane)

后端在通告其最旧 xmin 时没有考虑这个快照,可能允许并发清理操作移除仍需要的数据。这导致 “cache lookup failed for relation 1255” 之类的瞬态失败。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 BRIN 索引不正确的 WAL 记录

变更

修复 BRIN 索引不正确的 WAL 记录(Kuntal Ghosh)

把索引元组移动到不同页时为 BRIN “revmap” 页发出的 WAL 记录不正确。重放会使索引的相关部分失效,迫使它重新计算。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进无条件地为未记录表的 “init fork” 写 WAL 日志

变更

无条件地为未记录表的 “init fork” 写 WAL 日志(Michael Paquier)

此前当wal_level = minimum 时跳过这一步,但实际上即使在这种情况下也需要它,以确保未记录表在崩溃后被正确重置为空。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进减少备库服务器重放 btree 索引清理操作期间的互锁

变更

减少备库服务器重放 btree 索引清理操作期间的互锁(Simon Riggs)

此更改避免了重放这种操作期间有时发生的显著复制延迟。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进如果统计收集器在热备期间死亡,重启它

变更

如果统计收集器在热备期间死亡,重启它(Takayuki Tsunakawa)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保热备反馈在备库服务器启动时启用的情况下正确工作

变更

确保热备反馈在备库服务器启动时启用的情况下正确工作(Ants Aasma、Craig Ringer)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进热备等待冲突查询时检查中断

变更

热备等待冲突查询时检查中断(Simon Riggs)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免边界情况下自动清理启动器的不断重启

变更

避免边界情况下自动清理启动器的不断重启(Amit Khandekar)

此修复避免了自动清理名义上关闭且有一些需要冻结的表,但所有这种表都已被自动清理工作者处理时的问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复扩展成员对象何时可被删除的检查

变更

修复扩展成员对象何时可被删除的检查(Tom Lane)

扩展升级脚本应当能删除成员对象,但对序列列的序列(可能还有其他情况)这不被允许。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 ALTER TABLE 重建索引时保留索引表空间分配

变更

确保 ALTER TABLE 重建索引时保留索引表空间分配(Tom Lane、Michael Paquier)

此前,default_tablespace的非默认设置可能导致索引损坏。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复用 ALTER TABLE ... ALTER CONSTRAINT 更改外键约束可延迟性属性时触发器函数属性的错误更新

变更

修复用 ALTER TABLE ... ALTER CONSTRAINT 更改外键约束可延迟性属性时触发器函数属性的错误更新(Tom Lane)

这导致之后执行外键时的奇怪失败,因为触发器在错误的时间触发。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进如果被引用关系有未决的触发器事件,防止删除外键约束

变更

如果被引用关系有未决的触发器事件,防止删除外键约束(Tom Lane)

这避免了 “could not find trigger NNN” 或 “relation NNN has no triggers” 错误。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复子表列顺序与父表不同时的 ALTER TABLE ... SET DATA TYPE ... USING

变更

修复子表列顺序与父表不同时的 ALTER TABLE ... SET DATA TYPE ... USING(Álvaro Herrera)

未能调整 USING 表达式中的列编号导致错误,典型的是 “attribute N has wrong type”。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复带 OID 的表通过 ALTER TABLE ... INHERIT 关联到带 OID 的父表时 OID 列的处理

变更

修复带 OID 的表通过 ALTER TABLE ... INHERIT 关联到带 OID 的父表时 OID 列的处理(Amit Langote)

这种情况下 OID 列应当与普通用户列同等对待,但没有,导致之后继承更改中的奇怪行为。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 CREATE OR REPLACE VIEW 在尝试应用新视图选项之前先更新视图查询

变更

修复 CREATE OR REPLACE VIEW 在尝试应用新视图选项之前先更新视图查询(Dean Rasheed)

此前如果新选项与旧视图定义不一致,命令就会失败。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ALTER TEXT SEARCH CONFIGURATION 期间报告正确的对象身份

变更

修复 ALTER TEXT SEARCH CONFIGURATION 期间报告正确的对象身份(Artur Zakirov)

向逻辑解码等扩展报告了错误的目录 OID。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复提交时间戳机制在被询问特殊 XID FrozenTransactionId 和 BootstrapTransactionId 时不失败

变更

修复提交时间戳机制在被询问特殊 XID FrozenTransactionId 和 BootstrapTransactionId 时不失败(Craig Ringer)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在报告约束违反失败之前检查可序列化冲突

变更

在报告约束违反失败之前检查可序列化冲突(Thomas Munro)

使用可序列化事务隔离时,希望任何因并发事务导致的错误都表现为序列化失败,从而提示应用重试可能成功。不幸的是,对并发插入导致的重复键失败这不能可靠发生。此更改确保如果应用在事务中早些时候显式检查过冲突键的存在(且未找到),这种错误将被报告为序列化错误。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复视图重选项被错误地当作普通表重选项使用的问题

变更

修复视图重选项被错误地当作普通表重选项使用的问题(Tom Lane)

症状是当 INSERT ... ON CONFLICT 的目标是带级联选项的视图时,出现虚假的 “ON CONFLICT is not supported on table ... used as a catalog table” 错误。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对宽表使用 ON CONFLICT 时错误的 “target lists can have at most N entries” 报怨

变更

修复对宽表使用 ON CONFLICT 时错误的 “target lists can have at most N entries” 报怨(Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 UPDATE 源表达式中 foo.* 的多列展开

变更

防止 UPDATE 源表达式中 foo.* 的多列展开(Tom Lane)

这导致 “UPDATE target count mismatch --- internal error”。现在该语法被理解为整行变量,与其他上下文中一样。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保多行 VALUES 构造的列 typmod 被准确确定

变更

确保多行 VALUES 构造的列 typmod 被准确确定(Tom Lane)

这修复了列的第一个值有可确定的 typmod(如 varchar 值的长度)但后面的值不共享同一限制时发生的问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进对 Unicode 字符串末尾未完成的 Unicode 代理项对抛出错误

变更

对 Unicode 字符串末尾未完成的 Unicode 代理项对抛出错误(Tom Lane)

通常 Unicode 代理项前导字符后面必须跟 Unicode 代理项后随字符,但当前导字符是 Unicode 字符串字面量(U&'...')或 Unicode 标识符(U&"...")的最后一个字符时漏掉了这一检查。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保纯否定的文本搜索查询(如 !foo)匹配空的 tsvector

变更

确保纯否定的文本搜索查询(如 !foo)匹配空的 tsvector(Tom Dunstan)

GIN 索引搜索能找到这种匹配,但顺序扫描或 GiST 索引搜索不能。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复防止 ts_rewrite() 用空查询替换非顶层子树时崩溃

变更

防止 ts_rewrite() 用空查询替换非顶层子树时崩溃(Artur Zakirov)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ts_rewrite() 的性能问题

变更

修复 ts_rewrite() 的性能问题(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ts_rewrite() 对嵌套 NOT 操作符的处理

变更

修复 ts_rewrite() 对嵌套 NOT 操作符的处理(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进提高使用 array_append() 作为转换函数的用户定义聚合的速度

变更

提高使用 array_append() 作为转换函数的用户定义聚合的速度(Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 array_fill() 正确处理空数组

变更

修复 array_fill() 正确处理空数组(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 array_position() 或 array_positions() 处理记录数组时可能的崩溃

变更

修复 array_position() 或 array_positions() 处理记录数组时可能的崩溃(Junseok Yang)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 quote_literal_cstr() 中的一字节缓冲区越界

变更

修复 quote_literal_cstr() 中的一字节缓冲区越界(Heikki Linnakangas)

只有当输入完全由单引号和/或反斜线组成时才会发生越界。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 pg_start_backup() 和 pg_stop_backup() 的多次调用并发运行

变更

防止 pg_start_backup() 和 pg_stop_backup() 的多次调用并发运行(Michael Paquier)

这避免了有人试图并行运行这些函数时的断言失败以及可能更糟的事情。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁用试图移除无操作 AT TIME ZONE 转换的变换

变更

禁用试图移除无操作 AT TIME ZONE 转换的变换(Tom Lane)

当简化后的表达式用于索引条件时,这导致错误答案。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免丢弃并非真正无操作的 interval 到 interval 强制转换

变更

避免丢弃并非真正无操作的 interval 到 interval 强制转换(Tom Lane)

某些情况下,本应导致清零低阶 interval 字段的强制转换被错误地当作无操作而丢弃。例如从 INTERVAL MONTH 转换到 INTERVAL YEAR 未能清除月份字段。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复向并行工作者传输 GUC 参数值的 bug

变更

修复向并行工作者传输 GUC 参数值的 bug(Michael Paquier、Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保缓存计划因外部表选项的更改而失效

变更

确保缓存计划因外部表选项的更改而失效(Amit Langote、Etsuro Fujita、Ashutosh Bapat)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 转储使用内建函数的用户定义强制转换和转换

变更

修复 pg_dump 转储使用内建函数的用户定义强制转换和转换(Stephen Frost)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_restore 使用 --create --if-exists 时对包含无法识别的 DROP 命令的归档表现得更理智

变更

修复 pg_restore 使用 --create --if-exists 时对包含无法识别的 DROP 命令的归档表现得更理智(Tom Lane)

这不修复任何现存 bug,但如果 pg_restore 与更晚的 pg_dump 版本生成的归档一起使用,将来可能改进行为。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复慢 I/O 情况下 pg_basebackup 的速率限制

变更

修复慢 I/O 情况下 pg_basebackup 的速率限制(Antonin Houska)

如果磁盘 I/O 暂时比指定的速率限制慢得多,计算就会溢出,实际上禁用了运行剩余部分的速率限制。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_basebackup 对符号链接的 pg_stat_tmp 和 pg_replslot 子目录的处理

变更

修复 pg_basebackup 对符号链接的 pg_stat_tmp 和 pg_replslot 子目录的处理(Magnus Hagander、Michael Paquier)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复包含 WAL 文件时备库服务器上可能的 pg_basebackup 失败

变更

修复包含 WAL 文件时备库服务器上可能的 pg_basebackup 失败(Amit Kapila、Robert Haas)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复域检查约束和 CASE 执行中展开数组的可能处理不当

变更

修复域检查约束和 CASE 执行中展开数组的可能处理不当(Tom Lane)

在这些上下文中调用的 PL/pgSQL 函数有可能修改甚至删除需要为额外操作保留的数组值。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/pgSQL 函数在诸如对 PL/pgSQL 变量赋值期间求值的域检查约束等上下文中的嵌套使用

变更

修复 PL/pgSQL 函数在诸如对 PL/pgSQL 变量赋值期间求值的域检查约束等上下文中的嵌套使用(Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保我们为 PL/Python 创建的 Python 异常对象被正确引用计数

变更

确保我们为 PL/Python 创建的 Python 异常对象被正确引用计数(Rafa de la Torre、Tom Lane)

这避免了对象在 Python 垃圾回收周期发生之后被使用时的失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/Tcl 支持以 .tupno 为列名的表上的触发器

变更

修复 PL/Tcl 支持以 .tupno 为列名的表上的触发器(Tom Lane)

这与 PL/Tcl 的 spi_exec 和 spi_execp 命令(以前未写入文档)的行为一致,即只在不存在该名字的真实列时才插入幻 .tupno 列。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 ~/.pgpass 文件中的 DOS 风格行尾,即使在 Unix 上也一样

变更

允许 ~/.pgpass 文件中的 DOS 风格行尾,即使在 Unix 上也一样(Vik Fearing)

这一更改简化了在 Unix 和 Windows 机器之间使用同一密码文件。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 被给定以点结尾的文件名时的一字节缓冲区越界

变更

修复 ecpg 被给定以点结尾的文件名时的一字节缓冲区越界(Takayuki Tsunakawa)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 psql 对 ALTER DEFAULT PRIVILEGES 的 Tab 补全

变更

修复 psql 对 ALTER DEFAULT PRIVILEGES 的 Tab 补全(Gilles Darold、Stephen Frost)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 psql 中,把 PAGER 环境变量的空或全空白设置当作“不使用分页器”

变更

在 psql 中,把 PAGER 环境变量的空或全空白设置当作“不使用分页器”(Tom Lane)

此前这种设置导致本应发给分页器的输出完全消失。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 contrib/dblink 对低层 libpq 错误(如内存不足)的报告

变更

改进 contrib/dblink 对低层 libpq 错误(如内存不足)的报告(Joe Conway)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 contrib/dblink 在使用 contrib/postgres_fdw 外部服务器作为连接选项来源时忽略无关的服务器选项

变更

让 contrib/dblink 在使用 contrib/postgres_fdw 外部服务器作为连接选项来源时忽略无关的服务器选项(Corey Huinker)

此前如果外部服务器对象的选项不是 libpq 连接选项,就会出错。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pageinspect 的 GIN 索引函数中的可移植性问题

变更

修复 contrib/pageinspect 的 GIN 索引函数中的可移植性问题(Peter Eisentraut、Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,确保环境变量更改被传播到以调试选项构建的 DLL

变更

在 Windows 上,确保环境变量更改被传播到以调试选项构建的 DLL(Christian Ullrich)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把我们的时区库副本与 IANA tzcode2016j 同步

变更

把我们的时区库副本与 IANA tzcode2016j 同步(Tom Lane)

这修复了若干问题,最显著的是当目标目录不支持硬链接时区数据安装失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2016j,涉及北塞浦路斯(新增时区 Asia/Famagusta)、俄罗斯(新增时区 Europe/Saratov)、汤加和 Antarctica/Casey 的夏令时法规变更。还有意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史修正。汤加改用首选数字时区缩写。

变更

更新时区数据文件到 tzdata 版本 2016j,涉及北塞浦路斯(新增时区 Asia/Famagusta)、俄罗斯(新增时区 Europe/Saratov)、汤加和 Antarctica/Casey 的夏令时法规变更。还有意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史修正。汤加改用首选数字时区缩写。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.5

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你的安装受到下面第一条变更日志条目所述 bug 的影响,更新之后你可能需要采取行动修复损坏的空闲空间映射。

另外,如果你是从 9.5.2 之前的版本升级,参见第 E.24 节。

BUG 修复修复关系空闲空间映射和可见性映射截断的 WAL 记录

变更

修复关系空闲空间映射和可见性映射截断的 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中讨论。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在大端机器上 GIN 索引 WAL 记录创建不正确的问题

变更

修复在大端机器上 GIN 索引 WAL 记录创建不正确的问题(Tom Lane)

典型症状是 WAL 重放期间出现“unexpected GIN leaf action”错误。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 SELECT FOR UPDATE/SHARE,使其正确锁定已被随后中止的事务更新过的元组

变更

修复 SELECT FOR UPDATE/SHARE,使其正确锁定已被随后中止的事务更新过的元组(Álvaro Herrera)

在 9.5 及之后的版本中,SELECT 有时可能完全不返回此类元组。虽然尚未证明在更早的版本中会发生失败,但在并发更新的情况下是有可能的。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复涉及 CTE 扫描的 EvalPlanQual 重新检查

变更

修复涉及 CTE 扫描的 EvalPlanQual 重新检查(Tom Lane)

重新检查总是把 CTE 视为不返回任何行,通常导致无法更新最近已更新的行。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在退出 INSERT ... ON CONFLICT 时删除推测插入的 TOAST 元组的问题

变更

修复在退出 INSERT ... ON CONFLICT 时删除推测插入的 TOAST 元组的问题(Oskari Saarenmaa)

在两个事务大约同时尝试插入冲突元组的竞态条件下,如果失败一方的插入包含任何 TOAST 化的字段,它会以“attempted to delete invisible tuple”错误失败。

其他改进不再对 INSERT ... ON CONFLICT 中的自冲突插入抛出序列化错误

变更

不再对 INSERT ... ON CONFLICT 中的自冲突插入抛出序列化错误(Thomas Munro、Peter Geoghegan)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复子查询中哈希聚合不当重复先前结果的问题

变更

修复子查询中哈希聚合不当重复先前结果的问题(Andrew Gierth)

判断能否复用先前计算的聚合状态值哈希表的测试,忽略了聚合参数表达式中出现外层查询引用的可能性。这种引用的值发生变化时本应重新计算哈希表,但实际没有。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对带 PRIMARY KEY 或 REPLICA IDENTITY 索引的表执行批量 UPDATE 时的查询生命周期内存泄漏

变更

修复对带 PRIMARY KEY 或 REPLICA IDENTITY 索引的表执行批量 UPDATE 时的查询生命周期内存泄漏(Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对启用了行级安全的表使用带列名列表的 COPY

变更

修复对启用了行级安全的表使用带列名列表的 COPY(Adam Brightwell)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复track_io_timing打开时 EXPLAIN 发出有效 XML

变更

修复track_io_timing打开时 EXPLAIN 发出有效 XML(Markus Winand)

此前 XML 输出格式选项产生语法无效的标记,如 <I/O-Read-Time>。现在它被渲染为 <I-O-Read-Time>。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进抑制在 EXPLAIN 中为未测量的时间打印零值

变更

抑制在 EXPLAIN 中为未测量的时间打印零值(Maksim Milyutin)

某些选项组合会为在该组合下实际上从不测量的时间打印零值。EXPLAIN 的一般策略是完全不打印此类字段,因此在所有情况下都保持一致。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复预备事务中 TRUNCATE 的统计信息更新

变更

修复预备事务中 TRUNCATE 的统计信息更新(Stas Kelvich)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 VACUUM 为截断表而等待排他表锁时的超时长度

变更

修复 VACUUM 为截断表而等待排他表锁时的超时长度(Simon Riggs)

该超时本应为 50 毫秒,但实际上只有 50 微秒,导致 VACUUM 比预期更容易放弃截断。将其设置为预期值。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复创建或更改表时合并继承 CHECK 约束的 bug

变更

修复创建或更改表时合并继承 CHECK 约束的 bug(Tom Lane、Amit Langote)

允许以任一顺序向父表和子表添加相同的 CHECK 约束。防止父表的有效约束与子表的 NOT VALID 约束合并。同样防止 NO INHERIT 子约束与继承约束合并。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_settings.unit 中为 min_wal_size 和 max_wal_size 显示合理的值

变更

在 pg_settings.unit 中为 min_wal_size 和 max_wal_size 显示合理的值(Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进移除对 numeric_in() 和 numeric_recv() 所接受值的人为限制

变更

移除对 numeric_in() 和 numeric_recv() 所接受值的人为限制(Tom Lane)

我们允许数值达到存储格式的极限(超过 1e100000),因此 numeric_in() 拒绝科学计数法指数超过 1000 的做法相当无意义。同样,numeric_recv() 拒绝输入值超过 1000 位数字也很荒谬。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免因未持有缓冲区锁测试元组可见性而导致的极低概率数据损坏

变更

避免因未持有缓冲区锁测试元组可见性而导致的极低概率数据损坏(Thomas Munro、Peter Geoghegan、Tom Lane)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进跨服务器重启保留提交时间戳

变更

跨服务器重启保留提交时间戳(Julien Rouhaud、Craig Ringer)

在打开track_commit_timestamp的情况下,干净的服务器重启后旧的提交时间戳变得不可访问。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复子事务的 WAL 输出大到足以溢出到磁盘时逻辑 WAL 解码的正常工作

变更

修复子事务的 WAL 输出大到足以溢出到磁盘时逻辑 WAL 解码的正常工作(Andres Freund)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复中止使用缩写键时可能的排序错误

变更

修复中止使用缩写键时可能的排序错误(Peter Geoghegan)

在最坏情况下,这可能导致 btree 索引损坏,需要使用 REINDEX 重建。不过这种情况被认为很少见。

BUG 修复修复截断超过 1GB 的临时关系时文件描述符泄漏的问题

变更

修复截断超过 1GB 的临时关系时文件描述符泄漏的问题(Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止在启用 standby_mode 的情况下启动独立后端

变更

禁止在启用 standby_mode 的情况下启动独立后端(Michael Paquier)

这不可能有任何用处,因为不会有 WAL 接收器进程来获取更多 WAL 数据;而且这可能导致未针对此种情况设计的代码出现不当行为。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在回收先前使用过的复制槽时正确初始化其状态

变更

在回收先前使用过的复制槽时正确初始化其状态(Michael Paquier)

未重置槽的所有字段可能阻止 VACUUM 移除死元组。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Linux 上尝试使用大页时,把共享内存分配请求舍入到实际大页大小的整数倍

变更

在 Linux 上尝试使用大页时,把共享内存分配请求舍入到实际大页大小的整数倍(Tom Lane)

这避免了在默认大页大小非典型的系统上 munmap() 期间可能的失败。除崩溃恢复情况外,除了日志消息之外没有不良影响。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进为动态共享内存控制段的 ID 使用更随机的值

变更

为动态共享内存控制段的 ID 使用更随机的值(Robert Haas、Tom Lane)

以前每次都会选择相同的值,因为它派生自 random(),而 srandom() 尚未被调用。虽然相对无害,但这不是预期行为。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上,动态共享内存控制段创建遇到访问拒绝错误后重试

变更

在 Windows 上,动态共享内存控制段创建遇到访问拒绝错误后重试(Kyotaro Horiguchi、Amit Kapila)

当段已存在时,Windows 有时返回 ERROR_ACCESS_DENIED 而不是 ERROR_ALREADY_EXISTS。这导致系统认为前者是不可恢复的错误,从而使 postmaster 启动失败。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/pgSQL 在使用 int2vector 或 oidvector 类型的参数和局部变量时的错误行为

变更

修复 PL/pgSQL 在使用 int2vector 或 oidvector 类型的参数和局部变量时的错误行为(Tom Lane)

其他改进不要在 libpq 中跨多个连接共享 SSL 上下文

变更

不要在 libpq 中跨多个连接共享 SSL 上下文(Heikki Linnakangas)

这导致了各种边界情况 bug,特别是当尝试对不同连接使用不同 SSL 参数时。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 libpq 中的边界情况内存泄漏

变更

避免 libpq 中的边界情况内存泄漏(Tom Lane)

报告的问题涉及 PQreset() 期间泄漏错误报告,但可能有相关情况。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 ecpg 的 --help 和 --version 选项与其他可执行程序保持一致

变更

使 ecpg 的 --help 和 --version 选项与其他可执行程序保持一致(Haribabu Kommi)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pgbench 平均延迟的计算

变更

修复 pgbench 平均延迟的计算(Fabien Coelho)

当脚本中存在 \sleep 命令,或者测试时长以事务数而非总时间指定时,计算是不正确的。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_upgrade 中,按名称顺序检查库可加载性

变更

在 pg_upgrade 中,按名称顺序检查库可加载性(Tom Lane)

这是处理语言转换模块对其基础语言和数据类型模块的跨扩展依赖的权宜之计。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_dump 中,永不转储范围构造函数

变更

在 pg_dump 中,永不转储范围构造函数(Tom Lane)

这一疏漏导致包含范围类型的扩展在 pg_upgrade 时因重复创建构造函数而失败。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在带 -C 的 pg_dump 中,如果指定了 --no-tablespaces,则抑制 CREATE DATABASE 的 TABLESPACE 子句

变更

在带 -C 的 pg_dump 中,如果指定了 --no-tablespaces,则抑制 CREATE DATABASE 的 TABLESPACE 子句(Tom Lane)

其他改进使 pg_receivexlog 在无槽位的情况下正确配合 --synchronous 工作

变更

使 pg_receivexlog 在无槽位的情况下正确配合 --synchronous 工作(Gabriele Bartolini)

其他改进禁止对 pg_rewind 同时指定 --source-server 和 --source-target 选项

变更

禁止对 pg_rewind 同时指定 --source-server 和 --source-target 选项(Michael Banck)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 pg_rewind 在源服务器上的会话中关闭 synchronous_commit

变更

让 pg_rewind 在源服务器上的会话中关闭 synchronous_commit(Michael Banck、Michael Paquier)

这允许 pg_rewind 即使在源服务器使用的同步复制因某种原因不工作时也能运行。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_xlogdump 中,使用 --follow 选项时重试打开新的 WAL 段

变更

在 pg_xlogdump 中,使用 --follow 选项时重试打开新的 WAL 段(Magnus Hagander)

这考虑到服务器创建下一段的可能延迟。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_xlogdump 处理以跨越多页的续页记录开头的 WAL 文件的问题

变更

修复 pg_xlogdump 处理以跨越多页的续页记录开头的 WAL 文件的问题(Pavan Deolasee)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pg_buffercache 在 shared_buffers 超过 256GB 时的工作问题

变更

修复 contrib/pg_buffercache 在 shared_buffers 超过 256GB 时的工作问题(KaiGai Kohei)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/intarray/bench/bench.pl,使其在给定 -e 选项时打印它执行的 EXPLAIN 的结果

变更

修复 contrib/intarray/bench/bench.pl,使其在给定 -e 选项时打印它执行的 EXPLAIN 的结果(Daniel Gustafsson)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持 OpenSSL 1.1.0

变更

支持 OpenSSL 1.1.0(Heikki Linnakangas)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进安装 TAP 测试基础设施,使其可用于扩展测试

变更

安装 TAP 测试基础设施,使其可用于扩展测试(Craig Ringer)

当 PostgreSQL 配置了 --enable-tap-tests 时,“make install” 现在会把 TAP 测试的 Perl 支持文件安装到 PGXS 能找到的位置。这允许非核心扩展使用 $(prove_check) 而无需额外测试。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中,把 pg_recvlogical 包含在仅客户端安装中

变更

在 MSVC 构建中,把 pg_recvlogical 包含在仅客户端安装中(MauMau)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新 Windows 时区映射,以识别较新 Windows 版本中新增的一些时区名称

变更

更新 Windows 时区映射,以识别较新 Windows 版本中新增的一些时区名称(Michael Paquier)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止已过时的动态时区缩写失效

变更

防止已过时的动态时区缩写失效(Tom Lane)

如果动态时区缩写与所引用时区中的任何条目都不匹配,就把它视为等效于该时区名称。这避免了当 IANA 从其时区数据库中移除缩写时出现意外失败——他们在 tzdata 2016f 版中就这样做过,而且将来可能再次这样做。后果不仅限于无法识别单个缩写;任何不匹配都会导致 pg_timezone_abbrevs 视图完全失败。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新时区数据文件到 tzdata 版本 2016h,涉及巴勒斯坦和土耳其的夏令时法规变更,加上土耳其和俄罗斯一些地区的历史修正。南极洲、前苏联和斯里兰卡的一些时区改用数字缩写。

变更

更新时区数据文件到 tzdata 版本 2016h,涉及巴勒斯坦和土耳其的夏令时法规变更,加上土耳其和俄罗斯一些地区的历史修正。南极洲、前苏联和斯里兰卡的一些时区改用数字缩写。

IANA 时区数据库以前为所有时区提供文本缩写,有时编造在当地居民中几乎或完全没有使用的缩写。他们正在逆转这一政策,改为在没有证据表明实际使用英文缩写的区域使用数字 UTC 偏移。至少目前,PostgreSQL 将继续接受这种被移除的缩写用于时间戳输入。但它们不会显示在 pg_timezone_names 视图中,也不用于输出。

在此更新中,AMT 不再显示为表示亚美尼亚时间。因此我们把 Default 缩写集改为把它解释为亚马逊时间,即 UTC-4 而不是 UTC+4。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.4

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.2 之前的版本升级,参见第 E.24 节。

安全相关修复嵌套 CASE-WHEN 表达式可能被错误评估的问题

变更

修复嵌套 CASE-WHEN 表达式可能被错误评估的问题(Heikki Linnakangas、Michael Paquier、Tom Lane)

出现在另一个 CASE 的测试值子表达式中的 CASE 表达式,可能会混淆其自身的测试值是否为空。此外,内联实现 CASE 表达式所用相等操作符的 SQL 函数时,可能向该 SQL 函数体内 CASE 表达式中调用的函数传递错误的测试值。如果测试值的数据类型不同,可能导致崩溃;而且此类情况可被滥用以泄露服务器内存的部分内容。(CVE-2016-5423)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关修复客户端程序对数据库名和角色名中特殊字符的处理

变更

修复客户端程序对数据库名和角色名中特殊字符的处理(Noah Misch、Nathan Bossart、Michael Paquier)

vacuumdb 及其他客户端程序中的许多地方,可能会被包含双引号或反斜杠的数据库名和角色名弄混。收紧引用规则以使其安全。同时确保当 conninfo 字符串被用作这些程序的数据库名参数时,全程都被正确地如此对待。

修复 psql 的 \connect 和 \password 命令中对成对双引号的处理,使其与文档一致。

在 psql 的 \connect 命令中引入新的 -reuse-previous 选项,以显式控制是否复用先前连接的连接参数。(若不使用该选项,则与以前一样,根据数据库名是否看起来像 conninfo 字符串来决定。)这使 pg_dumpall 脚本能够安全地处理包含特殊字符的数据库名。

pg_dumpall 现在拒绝处理包含回车或换行的数据库名和角色名,因为在 Windows 上安全地引用这些字符似乎不切实际。将来我们可能会在服务器端拒绝此类名称,但尚未采取这一步骤。

这些被视为安全修复,因为包含特殊字符的恶意构造的对象名,可能在超级用户下次执行 pg_dumpall 或其他例行维护操作时被用于以超级用户权限执行命令。(CVE-2016-5424)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对嵌套组合值应用 IS NULL/IS NOT NULL 时的边界错误行为

变更

修复对嵌套组合值应用 IS NULL/IS NOT NULL 时的边界错误行为(Andrew Gierth、Tom Lane)

SQL 标准规定,对于全空值的行,IS NULL 应返回 TRUE(因此 ROW(NULL,NULL) IS NULL 得到 TRUE),但这并不意味着递归适用(因此 ROW(NULL, ROW(NULL,NULL)) IS NULL 得到 FALSE)。核心执行器对此处理正确,但某些规划器优化把该测试当作递归的(因而在两种情况下都产生 TRUE),而 contrib/postgres_fdw 可能产生类似错误行为的远程查询。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复递归 CTE(WITH 项)中的 INSERT ... ON CONFLICT 出现“unrecognized node type”错误的问题

变更

修复递归 CTE(WITH 项)中的 INSERT ... ON CONFLICT 出现“unrecognized node type”错误的问题(Peter Geoghegan)

BUG 修复修复 INSERT ... ON CONFLICT,使其能成功匹配在规划器表达式预处理阶段被简化的索引表达式或索引谓词

变更

修复 INSERT ... ON CONFLICT,使其能成功匹配在规划器表达式预处理阶段被简化的索引表达式或索引谓词(Tom Lane)

其他改进正确处理这样的排除约束冲突:约束作用于 INSERT ... ON CONFLICT 命令的目标表,但不是所选仲裁索引之一

变更

正确处理这样的排除约束冲突:约束作用于 INSERT ... ON CONFLICT 命令的目标表,但不是所选仲裁索引之一(Tom Lane)

这种情况本应引发普通的约束冲突错误,但实际上陷入了无限循环。

BUG 修复修复目标表在 OID 上有唯一索引时 INSERT ... ON CONFLICT 失败的问题

变更

修复目标表在 OID 上有唯一索引时 INSERT ... ON CONFLICT 失败的问题(Tom Lane)

其他改进使 inet 和 cidr 数据类型正确拒绝包含过多冒号分隔字段的 IPv6 地址

变更

使 inet 和 cidr 数据类型正确拒绝包含过多冒号分隔字段的 IPv6 地址(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复防止 close_ps()(point ## lseg 操作符)在输入坐标为 NaN 时崩溃

变更

防止 close_ps()(point ## lseg 操作符)在输入坐标为 NaN 时崩溃(Tom Lane)

使其返回 NULL 而不是崩溃。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免向 pg_get_expr() 传入不一致的值时可能发生的崩溃

变更

避免向 pg_get_expr() 传入不一致的值时可能发生的崩溃(Michael Paquier、Thomas Munro)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 to_number() 中几处一字节缓冲区过读

变更

修复 to_number() 中几处一字节缓冲区过读(Peter Eisentraut)

在几种情况下,to_number() 函数会从输入字符串中多读取一个字符。如果输入恰好位于内存末尾附近,则有很小的崩溃可能。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进当指定了 WITH NO DATA 时,不对 CREATE MATERIALIZED VIEW 或 CREATE TABLE AS 中包含的查询运行规划器

变更

当指定了 WITH NO DATA 时,不对 CREATE MATERIALIZED VIEW 或 CREATE TABLE AS 中包含的查询运行规划器(Michael Paquier、Tom Lane)

这避免了一些不必要的失败条件,例如物化视图调用的稳定函数依赖某个尚不存在的表时。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在经过 heap_update() 的高开销路径中出现不安全的中间状态

变更

避免在经过 heap_update() 的高开销路径中出现不安全的中间状态(Masahiko Sawada、Andres Freund)

以前,这些情况会锁定目标元组(通过设置其 XMAX),但不为该动作记录 WAL,因此如果页面被刷出到磁盘,随后在元组更新完成之前发生数据库崩溃,就有数据完整性问题的风险。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复行锁定操作 WAL 重放期间的提示位更新

变更

修复行锁定操作 WAL 重放期间的提示位更新(Andres Freund)

此问题唯一已知的后果是,已预备但未提交的事务所持有的行锁,在崩溃并重启之后可能无法被执行。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在可串行化模式下获取 FOR KEY SHARE 行锁时出现不必要的“could not serialize access”错误

变更

避免在可串行化模式下获取 FOR KEY SHARE 行锁时出现不必要的“could not serialize access”错误(Álvaro Herrera)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保计划节点返回的“展开”数据是只读的

变更

确保计划节点返回的“展开”数据是只读的(Tom Lane)

这避免了在某些情况下,下层计划节点的结果被上层节点多处引用时的失败。就核心 PostgreSQL 而言,只有 PL/pgSQL 函数返回的数组值有风险;但扩展可能将展开数据用于其他用途。

BUG 修复避免当指定变量的字符串值为空时 postgres -C 崩溃

变更

避免当指定变量的字符串值为空时 postgres -C 崩溃(Michael Paquier)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止 WAL 发送器进程意外等待接收器

变更

防止 WAL 发送器进程意外等待接收器(Kyotaro Horiguchi)

BUG 修复修复逻辑解码中可能丢失大型子事务的问题

变更

修复逻辑解码中可能丢失大型子事务的问题(Petru-Florin Mihancea)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复子事务不包含实际更改时逻辑解码失败的问题

变更

修复子事务不包含实际更改时逻辑解码失败的问题(Marko Tiikkaja、Andrew Gierth)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保后端能看到共享目录的最新统计信息

变更

确保后端能看到共享目录的最新统计信息(Tom Lane)

统计收集器在普通后端发出请求后,未能更新共享目录的统计文件。这个问题被部分掩盖了,因为自动清理启动器会定期发出确实触发此类更新的请求;但在禁用自动清理时就变得明显了。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进当多个后端相继请求更新时,避免统计文件的冗余写入

变更

当多个后端相继请求更新时,避免统计文件的冗余写入(Tom Lane、Tomas Vondra)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在 VACUUM 期间消耗事务 ID

变更

避免在 VACUUM 期间消耗事务 ID(Alexander Korotkov)

VACUUM 中的某些情况会不必要地导致向当前事务分配 XID。通常这可以忽略不计,但如果已接近 XID 回卷限制,在防回卷清理期间消耗更多 XID 就非常糟糕了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止在从 9.3 之前版本 pg_upgrade 而来的安装中清理多事务 ID 时可能出现的失败

变更

防止在从 9.3 之前版本 pg_upgrade 而来的安装中清理多事务 ID 时可能出现的失败(Andrew Gierth、Álvaro Herrera)

此 bug 的常见症状是类似“MultiXactId NNN has not been created yet -- apparent wraparound”的错误。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进当手动 ANALYZE 指定列列表时,不要重置表的 changes_since_analyze 计数器

变更

当手动 ANALYZE 指定列列表时,不要重置表的 changes_since_analyze 计数器(Tom Lane)

如果只分析部分列,就不应阻止其他列的例行自动分析。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ANALYZE 对包含大量空值的唯一或近似唯一列的 n_distinct 高估

变更

修复 ANALYZE 对包含大量空值的唯一或近似唯一列的 n_distinct 高估(Tom Lane)

空值可能被当作它们本身就是不同的值来计数,导致某些类型查询中规划器的严重误估。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止自动清理为同一共享目录启动多个工作进程

变更

防止自动清理为同一共享目录启动多个工作进程(Álvaro Herrera)

通常这不是什么大问题,因为清理本来就不会花很长时间;但在目录严重膨胀的情况下,这可能导致除一个工作进程外的所有工作进程都在无用地等待,而不是对其他表做有用的工作。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 b-tree 标记/恢复处理中的 bug

变更

修复 b-tree 标记/恢复处理中的 bug(Kevin Grittner)

此错误可能导致内部源节点为 b-tree 索引扫描的合并连接中出现错误的连接结果或断言失败。

其他改进避免在放弃 b-tree 索引页删除尝试时重复释放缓冲区锁

变更

避免在放弃 b-tree 索引页删除尝试时重复释放缓冲区锁(Tom Lane)

在涉及损坏的 b-tree 索引的某些情况下,这一错误导致 VACUUM 无法完成。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复大型(大于 shared_buffers)哈希索引的构建

变更

修复大型(大于 shared_buffers)哈希索引的构建(Tom Lane)

用于大型索引的代码路径包含一个 bug,导致错误的哈希值被插入索引,因此后续的索引搜索总是失败——初始构建之后插入索引的元组除外。

其他改进防止对包含 NaN 分量值的几何列构建 GiST 索引时出现无限循环

变更

防止对包含 NaN 分量值的几何列构建 GiST 索引时出现无限循环(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对 interval 列上的 contrib/btree_gist 索引执行最近邻(按距离 ORDER BY)索引扫描时可能的崩溃

变更

修复对 interval 列上的 contrib/btree_gist 索引执行最近邻(按距离 ORDER BY)索引扫描时可能的崩溃(Peter Geoghegan)

BUG 修复修复尝试更新 BRIN 索引条目时出现“PANIC: failed to add BRIN tuple”错误的问题

变更

修复尝试更新 BRIN 索引条目时出现“PANIC: failed to add BRIN tuple”错误的问题(Álvaro Herrera)

BUG 修复修复后台工作进程关闭期间可能的崩溃

变更

修复后台工作进程关闭期间可能的崩溃(Dmitry Ivanov)

BUG 修复修复 PL/pgSQL 对 IMPORT FOREIGN SCHEMA 命令中 INTO 子句的处理

变更

修复 PL/pgSQL 对 IMPORT FOREIGN SCHEMA 命令中 INTO 子句的处理(Tom Lane)

BUG 修复修复 contrib/btree_gin,使其正确处理 bigint 的最小可能值

变更

修复 contrib/btree_gin,使其正确处理 bigint 的最小可能值(Peter Eisentraut)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 libpq 能正确解码来自未来版本服务器的服务器版本号

变更

让 libpq 能正确解码来自未来版本服务器的服务器版本号(Peter Eisentraut)

计划在 9.6 之后的版本中把服务器版本号从三段式改为两段式。确保 PQserverVersion() 在此类情况下返回正确的值。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 中 unsigned long long 数组元素的代码

变更

修复 ecpg 中 unsigned long long 数组元素的代码(Michael Meskes)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在同时使用 -c 和 -C 选项的 pg_dump 中,避免发出多余的 CREATE SCHEMA public 命令

变更

在同时使用 -c 和 -C 选项的 pg_dump 中,避免发出多余的 CREATE SCHEMA public 命令(David Johnston、Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进并行 pg_dump 和 pg_restore 对 SIGTERM/Ctrl-C 的处理

变更

改进并行 pg_dump 和 pg_restore 对 SIGTERM/Ctrl-C 的处理(Tom Lane)

确保工作进程迅速退出,并设法向所连接的后端发送查询取消请求,以防它们正在执行诸如 CREATE INDEX 之类的长时间运行操作。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复并行 pg_dump 和 pg_restore 中的错误报告

变更

修复并行 pg_dump 和 pg_restore 中的错误报告(Tom Lane)

以前,pg_dump 或 pg_restore 工作进程报告的错误可能永远无法到达用户的控制台,因为消息要经过主进程传递,而存在多种会阻止主进程转发消息的死锁场景。现在改为把所有内容直接打印到 stderr。在某些情况下这会导致重复消息(例如所有工作进程都报告服务器关闭),但这似乎比没有消息要好。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 Windows 上的并行 pg_dump 或 pg_restore 在出错后正确关闭

变更

确保 Windows 上的并行 pg_dump 或 pg_restore 在出错后正确关闭(Kyotaro Horiguchi)

以前,它会报告错误,然后就一直停在那里,直到用户手动停止。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使并行 pg_dump 在对备库服务器运行时干净地失败

变更

使并行 pg_dump 在对备库服务器运行时干净地失败(Magnus Hagander)

除非指定 --no-synchronized-snapshots,否则不支持这种用法,但此前的错误处理并不好。

其他改进使 pg_dump 在构建时未包含 zlib 支持时表现更好

变更

使 pg_dump 在构建时未包含 zlib 支持时表现更好(Kyotaro Horiguchi)

它在并行转储时不能正确工作,在其他情况下还会发出一些相当无意义的警告。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 pg_basebackup 接受 -Z 0 表示不压缩

变更

使 pg_basebackup 接受 -Z 0 表示不压缩(Fujii Masao)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全

变更

修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全(Noah Misch)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 TAP 测试和 MSVC 脚本,使其在构建目录路径名包含空格时也能工作

变更

修复 TAP 测试和 MSVC 脚本,使其在构建目录路径名包含空格时也能工作(Michael Paquier、Kyotaro Horiguchi)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使“statement timeout”与“lock timeout”的报告更具可预测性

变更

使“statement timeout”与“lock timeout”的报告更具可预测性(Tom Lane)

在高负载机器上,回归测试有时会因报告“lock timeout”而失败,尽管语句超时本应先发生。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使回归测试在丹麦语和威尔士语区域设置下安全

变更

使回归测试在丹麦语和威尔士语区域设置下安全(Jeff Janes、Tom Lane)

修改了一些会触发这些区域设置特殊排序规则的测试数据。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版

变更

更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版(Tom Lane)

这是为了应对时区数据文件未来预期的变更。它还修复了处理特殊时区方面的一些边界 bug。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把时区数据文件更新到 tzdata 2016f 版,涉及克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史数据修正。

变更

把时区数据文件更新到 tzdata 2016f 版,涉及克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史数据修正。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.3

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.2 之前的版本升级,参见第 E.24 节。

其他改进在调用 OpenSSL 之前清空 OpenSSL 错误队列,而不是假设它已经为空;并确保调用之后也让它保持为空

变更

在调用 OpenSSL 之前清空 OpenSSL 错误队列,而不是假设它已经为空;并确保调用之后也让它保持为空(Peter Geoghegan、Dave Vitek、Peter Eisentraut)

此变更可防止在单个进程内存在多条使用 OpenSSL 的连接、且相关代码并非全部遵循相同的错误队列清空规则时出现问题。特别是当客户端应用并发使用 libpq 的 SSL 连接和 PHP、Python 或 Ruby 的 OpenSSL 封装库的 SSL 连接时,已有失败报告。如果扩展模块建立外向 SSL 连接,服务器内部也可能出现类似问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复左连接右侧包含全连接时规划器出现“failed to build any N-way joins”错误的问题

变更

修复左连接右侧包含全连接时规划器出现“failed to build any N-way joins”错误的问题(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复多层级 nestloop 计划中等价类测试的处理不正确的问题

变更

修复多层级 nestloop 计划中等价类测试的处理不正确的问题(Tom Lane)

对于三个或更多变量的等价类(例如 X.X = Y.Y = Z.Z),规划器可能遗漏一些确保所有变量确实相等的测试,导致输出不满足 WHERE 子句的连接行。由于种种原因,实践中很少选中错误的计划,因此这个 bug 长期未被发现。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复开启operator_precedence_warning时出现的边界解析失败

变更

修复开启operator_precedence_warning时出现的边界解析失败(Tom Lane)

例如,SELECT (ARRAY[])::text[] 会报错,尽管不带括号时可以工作。

BUG 修复修复 GIN 索引扫描中的查询生命周期内存泄漏

变更

修复 GIN 索引扫描中的查询生命周期内存泄漏(Julien Rouhaud)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GIN 索引插入中的查询生命周期内存泄漏和潜在的索引损坏风险

变更

修复 GIN 索引插入中的查询生命周期内存泄漏和潜在的索引损坏风险(Tom Lane)

在简单查询中,内存泄漏通常不会很大,但在以高 maintenance_work_mem 构建大型 GIN 索引期间,泄漏可能非常可观。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为

变更

修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为(Tom Lane)

这些代码可能越过输入字符串末尾,导致后续格式代码读取垃圾数据。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复对这样的规则和视图的转储:value operator ANY (array) 结构的 array 参数是子 SELECT

变更

修复对这样的规则和视图的转储:value operator ANY (array) 结构的 array 参数是子 SELECT(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止 ALTER SYSTEM 参数值中出现换行

变更

禁止 ALTER SYSTEM 参数值中出现换行(Tom Lane)

配置文件解析器不支持字符串字面量中的内嵌换行,因此我们不能允许 ALTER SYSTEM 插入的值中包含换行。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复选择 OID 上的索引时 ALTER TABLE ... REPLICA IDENTITY USING INDEX 无法正确工作的问题

变更

修复选择 OID 上的索引时 ALTER TABLE ... REPLICA IDENTITY USING INDEX 无法正确工作的问题(David Rowley)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免移除表空间符号链接失败后可能的错误行为

变更

避免移除表空间符号链接失败后可能的错误行为(Tom Lane)

BUG 修复修复对齐敏感平台上逻辑解码崩溃的问题

变更

修复对齐敏感平台上逻辑解码崩溃的问题(Tom Lane、Andres Freund)

该失败仅发生在事务大到需要溢出到磁盘、且该事务内发生主键更改的情况。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 walsender 关闭期间反复向接收器请求反馈

变更

避免 walsender 关闭期间反复向接收器请求反馈(Nick Cleaton)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时

变更

使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时(Tom Lane)

这是为了与最近添加到 pg_ctl 的行为保持一致;它方便了在慢速机器上进行自动化测试。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题

变更

修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题(Tom Lane)

在这种情况下,操作符族会被恢复到新数据库中,但不再被标记为扩展的一部分。这没有直接的坏影响,但会导致后续 pg_dump 运行产生在恢复时引发(无害)错误的输出。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复新集群 TOAST 规则与旧集群不同时 pg_upgrade 失败的问题

变更

修复新集群 TOAST 规则与旧集群不同时 pg_upgrade 失败的问题(Tom Lane)

pg_upgrade 原有专门代码处理新 PostgreSQL 版本认为表应有 TOAST 表而旧版本认为没有的情况。该代码有问题,因此将其移除,在这种情况下改为不做任何处理;没有理由认为,如果按照旧版本的规则没有 TOAST 表也没问题,我们就无法在没有 TOAST 表的情况下正常运作。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复使用 IBM XLC 编译器时 PPC 上的原子操作

变更

修复使用 IBM XLC 编译器时 PPC 上的原子操作(Noah Misch)

其他改进减少配置了 --disable-spinlocks 的构建所使用的 SysV 信号量数量

变更

减少配置了 --disable-spinlocks 的构建所使用的 SysV 信号量数量(Tom Lane)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把内部函数 strtoi() 重命名为 strtoint(),以避免与 NetBSD 库函数冲突

变更

把内部函数 strtoi() 重命名为 strtoint(),以避免与 NetBSD 库函数冲突(Thomas Munro)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 Windows 上 bind() 和 listen() 系统调用错误的报告

变更

修复 Windows 上 bind() 和 listen() 系统调用错误的报告(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进减少使用 Microsoft Visual Studio 构建时编译器输出的冗长程度

变更

减少使用 Microsoft Visual Studio 构建时编译器输出的冗长程度(Christian Ullrich)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进支持使用 Visual Studio 2015 构建

变更

支持使用 Visual Studio 2015 构建(Michael Paquier、Petr Jelínek)

注意,使用 VS2015 构建的版本不能在早于 Windows Vista 的 Windows 版本上运行。

BUG 修复修复 putenv() 在 Visual Studio 2013 下的正确工作

变更

修复 putenv() 在 Visual Studio 2013 下的正确工作(Michael Paquier)

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免可能不安全地使用 Windows 的 FormatMessage() 函数

变更

避免可能不安全地使用 Windows 的 FormatMessage() 函数(Christian Ullrich)

在适当之处使用 FORMAT_MESSAGE_IGNORE_INSERTS 标志。目前不知道这里存在实际的 bug,但小心谨慎似乎是明智的。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把时区数据文件更新到 tzdata 2016d 版,涉及俄罗斯和委内瑞拉的夏令时法规变更。新增时区名称 Europe/Kirov 和 Asia/Tomsk,以反映这些地区现在与相邻地区有不同的时区历史。

变更

把时区数据文件更新到 tzdata 2016d 版,涉及俄罗斯和委内瑞拉的夏令时法规变更。新增时区名称 Europe/Kirov 和 Asia/Tomsk,以反映这些地区现在与相邻地区有不同的时区历史。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.2

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,按照下面第一条变更日志条目的说明,应用此更新后你可能需要对某些索引执行 REINDEX。

其他改进在非 C 区域设置中禁用字符串排序的缩写键

变更

在非 C 区域设置中禁用字符串排序的缩写键(Robert Haas)

PostgreSQL 9.5 引入了用标准 C 库函数 strxfrm() 替代 strcoll() 来加速字符串数据类型比较的逻辑。现在发现,大多数版本的 glibc(Linux 的 C 库实现)所实现的 strxfrm() 都有缺陷,在某些区域设置下会产生与 strcoll() 不一致的字符串比较结果。在更好地刻画此问题之前,在所有非 C 区域设置中禁用该优化。(C 区域设置是安全的,因为它既不使用 strcoll() 也不使用 strxfrm()。)

遗憾的是,此问题不仅影响排序,还影响 B-tree 索引中的条目排序,这意味着如果 text、varchar 或 char 列上的 B-tree 索引按受影响的区域设置排序,并且在 PostgreSQL 9.5.0 或 9.5.1 下构建或修改过,它们现在可能已经损坏。用户应对可能受影响的索引执行 REINDEX。

目前无法给出已知受影响区域设置的完整清单。C 区域设置已知安全,没有证据表明 en_US 等基于英语的区域设置有问题,但 de_DE 等其他一些常用区域设置在大多数 glibc 版本中受影响。

安全相关在缓存计划中正确维护行安全性状态

变更

在缓存计划中正确维护行安全性状态(Stephen Frost)

在以多个角色执行查询的会话中,计划缓存可能错误地复用为另一个角色 ID 生成的计划,从而在使用行级安全性(RLS)时可能应用错误的策略集。(CVE-2016-2193)

安全相关为 contrib/pageinspect 的一些新函数添加必须是超级用户的检查

变更

为 contrib/pageinspect 的一些新函数添加必须是超级用户的检查(Andreas Seltenreich)

pageinspect 扩展中大多数检查 bytea 值的函数都禁止非超级用户调用,但 brin_page_type() 和 brin_metapage_info() 没有这样做。向它们传递精心构造的 bytea 值可能导致服务器崩溃或泄露服务器内存中的几个字节。添加缺失的权限检查以防止滥用。(CVE-2016-3065)

BUG 修复修复索引化 ROW() 比较处理不正确的问题

变更

修复索引化 ROW() 比较处理不正确的问题(Simon Riggs)

9.5 引入的一个小优化中的缺陷会导致错误结果:当 ROW() 比较与索引排序部分匹配但并不完全匹配时(例如列顺序不同,或索引同时包含 ASC 和 DESC 列)。在找到更好的解决方案之前,该优化已被移除。

BUG 修复修复索引化 ROW() 比较中对 NULL 索引条目处理不正确的问题

变更

修复索引化 ROW() 比较中对 NULL 索引条目处理不正确的问题(Tom Lane)

使用诸如 ROW(a, b) > ROW('x', 'y') 的行比较进行索引搜索时,会在到达 b 列的 NULL 条目时停止,忽略了 b 列可能有与更靠后的 a 值关联的非 NULL 值这一事实。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免因重命名文件前后未充分调用 fsync() 而导致的不太可能的数据丢失场景

变更

避免因重命名文件前后未充分调用 fsync() 而导致的不太可能的数据丢失场景(Michael Paquier、Tomas Vondra、Andres Freund)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在执行 SELECT FOR UPDATE/SHARE 且包含一些无需锁定的关系的查询中重新检查刚修改的行时行为不正确的问题

变更

修复在执行 SELECT FOR UPDATE/SHARE 且包含一些无需锁定的关系的查询中重新检查刚修改的行时行为不正确的问题(Tom Lane)

在重新检查期间,来自未锁定关系的行被错误地当作全 NULL 处理,这可能导致错误地判定更新后的行不再满足 WHERE 条件,或错误地输出 NULL。

BUG 修复修复 json_to_record() 在其输入对象的某个字段包含与所请求输出列名同名的子对象字段时的 bug

变更

修复 json_to_record() 在其输入对象的某个字段包含与所请求输出列名同名的子对象字段时的 bug(Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复以空数组调用双参数形式的 jsonb_object() 时结果无意义的问题

变更

修复以空数组调用双参数形式的 jsonb_object() 时结果无意义的问题(Michael Paquier、Andrew Dunstan)

BUG 修复修复 jsonb_set() 在把路径数组元素转换为整数用作数组下标时的错误行为

变更

修复 jsonb_set() 在把路径数组元素转换为整数用作数组下标时的错误行为(Michael Paquier)

BUG 修复修复 to_char() 的 OF 格式代码对负时区偏移的格式化错误

变更

修复 to_char() 的 OF 格式代码对负时区偏移的格式化错误(Thomas Munro、Tom Lane)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 INSERT ... ON CONFLICT 的等待可能被错误记录的问题

变更

修复 INSERT ... ON CONFLICT 的等待可能被错误记录的问题(Peter Geoghegan)

日志消息有时会声称等待是由排除约束引起的,尽管实际上并非如此。

其他改进在恢复达到一致状态之前忽略recovery_min_apply_delay参数

变更

在恢复达到一致状态之前忽略recovery_min_apply_delay参数(Michael Paquier)

以前,备库在重放使其数据库状态有效所需的初始 WAL 部分时,也会响应 recovery_min_apply_delay 而延迟应用 WAL 记录。由于备库在达到一致数据库状态之前毫无用处,这被认为没有帮助。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进正确处理服务器启动期间 pg_subtrans 接近 XID 回卷的情况

变更

正确处理服务器启动期间 pg_subtrans 接近 XID 回卷的情况(Jeff Janes)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑解码中的若干 bug

变更

修复逻辑解码中的若干 bug(Andres Freund)

问题情形包括:副本标识为 FULL 时超过一页的元组、在大到需要假脱机到磁盘的事务中更改主键的 UPDATE、错误地报告“subxact logged without previous toplevel record”,以及事务提交时间的错误报告。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复外层视图的 WHERE 子句包含相关子查询时嵌套安全屏障视图的规划器错误

变更

修复外层视图的 WHERE 子句包含相关子查询时嵌套安全屏障视图的规划器错误(Dean Rasheed)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 GIN 索引搜索中的内存泄漏

变更

修复 GIN 索引搜索中的内存泄漏(Tom Lane)

BUG 修复修复因多次尝试释放 localeconv() 输出字符串而导致的边界崩溃

变更

修复因多次尝试释放 localeconv() 输出字符串而导致的边界崩溃(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ispell 词典词缀文件的解析

变更

修复 ispell 词典词缀文件的解析(Tom Lane)

如果词缀文件包含任何在大小写转换期间字节长度会变化的字符(例如土耳其语 UTF8 区域设置中的 I),代码就可能出错。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免使用 sscanf() 解析 ispell 词典文件

变更

避免使用 sscanf() 解析 ispell 词典文件(Artur Zakirov)

这规避了 FreeBSD 衍生平台(包括 macOS)上的一个可移植性问题。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PPC 上配合 IBM xlc 编译器使用的原子操作代码

变更

修复 PPC 上配合 IBM xlc 编译器使用的原子操作代码(Noah Misch)

此错误导致该平台上并发操作偶尔失败。

BUG 修复避免在旧版 Windows(7SP1/2008R2SP1 之前)上配合支持 AVX2 的 CPU 和使用 Visual Studio 2013 构建的 Postgres 时崩溃

变更

避免在旧版 Windows(7SP1/2008R2SP1 之前)上配合支持 AVX2 的 CPU 和使用 Visual Studio 2013 构建的 Postgres 时崩溃(Christian Ullrich)

这是对 Visual Studio 2013 运行时库中一个 bug 的变通方案,微软已表示不会在该版本中修复它。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 psql 的 Tab 补全逻辑,使其正确处理多字节字符

变更

修复 psql 的 Tab 补全逻辑,使其正确处理多字节字符(Kyotaro Horiguchi、Robert Haas)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 psql 对 SECURITY LABEL 的 Tab 补全

变更

修复 psql 对 SECURITY LABEL 的 Tab 补全(Tom Lane)

在 SECURITY LABEL 之后按 TAB 可能导致崩溃或提供不合适的关键字。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 pg_ctl 在命令行未指定时接受来自 PGCTLTIMEOUT 环境变量的等待超时

变更

使 pg_ctl 在命令行未指定时接受来自 PGCTLTIMEOUT 环境变量的等待超时(Noah Misch)

这方便了较慢的 buildfarm 成员的测试,允许它们全局指定比正常更长的 postmaster 启动和关闭超时。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_ctl 中对 Windows 服务状态的不正确测试

变更

修复 pg_ctl 中对 Windows 服务状态的不正确测试(Manuel Mathar)

上一轮小版本发布试图修复 pg_ctl,使其正确判断是否把日志消息发送到 Windows 事件日志,但把测试条件弄反了。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pgbench 对 -C 与 -M prepared 选项组合的处理

变更

修复 pgbench 对 -C 与 -M prepared 选项组合的处理(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pg_upgrade 中,当新数据目录位于旧数据目录之内时跳过创建删除脚本

变更

在 pg_upgrade 中,当新数据目录位于旧数据目录之内时跳过创建删除脚本(Bruce Momjian)

在这种情况下盲目执行该脚本会导致新数据目录丢失。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 PL/Perl 中,把空的 Postgres 数组正确转换为空的 Perl 数组

变更

在 PL/Perl 中,把空的 Postgres 数组正确转换为空的 Perl 数组(Alex Hunsaker)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进使 PL/Python 能处理不是有效 Python 标识符的函数名

变更

使 PL/Python 能处理不是有效 Python 标识符的函数名(Jim Nasby)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pgstattuple 的 pgstatindex() 函数返回统计信息中的多处错误

变更

修复 contrib/pgstattuple 的 pgstatindex() 函数返回统计信息中的多处错误(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 MSVC 构建中移除对 psed 的依赖,因为核心 Perl 已不再提供它

变更

在 MSVC 构建中移除对 psed 的依赖,因为核心 Perl 已不再提供它(Michael Paquier、Andrew Dunstan)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把时区数据文件更新到 tzdata 2016c 版,涉及阿塞拜疆、智利、海地、巴勒斯坦和俄罗斯(阿尔泰、阿斯特拉罕、基洛夫、萨哈林、乌里扬诺夫斯克地区)的夏令时法规变更,以及立陶宛、摩尔多瓦和俄罗斯(加里宁格勒、萨马拉、伏尔加格勒)的历史数据修正。

变更

把时区数据文件更新到 tzdata 2016c 版,涉及阿塞拜疆、智利、海地、巴勒斯坦和俄罗斯(阿尔泰、阿斯特拉罕、基洛夫、萨哈林、乌里扬诺夫斯克地区)的夏令时法规变更,以及立陶宛、摩尔多瓦和俄罗斯(加里宁格勒、萨马拉、伏尔加格勒)的历史数据修正。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

PostgreSQL 9.5.1

升级与兼容性说明

对于运行 9.5.X 的用户,不需要转储/恢复。

安全相关修复正则表达式中的无限循环和缓冲区越界问题

变更

修复正则表达式中的无限循环和缓冲区越界问题(Tom Lane)

方括号表达式中非常大的字符范围在某些情况下可能导致无限循环,在另一些情况下可能导致内存覆写。(CVE-2016-0773)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复一个疏漏:它在罕见情况下导致哈希连接遗漏内部关系的某些元组

变更

修复一个疏漏:它在罕见情况下导致哈希连接遗漏内部关系的某些元组(Tomas Vondra、Tom Lane)

其他改进在使用分组集时避免 HAVING 子句的下推

变更

在使用分组集时避免 HAVING 子句的下推(Andrew Gierth)

BUG 修复修复 ON CONFLICT 仲裁者 WHERE 子句的反解析

变更

修复 ON CONFLICT 仲裁者 WHERE 子句的反解析(Peter Geoghegan)

其他改进使 log_line_prefix 中的 %h 和 %r 转义对因 log_connections 而发出的消息也生效

变更

使 log_line_prefix 中的 %h 和 %r 转义对因 log_connections 而发出的消息也生效(Tom Lane)

以前,%h/%r 要等到新会话发出“connection received”日志消息之后才开始生效;现在它们对该消息也生效。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免 SSPI 身份验证期间泄漏令牌句柄

变更

避免 SSPI 身份验证期间泄漏令牌句柄(Christian Ullrich)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 psql 的 \det 命令,使其以与其他可能带模式限定模式的 \d 命令相同的方式解释模式参数

变更

修复 psql 的 \det 命令,使其以与其他可能带模式限定模式的 \d 命令相同的方式解释模式参数(Reece Hart)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 Windows 上的 pg_ctl 中,通过检查服务状态来决定输出发送到哪里,而不是检查标准输出是否为终端

变更

在 Windows 上的 pg_ctl 中,通过检查服务状态来决定输出发送到哪里,而不是检查标准输出是否为终端(Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 处理扩展成员对象时的若干边界 bug

变更

修复 pg_dump 处理扩展成员对象时的若干边界 bug(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 中域约束名称引用不当的问题

变更

修复 pg_dump 中域约束名称引用不当的问题(Elvis Pranskevichus)

其他改进使 pg_dump 把视图的触发器标记为需要在其规则之后处理,以防止并行 pg_restore 期间可能出现的失败

变更

使 pg_dump 把视图的触发器标记为需要在其规则之后处理,以防止并行 pg_restore 期间可能出现的失败(Tom Lane)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 pgbench 中加入防护,防止计算脚本指定的除法或取模运算符期间的边界溢出情况

变更

在 pgbench 中加入防护,防止计算脚本指定的除法或取模运算符期间的边界溢出情况(Fabien Coelho、Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进抑制 pg_receivexlog 连接到 9.4 之前服务器时无用的警告消息

变更

抑制 pg_receivexlog 连接到 9.4 之前服务器时无用的警告消息(Marco Nenciarini)

其他改进避免同时使用 plpython2 和 plpython3 时的转储/重载问题

变更

避免同时使用 plpython2 和 plpython3 时的转储/重载问题(Tom Lane)

原则上,两个版本的 PL/Python 可以在同一个数据库中使用,但不能在同一个会话中使用(因为两个版本的 libpython 无法安全地并发使用)。然而,pg_restore 和 pg_upgrade 都会做一些可能触犯同会话限制的事情。通过更改检查的时机来规避这一点。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PL/Python 回归测试,使其在 Python 3.5 下通过

变更

修复 PL/Python 回归测试,使其在 Python 3.5 下通过(Peter Eisentraut)

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关防止某些 PL/Java 参数被非超级用户设置

变更

防止某些 PL/Java 参数被非超级用户设置(Noah Misch)

此变更缓解了 PL/Java 的一个安全 bug(CVE-2016-0766),该 bug 在 PL/Java 中已通过把这些参数标记为仅超级用户可用来修复。为了保护那些更新 PostgreSQL 比 PL/Java 更频繁的站点,核心代码现在也识别这些参数。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 提供的头文件,使其不包含从预处理指令行延续到下一行的注释

变更

修复 ecpg 提供的头文件,使其不包含从预处理指令行延续到下一行的注释(Michael Meskes)

这样的注释会被 ecpg 拒绝。尚不清楚是否应该更改 ecpg 本身。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 hstore_to_json_loose() 对 hstore 值能否转换为 JSON 数字的测试

变更

修复 hstore_to_json_loose() 对 hstore 值能否转换为 JSON 数字的测试(Tom Lane)

以前该函数可能被尾部的非字母数字字符欺骗,导致输出语法无效的 JSON。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 contrib/postgres_fdw 中,修复由数据修改命令中使用 tableoid 触发的 bug

变更

在 contrib/postgres_fdw 中,修复由数据修改命令中使用 tableoid 触发的 bug(Etsuro Fujita、Robert Haas)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复把 NAMEDATALEN 限制为小于 256 的不当约束

变更

修复把 NAMEDATALEN 限制为小于 256 的不当约束(Robert Haas、Tom Lane)

BUG 修复通过确保以固定顺序向链接器提供文件名,提高构建输出的可重现性

变更

通过确保以固定顺序向链接器提供文件名,提高构建输出的可重现性(Christoph Berg)

这避免了产生的可执行文件在不同构建之间可能出现按位差异。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 dynloader.h 包含在 MSVC 构建安装的头文件中

变更

确保 dynloader.h 包含在 MSVC 构建安装的头文件中(Bruce Momjian、Michael Paquier)

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进把时区数据文件更新到 tzdata 2016a 版,涉及开曼群岛、梅特拉卡特拉和外贝加尔边疆区的夏令时法规变更,以及巴基斯坦的历史数据修正。

变更

把时区数据文件更新到 tzdata 2016a 版,涉及开曼群岛、梅特拉卡特拉和外贝加尔边疆区的夏令时法规变更,以及巴基斯坦的历史数据修正。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。