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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 版本对比

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

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

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

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

小版本更新

9.1→9.1.24

2011-09-12 2016-10-27

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

9.1.0 历史版本维护截止 2016-10-27

9.1.24 历史版本维护截止 2016-10-27

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

避免在表和索引 DDL 期间进行多次名称查找

目标版本已修复
8.8高危9.1.12
CVE-2016-5424

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

目标版本已修复
8.5高危9.1.23
CVE-2015-0244

修复出错后前端/后端协议可能失去同步的问题

目标版本已修复
8.1高危9.1.15
CVE-2016-7048

Interactive installer downloads software over plain HTTP, then executes it

目标版本已修复
7.5高危9.1.24
CVE-2015-3165

避免客户端恰在认证超时到期前断开时可能出现的崩溃

目标版本已修复
7.5高危9.1.16
CVE-2014-0061

防止通过手工调用 PL 验证器函数进行权限提升

目标版本已修复
7.5高危9.1.12
CVE-2014-0067

锁定 Windows 上回归测试的临时安装

目标版本已修复
7.0高危9.1.15
CVE-2016-0773

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

目标版本已修复
6.5中危9.1.20
CVE-2015-0243

修复contrib/pgcrypto中的缓冲区越界

目标版本已修复
6.5中危9.1.15
CVE-2014-0064

防止大小计算中的整数溢出导致缓冲区越界

目标版本已修复
6.5中危9.1.12
CVE-2015-3166

改进对系统调用失败的检测

目标版本已修复
5.6中危9.1.16
CVE-2016-5423

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

目标版本已修复
4.3中危9.1.23
CVE-2014-0063

防止长日期时间字符串造成缓冲区越界

目标版本已修复
4.3中危9.1.12
CVE-2015-0242

修复替换实现的*printf()函数中的缓冲区越界

目标版本已修复
4.2中危9.1.15
CVE-2015-0241

修复to_char()中的缓冲区越界

目标版本已修复
4.2中危9.1.15
CVE-2015-3167

在contrib/pgcrypto中,统一将解密失败报告为“Wrong key or corrupt data”

目标版本已修复
3.7低危9.1.16
CVE-2015-5288

修复contrib/pgcrypto以检测并报告过短的crypt()盐值

目标版本已修复
3.1低危9.1.19
CVE-2014-8161

修复通过约束违反错误消息的信息泄露

目标版本已修复
3.1低危9.1.15
CVE-2014-0060

加固 GRANT ... WITH ADMIN OPTION 的限制

目标版本已修复
3.1低危9.1.12
CVE-2014-0066

避免在 crypt() 返回 NULL 时崩溃

目标版本已修复
0.0无9.1.12
CVE-2014-0065

防止固定大小缓冲区越界

目标版本已修复
0.0无9.1.12
CVE-2013-1901

让 REPLICATION 权限检查测试当前用户而不是已认证用户

目标版本已修复
—9.1.9
CVE-2013-1900

在每个 postmaster 子进程中重置 OpenSSL 随机状态

目标版本已修复
—9.1.9
CVE-2013-1899

修复服务器命令行开关解析不安全的问题

目标版本已修复
—9.1.9
CVE-2013-0255

防止从 SQL 执行 enum_recv

目标版本已修复
—9.1.8
CVE-2012-3489

防止通过 XML 实体引用访问外部文件/URL

目标版本已修复
—9.1.5
CVE-2012-3488

防止通过 contrib/xml2 的 xslt_process() 访问外部文件/URL

目标版本已修复
—9.1.5
CVE-2012-2655

忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性

目标版本已修复
—9.1.4
CVE-2012-2143

修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换

目标版本已修复
—9.1.4
CVE-2012-0868

把 pg_dump 注释中写入的名称里的换行符转换为空格

目标版本已修复
—9.1.3
CVE-2012-0867

移除 SSL 证书中通用名长度的任意限制

目标版本已修复
—9.1.3
CVE-2012-0866

让 CREATE TRIGGER 要求对触发器函数有执行权限

目标版本已修复
—9.1.3
目标版本仍有 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.1.24

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

BUG 修复修复涉及 CTE 扫描的 EvalPlanQual 重新检查

变更

修复涉及 CTE 扫描的 EvalPlanQual 重新检查(Tom Lane)

重新检查总是把 CTE 视为不返回任何行,通常导致无法更新最近已更新的行。

关联记录(4)

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

BUG 修复修复子查询中哈希聚合不当重复先前结果的问题

变更

修复子查询中哈希聚合不当重复先前结果的问题(Andrew Gierth)

判断能否复用先前计算的聚合状态值哈希表的测试,忽略了聚合参数表达式中出现外层查询引用的可能性。这种引用的值发生变化时本应重新计算哈希表,但实际没有。

关联记录(4)

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

BUG 修复修复 VACUUM 为截断表而等待排他表锁时的超时长度

变更

修复 VACUUM 为截断表而等待排他表锁时的超时长度(Simon Riggs)

该超时本应为 50 毫秒,但实际上只有 50 微秒,导致 VACUUM 比预期更容易放弃截断。将其设置为预期值。

关联记录(4)

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

其他改进移除对 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)

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

BUG 修复修复截断超过 1GB 的临时关系时文件描述符泄漏的问题

变更

修复截断超过 1GB 的临时关系时文件描述符泄漏的问题(Andres Freund)

关联记录(4)

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

其他改进禁止在启用 standby_mode 的情况下启动独立后端

变更

禁止在启用 standby_mode 的情况下启动独立后端(Michael Paquier)

这不可能有任何用处,因为不会有 WAL 接收器进程来获取更多 WAL 数据;而且这可能导致未针对此种情况设计的代码出现不当行为。

关联记录(4)

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

其他改进不要在 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 修复修复 contrib/intarray/bench/bench.pl,使其在给定 -e 选项时打印它执行的 EXPLAIN 的结果

变更

修复 contrib/intarray/bench/bench.pl,使其在给定 -e 选项时打印它执行的 EXPLAIN 的结果(Daniel Gustafsson)

关联记录(4)

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

其他改进防止已过时的动态时区缩写失效

变更

防止已过时的动态时区缩写失效(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.1.23

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

安全相关修复嵌套 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)

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

其他改进使 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 修复修复 to_number() 中几处一字节缓冲区过读

变更

修复 to_number() 中几处一字节缓冲区过读(Peter Eisentraut)

在几种情况下,to_number() 函数会从输入字符串中多读取一个字符。如果输入恰好位于内存末尾附近,则有很小的崩溃可能。

关联记录(4)

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

其他改进避免在经过 heap_update() 的高开销路径中出现不安全的中间状态

变更

避免在经过 heap_update() 的高开销路径中出现不安全的中间状态(Masahiko Sawada、Andres Freund)

以前,这些情况会锁定目标元组(通过设置其 XMAX),但不为该动作记录 WAL,因此如果页面被刷出到磁盘,随后在元组更新完成之前发生数据库崩溃,就有数据完整性问题的风险。

关联记录(4)

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

其他改进避免在 VACUUM 期间消耗事务 ID

变更

避免在 VACUUM 期间消耗事务 ID(Alexander Korotkov)

VACUUM 中的某些情况会不必要地导致向当前事务分配 XID。通常这可以忽略不计,但如果已接近 XID 回卷限制,在防回卷清理期间消耗更多 XID 就非常糟糕了。

关联记录(4)

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

其他改进避免在VACUUM FREEZE期间取消热备查询

变更

避免在VACUUM FREEZE期间取消热备查询(Simon Riggs, Álvaro Herrera)

在原本空闲的主库服务器上执行VACUUM FREEZE可能导致其备库服务器上的查询被不必要地取消。

关联记录(3)

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

其他改进当手动 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 修复修复 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)

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

其他改进使 pg_basebackup 接受 -Z 0 表示不压缩

变更

使 pg_basebackup 接受 -Z 0 表示不压缩(Fujii Masao)

关联记录(4)

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

其他改进恢复 pg_ctl start -w 的旧启发式超时

变更

恢复 pg_ctl start -w 的旧启发式超时(Tom Lane)

9.1.20 采用的新方法在启用 silent_mode 时不工作,因此改回旧方法。

BUG 修复修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全

变更

修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全(Noah Misch)

关联记录(4)

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

BUG 修复修复 TAP 测试和 MSVC 脚本,使其在构建目录路径名包含空格时也能工作

变更

修复 TAP 测试和 MSVC 脚本,使其在构建目录路径名包含空格时也能工作(Michael Paquier、Kyotaro Horiguchi)

关联记录(4)

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

其他改进使回归测试在丹麦语和威尔士语区域设置下安全

变更

使回归测试在丹麦语和威尔士语区域设置下安全(Jeff Janes、Tom Lane)

修改了一些会触发这些区域设置特殊排序规则的测试数据。

关联记录(4)

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

其他改进更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版

变更

更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版(Tom Lane)

这是为了应对时区数据文件未来预期的变更。它还修复了处理特殊时区方面的一些边界 bug。

关联记录(4)

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

其他改进把时区数据文件更新到 tzdata 2016f 版,涉及克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史数据修正。

变更

把时区数据文件更新到 tzdata 2016f 版,涉及克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史数据修正。

关联记录(4)

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

PostgreSQL 9.1.22

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

其他改进在调用 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 修复修复 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)

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

其他改进使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时

变更

使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时(Tom Lane)

这是为了与最近添加到 pg_ctl 的行为保持一致;它方便了在慢速机器上进行自动化测试。

关联记录(4)

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

BUG 修复修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题

变更

修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题(Tom Lane)

在这种情况下,操作符族会被恢复到新数据库中,但不再被标记为扩展的一部分。这没有直接的坏影响,但会导致后续 pg_dump 运行产生在恢复时引发(无害)错误的输出。

关联记录(4)

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

其他改进把内部函数 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)

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

其他改进避免可能不安全地使用 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.1.21

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

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)

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

其他改进正确处理服务器启动期间 pg_subtrans 接近 XID 回卷的情况

变更

正确处理服务器启动期间 pg_subtrans 接近 XID 回卷的情况(Jeff Janes)

关联记录(4)

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

BUG 修复修复因多次尝试释放 localeconv() 输出字符串而导致的边界崩溃

变更

修复因多次尝试释放 localeconv() 输出字符串而导致的边界崩溃(Tom Lane)

关联记录(4)

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

BUG 修复修复 ispell 词典词缀文件的解析

变更

修复 ispell 词典词缀文件的解析(Tom Lane)

如果词缀文件包含任何在大小写转换期间字节长度会变化的字符(例如土耳其语 UTF8 区域设置中的 I),代码就可能出错。

关联记录(4)

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

其他改进避免使用 sscanf() 解析 ispell 词典文件

变更

避免使用 sscanf() 解析 ispell 词典文件(Artur Zakirov)

这规避了 FreeBSD 衍生平台(包括 macOS)上的一个可移植性问题。

关联记录(4)

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

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)

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

其他改进在 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.1.20

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

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

变更

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

方括号表达式中非常大的字符范围在某些情况下可能导致无限循环,在另一些情况下可能导致内存覆写。(CVE-2016-0773)

关联记录(4)

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

其他改进如果postmaster.pid文件被移除则执行立即关闭

变更

如果postmaster.pid文件被移除则执行立即关闭(Tom Lane)

postmaster 现在大约每分钟检查一次postmaster.pid是否仍然存在且仍包含自己的 PID。如果不是,它会执行立即关闭,就像收到SIGQUIT一样。此变更的主要目的是确保失败的 buildfarm 运行无需人工干预即可被清理;同时也可在 DBA 强行删除postmaster.pid并启动新 postmaster 时限制不良影响。

关联记录(3)

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

其他改进在SERIALIZABLE事务隔离模式下,插入期间的竞争条件可能导致漏掉串行化异常

变更

在SERIALIZABLE事务隔离模式下,插入期间的竞争条件可能导致漏掉串行化异常(Kevin Grittner, Thomas Munro)

关联记录(3)

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

BUG 修复修复对非日志关系执行ALTER TABLE ... SET TABLESPACE时未发出适当 WAL 记录的问题

变更

修复对非日志关系执行ALTER TABLE ... SET TABLESPACE时未发出适当 WAL 记录的问题(Michael Paquier、Andres Freund)

尽管关系的数据是非日志的,但移动操作本身必须被记录,否则在备库提升为主库后该关系将不可访问。

关联记录(3)

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

BUG 修复修复崩溃恢复结束时非日志关系可能被错误初始化的问题

变更

修复崩溃恢复结束时非日志关系可能被错误初始化的问题(Andres Freund, Michael Paquier)

关联记录(3)

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

BUG 修复修复ALTER COLUMN TYPE以正确重建继承的检查约束

变更

修复ALTER COLUMN TYPE以正确重建继承的检查约束(Tom Lane)

关联记录(3)

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

BUG 修复修复REASSIGN OWNED以正确更改组合类型的所有权

变更

修复REASSIGN OWNED以正确更改组合类型的所有权(Álvaro Herrera)

关联记录(3)

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

BUG 修复修复REASSIGN OWNED和ALTER OWNER在更改数据类型、外部数据包装器或外部服务器的所有者时正确更新已授权权限列表的问题

变更

修复REASSIGN OWNED和ALTER OWNER在更改数据类型、外部数据包装器或外部服务器的所有者时正确更新已授权权限列表的问题(Bruce Momjian, Álvaro Herrera)

关联记录(3)

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

BUG 修复修复REASSIGN OWNED忽略外部用户映射而不是报错的问题

变更

修复REASSIGN OWNED忽略外部用户映射而不是报错的问题(Álvaro Herrera)

关联记录(3)

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

其他改进当 GIN 索引的内部统计信息严重过时时,增加更多针对规划器错误代价估计的防护

变更

当 GIN 索引的内部统计信息严重过时时,增加更多针对规划器错误代价估计的防护(Tom Lane)

关联记录(3)

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

其他改进使规划器能够处理由索引顾问插件建议的假设性 GIN 索引

变更

使规划器能够处理由索引顾问插件建议的假设性 GIN 索引(Julien Rouhaud)

关联记录(3)

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

BUG 修复修复ROW()和VALUES()列表中整行 Var 的转储问题

变更

修复ROW()和VALUES()列表中整行 Var 的转储问题(Tom Lane)

关联记录(3)

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

BUG 修复修复numeric除法中可能出现的内部溢出

变更

修复numeric除法中可能出现的内部溢出(Dean Rasheed)

关联记录(3)

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

BUG 修复修复正则表达式先行约束中括号内限制的执行

变更

修复正则表达式先行约束中括号内限制的执行(Tom Lane)

根据手册,先行约束不允许包含反向引用,且其中的括号始终被视为非捕获括号。但代码未能正确处理括号子表达式内的这些情况,会给出意外的结果。

关联记录(3)

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

其他改进将正则表达式转换为索引扫描边界时,可能从包含向前看约束的正则表达式生成错误边界

变更

将正则表达式转换为索引扫描边界时,可能从包含向前看约束的正则表达式生成错误边界(Tom Lane)

关联记录(3)

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

安全相关修复正则表达式编译器使其处理约束弧构成的环

变更

修复正则表达式编译器使其处理约束弧构成的环(Tom Lane)

为 CVE-2007-4772 添加的代码既不完整——未能处理涉及多个状态的环——又不正确——可能导致断言失败(不过在非断言构建中似乎没有不良后果)。多状态环会使编译器一直运行,直到查询被取消或达到状态数过多的错误条件。

关联记录(3)

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

其他改进改进正则表达式编译器中的内存用量统计

变更

改进正则表达式编译器中的内存用量统计(Tom Lane)

这使代码在一些以前耗费不合理时间和内存量的情况下发出 “regular expression is too complex” 错误。

关联记录(3)

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

性能改进改进正则表达式编译器的性能

变更

改进正则表达式编译器的性能(Tom Lane)

关联记录(3)

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

其他改进使 log_line_prefix 中的 %h 和 %r 转义对因 log_connections 而发出的消息也生效

变更

使 log_line_prefix 中的 %h 和 %r 转义对因 log_connections 而发出的消息也生效(Tom Lane)

以前,%h/%r 要等到新会话发出“connection received”日志消息之后才开始生效;现在它们对该消息也生效。

关联记录(4)

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

其他改进在 Windows 上,确保不需要共享内存映射句柄的子进程关闭该句柄

变更

在 Windows 上,确保不需要共享内存映射句柄的子进程关闭该句柄(Tom Lane、Amit Kapila)

只要 logging_collector 处于开启状态,这一疏忽就会导致无法从崩溃中恢复。

关联记录(3)

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

BUG 修复修复 Windows 上非阻塞模式下可能无法检测套接字 EOF 的问题

变更

修复 Windows 上非阻塞模式下可能无法检测套接字 EOF 的问题(Tom Lane)

目前尚不完全清楚此问题是否会在 9.5 之前的分支中发生,但如果发生,其症状将是 walsender 进程无限等待而不是察觉到连接丢失。

关联记录(3)

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

BUG 修复避免 SSPI 身份验证期间泄漏令牌句柄

变更

避免 SSPI 身份验证期间泄漏令牌句柄(Christian Ullrich)

关联记录(4)

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

其他改进在 psql 中,确保当终端窗口大小改变时更新 libreadline 所认知的屏幕尺寸

变更

在 psql 中,确保当终端窗口大小改变时更新 libreadline 所认知的屏幕尺寸(Merlin Moncure)

此前,如果窗口在查询输出期间被调整大小,libreadline 不会察觉,导致之后输入多行查询时出现奇怪的行为。

关联记录(3)

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

BUG 修复修复 psql 的 \det 命令,使其以与其他可能带模式限定模式的 \d 命令相同的方式解释模式参数

变更

修复 psql 的 \det 命令,使其以与其他可能带模式限定模式的 \d 命令相同的方式解释模式参数(Reece Hart)

关联记录(4)

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

BUG 修复避免在以下情况下psql的\c命令可能崩溃:先前连接是通过 Unix 套接字建立的,而命令指定了新的主机名和相同的用户名

变更

避免在以下情况下psql的\c命令可能崩溃:先前连接是通过 Unix 套接字建立的,而命令指定了新的主机名和相同的用户名(Tom Lane)

关联记录(3)

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

其他改进在 pg_ctl start -w 中,直接测试子进程状态而不是依赖启发式方法

变更

在 pg_ctl start -w 中,直接测试子进程状态而不是依赖启发式方法(Tom Lane、Michael Paquier)

此前,pg_ctl 依赖一个假设:新的 postmaster 总会在五秒内创建 postmaster.pid。但在高负载系统上这可能失败,导致 pg_ctl 错误地报告 postmaster 启动失败。

除 Windows 外,此变更还意味着紧接另一个此类命令之后执行的 pg_ctl start -w 现在会可靠地失败,而此前如果在第一条命令后两秒内执行则会报告成功。

关联记录(3)

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

其他改进在 pg_ctl start -w 中,不再尝试使用通配监听地址连接 postmaster

变更

在 pg_ctl start -w 中,不再尝试使用通配监听地址连接 postmaster(Kondo Yuta)

在 Windows 上,如果 listen_addresses 被设置为 0.0.0.0 或 ::,pg_ctl 将无法检测到 postmaster 的启动,因为它会试图原样使用该值作为要连接的地址,而这行不通。现在改为假定应分别使用 127.0.0.1 或 ::1。

关联记录(3)

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

其他改进在 Windows 上的 pg_ctl 中,通过检查服务状态来决定输出发送到哪里,而不是检查标准输出是否为终端

变更

在 Windows 上的 pg_ctl 中,通过检查服务状态来决定输出发送到哪里,而不是检查标准输出是否为终端(Michael Paquier)

关联记录(4)

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

其他改进在 pg_dump 和 pg_basebackup 中,采用 GNU 约定来处理超过 8GB 的 tar 归档成员

变更

在 pg_dump 和 pg_basebackup 中,采用 GNU 约定来处理超过 8GB 的 tar 归档成员(Tom Lane)

tar 文件格式的 POSIX 标准不允许归档成员文件超过 8GB,但大多数现代 tar 实现支持解决此问题的扩展。采用这一扩展后,pg_dump 使用 -Ft 时不再在数据超过 8GB 的表上失败,pg_basebackup 也能处理大于 8GB 的文件。此外,还修复了一些可移植性问题,它们可能在某些平台上导致 4GB 到 8GB 之间的成员失败。这些问题有可能因备份文件不可读而造成不可恢复的数据丢失。

关联记录(3)

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

BUG 修复修复 pg_dump 处理扩展成员对象时的若干边界 bug

变更

修复 pg_dump 处理扩展成员对象时的若干边界 bug(Tom Lane)

关联记录(4)

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

其他改进使 pg_dump 把视图的触发器标记为需要在其规则之后处理,以防止并行 pg_restore 期间可能出现的失败

变更

使 pg_dump 把视图的触发器标记为需要在其规则之后处理,以防止并行 pg_restore 期间可能出现的失败(Tom Lane)

关联记录(4)

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

其他改进确保在 pg_dump 中正确引用关系选项值

变更

确保在 pg_dump 中正确引用关系选项值(Kouhei Sutou、Tom Lane)

不是简单标识符或数字的 reloption 值可能因 pg_dump 发出的 CREATE 语句中的语法错误而导致转储/重载失败。核心 PostgreSQL 目前支持的任何 reloption 都不存在此问题,但扩展可能允许导致该问题的 reloption。

关联记录(3)

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

BUG 修复修复pg_upgrade的文件复制代码在 Windows 上正确处理错误的问题

变更

修复pg_upgrade的文件复制代码在 Windows 上正确处理错误的问题(Bruce Momjian)

关联记录(3)

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

其他改进在 pgbench 中加入防护,防止计算脚本指定的除法或取模运算符期间的边界溢出情况

变更

在 pgbench 中加入防护,防止计算脚本指定的除法或取模运算符期间的边界溢出情况(Fabien Coelho、Michael Paquier)

关联记录(4)

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

安全相关防止某些 PL/Java 参数被非超级用户设置

变更

防止某些 PL/Java 参数被非超级用户设置(Noah Misch)

此变更缓解了 PL/Java 的一个安全 bug(CVE-2016-0766),该 bug 在 PL/Java 中已通过把这些参数标记为仅超级用户可用来修复。为了保护那些更新 PostgreSQL 比 PL/Java 更频繁的站点,核心代码现在也识别这些参数。

关联记录(4)

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

其他改进改进libpq对内存耗尽情况的处理

变更

改进libpq对内存耗尽情况的处理(Michael Paquier, Amit Kapila, Heikki Linnakangas)

关联记录(3)

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

BUG 修复修复ecpg生成的typedef语句中参数顺序错误的问题

变更

修复ecpg生成的typedef语句中参数顺序错误的问题(Michael Meskes)

关联记录(3)

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

其他改进在ecpg的PGTYPESnumeric_from_double()中使用%g而非%f格式

变更

在ecpg的PGTYPESnumeric_from_double()中使用%g而非%f格式(Tom Lane)

关联记录(3)

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

BUG 修复修复 ecpg 提供的头文件,使其不包含从预处理指令行延续到下一行的注释

变更

修复 ecpg 提供的头文件,使其不包含从预处理指令行延续到下一行的注释(Michael Meskes)

这样的注释会被 ecpg 拒绝。尚不清楚是否应该更改 ecpg 本身。

关联记录(4)

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

其他改进确保contrib/pgcrypto的crypt()函数可以被查询取消中断

变更

确保contrib/pgcrypto的crypt()函数可以被查询取消中断(Andreas Karlsson)

关联记录(3)

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

其他改进接受晚于 2.5.x 的flex版本

变更

接受晚于 2.5.x 的flex版本(Tom Lane、Michael Paquier)

由于 flex 2.6.0 已发布,需要调整构建脚本中的版本检查。

关联记录(3)

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

其他改进将我们的missing脚本安装到 PGXS 构建能找到的位置

变更

将我们的missing脚本安装到 PGXS 构建能找到的位置(Jim Nasby)

这使得在缺少bison等构建工具的机器上进行 PGXS 构建时能有合理的行为。

关联记录(3)

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

其他改进确保 dynloader.h 包含在 MSVC 构建安装的头文件中

变更

确保 dynloader.h 包含在 MSVC 构建安装的头文件中(Bruce Momjian、Michael Paquier)

关联记录(4)

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

安全相关新增变体回归测试期望输出文件,以匹配当前libxml2的行为

变更

新增变体回归测试期望输出文件,以匹配当前libxml2的行为(Tom Lane)

libxml2对 CVE-2015-7499 的修复导致它在某些过去会输出错误上下文报告的情况下不再输出。这似乎是一个缺陷,但我们可能不得不在一段时间内接受它,因此做了变通处理。

关联记录(3)

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

其他改进把时区数据文件更新到 tzdata 2016a 版,涉及开曼群岛、梅特拉卡特拉和外贝加尔边疆区的夏令时法规变更,以及巴基斯坦的历史数据修正。

变更

把时区数据文件更新到 tzdata 2016a 版,涉及开曼群岛、梅特拉卡特拉和外贝加尔边疆区的夏令时法规变更,以及巴基斯坦的历史数据修正。

关联记录(4)

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

PostgreSQL 9.1.19

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

安全相关修复contrib/pgcrypto以检测并报告过短的crypt()盐值

变更

修复contrib/pgcrypto以检测并报告过短的crypt()盐值(Josh Kupershmidt)

某些无效的盐值参数会导致服务器崩溃或泄露少量服务器内存字节。我们尚未排除通过安排让泄露字节中出现机密信息实施攻击的可行性,但这种攻击似乎不太可能。(CVE-2015-5288)

关联记录(4)

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

BUG 修复修复属于外部子事务的门户(游标)失败后的子事务清理问题

变更

修复属于外部子事务的门户(游标)失败后的子事务清理问题(Tom Lane、Michael Paquier)

在外部子事务游标中执行的函数可能因引用在内部子事务中创建的关系而导致断言失败或崩溃。

关联记录(4)

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

BUG 修复修复关系插入关系缓存“init 文件”的问题

变更

修复关系插入关系缓存“init 文件”的问题(Tom Lane)

最近几个小版本中一个补丁的疏忽导致pg_trigger_tgrelid_tgname_index被遗漏在 init 文件之外。后续会话检测到这一点后认定 init 文件已损坏并静默忽略它,导致会话启动时间显著退化。除修复该缺陷外,还加入了一些防护,使未来任何类似错误更明显。

关联记录(4)

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

其他改进避免向 SPI 查询结果插入大量元组时的 O(N^2) 行为

变更

避免向 SPI 查询结果插入大量元组时的 O(N^2) 行为(Neil Conway)

关联记录(4)

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

其他改进改进存在大量未读通知时LISTEN的启动时间

变更

改进存在大量未读通知时LISTEN的启动时间(Matt Newell)

关联记录(4)

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

其他改进回移植 9.3 时代新增的逐资源所有者锁缓存

变更

回移植 9.3 时代新增的逐资源所有者锁缓存(Jeff Janes)

当 pg_dump 尝试转储大量表时,这能显著提升性能。

关联记录(1)

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

其他改进默认禁用 SSL 重新协商

变更

默认禁用 SSL 重新协商(Michael Paquier、Andres Freund)

虽然使用 SSL 重新协商在理论上是个好主意,但实践中我们看到了太多缺陷,无论是底层 OpenSSL 库中还是我们对它的使用中。重新协商将在 9.5 及更高版本中完全移除。在较旧的分支中,只是把ssl_renegotiation_limit的默认值改为零(禁用)。

关联记录(4)

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

其他改进降低*_freeze_max_age参数的最小值

变更

降低*_freeze_max_age参数的最小值(Andres Freund)

这主要是为了使相关行为的测试不那么耗时,但对磁盘空间有限的安装也可能有价值。

关联记录(4)

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

BUG 修复将wal_buffers的最大值限制为 2GB 以避免服务器崩溃

变更

将wal_buffers的最大值限制为 2GB 以避免服务器崩溃(Josh Berkus)

关联记录(4)

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

BUG 修复修复numeric值相乘时罕见的内部溢出

变更

修复numeric值相乘时罕见的内部溢出(Dean Rasheed)

关联记录(4)

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

其他改进防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出

变更

防御涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery和query_int的难以触发的栈溢出(Noah Misch)

关联记录(4)

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

BUG 修复修复日期时间输入中DOW和DOY的处理

变更

修复日期时间输入中DOW和DOY的处理(Greg Stark)

这些记号本不应在日期时间值中使用,但过去它们导致的是难懂的内部错误消息,而不是“无效的输入语法”。

关联记录(4)

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

其他改进在正则表达式匹配中增加更多查询取消检查

变更

在正则表达式匹配中增加更多查询取消检查(Tom Lane)

关联记录(4)

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

其他改进为正则表达式、SIMILAR TO和LIKE匹配增加递归深度保护

变更

为正则表达式、SIMILAR TO和LIKE匹配增加递归深度保护(Tom Lane)

合适的搜索模式加上较低的栈深度限制可能导致栈越界崩溃。

关联记录(4)

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

BUG 修复修复正则表达式执行中潜在的无限循环

变更

修复正则表达式执行中潜在的无限循环(Tom Lane)

一个表面上能匹配零长度字符串、但实际上因反向引用而不匹配的搜索模式可能导致无限循环。

关联记录(4)

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

BUG 修复修复正则表达式编译中的内存不足失败

变更

修复正则表达式编译中的内存不足失败(Andreas Seltenreich)

关联记录(4)

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

BUG 修复修复正则表达式执行期间低概率的内存泄漏

变更

修复正则表达式执行期间低概率的内存泄漏(Tom Lane)

关联记录(4)

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

BUG 修复修复事务中止期间锁清理中罕见的内存不足失败

变更

修复事务中止期间锁清理中罕见的内存不足失败(Tom Lane)

关联记录(4)

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

BUG 修复修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题

变更

修复在使用较小work_mem设置的元组存储时出现“排序期间意外的内存不足情况”错误的问题(Tom Lane)

关联记录(4)

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

BUG 修复修复qsort中极低概率的栈越界

变更

修复qsort中极低概率的栈越界(Tom Lane)

关联记录(4)

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

BUG 修复修复在使用较大work_mem设置的哈希连接中出现“无效的内存分配请求大小”失败的问题

变更

修复在使用较大work_mem设置的哈希连接中出现“无效的内存分配请求大小”失败的问题(Tomas Vondra, Tom Lane)

关联记录(4)

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

BUG 修复修复若干规划器缺陷

变更

修复若干规划器缺陷(Tom Lane)

这些错误可能导致给出错误结果的错误查询计划、启用断言的构建中的断言失败,或奇怪的规划器错误,例如“could not devise a query plan for the given query”、“could not find pathkey item to sort”、“plan should not reference subplan's variable”或“failed to assign all NestLoopParams to plan nodes”。感谢 Andreas Seltenreich 和 Piotr Stefaniak 通过模糊测试暴露了这些问题。

关联记录(4)

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

其他改进在所有受支持的分支中使用模糊路径代价平局判定规则

变更

在所有受支持的分支中使用模糊路径代价平局判定规则(Tom Lane)

此变更旨在避免当候选计划选项的估计代价实际相同时出现平台特定的行为。

关联记录(1)

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

其他改进确保在 postmaster 启动时移除备库提升触发文件

变更

确保在 postmaster 启动时移除备库提升触发文件(Michael Paquier、Fujii Masao)

这可以防止这些文件出现在用于初始化新备库服务器的数据库备份中时发生不需要的提升。

关联记录(3)

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

其他改进在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字

变更

在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字(Tom Lane)

这可以避免外部脚本在pg_ctl stop一返回就尝试启动新 postmaster 时出现竞争条件失败。

关联记录(4)

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

BUG 修复修复 postmaster 对崩溃恢复期间启动进程崩溃的处理

变更

修复 postmaster 对崩溃恢复期间启动进程崩溃的处理(Tom Lane)

如果在崩溃恢复周期中,启动进程在尚未恢复数据库一致性时崩溃,我们会尝试启动一个新的启动进程,而这通常只会再次崩溃,导致无限循环。

关联记录(4)

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

其他改进当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度

变更

当我们尝试向某个自动清理工作进程发送信号而它已经消失时,不再打印WARNING,并降低此类信号的日志详细程度(Tom Lane)

关联记录(4)

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

其他改进防止服务器时钟被大幅回拨时自动清理启动器睡眠时间过长

变更

防止服务器时钟被大幅回拨时自动清理启动器睡眠时间过长(Álvaro Herrera)

关联记录(4)

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

其他改进确保 GIN 索引待插入列表的清理可被取消请求中断

变更

确保 GIN 索引待插入列表的清理可被取消请求中断(Jeff Janes)

关联记录(4)

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

其他改进允许重用 GIN 索引中的全零页

变更

允许重用 GIN 索引中的全零页(Heikki Linnakangas)

崩溃之后可能遗留这样的页。

关联记录(4)

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

BUG 修复修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告

变更

修复一个差一错误,该错误会导致 subtrans/multixact 截断中出现本可避免的“表面回卷”警告(Thomas Munro)

关联记录(4)

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

BUG 修复修复PL/pgSQL错误上下文消息中CONTINUE和MOVE语句类型误报的问题

变更

修复PL/pgSQL错误上下文消息中CONTINUE和MOVE语句类型误报的问题(Pavel Stehule, Tom Lane)

关联记录(4)

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

BUG 修复修复PL/Perl以正确处理非ASCII错误消息文本

变更

修复PL/Perl以正确处理非ASCII错误消息文本(Alex Hunsaker)

关联记录(3)

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

BUG 修复修复PL/Python在返回record结果的字符串表示时崩溃的问题

变更

修复PL/Python在返回record结果的字符串表示时崩溃的问题(Tom Lane)

关联记录(3)

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

BUG 修复修复PL/Tcl中一些未检查malloc()调用失败的位置

变更

修复PL/Tcl中一些未检查malloc()调用失败的位置(Michael Paquier, Álvaro Herrera)

关联记录(4)

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

BUG 修复在 contrib/isn 中,修复以 979 开头的 ISBN-13 号码的输出

变更

在 contrib/isn 中,修复以 979 开头的 ISBN-13 号码的输出(Fabien Coelho)

以 979(但不以 9790)开头的 EAN 被视为 ISBN,但它们必须以新的 13 位格式而非 10 位格式打印。

关联记录(3)

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

其他改进改进libpq对内存耗尽情况的处理

变更

改进libpq对内存耗尽情况的处理(Michael Paquier, Heikki Linnakangas)

关联记录(4)

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

BUG 修复修复ecpg中的内存泄漏和缺失的内存不足检查

变更

修复ecpg中的内存泄漏和缺失的内存不足检查(Michael Paquier)

关联记录(4)

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

BUG 修复修复 psql 中对数字输出的区域感知格式化代码

变更

修复 psql 中对数字输出的区域感知格式化代码(Tom Lane)

\pset numericlocale on 所调用的格式化代码在一些不常见的情况下会出错,例如带指数但没有小数点的数字。它还可能破坏 money 数据类型已经区域化的输出。

关联记录(4)

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

BUG 修复防止在没有当前连接时psql的\c命令崩溃

变更

防止在没有当前连接时psql的\c命令崩溃(Noah Misch)

关联记录(4)

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

BUG 修复修复pg_dump目录输出格式中默认zlib压缩级别的选择问题

变更

修复pg_dump目录输出格式中默认zlib压缩级别的选择问题(Andrew Dunstan)

关联记录(3)

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

其他改进确保pg_dump以tar格式输出运行期间创建的临时文件不被全局可读

变更

确保pg_dump以tar格式输出运行期间创建的临时文件不被全局可读(Michael Paquier)

关联记录(4)

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

BUG 修复修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况

变更

修复pg_dump和pg_upgrade以支持postgres或template1数据库位于非默认表空间的情况(Marti Raudsepp, Bruce Momjian)

关联记录(4)

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

BUG 修复修复 pg_dump 从过于陈旧而没有特定权限类型的服务器转储时对对象权限的处理

变更

修复 pg_dump 从过于陈旧而没有特定权限类型的服务器转储时对对象权限的处理(Tom Lane)

从 7.3 之前的服务器转储函数或过程语言时,pg_dump 会生成撤销所有者可授予权限、转而把所有权限授予 PUBLIC 的 GRANT/REVOKE 命令。由于涉及的权限只是 USAGE 和 EXECUTE,这不构成安全问题,但这确实是对旧系统行为令人惊讶的表示。已修复为在这些情况下保持默认权限状态不变。

关联记录(1)

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

BUG 修复修复pg_dump以转储 shell 类型

变更

修复pg_dump以转储 shell 类型(Tom Lane)

shell 类型(即尚未完全定义的类型)用处不大,但pg_dump仍应转储它们。

关联记录(4)

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

BUG 修复修复pg_dump及其他客户端程序中的若干小内存泄漏

变更

修复pg_dump及其他客户端程序中的若干小内存泄漏(Michael Paquier)

关联记录(3)

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

BUG 修复修复 PPC 硬件的自旋锁汇编代码使其与AIX本机汇编器兼容

变更

修复 PPC 硬件的自旋锁汇编代码使其与AIX本机汇编器兼容(Tom Lane)

如果gcc被配置为使用本机汇编器(这正变得越来越普遍),则用gcc构建无法工作。

关联记录(4)

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

其他改进在AIX上,测试-qlonglong编译器选项,而不是直接假定它可以安全使用

变更

在AIX上,测试-qlonglong编译器选项,而不是直接假定它可以安全使用(Noah Misch)

关联记录(4)

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

其他改进在AIX上,使用-Wl,-brtllib链接选项以允许符号在运行时解析

变更

在AIX上,使用-Wl,-brtllib链接选项以允许符号在运行时解析(Noah Misch)

Perl 5.8.0 及更高版本依赖这一能力。

关联记录(4)

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

其他改进由于编译器缺陷,在使用 32 位xlc编译时避免使用内联函数

变更

由于编译器缺陷,在使用 32 位xlc编译时避免使用内联函数(Noah Misch)

关联记录(4)

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

其他改进必要时使用librt提供sched_yield(),某些 Solaris 版本即是如此

变更

必要时使用librt提供sched_yield(),某些 Solaris 版本即是如此(Oskari Saarenmaa)

关联记录(4)

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

BUG 修复修复 Windowsinstall.bat脚本以处理包含空格的目标目录名

变更

修复 Windowsinstall.bat脚本以处理包含空格的目标目录名(Heikki Linnakangas)

关联记录(4)

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

其他改进使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用

变更

使PostgreSQL版本号的数字形式(例如90405)以名为VERSION_NUM的变量方便地提供给扩展 Makefile 使用(Michael Paquier)

关联记录(4)

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

其他改进将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。

变更

将时区数据文件更新到tzdata发行版 2015g,以反映开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北落基山地区新增了时区名America/Fort_Nelson。

关联记录(4)

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

PostgreSQL 9.1.18

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

BUG 修复修复罕见的未能使关系缓存 init 文件失效的问题

变更

修复罕见的未能使关系缓存 init 文件失效的问题(Tom Lane)

在并发活动时序恰好不对的情况下,对系统目录执行VACUUM FULL可能无法更新用于避免新会话缓存加载工作的“init 文件”。这将导致后续会话完全无法访问该目录。这是一个非常古老的缺陷,但它极难触发,直到最近才出现可复现的案例。

关联记录(4)

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

BUG 修复避免传入会话与CREATE/DROP DATABASE之间的死锁

变更

避免传入会话与CREATE/DROP DATABASE之间的死锁(Tom Lane)

在作为DROP DATABASE命令目标或CREATE DATABASE命令模板的数据库中启动的新会话,可能导致该命令等待五秒后失败,即使新会话本会在此之前退出。

关联记录(4)

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

PostgreSQL 9.1.17

升级与兼容性说明

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

不过,如果你是从早于 9.1.16 的版本升级,请参见第 E.9 节。

BUG 修复避免崩溃重启期间对数据目录执行fsync时失败

变更

避免崩溃重启期间对数据目录执行fsync时失败(Abhijit Menon-Sen、Tom Lane)

在前几个小版本中,我们加入了一个补丁,在崩溃后对数据目录中的所有内容执行fsync。遗憾的是,它对任何错误情况的响应都是失败,从而阻止服务器启动,即使问题相当无害。例如,数据目录中一个不可写的文件在某些平台上会阻止重启;但把 SSL 证书文件设为服务器不可写是很常见的做法。我们修改了这一行为:权限失败被完全忽略,其他类型的失败会被记录但不会阻止继续。

关联记录(2)

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

其他改进移除configure中对在OpenBSD上链接线程版libpython的禁止性检查

变更

移除configure中对在OpenBSD上链接线程版libpython的禁止性检查(Tom Lane)

这一限制原本要防止的失败在当前的OpenBSD版本上似乎已不再是问题。

关联记录(4)

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

其他改进允许 libpq 使用高于 v1 的 TLS 协议版本

变更

允许 libpq 使用高于 v1 的 TLS 协议版本(Noah Misch)

长期以来,libpq 的代码只允许使用 TLS v1 这一种 SSL 协议。随着较新的 TLS 版本日益普及,现在允许它与服务器协商双方共同支持的最高 TLS 版本。(PostgreSQL 服务器早已支持这种协商,因此服务器端无需更改。)这是对 9.4.0 中已发布变更的回移植。

关联记录(3)

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

PostgreSQL 9.1.16

升级与兼容性说明

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

但是,如果你使用contrib/citext的regexp_matches()函数,请参见下面相关的变更日志条目。

不过,如果你是从早于 9.1.14 的版本升级,请参见第 E.11 节。

安全相关避免客户端恰在认证超时到期前断开时可能出现的崩溃

变更

避免客户端恰在认证超时到期前断开时可能出现的崩溃(Benkocs Norbert Attila)

如果超时中断在会话关闭序列进行到一半时触发,SSL 相关状态会被释放两次,通常导致崩溃并对其他会话造成服务拒绝。实验表明,未经认证的远程攻击者能够相当稳定地触发此缺陷,因此按安全问题处理。(CVE-2015-3165)

关联记录(4)

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

安全相关改进对系统调用失败的检测

变更

改进对系统调用失败的检测(Noah Misch)

我们替换实现的snprintf()未检查底层系统库调用报告的错误;可能被遗漏的主要情况是内存耗尽。在最坏情况下,由于我们的代码假定缓冲区已被覆写而实际未覆写,这可能导致信息暴露。此外,还有少数地方对安全相关的其他系统库函数调用未检查失败。

仍有可能某些对*printf()族函数的调用在恰逢内存耗尽错误时存在信息泄露风险。我们判断风险不大,但将继续在此领域进行分析。(CVE-2015-3166)

关联记录(4)

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

安全相关在contrib/pgcrypto中,统一将解密失败报告为“Wrong key or corrupt data”

变更

在contrib/pgcrypto中,统一将解密失败报告为“Wrong key or corrupt data”(Noah Misch)

此前,某些使用错误密钥解密的情况可能报告其他错误消息文本。已经证明,这种错误报告的差异可能帮助攻击者从其他系统恢复密钥。虽然尚不清楚pgcrypto的具体行为是否同样可被利用,但使用统一消息来避免风险似乎更好。(CVE-2015-3167)

关联记录(4)

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

BUG 修复修复contrib/citext的regexp_matches()函数的错误声明

变更

修复contrib/citext的regexp_matches()函数的错误声明(Tom Lane)

这些函数应当像它们所包装的核心函数一样返回setof text[];但它们被错误地声明为只返回text[]。这一错误有两个后果:第一,如果没有匹配,得到的是标量 null 结果,而正确的应该是空集(零行)。第二,g标志实际上被忽略了,因为即使有多个匹配也只会得到一个结果数组。

虽然后一种行为显然是缺陷,但可能有应用程序依赖前一种行为;因此在PostgreSQL 9.5 之前默认不会更改函数声明。在 9.5 之前的分支中,旧行为存在于citext扩展的版本 1.0 中,而我们在版本 1.1 中提供了修正后的声明(不默认安装)。要在 9.5 之前的分支中采用修复,请在安装了citext的每个数据库中执行ALTER EXTENSION citext UPDATE TO '1.1'。(如果需要撤销,也可以“更新”回 1.0。)请注意,任一更新方向都需要删除并重新创建所有使用citext的regexp_matches()函数的视图或规则。

关联记录(3)

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

BUG 修复修复 HOT 更新后延迟排他约束检查不正确的问题

变更

修复 HOT 更新后延迟排他约束检查不正确的问题(Tom Lane)

如果同一事务中稍后对一条可能违反延迟排他约束的新行进行了 HOT 更新(即没有索引列发生变化,且该行可以存回同一表页),那么最终执行检查时将报告排他约束被违反,即使新行最初与之冲突的行已被删除。

关联记录(4)

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

其他改进防止反连接(NOT EXISTS 连接)与其他外连接之间的不当重排序

变更

防止反连接(NOT EXISTS 连接)与其他外连接之间的不当重排序(Tom Lane)

已知规划器中的这一疏忽会导致 “could not find RelOptInfo for given relids” 错误,但有时错误的查询计划似乎有可能通过该一致性检查并导致静默错误的查询输出。

关联记录(4)

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

BUG 修复修复外连接计划节点中子表达式匹配不正确的问题

变更

修复外连接计划节点中子表达式匹配不正确的问题(Tom Lane)

此前,如果文本相同的非严格子表达式在外连接的上、下方都被使用,规划器可能试图重用在连接下方计算的值,但这是不正确的,因为对于未匹配的外部行,执行器会将该值强制置为 NULL。

关联记录(4)

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

BUG 修复修复 GEQO 规划器以应对其连接顺序启发式的失败

变更

修复 GEQO 规划器以应对其连接顺序启发式的失败(Tom Lane)

已知这一疏忽会在涉及 LATERAL 的查询中导致 “failed to join all relations together” 错误,其他情况下也可能发生。

关联记录(4)

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

BUG 修复修复max_prepared_transactions过小时启动阶段可能出现的死锁

变更

修复max_prepared_transactions过小时启动阶段可能出现的死锁(Heikki Linnakangas)

关联记录(4)

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

其他改进时间线切换后不再归档无用的预分配 WAL 文件

变更

时间线切换后不再归档无用的预分配 WAL 文件(Heikki Linnakangas)

关联记录(4)

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

其他改进避免 “cannot GetMultiXactIdMembers() during recovery” 错误

变更

避免 “cannot GetMultiXactIdMembers() during recovery” 错误(Álvaro Herrera)

关联记录(2)

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

其他改进崩溃之后递归地对数据目录执行 fsync()

变更

崩溃之后递归地对数据目录执行 fsync()(Abhijit Menon-Sen、Robert Haas)

这确保了若随后不久再发生崩溃时数据仍保持一致。(要有问题的话,第二次崩溃必须是系统级崩溃,而不只是数据库崩溃。)

关联记录(4)

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

BUG 修复修复自动清理启动器在收到 SIGTERM 之后发生错误时可能无法关闭的问题

变更

修复自动清理启动器在收到 SIGTERM 之后发生错误时可能无法关闭的问题(Álvaro Herrera)

关联记录(4)

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

其他改进处理 LockBufferForCleanup() 中的意外信号

变更

处理 LockBufferForCleanup() 中的意外信号(Andres Freund)

这一疏忽可能导致有关 “multiple backends attempting to wait for pincount 1” 的虚假错误。

关联记录(4)

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

其他改进就用户而言是只读的事务,在提交期间不再等待 WAL 刷写或同步复制

变更

就用户而言是只读的事务,在提交期间不再等待 WAL 刷写或同步复制(Andres Freund)

此前,由于 HOT 页清理而写入了 WAL 的事务在提交时可能出现延迟,导致不良影响,例如所有同步副本都停机时会话在启动时卡住。还观察到使用同步复制时会话卡在追赶中断处理中;此修复也将解决该问题。

关联记录(4)

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

BUG 修复修复在临时表上操作哈希索引时崩溃的问题

变更

修复在临时表上操作哈希索引时崩溃的问题(Heikki Linnakangas)

关联记录(4)

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

BUG 修复修复哈希索引桶分裂期间(若其他进程正在并发修改该索引)可能失败的问题

变更

修复哈希索引桶分裂期间(若其他进程正在并发修改该索引)可能失败的问题(Tom Lane)

关联记录(4)

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

其他改进在分析索引表达式期间检查中断

变更

在分析索引表达式期间检查中断(Jeff Janes)

ANALYZE 会多次执行索引表达式;如果此类表达式中存在慢速函数,就希望能在此循环结束之前取消 ANALYZE。

关联记录(4)

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

其他改进确保在通过SELECT FOR UPDATE、UPDATE或DELETE锁定行之后发生READ COMMITTED复查时,外部表的tableoid被正确报告

变更

确保在通过SELECT FOR UPDATE、UPDATE或DELETE锁定行之后发生READ COMMITTED复查时,外部表的tableoid被正确报告(Etsuro Fujita)

关联记录(3)

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

其他改进在外部服务器用户映射的对象描述字符串中加入目标服务器的名称

变更

在外部服务器用户映射的对象描述字符串中加入目标服务器的名称(Álvaro Herrera)

关联记录(4)

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

其他改进建议在使用 Kerberos/GSSAPI/SSPI 认证时将 include_realm 设置为 1

变更

建议在使用 Kerberos/GSSAPI/SSPI 认证时将 include_realm 设置为 1(Stephen Frost)

不这样设置的话,来自不同领域的同名用户无法区分。目前这只是文档变更,但在 PostgreSQL 9.5 中它将成为默认设置。

关联记录(4)

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

其他改进移除将 IPv4 pg_hba.conf 条目匹配到 IPv4-in-IPv6 地址的代码

变更

移除将 IPv4 pg_hba.conf 条目匹配到 IPv4-in-IPv6 地址的代码(Tom Lane)

这段应急代码于 2003 年添加,起因是当时的某些 Linux 内核会把 IPv4 连接报告为 IPv4-in-IPv6 地址。然而该逻辑在 9.0 中被意外破坏。此后没有任何现场投诉,说明它已不再需要。现在反而有报告称被破坏的代码在某些系统上导致崩溃,因此我们选择直接移除而不是修复它。(如果选择修复,将会使 IPv4 pg_hba.conf 条目的实际含义发生微妙且可能涉及安全性的变化,在次版本中这样做似乎并不妥当。)

关联记录(4)

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

其他改进在IDENTIFY_SYSTEM复制命令中报告 WAL 刷写位置而非插入位置

变更

在IDENTIFY_SYSTEM复制命令中报告 WAL 刷写位置而非插入位置(Heikki Linnakangas)

这避免了pg_receivexlog可能出现的启动失败。

关联记录(3)

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

其他改进在 Windows 上关闭服务期间,定期向服务控制管理器发送状态更新,以防止它过早终止服务;并确保pg_ctl会等待关闭完成

变更

在 Windows 上关闭服务期间,定期向服务控制管理器发送状态更新,以防止它过早终止服务;并确保pg_ctl会等待关闭完成(Krystian Bigaj)

关联记录(4)

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

其他改进降低使用libpq非阻塞模式时网络死锁的风险

变更

降低使用libpq非阻塞模式时网络死锁的风险(Heikki Linnakangas)

在发送大量数据时,定期排空输入缓冲区很重要,以防服务器已发送足够的响应数据导致其在输出上阻塞。(典型场景是服务器在COPY FROM STDIN期间发送一连串 NOTICE 消息。)这在普通阻塞模式下工作正常,但在非阻塞模式下则不然。我们修改了libpq,使其在可能时顺便排空输入,但要完全防御此问题需要应用程序配合:应用程序应同时监视套接字的读就绪和写就绪条件,并确保在读就绪时调用PQconsumeInput()。

关联记录(4)

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

BUG 修复修复ecpg中的数组处理

变更

修复ecpg中的数组处理(Michael Meskes)

关联记录(4)

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

BUG 修复修复psql以合理处理作为\connect第一个参数的 URI 和 conninfo 串

变更

修复psql以合理处理作为\connect第一个参数的 URI 和 conninfo 串(David Fetter、Andrew Dunstan, Álvaro Herrera)

这一语法已被接受(但未写入文档)很长时间,但此前某些参数可能取自旧连接而非给定字符串,这被认为是不合适的。

关联记录(4)

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

其他改进抑制psql在某些平台上关于退出时未能写入~/.psql_history的错误抱怨

变更

抑制psql在某些平台上关于退出时未能写入~/.psql_history的错误抱怨(Tom Lane)

这一不当行为源自针对非常老(2006 年之前)的libedit版本中一个缺陷的变通方案。我们通过移除该变通方案修复了问题,但这会使仍在使用此类libedit版本的用户出现类似失败。建议:升级该库,或改用libreadline。

关联记录(4)

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

BUG 修复修复pg_dump判定哪些转换是不应转储的系统提供转换的规则

变更

修复pg_dump判定哪些转换是不应转储的系统提供转换的规则(Tom Lane)

关联记录(4)

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

BUG 修复修复pg_dump在-Fd下未遵循-Z压缩级别选项的问题

变更

修复pg_dump在-Fd下未遵循-Z压缩级别选项的问题(Michael Paquier)

关联记录(3)

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

其他改进使pg_dump在选择转储顺序时考虑扩展配置表之间的外键关系

变更

使pg_dump在选择转储顺序时考虑扩展配置表之间的外键关系(Gilles Darold、Michael Paquier、Stephen Frost)

这一疏忽可能导致生成的转储无法重新加载,因为外键约束会被瞬时违反。

关联记录(3)

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

BUG 修复修复对仅由VALUES(...)构成但带有列别名的视图的转储

变更

修复对仅由VALUES(...)构成但带有列别名的视图的转储(Tom Lane)

关联记录(4)

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

其他改进在pg_upgrade中,强制新集簇使用时间线 1

变更

在pg_upgrade中,强制新集簇使用时间线 1(Bruce Momjian)

此变更可防止因错误抱怨缺少 WAL 历史文件而导致的升级失败。

关联记录(4)

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

其他改进在pg_upgrade中,继续之前先检查是否存在不当不可连接的数据库

变更

在pg_upgrade中,继续之前先检查是否存在不当不可连接的数据库(Bruce Momjian)

关联记录(4)

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

其他改进在pg_upgrade中,在生成的delete_old_cluster脚本中对目录路径正确加引号

变更

在pg_upgrade中,在生成的delete_old_cluster脚本中对目录路径正确加引号(Bruce Momjian)

关联记录(4)

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

其他改进在pg_upgrade中正确保留数据库级冻结信息

变更

在pg_upgrade中正确保留数据库级冻结信息(Bruce Momjian)

这一疏忽可能导致postgres和template1数据库中的表出现缺少 clog 文件的错误。

关联记录(4)

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

其他改进在 Windows 上以受限权限运行pg_upgrade和pg_resetxlog,使它们在由管理员运行时不会失败

变更

在 Windows 上以受限权限运行pg_upgrade和pg_resetxlog,使它们在由管理员运行时不会失败(Muhammad Asif Naeem)

关联记录(4)

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

其他改进改进initdb和pg_basebackup扫描目录时对readdir()失败的处理

变更

改进initdb和pg_basebackup扫描目录时对readdir()失败的处理(Marco Nenciarini)

关联记录(3)

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

BUG 修复修复contrib/intarray中缓慢的排序算法

变更

修复contrib/intarray中缓慢的排序算法(Tom Lane)

关联记录(4)

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

BUG 修复修复 Sparc V8 机器上的编译失败

变更

修复 Sparc V8 机器上的编译失败(Rob Rowan)

关联记录(4)

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

其他改进将时区数据文件更新到tzdata发行版 2015d,以反映埃及、蒙古和巴勒斯坦的夏令时法规变更,以及加拿大和智利的历史变更。同时采用 America/Adak 时区修订后的时区缩写(HST/HDT 而非 HAST/HADT)。

变更

将时区数据文件更新到tzdata发行版 2015d,以反映埃及、蒙古和巴勒斯坦的夏令时法规变更,以及加拿大和智利的历史变更。同时采用 America/Adak 时区修订后的时区缩写(HST/HDT 而非 HAST/HADT)。

关联记录(4)

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

PostgreSQL 9.1.15

升级与兼容性说明

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

不过,如果你是从早于 9.1.14 的版本升级,请参见第 E.11 节。

安全相关修复to_char()中的缓冲区越界

变更

修复to_char()中的缓冲区越界(Bruce Momjian)

当to_char()处理要求数字位数很多的数字格式模板时,PostgreSQL会读取越过缓冲区末尾。当处理恶意构造的时间戳格式模板时,PostgreSQL会写入越过缓冲区末尾。两种情况都可能导致服务器崩溃。我们尚未排除导致权限提升攻击的可能性,尽管这种攻击似乎不太可能。(CVE-2015-0241)

关联记录(4)

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

安全相关修复替换实现的*printf()函数中的缓冲区越界

变更

修复替换实现的*printf()函数中的缓冲区越界(Tom Lane)

PostgreSQL包含printf及相关函数的替换实现。当代码格式化浮点数(转换说明符e、E、f、F、g或G)且请求的精度超过约 500 时,会发生栈缓冲区越界。这会导致服务器崩溃,我们尚未排除导致权限提升攻击的可能性。数据库用户可以通过to_char()SQL 函数触发这种缓冲区越界。虽然这是唯一受影响的核心PostgreSQL功能,但使用 printf 族函数的扩展模块也可能存在风险。

此问题主要影响 Windows 上的PostgreSQL。PostgreSQL在系统实现足够完善时会使用系统实现,而其他现代平台上正是如此。(CVE-2015-0242)

关联记录(4)

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

安全相关修复contrib/pgcrypto中的缓冲区越界

变更

修复contrib/pgcrypto中的缓冲区越界(Marko Tiikkaja、Noah Misch)

pgcrypto模块中内存大小跟踪的错误导致了栈缓冲区越界和对未初始化内存内容的不当依赖。缓冲区越界情况可能导致服务器崩溃,我们尚未排除导致权限提升攻击的可能性。(CVE-2015-0243)

关联记录(4)

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

安全相关修复出错后前端/后端协议可能失去同步的问题

变更

修复出错后前端/后端协议可能失去同步的问题(Heikki Linnakangas)

如果服务器在从客户端读取协议消息中途发生任何错误,它可能失去同步,错误地把消息数据的一部分解释为新的协议消息。能够在命令参数中提交恶意构造二进制数据的攻击者可能借此注入自己的 SQL 命令。语句超时和查询取消是触发此场景最可能的错误来源。尤其容易受影响的是既使用超时又将任意用户构造数据作为二进制查询参数提交的应用程序。禁用语句超时会降低但不能消除被利用的风险。感谢 Emil Lenngren 报告此问题。(CVE-2015-0244)

关联记录(4)

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

安全相关修复通过约束违反错误消息的信息泄露

变更

修复通过约束违反错误消息的信息泄露(Stephen Frost)

某些服务器错误消息会显示违反约束(如唯一约束)的列的值。如果用户对该表的所有列没有SELECT权限,这可能意味着暴露用户不应看到的值。我们调整了代码,使值仅在来自 SQL 命令本身或用户可以查询到时才显示。(CVE-2014-8161)

关联记录(4)

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

安全相关锁定 Windows 上回归测试的临时安装

变更

锁定 Windows 上回归测试的临时安装(Noah Misch)

使用 SSPI 认证,只允许启动测试套件的操作系统用户连接。这在 Windows 上关闭了此前已在其他平台上关闭的同一漏洞,即其他用户可能连接到测试 postmaster。(CVE-2014-0067)

关联记录(4)

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

BUG 修复避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏

变更

避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏(Tom Lane)

关联记录(3)

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

BUG 修复避免当事务内的 ANALYZE 被回滚时损坏表

变更

避免当事务内的 ANALYZE 被回滚时损坏表(Andres Freund、Tom Lane、Michael Paquier)

如果失败的事务此前删除了表上的最后一个索引、规则或触发器,该表会处于损坏状态:相关的 pg_class 标志本应设置却未被设置。

关联记录(3)

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

其他改进确保在 CREATE DATABASE 或 ALTER DATABASE SET TABLESPACE 期间正确复制不记录日志的表

变更

确保在 CREATE DATABASE 或 ALTER DATABASE SET TABLESPACE 期间正确复制不记录日志的表(Pavan Deolasee、Andres Freund)

关联记录(2)

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

BUG 修复修复 DROP 的依赖搜索,使其正确处理表的列在其所属表之前被递归访问的情况

变更

修复 DROP 的依赖搜索,使其正确处理表的列在其所属表之前被递归访问的情况(Petr Jelinek、Tom Lane)

目前已知这种情况只在扩展同时创建一种数据类型和使用该数据类型的表时出现。有问题的代码可能会拒绝 DROP EXTENSION,除非指定 CASCADE,而这本不应该是必需的。

关联记录(2)

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

BUG 修复修复 EvalPlanQual 处理中使用已释放内存的问题

变更

修复 EvalPlanQual 处理中使用已释放内存的问题(Tom Lane)

在READ COMMITTED模式下,锁定或更新最近更新过的行的查询可能因此缺陷崩溃。

关联记录(4)

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

BUG 修复修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题

变更

修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题(Kyotaro Horiguchi)

在 READ COMMITTED 模式下,SELECT FOR UPDATE 在重新检查最近更新的行以确认它是否仍满足查询的 WHERE 条件时,还必须重新检查部分索引的 WHERE 条件。如果索引属于继承子表,就会遗漏这一要求,因此有可能错误地返回已不再满足查询条件的行。

关联记录(3)

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

BUG 修复修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case

变更

修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case(Tom Lane)

在 READ COMMITTED 模式下,扫描继承树的 SELECT FOR UPDATE 可能错误地返回来自前一个子表的行,而不是本应从后一个子表返回的行。

关联记录(3)

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

其他改进拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名

变更

拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名(David Rowley)

这一限制符合 SQL 标准。此前我们并未显式拒绝这种情况,但之后代码会以看起来很怪异的错误失败。

关联记录(3)

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

BUG 修复修复 numeric 值求大整数次幂时的缺陷

变更

修复 numeric 值求大整数次幂时的缺陷(Tom Lane)

之前的代码可能得到错误答案,或者在意识到结果必然溢出之前消耗过多的时间和内存。

关联记录(3)

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

其他改进在 numeric_recv() 中,按照值的 dscale 字段截去会被隐藏的小数位

变更

在 numeric_recv() 中,按照值的 dscale 字段截去会被隐藏的小数位(Tom Lane)

numeric 值的显示标度(dscale)绝不应小于非零小数位的位数;但显然至少存在一个有缺陷的客户端应用,它发送的二进制 numeric 值违反了这一点。这会导致奇怪的行为,因为多余的数字位虽然不会被打印出来,却会被算术运算考虑在内。风险最小的修复方法似乎是在接收时把这类“隐藏的”数字位截去,使值确实与它打印出来的一致。

关联记录(3)

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

其他改进拒绝超出范围的数字时区规范

变更

拒绝超出范围的数字时区规范(Tom Lane)

超过 +/- 168 小时(一周)的简单数字时区规范此前会被接受,但随后可能在某些操作中导致空指针解引用崩溃。如此大的 UTC 偏移没有实际使用场景,因此予以拒绝。

关联记录(3)

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

BUG 修复修复 tsquery @> tsquery 操作符中的缺陷

变更

修复 tsquery @> tsquery 操作符中的缺陷(Heikki Linnakangas)

两个不同的词如果 CRC 相同,就会被认为匹配。此外,如果第二个操作数的词条比第一个多,就会被假定不包含于第一个;这是错误的,因为它可能包含重复词条。

关联记录(3)

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

其他改进增强 ispell 词典对有问题的词缀文件的防御

变更

增强 ispell 词典对有问题的词缀文件的防御(Tom Lane)

关联记录(3)

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

其他改进允许词典(thesaurus)包含超过 64K 个短语

变更

允许词典(thesaurus)包含超过 64K 个短语(David Boutin)

之前的代码在词典过大时会崩溃,因此这被视为一个可回移植的缺陷修复,而不是新特性。

关联记录(3)

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

BUG 修复修复xpath()中的命名空间处理

变更

修复xpath()中的命名空间处理(Ali Akbar)

此前,如果命名空间声明附在输入xml值的祖先元素上而非被返回的特定元素上,xpath()调用产生的xml值就不会包含命名空间声明。我们将祖先声明传播下来,使结果在孤立考虑时也是正确的。

关联记录(4)

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

BUG 修复修复嵌套 append 关系(例如 UNION ALL 子查询中的继承表)的规划器问题

变更

修复嵌套 append 关系(例如 UNION ALL 子查询中的继承表)的规划器问题(Tom Lane)

关联记录(3)

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

其他改进当 GiST 索引元组放不进一个页面时干净地报错,而不是陷入无限递归

变更

当 GiST 索引元组放不进一个页面时干净地报错,而不是陷入无限递归(Andrew Gierth)

关联记录(3)

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

其他改进把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外

变更

把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外(Álvaro Herrera)

先前的行为实质上忽略了这些逐表设置,这并非本意。现在,拥有这类设置的表将按照这些设置进行清理,独立于其他自动清理工作进程的状况。这可能导致比以前更重的总 I/O 负载,因此应当重新审视这类设置是否合理。

关联记录(3)

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

其他改进避免在自动清理名义上被关闭时仍然进行全面的自动清理

变更

避免在自动清理名义上被关闭时仍然进行全面的自动清理(Tom Lane)

即使自动清理名义上被关闭,我们仍会启动自动清理工作进程,去清理有 XID 回卷风险的表。然而,这样的工作进程随后会继续清理目标数据库中所有满足常规自动清理阈值的表。这往好里说是相当出乎意料,往坏里说会延误对回卷威胁的响应。现已修复:如果自动清理被关闭,工作进程只执行防回卷清理,不做任何其他工作。

关联记录(3)

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

其他改进在崩溃恢复期间,确保不记录日志的关系被重写为空并在恢复被视为完成之前同步到磁盘

变更

在崩溃恢复期间,确保不记录日志的关系被重写为空并在恢复被视为完成之前同步到磁盘(Abhijit Menon-Sen、Andres Freund)

这可以避免数据库崩溃恢复之后不记录日志的关系中残留垃圾数据的情形。

关联记录(2)

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

BUG 修复修复热备查询与重放整页镜像之间的竞态条件

变更

修复热备查询与重放整页镜像之间的竞态条件(Heikki Linnakangas)

这一失误可能导致热备中正在执行的查询出现瞬时错误。

关联记录(3)

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

BUG 修复修复若干恢复逻辑不当忽略 COMMIT/ABORT PREPARED WAL 记录的情况

变更

修复若干恢复逻辑不当忽略 COMMIT/ABORT PREPARED WAL 记录的情况(Heikki Linnakangas)

最值得注意的疏漏是 recovery_target_xid 无法用于在两阶段提交处停止。

关联记录(2)

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

其他改进避免为时间线历史文件创建不必要的 .ready 标记文件

变更

避免为时间线历史文件创建不必要的 .ready 标记文件(Fujii Masao)

关联记录(3)

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

BUG 修复修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用

变更

修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用(Fujii Masao)

关联记录(3)

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

其他改进将 “pgstat wait timeout” 警告消息改为 LOG 级别,并重新措辞使其更易理解

变更

将 “pgstat wait timeout” 警告消息改为 LOG 级别,并重新措辞使其更易理解(Tom Lane)

这条消息最初被认为基本属于不可能发生的情况,但它在我们较慢的 buildfarm 成员上出现得足够频繁,成了干扰。现已将其降为 LOG 级别,并在措辞上多下了一点功夫:现在它的内容为 “using stale statistics instead of current ones because stats collector is not responding”。

关联记录(4)

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

BUG 修复修复 SPARC 自旋锁实现,确保当 CPU 以非 TSO 一致性模式运行时(如某些非 Solaris 内核所做的那样)其正确性

变更

修复 SPARC 自旋锁实现,确保当 CPU 以非 TSO 一致性模式运行时(如某些非 Solaris 内核所做的那样)其正确性(Andres Freund)

关联记录(3)

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

其他改进当 macOS 的setlocale()在 postmaster 内启动多余的线程时发出警告

变更

当 macOS 的setlocale()在 postmaster 内启动多余的线程时发出警告(Noah Misch)

关联记录(3)

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

BUG 修复修复 PQconnectdbParams() 中重复 dbname 参数的处理

变更

修复 PQconnectdbParams() 中重复 dbname 参数的处理(Alex Shulgin)

如果第一个 dbname 出现处包含要展开的连接串或 URI,就会出现意外行为。

关联记录(3)

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

其他改进确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息

变更

确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息(Marko Tiikkaja、Tom Lane)

取决于内核行为,当服务器意外关闭套接字时,libpq 可能返回空的错误字符串而不是有用的信息。

关联记录(3)

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

其他改进在 PQreset() 期间清除任何旧的错误消息

变更

在 PQreset() 期间清除任何旧的错误消息(Heikki Linnakangas)

如果反复调用 PQreset() 而连接始终无法重建,失败连接尝试的错误消息会在 PGconn 的错误字符串中不断累积。

关联记录(3)

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

其他改进正确处理 libpq 解析连接选项期间的内存不足情况

变更

正确处理 libpq 解析连接选项期间的内存不足情况(Alex Shulgin、Heikki Linnakangas)

关联记录(3)

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

BUG 修复修复 ecpg 版 ParseDateTime() 中的数组越界

变更

修复 ecpg 版 ParseDateTime() 中的数组越界(Michael Paquier)

关联记录(3)

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

其他改进在 initdb 中,当指定的密码文件为空时给出更清晰的错误消息

变更

在 initdb 中,当指定的密码文件为空时给出更清晰的错误消息(Mats Erik Andersson)

关联记录(3)

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

BUG 修复修复 psql 的 \s 命令,使其与 libedit 良好配合,并新增分页器支持

变更

修复 psql 的 \s 命令,使其与 libedit 良好配合,并新增分页器支持(Stepan Rutz、Tom Lane)

使用 libedit 而非 readline 时,\s 会以一种相当难读的编码格式打印命令历史,而且在较新的 libedit 版本上可能完全失败。现已改为由我们自己打印历史而不是让库来做。一个令人愉快的副作用是,在合适的时候会使用分页器。

此补丁还修复了一个在使用 libedit 保存命令历史时换行编码不一致的缺陷。旧版 psql 写出的多行历史条目在此补丁后可以干净地读取,但反过来未必可行,具体取决于所涉及的 libedit 版本。

关联记录(3)

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

其他改进改进 psql 特殊变量解析的一致性

变更

改进 psql 特殊变量解析的一致性(Tom Lane)

允许 ECHO_HIDDEN 和 ON_ERROR_ROLLBACK 使用 on 和 off 的变体拼写(如 1/0)。对 COMP_KEYWORD_CASE、ECHO、ECHO_HIDDEN、HISTCONTROL、ON_ERROR_ROLLBACK 和 VERBOSITY 的无法识别的值发出警告。对所有这些变量的所有值进行不区分大小写的识别;此前大小写敏感与不敏感的行为混杂在一起。

关联记录(4)

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

BUG 修复修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题

变更

修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题(Stephen Frost)

关联记录(3)

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

性能改进改进当数据库中大量存在同一对对象之间的多条依赖路径时 pg_dump 的性能

变更

改进当数据库中大量存在同一对对象之间的多条依赖路径时 pg_dump 的性能(Tom Lane)

关联记录(2)

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

BUG 修复修复并行恢复纯模式转储时可能出现的死锁

变更

修复并行恢复纯模式转储时可能出现的死锁(Robert Haas、Tom Lane)

关联记录(3)

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

BUG 修复修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储

变更

修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储(Rushabh Lathia)

关联记录(3)

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

其他改进防止由pg_basebackup -x/-X创建的 WAL 文件在备库提升后被再次归档

变更

防止由pg_basebackup -x/-X创建的 WAL 文件在备库提升后被再次归档(Andres Freund)

关联记录(3)

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

BUG 修复修复 contrib/citext 的从非打包升级脚本

变更

修复 contrib/citext 的从非打包升级脚本(Tom Lane)

关联记录(2)

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

BUG 修复修复 contrib/pageinspect 的 get_raw_page() 中的块号检查

变更

修复 contrib/pageinspect 的 get_raw_page() 中的块号检查(Tom Lane)

错误的检查逻辑可能阻止访问非主关系分支中的某些页面。

关联记录(3)

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

BUG 修复修复 contrib/pgcrypto 的 pgp_sym_decrypt(),使其在消息长度比 2 的幂小 6 时不再失败

变更

修复 contrib/pgcrypto 的 pgp_sym_decrypt(),使其在消息长度比 2 的幂小 6 时不再失败(Marko Tiikkaja)

关联记录(3)

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

BUG 修复修复 contrib/pg_test_fsync 中的文件描述符泄漏

变更

修复 contrib/pg_test_fsync 中的文件描述符泄漏(Jeff Janes)

这可能导致 Windows 上无法删除临时文件。

关联记录(2)

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

其他改进安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果,尤其是 NULL

变更

安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果,尤其是 NULL(Michael Paquier)

此前 connectby() 遇到 NULL 键值时会崩溃。现在它会打印该行但不再进一步递归。

关联记录(4)

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

BUG 修复避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃

变更

避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃(Mark Simonetti)

libxslt 似乎对资源释放顺序存在未记载的依赖;重新排列我们的调用以避免崩溃。

关联记录(3)

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

BUG 修复为一些 contrib I/O 函数标记正确的易变性属性

变更

为一些 contrib I/O 函数标记正确的易变性属性(Tom Lane)

先前过于保守的标记在正常使用中无关紧要,但可能导致优化问题或拒绝有效的索引表达式定义。由于影响不大,我们只是调整了扩展模块脚本中的函数定义,未更改版本号。

关联记录(2)

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

其他改进大量清理 Coverity 静态代码分析器的警告

变更

大量清理 Coverity 静态代码分析器的警告(Andres Freund、Tatsuo Ishii、Marko Kreen、Tom Lane、Michael Paquier)

这些变更大多只是表面性的,但在某些情况下修复了极端情况的缺陷,例如内存不足失败后崩溃而不是正确报告错误。据信它们都不构成安全问题。

关联记录(4)

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

其他改进在构建期间检测不兼容的 OpenLDAP 版本

变更

在构建期间检测不兼容的 OpenLDAP 版本(Noah Misch)

对于 2.4.24 到 2.4.31(含)之间的 OpenLDAP 版本,PostgreSQL 后端进程可能在退出时崩溃。现在会根据编译时的 OpenLDAP 版本号在 configure 期间发出警告,并在 contrib/dblink 回归测试中测试该崩溃场景。

关联记录(3)

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

其他改进在非 MSVC 的 Windows 构建中,确保安装的 libpq.dll 带有执行权限

变更

在非 MSVC 的 Windows 构建中,确保安装的 libpq.dll 带有执行权限(Noah Misch)

关联记录(3)

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

其他改进使 pg_regress 成功退出时删除其创建的任何临时安装

变更

使 pg_regress 成功退出时删除其创建的任何临时安装(Tom Lane)

这使 make check-world 期间的磁盘空间用量大幅减少,因为该序列会创建大量临时安装。

关联记录(4)

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

其他改进支持随时间改变 UTC 偏移的时区缩写

变更

支持随时间改变 UTC 偏移的时区缩写(Tom Lane)

此前,PostgreSQL 假定时区缩写(如 EST)关联的 UTC 偏移在任何特定区域设置的用法中永不改变。然而这一假设在现实世界中并不成立,因此引入了让区域缩写表示有时会变化的 UTC 偏移的能力。更新了时区缩写定义文件,在自 1970 年以来缩写的 UTC 偏移发生过变化的时区区域设置中使用此功能(依据 IANA 时区数据库)。在此类时区中,PostgreSQL 现在会根据给定日期为缩写关联正确的 UTC 偏移。

关联记录(3)

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

其他改进更新时区缩写列表

变更

更新时区缩写列表(Tom Lane)

把 CST(中国标准时间)加入列表。移除 ADT 作为“阿拉伯夏令时”的引用——这个缩写自 2007 年起已不再使用;因此,声称它与“大西洋夏令时”冲突似乎没有特别的帮助。修正 CKT(库克群岛)、FJT 和 FJST(斐济)完全错误的 GMT 偏移;此前我们甚至把它们放到了日期变更线的错误一侧。

关联记录(3)

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

其他改进把时区数据文件更新为 tzdata 版本 2015a。

变更

把时区数据文件更新为 tzdata 版本 2015a。

IANA 时区数据库为所有澳大利亚时区采用了 AxST/AxDT 形式的缩写,以反映他们认为的当地当前多数用法。这些名称与其他地方的用法不冲突(唯一例外是表示 Acre 夏令时的 ACST,该用法自 1994 年起已废弃)。因此,我们把这些名称采纳进“默认”时区缩写集。“澳大利亚”缩写集现在只包含 CST、EAST、EST、SAST、SAT 和 WST,这些被认为主要是历史用法。注意,在“默认”缩写集中,SAST 也已改为南非标准时间。

此外,新增时区缩写 SRET(Asia/Srednekolymsk)和 XJT(Asia/Urumqi),并对西萨摩亚使用 WSST/WSDT。同时,智利、墨西哥、特克斯和凯科斯群岛(America/Grand_Turk)以及斐济的夏令时法规有变更。还为巴布亚新几内亚部分地区新增了时区 Pacific/Bougainville。另外还有大量针对历史(1970 年以前)时区数据的修正。

关联记录(3)

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

PostgreSQL 9.1.14

升级与兼容性说明

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

不过,本版本纠正了某些 GiST 索引的索引损坏问题。请参见下面第一条变更日志,以确认你的安装是否受影响以及应采取的步骤。

不过,如果你是从早于 9.1.11 的版本升级,请参见第 E.14 节。

其他改进正确初始化 contrib/btree_gist 在 bit 列上索引的填充字节

变更

正确初始化 contrib/btree_gist 在 bit 列上索引的填充字节(Heikki Linnakangas)

这一错误可能导致本应比较相等的值不被视为相等,从而产生错误的查询结果。在 bit 或 bit varying 列上建有 GiST 索引的用户,在安装此更新后应对这些索引执行 REINDEX。

关联记录(3)

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

其他改进在删除 GIN 列表页时防止残缺页(torn page)

变更

在删除 GIN 列表页时防止残缺页(torn page)(Heikki Linnakangas)

此修复可防止在页面更新写入磁盘期间发生系统崩溃时可能出现的索引损坏。

关联记录(3)

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

其他改进在从 WAL 重放更新时不清除 GiST 索引页的右链接

变更

在从 WAL 重放更新时不清除 GiST 索引页的右链接(Heikki Linnakangas)

这一错误可能导致热备中执行的 GiST 索引扫描出现瞬时错误的结果。

关联记录(3)

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

BUG 修复修复hot_standby_feedback被动态关闭时反馈状态的处理

变更

修复hot_standby_feedback被动态关闭时反馈状态的处理(Simon Riggs)

关联记录(1)

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

BUG 修复修复嵌套调用 ReceiveSharedInvalidMessages 期间缓存失效可能不正确的问题

变更

修复嵌套调用 ReceiveSharedInvalidMessages 期间缓存失效可能不正确的问题(Andres Freund)

关联记录(3)

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

BUG 修复修复对从带继承子表的表读取的子查询执行 UNION ALL 时规划器报 “could not find pathkey item to sort” 失败的问题

变更

修复对从带继承子表的表读取的子查询执行 UNION ALL 时规划器报 “could not find pathkey item to sort” 失败的问题(Tom Lane)

关联记录(2)

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

其他改进当子查询的目标列表中存在集合返回函数时,不再假定其输出是唯一的

变更

当子查询的目标列表中存在集合返回函数时,不再假定其输出是唯一的(David Rowley)

这一疏忽可能导致诸如 WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP BY y) 之类的构造被错误优化。

关联记录(3)

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

BUG 修复修复未能对结构化类型的组合元素中的字段执行解 TOAST 的错误

变更

修复未能对结构化类型的组合元素中的字段执行解 TOAST 的错误(Tom Lane)

这纠正了 TOAST 指针可能未经解引用就被复制到其他表的情况。如果原始数据随后被删除,当这个已悬空的指针被使用时,会导致诸如 “missing chunk number 0 for toast value ...” 之类的错误。

关联记录(3)

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

BUG 修复修复对 Append 计划节点输出的整行引用导致 “record type has not been registered” 失败的问题

变更

修复对 Append 计划节点输出的整行引用导致 “record type has not been registered” 失败的问题(Tom Lane)

关联记录(3)

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

BUG 修复修复在回卷游标时调用用户定义函数可能崩溃的问题

变更

修复在回卷游标时调用用户定义函数可能崩溃的问题(Tom Lane)

关联记录(3)

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

BUG 修复修复为 FROM 中的函数求值参数时查询级内存泄漏的问题

变更

修复为 FROM 中的函数求值参数时查询级内存泄漏的问题(Tom Lane)

关联记录(3)

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

BUG 修复修复正则表达式处理中的会话级内存泄漏

变更

修复正则表达式处理中的会话级内存泄漏(Tom Lane、Arthur O'Dwyer、Greg Stark)

关联记录(3)

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

BUG 修复修复 hungarian.stop 中的数据编码错误

变更

修复 hungarian.stop 中的数据编码错误(Tom Lane)

关联记录(3)

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

其他改进防止在default_with_oids为真时创建带 OIDS 的外部表

变更

防止在default_with_oids为真时创建带 OIDS 的外部表(Etsuro Fujita)

关联记录(2)

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

BUG 修复修复对在当前事务中插入、随后被一个现已回滚的子事务删除的行的活跃性检查

变更

修复对在当前事务中插入、随后被一个现已回滚的子事务删除的行的活跃性检查(Andres Freund)

如果同一事务中稍后执行了 CREATE INDEX 或 CLUSTER,这可能导致问题(至少是虚假警告,最坏是无限循环)。

关联记录(3)

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

其他改进在 PREPARE TRANSACTION 期间清除 pg_stat_activity.xact_start

变更

在 PREPARE TRANSACTION 期间清除 pg_stat_activity.xact_start(Andres Freund)

在 PREPARE 之后,发起会话已不在事务中,因此不应继续显示事务开始时间。

关联记录(3)

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

BUG 修复修复 REASSIGN OWNED 对文本搜索对象失败的问题

变更

修复 REASSIGN OWNED 对文本搜索对象失败的问题(Álvaro Herrera)

关联记录(3)

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

其他改进在 postmaster 启动期间阻塞信号

变更

在 postmaster 启动期间阻塞信号(Tom Lane)

这确保了 postmaster 在例如启动过程中收到 SIGINT 时能够正确清理自身。

关联记录(3)

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

BUG 修复修复处理 pg_hba.conf 中指定主机名而非 IP 地址的条目时的客户端主机名查找

变更

修复处理 pg_hba.conf 中指定主机名而非 IP 地址的条目时的客户端主机名查找(Tom Lane)

确保反向 DNS 查找失败会被报告,而不是只是静默地不匹配这些条目。同时确保每个连接只做一次反向 DNS 查找尝试,而不是每个主机名条目一次——如果查找尝试失败,此前发生的就是后者。

关联记录(2)

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

安全相关保护 make check 期间启动的临时 postmaster 的 Unix 域套接字

变更

保护 make check 期间启动的临时 postmaster 的 Unix 域套接字(Noah Misch)

正如我们此前在 CVE-2014-0067 中指出的,任何能够访问套接字文件的本地用户都可以以服务器的引导超级用户身份连接,进而以运行测试的操作系统用户身份执行任意代码。此变更通过把服务器的套接字放到 /tmp 下一个临时的、模式为 0700 的子目录中来防御这一风险。但在不支持 Unix 套接字的平台(尤其是 Windows)上风险仍然存在,因为那时临时 postmaster 必须接受本地 TCP 连接。

此变更的一个有用副作用是简化了覆盖 DEFAULT_PGSOCKET_DIR 的构建中的 make check 测试。常用的非默认值(如 /var/run/postgresql)往往不允许构建用户写入,此前需要一些变通办法,现在不再需要了。

关联记录(3)

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

BUG 修复修复表空间创建 WAL 重放在 Windows 上无法工作的问题

变更

修复表空间创建 WAL 重放在 Windows 上无法工作的问题(MauMau)

关联记录(3)

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

BUG 修复修复 Windows 上套接字创建失败的检测

变更

修复 Windows 上套接字创建失败的检测(Bruce Momjian)

关联记录(3)

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

其他改进在 Windows 上,允许新会话从配置文件获取 PGC_BACKEND 参数(例如log_connections)的值

变更

在 Windows 上,允许新会话从配置文件获取 PGC_BACKEND 参数(例如log_connections)的值(Amit Kapila)

此前,如果启动后在文件中更改了这类参数,更改不会生效。

关联记录(3)

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

其他改进在 Windows 上正确地为可执行文件路径名加引号

变更

在 Windows 上正确地为可执行文件路径名加引号(Nikhil Deshpande)

如果安装路径同时包含空格和 @ 符号,这一疏忽可能导致 initdb 和 pg_upgrade 在 Windows 上失败。

关联记录(3)

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

BUG 修复修复 macOS 上 libpython 的链接

变更

修复 macOS 上 libpython 的链接(Tom Lane)

我们先前使用的方法在 Xcode 5.0 及之后版本提供的 Python 库上可能失败。

关联记录(2)

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

性能改进当服务器持续以快于客户端吸收速度的速率发送数据时,避免 libpq 中的缓冲区膨胀

变更

当服务器持续以快于客户端吸收速度的速率发送数据时,避免 libpq 中的缓冲区膨胀(Shin-ichi Morita、Tom Lane)

libpq 可能被迫不断增大其输入缓冲区,直到内存耗尽(这会被误导性地报告为 “lost synchronization with server”)。在正常情况下,数据持续以快于 recv() 循环吸收速度的速率传输是相当牵强的,但在客户端因调度器约束被人为减速时曾观察到这种情况。

关联记录(3)

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

其他改进确保 libpq 中的 LDAP 查找尝试按预期超时

变更

确保 libpq 中的 LDAP 查找尝试按预期超时(Laurenz Albe)

关联记录(3)

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

BUG 修复修复 ecpg 在 char * 数组作为返回多行的 FETCH 语句目标时的行为,以及其他一些数组处理修复

变更

修复 ecpg 在 char * 数组作为返回多行的 FETCH 语句目标时的行为,以及其他一些数组处理修复(Ashutosh Bapat)

关联记录(3)

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

BUG 修复修复 pg_restore 对旧式大对象注释的处理

变更

修复 pg_restore 对旧式大对象注释的处理(Tom Lane)

如果归档文件由 9.0 之前版本的 pg_dump 生成且包含较多大对象注释,直接恢复到数据库通常会失败。

关联记录(3)

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

其他改进在 contrib/pgcrypto 函数中,确保返回前清除栈变量中的敏感信息

变更

在 contrib/pgcrypto 函数中,确保返回前清除栈变量中的敏感信息(Marko Kreen)

关联记录(3)

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

其他改进在 contrib/uuid-ossp 中,跨调用缓存 OSSP UUID 库的状态

变更

在 contrib/uuid-ossp 中,跨调用缓存 OSSP UUID 库的状态(Tom Lane)

这提高了 UUID 生成的效率,并在有 /dev/urandom 的平台上减少了从中抽取的熵量。

关联记录(3)

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

其他改进把时区数据文件更新为 tzdata 版本 2014e for DST law changes in Crimea, Egypt, and Morocco。

变更

把时区数据文件更新为 tzdata 版本 2014e for DST law changes in Crimea, Egypt, and Morocco。

关联记录(3)

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

PostgreSQL 9.1.13

升级与兼容性说明

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

不过,如果你是从早于 9.1.11 的版本升级,请参见第 E.14 节。

其他改进无条件恢复 GIN 元页以避免残缺页风险

变更

无条件恢复 GIN 元页以避免残缺页风险(Heikki Linnakangas)

虽然这一疏忽理论上可能导致索引损坏,但实际上不太可能造成任何问题,因为 GIN 元页的活动部分小于标准的 512 字节磁盘扇区。

关联记录(3)

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

其他改进避免在接收 NOTIFY 消息期间检查事务提交状态时的竞态条件

变更

避免在接收 NOTIFY 消息期间检查事务提交状态时的竞态条件(Marko Tiikkaja)

这防止了这样一种场景:足够快的客户端可能在通知者所做的数据库更新对接收者可见之前就响应通知。

关联记录(3)

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

其他改进允许正则表达式操作符被查询取消请求提前终止

变更

允许正则表达式操作符被查询取消请求提前终止(Tom Lane)

这防止了病态正则表达式长时间不可中断地锁死服务器进程的场景。

关联记录(1)

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

其他改进移除试图允许 OVERLAPS 接受单元素行参数的错误代码

变更

移除试图允许 OVERLAPS 接受单元素行参数的错误代码(Joshua Yanovski)

这段代码从未正确工作过,而且该情况既未被 SQL 标准规定也未被记录,因此移除它似乎比修复它更好。

关联记录(3)

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

其他改进避免在反解析规则或视图时获取超出 AccessShareLock 的锁

变更

避免在反解析规则或视图时获取超出 AccessShareLock 的锁(Dean Rasheed)

这一疏忽导致 pg_dump 对规则中作为 INSERT/UPDATE/DELETE 命令目标的表意外获取了 RowExclusiveLock 锁。虽然通常无害,但它可能干扰试图在这些表上获取例如 ShareLock 的并发事务。

关联记录(3)

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

性能改进改进规划期间索引端点探测的性能

变更

改进规划期间索引端点探测的性能(Tom Lane)

此变更修复了当索引末尾存在大量尚未提交的行时的显著性能问题,这对于基于顺序赋值(如时间戳或序列生成的标识符)的索引是常见情况。

关联记录(3)

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

BUG 修复修复客户端为 pg_receivexlog 时 walsender 无法干净关闭的问题

变更

修复客户端为 pg_receivexlog 时 walsender 无法干净关闭的问题(Fujii Masao)

关联记录(2)

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

BUG 修复修复崩溃后是否可以立即允许热备连接的测试

变更

修复崩溃后是否可以立即允许热备连接的测试(Heikki Linnakangas)

关联记录(3)

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

其他改进在报告非 ERROR 消息期间防止中断

变更

在报告非 ERROR 消息期间防止中断(Tom Lane)

这可以防止因递归进入 syslog() 而导致的罕见服务器进程冻结,或许还能防止其他相关问题。

关联记录(3)

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

BUG 修复修复 PL/Perl 返回组合结果(包括多 OUT 参数情况)时的内存泄漏

变更

修复 PL/Perl 返回组合结果(包括多 OUT 参数情况)时的内存泄漏(Alex Hunsaker)

关联记录(2)

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

其他改进防止在较新的 Windows 版本上间歇性出现 “could not reserve shared memory region” 失败

变更

防止在较新的 Windows 版本上间歇性出现 “could not reserve shared memory region” 失败(MauMau)

关联记录(3)

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

其他改进把时区数据文件更新为 tzdata 版本 2014a for DST law changes in Fiji and Turkey, plus historical changes in Israel and Ukraine。

变更

把时区数据文件更新为 tzdata 版本 2014a for DST law changes in Fiji and Turkey, plus historical changes in Israel and Ukraine。

关联记录(3)

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

PostgreSQL 9.1.12

升级与兼容性说明

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

不过,如果你是从早于 9.1.11 的版本升级,请参见第 E.14 节。

安全相关加固 GRANT ... WITH ADMIN OPTION 的限制

变更

加固 GRANT ... WITH ADMIN OPTION 的限制(Noah Misch)

不带 ADMIN OPTION 授予角色本应阻止被授予者向该角色添加或移除成员,但这一限制很容易通过先执行 SET ROLE 绕过。其安全影响主要在于角色成员可以撤销其他人的访问权限,这违背了授权者的意愿。未经批准添加角色成员的影响相对较小,因为不配合的角色成员本来就可以通过创建视图或 SECURITY DEFINER 函数把自己的大部分权限提供给他人。(CVE-2014-0060)

关联记录(3)

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

安全相关防止通过手工调用 PL 验证器函数进行权限提升

变更

防止通过手工调用 PL 验证器函数进行权限提升(Andres Freund)

PL 验证器函数的主要角色是在 CREATE FUNCTION 期间被隐式调用,但它们也是普通 SQL 函数,用户可以显式调用。对实际以其他语言编写的函数调用验证器此前未被检查,可能被用于权限提升。修复方法是在每个验证器函数中加入对权限检查函数的调用。非核心过程语言如果自带验证器函数,也需要做同样的修改。(CVE-2014-0061)

关联记录(3)

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

安全相关避免在表和索引 DDL 期间进行多次名称查找

变更

避免在表和索引 DDL 期间进行多次名称查找(Robert Haas、Andres Freund)

如果由于并发活动导致名称查找得出不同结论,我们可能会对不同的表执行 DDL 的不同部分。至少在 CREATE INDEX 的情况下,这可被用来让权限检查针对与索引创建不同的表执行,从而造成权限提升攻击。(CVE-2014-0062)

关联记录(3)

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

安全相关防止长日期时间字符串造成缓冲区越界

变更

防止长日期时间字符串造成缓冲区越界(Noah Misch)

MAXDATELEN 常量对于 interval 类型可能的最长值来说太小,导致 interval_out() 中可能出现缓冲区越界。虽然日期时间输入函数在避免缓冲区越界方面更谨慎,但该限制仍短到导致它们拒绝某些有效输入,例如包含很长时区名的输入。ecpg 库存在这些漏洞以及它自身的一些漏洞。(CVE-2014-0063)

关联记录(3)

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

安全相关防止大小计算中的整数溢出导致缓冲区越界

变更

防止大小计算中的整数溢出导致缓冲区越界(Noah Misch、Heikki Linnakangas)

若干函数(大多是类型输入函数)在计算分配大小时未检查溢出。如果发生溢出,就会分配过小的缓冲区并被写越界。(CVE-2014-0064)

关联记录(3)

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

安全相关防止固定大小缓冲区越界

变更

防止固定大小缓冲区越界(Peter Eisentraut、Jozef Mlich)

使用 strlcpy() 及相关函数,以明确保证固定大小缓冲区不会被越界写入。与前面几项不同,这些情况是否真的构成现实问题尚不清楚,因为在大多数情况下,输入字符串的大小似乎已有先前约束。尽管如此,消除所有此类 Coverity 警告似乎是明智的。(CVE-2014-0065)

关联记录(3)

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

安全相关避免在 crypt() 返回 NULL 时崩溃

变更

避免在 crypt() 返回 NULL 时崩溃(Honza Horak、Bruce Momjian)

crypt() 可能返回 NULL 的场景相对较少,但如果发生,contrib/chkpass 就会崩溃。一个可能出问题的实际情况是 libc 被配置为拒绝执行未获批准的哈希算法(例如 “FIPS 模式”)。(CVE-2014-0066)

关联记录(3)

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

安全相关在回归测试说明中记录 make check 的风险

变更

在回归测试说明中记录 make check 的风险(Noah Misch、Tom Lane)

由于 make check 启动的临时服务器使用 “trust” 认证,同一台机器上的其他用户可以以数据库超级用户身份连接它,进而可能利用启动测试的操作系统用户的权限。未来版本可能会在测试流程中加入防止此风险的变更,但需要先进行一些公开讨论。因此目前只是警告:当同一台机器上存在不受信任的用户时,不要使用 make check。(CVE-2014-0067)

关联记录(3)

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

BUG 修复修复当关系的某些段不是完整大小时 WAL 记录可能被错误重放的问题

变更

修复当关系的某些段不是完整大小时 WAL 记录可能被错误重放的问题(Greg Stark、Tom Lane)

WAL 更新可能被应用到错误的页面,甚至可能偏后很多页。除了损坏数据外,已观察到这一错误导致备库相比主库显著“膨胀”,因为更新被应用到了远超文件末尾应在位置的地方。这种失败模式在崩溃恢复期间似乎不构成重大风险,只在初始同步从快速变化的主库基础备份创建的备库时出现。

关联记录(3)

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

BUG 修复修复判断恢复何时达到一致性的缺陷

变更

修复判断恢复何时达到一致性的缺陷(Tomonari Katsumata、Heikki Linnakangas)

某些情况下,WAL 重放会错误地在重放开始时就断定数据库已一致,从而可能在数据库真正一致之前允许热备查询。也可能出现其他症状,例如 “PANIC: WAL contains references to invalid pages”。

关联记录(3)

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

BUG 修复修复在热备模式下重放 VACUUM 操作时对 btree 索引页的不当锁定

变更

修复在热备模式下重放 VACUUM 操作时对 btree 索引页的不当锁定(Andres Freund、Heikki Linnakangas、Tom Lane)

这一错误可能导致 “PANIC: WAL contains references to invalid pages” 失败。

关联记录(3)

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

其他改进确保对 GIN 索引非叶页面的插入在合适时写入整页 WAL 记录

变更

确保对 GIN 索引非叶页面的插入在合适时写入整页 WAL 记录(Heikki Linnakangas)

先前的代码在系统崩溃期间发生部分页写入时存在索引损坏风险。

关联记录(3)

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

其他改进当 pause_at_recovery_target 和 recovery_target_inclusive 都被设置时,确保目标记录在暂停之前而不是之后被应用

变更

当 pause_at_recovery_target 和 recovery_target_inclusive 都被设置时,确保目标记录在暂停之前而不是之后被应用(Heikki Linnakangas)

关联记录(2)

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

BUG 修复修复服务器进程退出期间的竞态条件

变更

修复服务器进程退出期间的竞态条件(Robert Haas)

确保信号处理程序不会在进程的 MyProc 指针不再有效后尝试使用它。

关联记录(3)

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

BUG 修复修复 walsender 关闭逻辑和 walreceiver SIGHUP 信号处理程序中的竞态条件

变更

修复 walsender 关闭逻辑和 walreceiver SIGHUP 信号处理程序中的竞态条件(Tom Lane)

关联记录(2)

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

BUG 修复修复错误报告逻辑中对 errno 的不安全引用

变更

修复错误报告逻辑中对 errno 的不安全引用(Christian Kruse)

这通常会导致奇怪的行为,例如 HINT 字段缺失或不恰当。

关联记录(3)

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

BUG 修复修复服务器启动期间过早使用 ereport() 可能导致的崩溃

变更

修复服务器启动期间过早使用 ereport() 可能导致的崩溃(Tom Lane)

我们在实际中见到的主要情况是:如果服务器在一个它没有读取权限的目录中被启动,就会崩溃。

关联记录(3)

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

其他改进在 OpenSSL 套接字写函数中正确清除重试标志

变更

在 OpenSSL 套接字写函数中正确清除重试标志(Alexander Kukushkin)

这一遗漏可能导致 SSL 加密连接意外断开后服务器锁死。

关联记录(3)

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

BUG 修复修复对包含转义的 Unicode 标识符(U&"..." 语法)的长度检查

变更

修复对包含转义的 Unicode 标识符(U&"..." 语法)的长度检查(Tom Lane)

如果标识符的转义形式过长,就会为这类标识符打印虚假的截断警告,但标识符在反转义之后实际上并不需要截断。

关联记录(3)

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

其他改进允许作为类型名的关键字用于角色列表

变更

允许作为类型名的关键字用于角色列表(Stephen Frost)

先前的补丁允许这类关键字在角色标识符等位置不加引号使用;但漏掉了允许角色标识符列表的情况,例如 DROP ROLE。

关联记录(3)

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

BUG 修复修复 EXISTS(SELECT * FROM zero_column_table) 的解析器崩溃

变更

修复 EXISTS(SELECT * FROM zero_column_table) 的解析器崩溃(Tom Lane)

关联记录(2)

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

BUG 修复修复嵌套子选择(例如 WHERE (... x IN (SELECT ...) ...) IN (SELECT ...))因无效计划而可能崩溃的问题

变更

修复嵌套子选择(例如 WHERE (... x IN (SELECT ...) ...) IN (SELECT ...))因无效计划而可能崩溃的问题(Tom Lane)

关联记录(3)

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

其他改进确保即使表列中的所有值都“过宽”,ANALYZE 也会为该列创建统计信息

变更

确保即使表列中的所有值都“过宽”,ANALYZE 也会为该列创建统计信息(Tom Lane)

ANALYZE 有意在直方图和最常用值计算中省略非常宽的值,但在所有采样条目都过宽的情况下没有做出合理的处理。

关联记录(3)

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

其他改进在 ALTER TABLE ... SET TABLESPACE 中,允许不经权限检查就使用数据库的默认表空间

变更

在 ALTER TABLE ... SET TABLESPACE 中,允许不经权限检查就使用数据库的默认表空间(Stephen Frost)

CREATE TABLE 一直允许这种用法,但 ALTER TABLE 没有照做。

关联记录(3)

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

BUG 修复修复当 CASE 的某些分支返回集合而另一些不返回时的 “cannot accept a set” 错误

变更

修复当 CASE 的某些分支返回集合而另一些不返回时的 “cannot accept a set” 错误(Tom Lane)

关联记录(3)

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

BUG 修复修复 pgstat 函数中对全零客户端地址的检查

变更

修复 pgstat 函数中对全零客户端地址的检查(Kevin Grittner)

关联记录(3)

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

BUG 修复修复文本搜索解析器可能错误分类多字节字符的问题

变更

修复文本搜索解析器可能错误分类多字节字符的问题(Tom Lane)

在 C 区域设置下使用多字节编码时,非 ASCII 字符可能被错误分类。在 Cygwin 上,非 C 区域设置也可能失败。

关联记录(3)

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

BUG 修复修复 plainto_tsquery() 中可能的不当行为

变更

修复 plainto_tsquery() 中可能的不当行为(Heikki Linnakangas)

在复制重叠内存区域时使用 memmove() 而不是 memcpy()。尚无实际造成问题的现场报告,但这无疑是有风险的。

关联记录(3)

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

BUG 修复修复 pg_start_backup() 和 pg_stop_backup() 中权限检查的位置

变更

修复 pg_start_backup() 和 pg_stop_backup() 中权限检查的位置(Andres Freund、Magnus Hagander)

先前的代码可能在不该访问系统目录时尝试访问。

关联记录(2)

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

其他改进在区域检查方面接受 SHIFT_JIS 作为编码名

变更

在区域检查方面接受 SHIFT_JIS 作为编码名(Tatsuo Ishii)

关联记录(3)

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

BUG 修复修复 PQhost() 在 Windows 上的不当行为

变更

修复 PQhost() 在 Windows 上的不当行为(Fujii Masao)

如果未指定主机,它应返回 localhost。

关联记录(3)

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

其他改进改进 libpq 和 psql 对 COPY TO STDOUT/FROM STDIN 期间失败的错误处理

变更

改进 libpq 和 psql 对 COPY TO STDOUT/FROM STDIN 期间失败的错误处理(Tom Lane)

这尤其修复了 9.2 及更高版本中,如果服务器连接在 COPY FROM STDIN 期间丢失可能发生的无限循环。该场景的变体在旧版本或其他客户端应用中也可能出现。

关联记录(3)

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

BUG 修复修复 pg_basebackup 详细模式下文件名可能打印错误的问题

变更

修复 pg_basebackup 详细模式下文件名可能打印错误的问题(Magnus Hagander)

关联记录(2)

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

其他改进避免在基础备份中把 PGDATA 内的表空间包含两次

变更

避免在基础备份中把 PGDATA 内的表空间包含两次(Dimitri Fontaine、Magnus Hagander)

关联记录(2)

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

BUG 修复修复 ecpg 中未对齐的描述符

变更

修复 ecpg 中未对齐的描述符(MauMau)

关联记录(3)

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

其他改进在 ecpg 中正确处理连接参数中缺少主机名的情况

变更

在 ecpg 中正确处理连接参数中缺少主机名的情况(Michael Meskes)

关联记录(3)

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

BUG 修复修复 contrib/dblink 连接启动中的性能退化

变更

修复 contrib/dblink 连接启动中的性能退化(Joe Conway)

在客户端和服务器编码一致时避免一次不必要的往返。

关联记录(3)

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

BUG 修复修复 contrib/isn 中 ISMN 值校验位计算错误的问题

变更

修复 contrib/isn 中 ISMN 值校验位计算错误的问题(Fabien Coelho)

关联记录(3)

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

其他改进确保仅安装客户端代码的流程按文档说明工作

变更

确保仅安装客户端代码的流程按文档说明工作(Peter Eisentraut)

关联记录(3)

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

其他改进在 Mingw 和 Cygwin 构建中,把 libpq DLL 安装到 bin 目录

变更

在 Mingw 和 Cygwin 构建中,把 libpq DLL 安装到 bin 目录(Andrew Dunstan)

这与 MSVC 构建长期以来的做法一致。它应该能解决 psql 等程序因找不到 DLL 而无法启动的问题。

关联记录(3)

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

其他改进在 Cygwin 构建中避免使用已弃用的 dllwrap 工具

变更

在 Cygwin 构建中避免使用已弃用的 dllwrap 工具(Marco Atzeri)

关联记录(3)

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

其他改进不再生成纯文本的 HISTORY 和 src/test/regress/README 文件

变更

不再生成纯文本的 HISTORY 和 src/test/regress/README 文件(Tom Lane)

这些文本文件与主文档的 HTML 和 PDF 格式重复。维护它们的麻烦远远超过纯文本格式可能的读者。发行版压缩包仍会包含这些名字的文件,但它们只是提示读者查阅主文档的存根。纯文本 INSTALL 文件仍将维护,因为它可以说还有使用场景。

关联记录(3)

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

其他改进把时区数据文件更新为 tzdata 版本 2013i for DST law changes in Jordan and historical changes in Cuba。

变更

把时区数据文件更新为 tzdata 版本 2013i for DST law changes in Jordan and historical changes in Cuba。

此外,时区 Asia/Riyadh87、Asia/Riyadh88 和 Asia/Riyadh89 已被移除,因为 IANA 不再维护它们,而且它们从未代表过实际的民用计时实践。

关联记录(3)

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

PostgreSQL 9.1.11

升级与兼容性说明

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

不过,本版本纠正了若干潜在的数据损坏问题。请参见下面前三条变更日志,以确认你的安装是否受影响以及可以采取什么措施。

不过,如果你是从早于 9.1.9 的版本升级,请参见第 E.16 节。

BUG 修复修复 VACUUM 判断是否可以更新 relfrozenxid 的测试

变更

修复 VACUUM 判断是否可以更新 relfrozenxid 的测试(Andres Freund)

某些情况下,VACUUM(手工或自动)可能错误地推进表的 relfrozenxid 值,使元组逃过冻结,导致这些行在经过 2^31 个事务后变得不可见。由于需要多次错误推进才会发生实际丢失,数据丢失的概率相当低,但并非为零。从 9.0.4、8.4.8 或更早版本升级的用户不受影响,但之后的所有版本都包含该缺陷。

升级后,在把 vacuum_freeze_table_age 设为零的情况下对所有数据库中的所有表执行清理,可以缓解此问题。这会修复任何潜伏的损坏,但无法修复所有既有的数据错误。不过,如果安装在其生命周期内执行的事务少于 2^31 个更新(可用 SELECT txid_current() < 2^31 检查),则在执行此清理之后即可认为该安装是安全的。

关联记录(1)

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

BUG 修复修复热备启动期间 pg_clog 和 pg_subtrans 的初始化

变更

修复热备启动期间 pg_clog 和 pg_subtrans 的初始化(Andres Freund、Heikki Linnakangas)

这一缺陷会把已提交事务标记为未提交,从而在备库开始接受热备查询的那一刻造成数据丢失。除非备库启动时主库自上次检查点以来执行了大量更新事务,否则这种损坏的可能性很小。症状包括行缺失、本应删除的行仍可见,以及已更新行的过时版本与新版本同时可见。

该缺陷是在 9.3.0、9.2.5、9.1.10 和 9.0.14 版本中引入的。只运行过更早版本的备库没有风险。建议曾运行过任何含缺陷版本的备库在升级后从主库重新克隆(例如用新的基础备份)。

关联记录(3)

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

其他改进在 WAL 重放期间截断 pg_multixact 内容

变更

在 WAL 重放期间截断 pg_multixact 内容(Andres Freund)

这避免了备库中磁盘空间消耗不断增加。

关联记录(3)

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

BUG 修复修复 GIN 索引 posting 树页面删除中的竞态条件

变更

修复 GIN 索引 posting 树页面删除中的竞态条件(Heikki Linnakangas)

这可能导致瞬时的错误结果或查询失败。

关联记录(3)

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

其他改进避免展平 SELECT 列表中包含包裹在子 SELECT 中的易变函数的子查询

变更

避免展平 SELECT 列表中包含包裹在子 SELECT 中的易变函数的子查询(Tom Lane)

这避免了因易变函数被额外求值而导致的意外结果。

关联记录(3)

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

BUG 修复修复规划器对外连接中嵌套的非简单变量子查询输出的处理

变更

修复规划器对外连接中嵌套的非简单变量子查询输出的处理(Tom Lane)

这一错误可能为涉及 JOIN 语法中多级子查询的查询生成错误的计划。

关联记录(3)

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

BUG 修复修复继承树的优化 MIN()/MAX() 计划生成错误

变更

修复继承树的优化 MIN()/MAX() 计划生成错误(Tom Lane)

当 MIN()/MAX() 的参数是表达式而不是简单变量时,规划器可能失败。

关联记录(2)

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

BUG 修复修复临时文件被过早删除的问题

变更

修复临时文件被过早删除的问题(Andres Freund)

关联记录(3)

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

BUG 修复修复规则打印中可能读取越过内存末尾的问题

变更

修复规则打印中可能读取越过内存末尾的问题(Peter Eisentraut)

关联记录(3)

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

BUG 修复修复 int2vector 和 oidvector 值的数组切片

变更

修复 int2vector 和 oidvector 值的数组切片(Tom Lane)

这类表达式现在会被隐式提升为常规的 int2 或 oid 数组。

关联记录(3)

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

BUG 修复修复使用 SQL 标准的简单 GMT 偏移时区时的错误行为

变更

修复使用 SQL 标准的简单 GMT 偏移时区时的错误行为(Tom Lane)

某些情况下,系统会使用简单 GMT 偏移值,而本应使用选择简单偏移之前一直生效的常规时区设置。此变更还使 timeofday 函数遵循简单 GMT 偏移时区。

关联记录(3)

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

其他改进防止记录 Windows 错误码翻译时可能出现的不当行为

变更

防止记录 Windows 错误码翻译时可能出现的不当行为(Tom Lane)

关联记录(3)

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

其他改进正确地为 pg_ctl 生成的命令行加引号

变更

正确地为 pg_ctl 生成的命令行加引号(Naoya Anzai、Tom Lane)

此修复仅适用于 Windows。

关联记录(3)

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

BUG 修复修复当源数据库通过 ALTER DATABASE SET 设置 default_transaction_read_only 时 pg_dumpall 无法工作的问题

变更

修复当源数据库通过 ALTER DATABASE SET 设置 default_transaction_read_only 时 pg_dumpall 无法工作的问题(Kevin Grittner)

此前,生成的脚本在恢复期间会失败。

关联记录(3)

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

其他改进让 ecpg 以大小写敏感方式搜索带引号的游标名

变更

让 ecpg 以大小写敏感方式搜索带引号的游标名(Zoltán Böszörményi)

关联记录(2)

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

BUG 修复修复 ecpg 对声明为 varchar 的变量列表的处理

变更

修复 ecpg 对声明为 varchar 的变量列表的处理(Zoltán Böszörményi)

关联记录(3)

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

其他改进让 contrib/lo 防御不正确的触发器定义

变更

让 contrib/lo 防御不正确的触发器定义(Marc Cousin)

关联记录(3)

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

其他改进把时区数据文件更新为 tzdata 版本 2013h for DST law changes in Argentina, Brazil, Jordan, Libya, Liechtenstein, Morocco, and Palestine。Also, new timezone abbreviations WIB, WIT, WITA for Indonesia.

变更

把时区数据文件更新为 tzdata 版本 2013h for DST law changes in Argentina, Brazil, Jordan, Libya, Liechtenstein, Morocco, and Palestine。Also, new timezone abbreviations WIB, WIT, WITA for Indonesia.

关联记录(3)

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

PostgreSQL 9.1.10

升级与兼容性说明

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

不过,如果你是从早于 9.1.9 的版本升级,请参见第 E.16 节。

BUG 修复防止尝试对标识符做大小写折叠时损坏多字节字符

变更

防止尝试对标识符做大小写折叠时损坏多字节字符(Andrew Dunstan)

PostgreSQL 只在使用单字节服务器编码时才对非 ASCII 字符做大小写折叠。

关联记录(2)

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

BUG 修复修复 wal_level = hot_standby 时后台写入进程中的检查点内存泄漏

变更

修复 wal_level = hot_standby 时后台写入进程中的检查点内存泄漏(Naoya Anzai)

关联记录(2)

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

BUG 修复修复由 lo_open() 失败导致的内存泄漏

变更

修复由 lo_open() 失败导致的内存泄漏(Heikki Linnakangas)

关联记录(3)

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

BUG 修复修复 work_mem 使用超过 24GB 内存时的内存过度提交缺陷

变更

修复 work_mem 使用超过 24GB 内存时的内存过度提交缺陷(Stephen Frost)

关联记录(2)

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

BUG 修复可序列化快照修复

变更

可序列化快照修复(Kevin Grittner、Heikki Linnakangas)

关联记录(2)

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

BUG 修复修复使用 SSL 时 libpq 中的死锁缺陷

变更

修复使用 SSL 时 libpq 中的死锁缺陷(Stephen Frost)

关联记录(3)

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

BUG 修复修复多线程 libpq 应用中可能的 SSL 状态损坏

变更

修复多线程 libpq 应用中可能的 SSL 状态损坏(Nick Phillips、Stephen Frost)

关联记录(2)

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

其他改进正确计算包含大量 NULL 值的布尔列的行数估计

变更

正确计算包含大量 NULL 值的布尔列的行数估计(Andrew Gierth)

此前,col IS NOT TRUE 和 col IS NOT FALSE 这类测试在估计计划代价时没有正确考虑 NULL 值。

关联记录(2)

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

其他改进防止把 WHERE 子句下推到不安全的 UNION/INTERSECT 子查询中

变更

防止把 WHERE 子句下推到不安全的 UNION/INTERSECT 子查询中(Tom Lane)

SELECT 列表中包含集合返回函数或易变函数的 UNION 或 INTERSECT 子查询可能被不当优化,导致运行时错误或错误的查询结果。

关联记录(2)

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

BUG 修复修复罕见的 “failed to locate grouping columns” 规划器失败情况

变更

修复罕见的 “failed to locate grouping columns” 规划器失败情况(Tom Lane)

关联记录(2)

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

BUG 修复修复带已删除列的外部表的 pg_dump 转储问题

变更

修复带已删除列的外部表的 pg_dump 转储问题(Andrew Dunstan)

此前这类情况可能导致 pg_upgrade 错误。

关联记录(1)

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

其他改进重新排序 pg_dump 对扩展相关规则和事件触发器的处理

变更

重新排序 pg_dump 对扩展相关规则和事件触发器的处理(Joe Conway)

关联记录(1)

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

其他改进如果通过 pg_dump -t 或 -n 指定,则强制转储扩展表

变更

如果通过 pg_dump -t 或 -n 指定,则强制转储扩展表(Joe Conway)

关联记录(1)

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

其他改进改进视图转储代码对被引用表中已删除列的处理

变更

改进视图转储代码对被引用表中已删除列的处理(Tom Lane)

关联记录(2)

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

BUG 修复修复目录归档下 pg_restore -l 显示正确格式名的问题

变更

修复目录归档下 pg_restore -l 显示正确格式名的问题(Fujii Masao)

关联记录(1)

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

其他改进正确记录使用 UNIQUE 和 PRIMARY KEY 语法创建的索引注释

变更

正确记录使用 UNIQUE 和 PRIMARY KEY 语法创建的索引注释(Andres Freund)

这修复了一个并行 pg_restore 失败问题。

关联记录(2)

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

其他改进在干净切换之前正确保证 WAL 文件的传输

变更

在干净切换之前正确保证 WAL 文件的传输(Fujii Masao)

此前,流复制连接可能在所有 WAL 文件都已在备库上重放之前关闭。

关联记录(1)

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

BUG 修复修复恢复期间 WAL 段的时间线处理

变更

修复恢复期间 WAL 段的时间线处理(Mitsumasa Kondo、Heikki Linnakangas)

备库恢复期间的 WAL 文件回收可能导致恢复过早完成,造成数据丢失。

关联记录(1)

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

BUG 修复修复 REINDEX TABLE 和 REINDEX DATABASE,使其正确重新验证约束并把已失效的索引标记为有效

变更

修复 REINDEX TABLE 和 REINDEX DATABASE,使其正确重新验证约束并把已失效的索引标记为有效(Noah Misch)

REINDEX INDEX 一直工作正常。

关联记录(2)

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

BUG 修复修复并发执行 CREATE INDEX CONCURRENTLY 操作时可能出现的死锁

变更

修复并发执行 CREATE INDEX CONCURRENTLY 操作时可能出现的死锁(Tom Lane)

关联记录(2)

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

BUG 修复修复 regexp_matches() 对零长度匹配的处理

变更

修复 regexp_matches() 对零长度匹配的处理(Jeevan Chalke)

此前,像 '^' 这样的零长度匹配可能返回过多的匹配。

关联记录(2)

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

BUG 修复修复过于复杂的正则表达式导致崩溃的问题

变更

修复过于复杂的正则表达式导致崩溃的问题(Heikki Linnakangas)

关联记录(2)

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

BUG 修复修复反向引用与非贪婪量词组合时正则表达式匹配失败的问题

变更

修复反向引用与非贪婪量词组合时正则表达式匹配失败的问题(Jeevan Chalke)

关联记录(2)

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

其他改进除非启用了函数体检查,否则防止 CREATE FUNCTION 检查 SET 变量

变更

除非启用了函数体检查,否则防止 CREATE FUNCTION 检查 SET 变量(Tom Lane)

关联记录(3)

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

其他改进允许 ALTER DEFAULT PRIVILEGES 在不需要 CREATE 权限的情况下对模式操作

变更

允许 ALTER DEFAULT PRIVILEGES 在不需要 CREATE 权限的情况下对模式操作(Tom Lane)

关联记录(2)

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

其他改进放宽对查询中所用关键字的限制

变更

放宽对查询中所用关键字的限制(Tom Lane)

具体而言,放宽了角色名、语言名、EXPLAIN 和 COPY 选项以及 SET 值的关键字限制。这使得 COPY ... (FORMAT BINARY) 能按预期工作;此前 BINARY 需要加引号。

关联记录(2)

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

BUG 修复修复 pgp_pub_decrypt(),使其可用于带口令的密钥

变更

修复 pgp_pub_decrypt(),使其可用于带口令的密钥(Marko Kreen)

关联记录(2)

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

其他改进让 pg_upgrade 使用 pg_dump --quote-all-identifiers,以避免版本之间关键字变更带来的问题

变更

让 pg_upgrade 使用 pg_dump --quote-all-identifiers,以避免版本之间关键字变更带来的问题(Tom Lane)

关联记录(1)

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

其他改进移除无索引表清理期间罕见的不准确警告

变更

移除无索引表清理期间罕见的不准确警告(Heikki Linnakangas)

关联记录(3)

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

其他改进确保当 VACUUM ANALYZE 的文件截断尝试因锁冲突被取消时,仍然执行 ANALYZE 阶段

变更

确保当 VACUUM ANALYZE 的文件截断尝试因锁冲突被取消时,仍然执行 ANALYZE 阶段(Kevin Grittner)

关联记录(2)

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

其他改进避免在预备查询中执行事务控制命令(例如 ROLLBACK)时可能出现的失败

变更

避免在预备查询中执行事务控制命令(例如 ROLLBACK)时可能出现的失败(Tom Lane)

关联记录(2)

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

其他改进确保浮点数据输入在所有平台上都接受标准的“infinity”(无穷大)写法

变更

确保浮点数据输入在所有平台上都接受标准的“infinity”(无穷大)写法(Tom Lane)

C99 标准规定允许的写法为 inf、+inf、-inf、infinity、+infinity 和 -infinity。即使平台的 strtod 函数不支持,也确保我们能识别这些写法。

关联记录(2)

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

其他改进扩展行与记录和数组比较的能力

变更

扩展行与记录和数组比较的能力(Rafal Rzepecki、Tom Lane)

关联记录(2)

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

其他改进把时区数据文件更新为 tzdata 版本 2013d for DST law changes in Israel, Morocco, Palestine, and Paraguay。Also, historical zone data corrections for Macquarie Island.

变更

把时区数据文件更新为 tzdata 版本 2013d for DST law changes in Israel, Morocco, Palestine, and Paraguay。Also, historical zone data corrections for Macquarie Island.

关联记录(2)

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

PostgreSQL 9.1.9

升级与兼容性说明

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

不过,本版本纠正了 GiST 索引管理中的若干错误。安装此更新后,建议对满足下述一个或多个条件的 GiST 索引执行 REINDEX。

不过,如果你是从早于 9.1.6 的版本升级,请参见第 E.19 节。

安全相关修复服务器命令行开关解析不安全的问题

变更

修复服务器命令行开关解析不安全的问题(Mitsumasa Kondo、Kyotaro Horiguchi)

包含以 “-” 开头的数据库名的连接请求可能被精心构造,用于破坏或摧毁服务器数据目录中的文件,即使该请求最终被拒绝也是如此。(CVE-2013-1899)

关联记录(2)

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

安全相关在每个 postmaster 子进程中重置 OpenSSL 随机状态

变更

在每个 postmaster 子进程中重置 OpenSSL 随机状态(Marko Kreen)

这避免了另一种情况:另一数据库用户可能相对容易地猜出 contrib/pgcrypto 函数生成的随机数。只有当 postmaster 配置了 ssl = on 而大多数连接并不使用 SSL 加密时,这一风险才比较显著。(CVE-2013-1900)

关联记录(2)

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

安全相关让 REPLICATION 权限检查测试当前用户而不是已认证用户

变更

让 REPLICATION 权限检查测试当前用户而不是已认证用户(Noah Misch)

无特权数据库用户可能利用这一失误调用 pg_start_backup() 或 pg_stop_backup(),从而可能干扰例程备份的创建。(CVE-2013-1901)

关联记录(1)

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

BUG 修复修复 GiST 索引在不合适的情况下使用“模糊”几何比较的问题

变更

修复 GiST 索引在不合适的情况下使用“模糊”几何比较的问题(Alexander Korotkov)

核心几何类型使用“模糊”相等进行比较,但 gist_box_same 必须做精确比较,否则使用它的 GiST 索引可能变得不一致。安装此更新后,用户应对 box、polygon、circle 或 point 列上的所有 GiST 索引执行 REINDEX,因为它们都使用 gist_box_same。

关联记录(2)

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

BUG 修复修复对可变宽度数据类型(即 text、bytea、bit 和 numeric 列)使用 contrib/btree_gist 的 GiST 索引中错误的范围并集和惩罚逻辑

变更

修复对可变宽度数据类型(即 text、bytea、bit 和 numeric 列)使用 contrib/btree_gist 的 GiST 索引中错误的范围并集和惩罚逻辑(Tom Lane)

这些错误可能导致不一致的索引:某些存在的键搜索不到,还会造成无用的索引膨胀。建议用户在安装此更新后对这类索引执行 REINDEX。

关联记录(2)

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

BUG 修复修复多列索引的 GiST 页面分裂代码中的缺陷

变更

修复多列索引的 GiST 页面分裂代码中的缺陷(Tom Lane)

这些错误可能导致不一致的索引:某些存在的键搜索不到,还会使索引的搜索效率不必要地低下。建议用户在安装此更新后对多列 GiST 索引执行 REINDEX。

关联记录(2)

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

BUG 修复修复 gist_point_consistent,使其一致地处理模糊性

变更

修复 gist_point_consistent,使其一致地处理模糊性(Alexander Korotkov)

point 列上 GiST 索引的索引扫描有时会得出与顺序扫描不同的结果,因为 gist_point_consistent 与底层操作符代码在是做精确比较还是模糊比较上不一致。

关联记录(2)

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

BUG 修复修复 WAL 重放中的缓冲区泄漏

变更

修复 WAL 重放中的缓冲区泄漏(Heikki Linnakangas)

这一缺陷可能导致重放期间出现 “incorrect local pin count” 错误,使恢复无法进行。

关联记录(2)

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

BUG 修复修复 DELETE RETURNING 中的竞态条件

变更

修复 DELETE RETURNING 中的竞态条件(Tom Lane)

在合适的条件下,DELETE RETURNING 可能尝试从当前进程已不再持有任何 pin 的共享缓冲区中取数据。如果其他进程在此期间更改了该缓冲区,就会导致垃圾 RETURNING 输出,甚至崩溃。

关联记录(2)

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

BUG 修复修复正则表达式编译中的无限循环风险

变更

修复正则表达式编译中的无限循环风险(Tom Lane、Don Porter)

关联记录(2)

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

BUG 修复修复正则表达式编译中潜在的空指针解引用

变更

修复正则表达式编译中潜在的空指针解引用(Tom Lane)

关联记录(2)

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

BUG 修复修复 to_char(),在适当的地方只使用 ASCII 大小写折叠规则

变更

修复 to_char(),在适当的地方只使用 ASCII 大小写折叠规则(Tom Lane)

这修复了一些本应与区域设置无关的模板模式在土耳其区域下错误处理 “I” 和 “i” 的问题。

关联记录(2)

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

BUG 修复修复时间戳 1999-12-31 24:00:00 被不当拒绝的问题

变更

修复时间戳 1999-12-31 24:00:00 被不当拒绝的问题(Tom Lane)

关联记录(2)

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

BUG 修复修复单个事务先执行 UNLISTEN 再执行 LISTEN 时的逻辑错误

变更

修复单个事务先执行 UNLISTEN 再执行 LISTEN 时的逻辑错误(Tom Lane)

会话最终完全没有监听通知事件,尽管在这种情况下它显然应该监听。

关联记录(2)

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

BUG 修复修复在向被另一视图依赖的视图添加列之后规划器可能崩溃的问题

变更

修复在向被另一视图依赖的视图添加列之后规划器可能崩溃的问题(Tom Lane)

关联记录(1)

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

其他改进移除无用的 “picksplit doesn't support secondary split” 日志消息

变更

移除无用的 “picksplit doesn't support secondary split” 日志消息(Josh Hansen、Tom Lane)

这条消息似乎是为预期中从未编写、而且可能永远不会编写的代码而添加的,因为 GiST 对二次分裂的默认处理其实相当好。所以不再为此打扰最终用户。

关联记录(2)

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

BUG 修复修复会话最后几个事务的提交/中止计数可能未能发送到统计收集器的问题

变更

修复会话最后几个事务的提交/中止计数可能未能发送到统计收集器的问题(Tom Lane)

关联记录(2)

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

其他改进消除 PL/Perl 的 spi_prepare() 函数中的内存泄漏

变更

消除 PL/Perl 的 spi_prepare() 函数中的内存泄漏(Alex Hunsaker、Tom Lane)

关联记录(2)

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

BUG 修复修复 pg_dumpall 对包含 “=” 的数据库名的处理

变更

修复 pg_dumpall 对包含 “=” 的数据库名的处理(Heikki Linnakangas)

关联记录(2)

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

BUG 修复避免在给定不正确的连接串时 pg_dump 崩溃

变更

避免在给定不正确的连接串时 pg_dump 崩溃(Heikki Linnakangas)

关联记录(2)

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

其他改进让 pg_dump 和 pg_upgrade 忽略无效索引

变更

让 pg_dump 和 pg_upgrade 忽略无效索引(Michael Paquier、Bruce Momjian)

转储无效索引可能在恢复时造成问题,例如当索引创建失败的原因是它试图强制执行表数据不满足的唯一性条件时。此外,如果索引创建实际上仍在进行中,把它视为未提交的 DDL 变更似乎是合理的,pg_dump 本来也不应转储它。pg_upgrade 现在也跳过无效索引而不是失败。

关联记录(2)

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

其他改进在 pg_basebackup 中,备份表空间时只包含当前服务器版本的子目录

变更

在 pg_basebackup 中,备份表空间时只包含当前服务器版本的子目录(Heikki Linnakangas)

关联记录(1)

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

其他改进在 pg_basebackup 和 pg_receivexlog 中加入服务器版本检查,使其在版本组合无法工作时干净地失败

变更

在 pg_basebackup 和 pg_receivexlog 中加入服务器版本检查,使其在版本组合无法工作时干净地失败(Heikki Linnakangas)

关联记录(1)

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

BUG 修复修复 contrib/pg_trgm 的 similarity() 函数,使其对无三元组的字符串返回零

变更

修复 contrib/pg_trgm 的 similarity() 函数,使其对无三元组的字符串返回零(Tom Lane)

此前它由于内部除以零而返回 NaN。

关联记录(2)

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

其他改进把时区数据文件更新为 tzdata 版本 2013b for DST law changes in Chile, Haiti, Morocco, Paraguay, and some Russian areas。Also, historical zone data corrections for numerous places.

变更

把时区数据文件更新为 tzdata 版本 2013b for DST law changes in Chile, Haiti, Morocco, Paraguay, and some Russian areas。Also, historical zone data corrections for numerous places.

此外,更新时区缩写文件以反映俄罗斯和其他地方的近期变更:CHOT、GET、IRKT、KGT、KRAT、MAGT、MAWT、MSK、NOVT、OMST、TKT、VLAT、WST、YAKT、YEKT 现在遵循其当前含义,同时把 VOLT(Europe/Volgograd)和 MIST(Antarctica/Macquarie)加入默认缩写列表。

关联记录(2)

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

PostgreSQL 9.1.8

升级与兼容性说明

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

不过,如果你是从早于 9.1.6 的版本升级,请参见第 E.19 节。

安全相关防止从 SQL 执行 enum_recv

变更

防止从 SQL 执行 enum_recv(Tom Lane)

该函数声明有误,允许一条简单的 SQL 命令使服务器崩溃。原则上攻击者可能利用它检查服务器内存的内容。感谢 Sumit Soni(通过 Secunia SVCRP)报告此问题。(CVE-2013-0255)

关联记录(2)

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

BUG 修复修复 WAL 重放期间检测何时达到一致数据库状态的多个问题

变更

修复 WAL 重放期间检测何时达到一致数据库状态的多个问题(Fujii Masao、Heikki Linnakangas、Simon Riggs、Andres Freund)

关联记录(2)

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

其他改进在截断关系文件时更新最小恢复点

变更

在截断关系文件时更新最小恢复点(Heikki Linnakangas)

数据一旦被丢弃,在时间线上更早的点停止恢复就不再安全。

关联记录(2)

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

BUG 修复修复更改恢复目标时间线后 WAL 段的回收问题

变更

修复更改恢复目标时间线后 WAL 段的回收问题(Heikki Linnakangas)

关联记录(1)

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

BUG 修复修复热备模式下缺失的取消操作

变更

修复热备模式下缺失的取消操作(Noah Misch、Simon Riggs)

取消冲突热备查询的需要有时会被遗漏,使这些查询看到不一致的数据。

关联记录(2)

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

其他改进防止恢复暂停功能在用户能够连接之前就暂停

变更

防止恢复暂停功能在用户能够连接之前就暂停(Tom Lane)

关联记录(1)

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

BUG 修复修复 SQL 文法,允许对子 SELECT 结果做下标或字段选择

变更

修复 SQL 文法,允许对子 SELECT 结果做下标或字段选择(Tom Lane)

关联记录(2)

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

BUG 修复修复繁忙负载下自动清理截断的性能问题

变更

修复繁忙负载下自动清理截断的性能问题(Jan Wieck)

截断表末尾的空页需要排他锁,但自动清理被编码为在出现冲突锁请求时失败(并释放表锁)。在负载下,截断很可能永远不会发生,导致表膨胀。修复方法是先执行部分截断,释放锁,然后尝试重新获取锁并继续。此修复还大幅缩短了冲突请求到达后自动清理释放锁的平均时间。

关联记录(2)

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

其他改进防止扫描 pg_tablespace 时的竞态条件

变更

防止扫描 pg_tablespace 时的竞态条件(Stephen Frost、Tom Lane)

如果 pg_tablespace 条目存在并发更新,CREATE DATABASE 和 DROP DATABASE 可能行为异常。

关联记录(2)

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

其他改进防止 DROP OWNED 试图删除整个数据库或表空间

变更

防止 DROP OWNED 试图删除整个数据库或表空间(Álvaro Herrera)

为安全起见,这些对象的所有权必须重新分配,而不是删除。

关联记录(2)

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

BUG 修复修复 vacuum_freeze_table_age 实现中的错误

变更

修复 vacuum_freeze_table_age 实现中的错误(Andres Freund)

在已存在超过 vacuum_freeze_min_age 个事务的安装中,这一失误使自动清理无法使用部分表扫描,而总是进行全表扫描。

关联记录(2)

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

其他改进防止 RowExpr 或 XmlExpr 被二次解析分析时的不当行为

变更

防止 RowExpr 或 XmlExpr 被二次解析分析时的不当行为(Andres Freund、Tom Lane)

这一失误在 CREATE TABLE LIKE INCLUDING INDEXES 等上下文中可能被用户看到。

关联记录(2)

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

其他改进增强对哈希表大小计算中整数溢出的防御

变更

增强对哈希表大小计算中整数溢出的防御(Jeff Davis)

关联记录(2)

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

BUG 修复修复服务器崩溃后未能忽略遗留临时表的问题

变更

修复服务器崩溃后未能忽略遗留临时表的问题(Tom Lane)

关联记录(1)

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

其他改进拒绝 to_date() 中超出范围的日期

变更

拒绝 to_date() 中超出范围的日期(Hitoshi Harada)

关联记录(2)

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

BUG 修复修复 pg_extension_config_dump(),使其正确处理扩展更新情况

变更

修复 pg_extension_config_dump(),使其正确处理扩展更新情况(Tom Lane)

该函数现在会替换目标表的任何现有条目,使其可以在扩展更新脚本中使用。

关联记录(1)

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

BUG 修复修复 PL/Python 对用作多个表上触发器的函数的处理

变更

修复 PL/Python 对用作多个表上触发器的函数的处理(Andres Freund)

关联记录(1)

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

BUG 修复确保在 Windows 上非 ASCII 提示符字符串被转换到正确的代码页

变更

确保在 Windows 上非 ASCII 提示符字符串被转换到正确的代码页(Alexander Law、Noah Misch)

这一缺陷影响 psql 和其他一些客户端程序。

关联记录(2)

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

BUG 修复修复未连接数据库时 psql 的 \? 命令可能崩溃的问题

变更

修复未连接数据库时 psql 的 \? 命令可能崩溃的问题(Meng Qingzhong)

关联记录(2)

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

BUG 修复修复 pg_basebackup 运行期间关系文件被删除时可能出错的问题

变更

修复 pg_basebackup 运行期间关系文件被删除时可能出错的问题(Heikki Linnakangas)

关联记录(1)

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

其他改进让 pg_dump 在热备服务器上运行时排除不记录日志的表的数据

变更

让 pg_dump 在热备服务器上运行时排除不记录日志的表的数据(Magnus Hagander)

由于数据在备库服务器上不可用,这本来就会失败,因此最方便的做法似乎是自动假定 --no-unlogged-table-data。

关联记录(1)

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

BUG 修复修复 pg_upgrade,使其安全处理无效索引

变更

修复 pg_upgrade,使其安全处理无效索引(Bruce Momjian)

关联记录(2)

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

BUG 修复修复 libpq 的 PQprintTuples 中的一字节缓冲区越界

变更

修复 libpq 的 PQprintTuples 中的一字节缓冲区越界(Xi Wang)

这个古老的函数没有被 PostgreSQL 本身在任何地方使用,但仍可能被某些客户端代码使用。

关联记录(2)

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

其他改进让 ecpglib 正确使用翻译后的消息

变更

让 ecpglib 正确使用翻译后的消息(Chen Huajun)

关联记录(2)

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

其他改进在 MSVC 上正确安装 ecpg_compat 和 pgtypes 库

变更

在 MSVC 上正确安装 ecpg_compat 和 pgtypes 库(Jiang Guiqing)

关联记录(2)

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

其他改进如果系统未提供 isinf(),则在 libecpg 中包含我们自己的版本

变更

如果系统未提供 isinf(),则在 libecpg 中包含我们自己的版本(Jiang Guiqing)

关联记录(2)

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

其他改进重新排列 configure 对系统提供函数的测试,使其不被 libedit/libreadline 的虚假导出所欺骗

变更

重新排列 configure 对系统提供函数的测试,使其不被 libedit/libreadline 的虚假导出所欺骗(Christoph Berg)

关联记录(2)

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

其他改进确保 Windows 构建号随时间递增

变更

确保 Windows 构建号随时间递增(Magnus Hagander)

关联记录(2)

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

其他改进让 pgxs 在为 Windows 交叉编译时以正确的 .exe 后缀构建可执行文件

变更

让 pgxs 在为 Windows 交叉编译时以正确的 .exe 后缀构建可执行文件(Zoltan Boszormenyi)

关联记录(2)

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

其他改进新增时区缩写 FET

变更

新增时区缩写 FET(Tom Lane)

它现在用于一些东欧时区。

关联记录(2)

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

PostgreSQL 9.1.7

升级与兼容性说明

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

不过,如果你是从早于 9.1.6 的版本升级,请参见第 E.19 节。

BUG 修复修复与 CREATE INDEX CONCURRENTLY 相关的多个缺陷

变更

修复与 CREATE INDEX CONCURRENTLY 相关的多个缺陷(Andres Freund、Tom Lane)

修复 CREATE INDEX CONCURRENTLY,使其在更改索引 pg_index 行的状态时使用就地更新。这防止了可能导致并发会话错过更新目标索引(从而产生损坏的并发创建索引)的竞态条件。

另外,修复各种其他操作,确保它们忽略由失败的 CREATE INDEX CONCURRENTLY 命令产生的无效索引。其中最重要的是 VACUUM,因为在采取纠正措施修复或删除无效索引之前,很容易就有自动清理在该表上启动。

关联记录(1)

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

BUG 修复修复 WAL 重放期间的缓冲区锁定

变更

修复 WAL 重放期间的缓冲区锁定(Tom Lane)

WAL 重放代码在重放影响多个页面的 WAL 记录时,对缓冲区加锁不够谨慎。这可能导致热备查询瞬时看到不一致的状态,造成错误结果或意外失败。

关联记录(2)

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

BUG 修复修复 GIN 索引 WAL 生成逻辑中的一个错误

变更

修复 GIN 索引 WAL 生成逻辑中的一个错误(Tom Lane)

如果发生残缺页故障,这可能导致索引损坏。

关联记录(2)

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

其他改进把热备服务器提升为正常运行时,正确移除启动进程的虚拟 XID 锁

变更

把热备服务器提升为正常运行时,正确移除启动进程的虚拟 XID 锁(Simon Riggs)

这一疏忽可能阻止后续执行某些操作,例如 CREATE INDEX CONCURRENTLY。

关联记录(2)

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

其他改进避免备库模式下虚假的 “out-of-sequence timeline ID” 错误

变更

避免备库模式下虚假的 “out-of-sequence timeline ID” 错误(Heikki Linnakangas)

关联记录(2)

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

其他改进防止 postmaster 在收到关闭信号后继续启动新的子进程

变更

防止 postmaster 在收到关闭信号后继续启动新的子进程(Tom Lane)

这一失误可能导致关闭耗时比应有的更长,甚至在没有额外用户操作的情况下永远无法完成。

关联记录(2)

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

BUG 修复避免内存不足时内部哈希表损坏

变更

避免内存不足时内部哈希表损坏(Hitoshi Harada)

关联记录(2)

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

其他改进防止已删除表的文件描述符在事务结束之后仍保持打开

变更

防止已删除表的文件描述符在事务结束之后仍保持打开(Tom Lane)

这应能减少早已删除的表继续占用磁盘空间的问题。

关联记录(1)

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

BUG 修复防止当新子进程无法为其闩锁创建管道时整个数据库崩溃并重启

变更

防止当新子进程无法为其闩锁创建管道时整个数据库崩溃并重启(Tom Lane)

虽然新进程必须失败,但没有充分理由强制整个数据库重启,因此避免这样做。这提高了内核文件描述符几乎耗尽时的健壮性。

关联记录(1)

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

BUG 修复修复外连接之上非严格等值子句的规划

变更

修复外连接之上非严格等值子句的规划(Tom Lane)

规划器可能从把非严格构造与别的值等同的子句中推导出错误的约束,例如当 foo 来自外连接的可空侧时的 WHERE COALESCE(foo, 0) = 0。

关联记录(1)

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

BUG 修复修复在继承树上对索引优化的 MIN/MAX 使用 SELECT DISTINCT 的问题

变更

修复在继承树上对索引优化的 MIN/MAX 使用 SELECT DISTINCT 的问题(Tom Lane)

在这种因素组合下,规划器会报 “failed to re-find MinMaxAggInfo record” 失败。

关联记录(1)

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

其他改进改进规划器从等价类证明排他约束的能力

变更

改进规划器从等价类证明排他约束的能力(Tom Lane)

关联记录(2)

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

BUG 修复修复哈希子计划中的部分行匹配,使其正确处理跨类型情况

变更

修复哈希子计划中的部分行匹配,使其正确处理跨类型情况(Tom Lane)

这影响多列 NOT IN 子计划,例如 WHERE (a, b) NOT IN (SELECT x, y FROM ...),当 b 和 y 分别是 int4 和 int8 时。根据所涉及的具体数据类型,这一失误会导致错误答案或崩溃。

关联记录(2)

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

其他改进在为 AFTER ROW UPDATE/DELETE 触发器重新获取旧元组时获取缓冲区锁

变更

在为 AFTER ROW UPDATE/DELETE 触发器重新获取旧元组时获取缓冲区锁(Andres Freund)

在非常罕见的情况下,这一疏忽可能导致向触发器 WHEN 条件或外键强制触发器的预检查逻辑传递不正确的数据。这可能导致崩溃,或者在是否触发触发器上做出错误决定。

关联记录(1)

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

BUG 修复修复ALTER COLUMN TYPE以正确重建继承的检查约束

变更

修复ALTER COLUMN TYPE以正确重建继承的检查约束(Tom Lane)

这在 8.4 之前的版本中工作正常,现在在 8.4 及更高版本中也工作正常。

关联记录(2)

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

BUG 修复修复 ALTER EXTENSION SET SCHEMA 未能把一些从属对象移入新模式的问题

变更

修复 ALTER EXTENSION SET SCHEMA 未能把一些从属对象移入新模式的问题(Álvaro Herrera、Dimitri Fontaine)

关联记录(1)

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

BUG 修复修复 REASSIGN OWNED 对表空间授权的处理

变更

修复 REASSIGN OWNED 对表空间授权的处理(Álvaro Herrera)

关联记录(2)

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

其他改进忽略视图中系统列的不正确 pg_attribute 条目

变更

忽略视图中系统列的不正确 pg_attribute 条目(Tom Lane)

视图没有任何系统列。然而,我们在把表转换为视图时忘记移除这类条目。这一问题在 9.3 及更高版本中已正确修复,但在以前的分支中,我们需要防御已经错误转换的视图。

关联记录(2)

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

BUG 修复修复规则打印,使其正确转储 INSERT INTO table DEFAULT VALUES

变更

修复规则打印,使其正确转储 INSERT INTO table DEFAULT VALUES(Tom Lane)

关联记录(2)

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

其他改进防止当查询中有过多 UNION/INTERSECT/EXCEPT 子句时栈溢出

变更

防止当查询中有过多 UNION/INTERSECT/EXCEPT 子句时栈溢出(Tom Lane)

关联记录(2)

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

其他改进防止用最小可能整数值除以 -1 时依赖平台的失败

变更

防止用最小可能整数值除以 -1 时依赖平台的失败(Xi Wang、Tom Lane)

关联记录(2)

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

BUG 修复修复日期解析中可能越过字符串末尾的访问

变更

修复日期解析中可能越过字符串末尾的访问(Hitoshi Harada)

关联记录(2)

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

BUG 修复修复当 XID 回卷发生在检查点期间且 wal_level 为 hot_standby 时 XID 纪元(epoch)未能推进的问题

变更

修复当 XID 回卷发生在检查点期间且 wal_level 为 hot_standby 时 XID 纪元(epoch)未能推进的问题(Tom Lane、Andres Freund)

虽然这一失误对 PostgreSQL 本身没有特别影响,但它对依赖 txid_current() 及相关函数的应用不利:TXID 值看起来会倒退。

关联记录(2)

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

BUG 修复修复 pg_stat_replication.sync_state 在页边界处的显示

变更

修复 pg_stat_replication.sync_state 在页边界处的显示(Kyotaro Horiguchi)

关联记录(1)

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

其他改进当 Unix 域套接字的路径名长度超过平台特定限制时,生成可理解的错误消息

变更

当 Unix 域套接字的路径名长度超过平台特定限制时,生成可理解的错误消息(Tom Lane、Andrew Dunstan)

此前这会导致相当无用的结果,例如 “Non-recoverable failure in name resolution”。

关联记录(2)

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

BUG 修复修复向客户端发送组合列值时的内存泄漏

变更

修复向客户端发送组合列值时的内存泄漏(Tom Lane)

关联记录(2)

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

其他改进使 pg_ctl 读取 postmaster.pid 文件更健壮

变更

使 pg_ctl 读取 postmaster.pid 文件更健壮(Heikki Linnakangas)

这修复了竞态条件和可能的文件描述符泄漏。

关联记录(1)

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

BUG 修复修复当呈现错误编码的数据且 client_encoding 设置为仅客户端编码(如 SJIS)时 psql 可能崩溃的问题

变更

修复当呈现错误编码的数据且 client_encoding 设置为仅客户端编码(如 SJIS)时 psql 可能崩溃的问题(Jiang Guiqing)

关联记录(2)

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

其他改进让 pg_dump 把 SEQUENCE SET 项转储到归档的数据节而不是前数据节

变更

让 pg_dump 把 SEQUENCE SET 项转储到归档的数据节而不是前数据节(Tom Lane)

此变更修复了被标记为扩展配置表的序列的转储。

BUG 修复修复 pg_dump 以 tar 输出格式生成的 restore.sql 脚本中的缺陷

变更

修复 pg_dump 以 tar 输出格式生成的 restore.sql 脚本中的缺陷(Tom Lane)

该脚本在表名包含大写字符时会直接失败。此外,让该脚本既能以常规 COPY 模式也能以 --inserts 模式恢复数据。

关联记录(2)

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

BUG 修复修复 pg_restore,使其接受符合 POSIX 的 tar 文件

变更

修复 pg_restore,使其接受符合 POSIX 的 tar 文件(Brian Weaver、Tom Lane)

pg_dump 的 tar 输出模式的原始编码生成的文件并不完全符合 POSIX 标准。这在 9.3 版本中已得到纠正。此补丁更新了以前的分支,使它们同时接受错误格式和纠正后的格式,希望借此避免 9.3 发布时的兼容性问题。

关联记录(2)

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

BUG 修复修复 pg_basebackup 生成的 tar 文件,使其符合 POSIX

变更

修复 pg_basebackup 生成的 tar 文件,使其符合 POSIX(Brian Weaver、Tom Lane)

关联记录(1)

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

BUG 修复修复 pg_resetxlog,使其在给定数据目录相对路径时正确定位 postmaster.pid

变更

修复 pg_resetxlog,使其在给定数据目录相对路径时正确定位 postmaster.pid(Tom Lane)

这一失误可能导致 pg_resetxlog 没有注意到有活动 postmaster 正在使用该数据目录。

关联记录(2)

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

BUG 修复修复 libpq 的 lo_import() 和 lo_export() 函数,使其正确报告文件 I/O 错误

变更

修复 libpq 的 lo_import() 和 lo_export() 函数,使其正确报告文件 I/O 错误(Tom Lane)

关联记录(2)

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

BUG 修复修复 ecpg 对嵌套结构指针变量的处理

变更

修复 ecpg 对嵌套结构指针变量的处理(Muhammad Usama)

关联记录(2)

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

BUG 修复修复 ecpg 的 ecpg_get_data 函数,使其正确处理数组

变更

修复 ecpg 的 ecpg_get_data 函数,使其正确处理数组(Michael Meskes)

关联记录(2)

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

其他改进让 contrib/pageinspect 的 btree 页面检查函数在检查页面时持有缓冲区锁

变更

让 contrib/pageinspect 的 btree 页面检查函数在检查页面时持有缓冲区锁(Tom Lane)

关联记录(2)

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

其他改进确保扩展的 make install 会创建 extension 安装目录

变更

确保扩展的 make install 会创建 extension 安装目录(Cédric Villemain)

此前,如果扩展的 Makefile 设置了 MODULEDIR,就会漏掉这一步。

关联记录(1)

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

BUG 修复修复 pgxs 在 AIX 上构建可加载模块的支持

变更

修复 pgxs 在 AIX 上构建可加载模块的支持(Tom Lane)

在原始源码树之外构建模块在 AIX 上不工作。

关联记录(2)

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

其他改进把时区数据文件更新为 tzdata 版本 2012j for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa, and portions of Brazil。

变更

把时区数据文件更新为 tzdata 版本 2012j for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa, and portions of Brazil。

关联记录(2)

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

PostgreSQL 9.1.6

升级与兼容性说明

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

不过,你可能需要执行 REINDEX 操作,以从下面第一条变更日志条目所述的数据损坏缺陷的影响中恢复。

不过,如果你是从早于 9.1.4 的版本升级,请参见第 E.21 节。

BUG 修复修复 WAL 重放期间共享缓冲区的持久性标记

变更

修复 WAL 重放期间共享缓冲区的持久性标记(Jeff Davis)

这一失误可能导致缓冲区在检查点期间未被写出,如果服务器之后在这些缓冲区从未写出的情况下崩溃,就会造成数据损坏。任何服务器在崩溃恢复之后都可能发生损坏,但在备库从库服务器上发生的可能性显著更高,因为它们执行多得多的 WAL 重放。btree 和 GIN 索引损坏的概率较低。表“可见性映射”损坏的概率要高得多。幸运的是,可见性映射在 9.1 中不是关键数据,因此这种损坏在 9.1 安装中最坏的后果只是清理的瞬时低效。表数据本身不会因此缺陷损坏。

虽然尚无此缺陷导致的索引损坏在实际环境中发生的已知案例,但作为预防措施,建议生产安装在升级到 9.1.6 后的方便时间对所有 btree 和 GIN 索引执行 REINDEX。

此外,如果你打算就地升级到 9.2.X,建议在升级之前在把 vacuum_freeze_table_age 设为零的情况下对所有表执行 VACUUM。这将确保可见性映射中任何残留的错误数据在 9.2.X 依赖它之前被纠正。可以调整 vacuum_cost_delay 来降低清理的性能影响,代价是需要更长时间完成。

BUG 修复修复规划器对执行器参数的分配,并修复执行器对 CTE 计划节点的重新扫描逻辑

变更

修复规划器对执行器参数的分配,并修复执行器对 CTE 计划节点的重新扫描逻辑(Tom Lane)

这些错误可能导致多次扫描同一 WITH 子查询的查询给出错误答案。

关联记录(1)

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

BUG 修复修复把 default_transaction_isolation 设为 serializable 时的不当行为

变更

修复把 default_transaction_isolation 设为 serializable 时的不当行为(Kevin Grittner、Tom Lane、Heikki Linnakangas)

症状包括 Windows 上进程启动时崩溃,以及热备操作中崩溃。

其他改进改进对涉及前缀(即 word:* 模式)的文本搜索查询的选择率估计

变更

改进对涉及前缀(即 word:* 模式)的文本搜索查询的选择率估计(Tom Lane)

关联记录(1)

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

其他改进改进 GiST 索引的页面分裂决策

变更

改进 GiST 索引的页面分裂决策(Alexander Korotkov、Robert Haas、Tom Lane)

多列 GiST 索引可能因此错误而遭受意外膨胀。

关联记录(1)

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

BUG 修复修复级联权限撤销,使其在权限仍被持有时停止

变更

修复级联权限撤销,使其在权限仍被持有时停止(Tom Lane)

如果我们撤销某个角色 X 的授予选项,但 X 仍通过别人的授予持有该选项,我们就不应从 X 曾授予该权限的角色 Y 那里递归撤销相应权限。

关联记录(1)

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

其他改进不允许扩展包含被指派给它的模式

变更

不允许扩展包含被指派给它的模式(Thom Brown)

这种情况会造成循环依赖,使 pg_dump 及可能的其他东西困惑。它对人类也容易造成困惑,因此予以禁止。

其他改进改进热备配置错误的错误消息

变更

改进热备配置错误的错误消息(Gurjeet Singh)

关联记录(1)

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

其他改进让 configure 探测 mbstowcs_l

变更

让 configure 探测 mbstowcs_l(Tom Lane)

这修复了某些 AIX 版本上的构建失败。

BUG 修复修复使用 PL/Perl 时对 SIGFPE 的处理

变更

修复使用 PL/Perl 时对 SIGFPE 的处理(Andres Freund)

Perl 会把进程的 SIGFPE 处理程序重置为 SIG_IGN,这可能导致之后崩溃。在初始化 PL/Perl 之后恢复正常的 Postgres 信号处理程序。

关联记录(1)

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

BUG 修复防止递归 PL/Perl 函数在执行期间被重定义时 PL/Perl 崩溃

变更

防止递归 PL/Perl 函数在执行期间被重定义时 PL/Perl 崩溃(Tom Lane)

关联记录(2)

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

其他改进规避 PL/Perl 中可能的错误优化

变更

规避 PL/Perl 中可能的错误优化(Tom Lane)

一些 Linux 发行版包含错误版本的 pthread.h,导致 PL/Perl 中的编译代码不正确,当一个 PL/Perl 函数调用另一个会抛出错误的函数时会导致崩溃。

关联记录(2)

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

BUG 修复修复 contrib/pg_trgm 的 LIKE 模式分析代码中的缺陷

变更

修复 contrib/pg_trgm 的 LIKE 模式分析代码中的缺陷(Fujii Masao)

如果模式包含 LIKE 转义字符,使用三元组索引的 LIKE 查询可能产生错误结果。

BUG 修复修复 pg_upgrade 在 Windows 上对行尾的处理

变更

修复 pg_upgrade 在 Windows 上对行尾的处理(Andrew Dunstan)

此前,pg_upgrade 可能在函数体等地方添加或删除回车符。

关联记录(1)

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

其他改进在 Windows 上,让 pg_upgrade 在其生成的脚本中使用反斜杠路径分隔符

变更

在 Windows 上,让 pg_upgrade 在其生成的脚本中使用反斜杠路径分隔符(Andrew Dunstan)

关联记录(1)

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

其他改进移除 pg_upgrade 对 pg_config 的不必要依赖

变更

移除 pg_upgrade 对 pg_config 的不必要依赖(Peter Eisentraut)

关联记录(1)

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

其他改进把时区数据文件更新为 tzdata 版本 2014e,以反映克里米亚、埃及和摩洛哥的夏令时法规变更。

变更

把时区数据文件更新为 tzdata 版本 2014e,以反映克里米亚、埃及和摩洛哥的夏令时法规变更。

关联记录(2)

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

PostgreSQL 9.1.5

升级与兼容性说明

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

不过,如果你是从早于 9.1.4 的版本升级,请参见第 E.21 节。

安全相关防止通过 XML 实体引用访问外部文件/URL

变更

防止通过 XML 实体引用访问外部文件/URL(Noah Misch、Tom Lane)

xml_parse() 会尝试按需获取外部文件或 URL 来解析 XML 值中的 DTD 和实体引用,从而使无特权数据库用户能够尝试以数据库服务器的权限获取数据。虽然外部数据不会直接返回给用户,但如果数据不能解析为有效 XML,其部分内容可能暴露在错误消息中;而且无论如何,仅仅能够检查文件是否存在对攻击者就可能有用。(CVE-2012-3489)

关联记录(1)

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

安全相关防止通过 contrib/xml2 的 xslt_process() 访问外部文件/URL

变更

防止通过 contrib/xml2 的 xslt_process() 访问外部文件/URL(Peter Eisentraut)

libxslt 提供通过样式表命令读写文件和 URL 的能力,从而使无特权数据库用户能够以数据库服务器的权限读写数据。现通过正确使用 libxslt 的安全选项禁用该能力。(CVE-2012-3488)

此外,移除了 xslt_process() 从外部文件/URL 获取文档和样式表的能力。虽然这是一个有记载的“特性”,但长期以来被认为是个坏主意。CVE-2012-3489 的修复破坏了该能力,与其花费精力修复它,我们干脆将其移除。

关联记录(1)

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

其他改进防止 btree 索引页被过早回收

变更

防止 btree 索引页被过早回收(Noah Misch)

当我们允许只读事务跳过分配 XID 时,引入了已删除 btree 页在只读事务仍在访问它时就被回收的可能性。这会导致错误的索引搜索结果。由于时序要求,这种错误在实际中发生的概率似乎很低,但仍应修复。

关联记录(1)

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

BUG 修复修复新创建或重置序列的崩溃安全缺陷

变更

修复新创建或重置序列的崩溃安全缺陷(Tom Lane)

如果在新创建或重置的序列上执行了 ALTER SEQUENCE,然后恰好对它调用了一次 nextval(),随后服务器崩溃,WAL 重放会把序列恢复到看起来没有执行过 nextval() 的状态,从而使下一个 nextval() 调用再次返回第一个序列值。这种情况尤其可能出现在 serial 列上,因为创建 serial 列的序列包含一个 ALTER SEQUENCE OWNED BY 步骤。

关联记录(1)

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

BUG 修复修复 enum 类型值比较中的竞态条件

变更

修复 enum 类型值比较中的竞态条件(Robert Haas、Tom Lane)

当遇到当前查询启动之后添加的枚举值时,比较可能失败。

BUG 修复修复 txid_current(),使其在非热备下报告正确的纪元(epoch)

变更

修复 txid_current(),使其在非热备下报告正确的纪元(epoch)(Heikki Linnakangas)

这修复了上一个小版本引入的退化。

关联记录(1)

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

其他改进防止选择不合适的复制连接作为同步备库

变更

防止选择不合适的复制连接作为同步备库(Fujii Masao)

主库可能不当地选择 pg_receivexlog 或 pg_basebackup 等伪服务器作为同步备库,然后无限期等待它们。

BUG 修复修复主库事务有大量子事务时热备启动的缺陷

变更

修复主库事务有大量子事务时热备启动的缺陷(Andres Freund)

这一失误导致报告为 “out-of-order XID insertion in KnownAssignedXids” 的失败。

关联记录(1)

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

其他改进确保 pg_start_backup() 之后对 backup_label 文件执行 fsync

变更

确保 pg_start_backup() 之后对 backup_label 文件执行 fsync(Dave Kerr)

关联记录(1)

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

BUG 修复修复 walsender 进程中的超时处理

变更

修复 walsender 进程中的超时处理(Tom Lane)

WAL 发送端后台进程疏于建立 SIGALRM 处理程序,这意味着在某些应发生超时的极端情况下它们会永远等待。

关联记录(1)

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

其他改进在 walwriter 每次后台刷写之后唤醒 walsender

变更

在 walwriter 每次后台刷写之后唤醒 walsender(Andres Freund、Simon Riggs)

当负载只包含异步提交的事务时,这能大幅减少复制延迟。

BUG 修复修复 LISTEN/NOTIFY,使其更好地应对 I/O 问题(例如磁盘空间耗尽)

变更

修复 LISTEN/NOTIFY,使其更好地应对 I/O 问题(例如磁盘空间耗尽)(Tom Lane)

写入失败之后,所有后续发送更多 NOTIFY 消息的尝试都会失败,并显示诸如 “Could not read from file "pg_notify/nnnn" at offset nnnnn: Success” 的消息。

关联记录(1)

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

其他改进只允许被直接阻塞的进程自动取消自动清理

变更

只允许被直接阻塞的进程自动取消自动清理(Tom Lane)

原始编码在某些情况下可能允许不一致的行为;特别是自动清理可能在不足 deadlock_timeout 宽限期之后就被取消。

关联记录(1)

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

其他改进改进自动清理取消的日志记录

变更

改进自动清理取消的日志记录(Robert Haas)

关联记录(1)

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

BUG 修复修复日志收集器,使 log_truncate_on_rotation 在服务器启动后的第一次日志轮转期间就能工作

变更

修复日志收集器,使 log_truncate_on_rotation 在服务器启动后的第一次日志轮转期间就能工作(Tom Lane)

关联记录(1)

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

BUG 修复修复附加到嵌套集合操作(UNION/INTERSECT/EXCEPT)上的 WITH

变更

修复附加到嵌套集合操作(UNION/INTERSECT/EXCEPT)上的 WITH(Tom Lane)

关联记录(1)

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

其他改进确保对子查询的整行引用不包含任何多余的 GROUP BY 或 ORDER BY 列

变更

确保对子查询的整行引用不包含任何多余的 GROUP BY 或 ORDER BY 列(Tom Lane)

关联记录(1)

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

BUG 修复修复 ALTER TABLE ... ADD CONSTRAINT USING INDEX 期间生成的依赖

变更

修复 ALTER TABLE ... ADD CONSTRAINT USING INDEX 期间生成的依赖(Tom Lane)

该命令为索引留下了一个多余的 pg_depend 条目,可能干扰后续操作,尤其是对被索引列之一的 ALTER TABLE ... ALTER COLUMN TYPE。

BUG 修复修复 REASSIGN OWNED,使其能用于扩展

变更

修复 REASSIGN OWNED,使其能用于扩展(Alvaro Herrera)

其他改进禁止在 CREATE TABLE 期间复制 CHECK 约束和索引定义中的整行引用

变更

禁止在 CREATE TABLE 期间复制 CHECK 约束和索引定义中的整行引用(Tom Lane)

这种情况可能出现在带 LIKE 或 INHERITS 的 CREATE TABLE 中。被复制的整行变量被错误地标记为原表而不是新表的行类型。对 LIKE 拒绝这种情况似乎是合理的,因为行类型之后很可能分化。对 INHERITS,理想情况下应该允许它,并隐式强制转换为父表的行类型;但这需要的工作量超出了回移植的安全范围。

关联记录(1)

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

BUG 修复修复 ARRAY(SELECT ...) 子查询中的内存泄漏

变更

修复 ARRAY(SELECT ...) 子查询中的内存泄漏(Heikki Linnakangas、Tom Lane)

关联记录(1)

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

BUG 修复修复规划器,使其向操作符选择率估计器传递正确的排序规则

变更

修复规划器,使其向操作符选择率估计器传递正确的排序规则(Tom Lane)

此前任何核心选择率估计函数都不需要它,但第三方代码可能需要。

BUG 修复修复从正则表达式中提取公共前缀的问题

变更

修复从正则表达式中提取公共前缀的问题(Tom Lane)

代码可能被带量词的带括号子表达式(例如 ^(foo)?bar)混淆。这会导致对此类模式搜索的索引优化不正确。

关联记录(1)

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

BUG 修复修复解析 interval 常量中带符号的 hh:mm 和 hh:mm:ss 字段的缺陷

变更

修复解析 interval 常量中带符号的 hh:mm 和 hh:mm:ss 字段的缺陷(Amit Kapila、Tom Lane)

关联记录(1)

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

BUG 修复修复 pg_dump,使其更好地处理包含部分 GROUP BY 列表的视图

变更

修复 pg_dump,使其更好地处理包含部分 GROUP BY 列表的视图(Tom Lane)

只在 GROUP BY 中列出主键列、却把其他表列当作已分组的视图,会被标记为依赖于该主键。pg_dump 对这类主键依赖处理不当会导致转储顺序不佳,往好里说恢复效率低下,往坏里说可能导致并行 pg_restore 彻底失败。

其他改进在 PL/Perl 中,避免在 SQL_ASCII 编码下设置 UTF8 标志

变更

在 PL/Perl 中,避免在 SQL_ASCII 编码下设置 UTF8 标志(Alex Hunsaker、Kyotaro Horiguchi、Alvaro Herrera)

其他改进在 PL/Python 中把 Python Unicode 字符串转换为服务器编码时,使用 Postgres 而不是 Python 的编码转换函数

变更

在 PL/Python 中把 Python Unicode 字符串转换为服务器编码时,使用 Postgres 而不是 Python 的编码转换函数(Jan Urbanski)

这避免了一些极端情况的问题,尤其是 Python 并不支持 Postgres 的所有编码。一个显著的功能变化是:如果服务器编码是 SQL_ASCII,你将得到该字符串的 UTF-8 表示;此前字符串中的任何非 ASCII 字符都会导致错误。

关联记录(1)

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

BUG 修复修复 PL/Python 中 PostgreSQL 编码到 Python 编码的映射

变更

修复 PL/Python 中 PostgreSQL 编码到 Python 编码的映射(Jan Urbanski)

关联记录(1)

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

其他改进修复 contrib/xml2 的 xslt_process() 中的错误报告

变更

修复 contrib/xml2 的 xslt_process() 中的错误报告(Tom Lane)

关联记录(1)

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

其他改进把时区数据文件更新为 tzdata 版本 2012e,以反映摩洛哥和托克劳的夏令时法规变更

变更

把时区数据文件更新为 tzdata 版本 2012e,以反映摩洛哥和托克劳的夏令时法规变更

关联记录(1)

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

PostgreSQL 9.1.4

升级与兼容性说明

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

不过,如果你使用 citext 数据类型,并且是通过运行 pg_upgrade 从前一个大版本升级的,应执行 CREATE EXTENSION citext FROM unpackaged,以避免 citext 操作中与排序规则相关的失败。如果恢复来自包含 citext 数据类型的 9.1 之前数据库的转储,也需要这样做。如果你在升级到 9.1.4 之前已经运行过 CREATE EXTENSION 命令,则需要按下面第三条变更日志条目的说明手工更新系统目录。

不过,如果你是从早于 9.1.2 的版本升级,请参见第 E.23 节。

安全相关修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换

变更

修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换(Solar Designer)

如果口令串包含字节值 0x80,口令的其余部分会被忽略,使口令比看起来弱得多。修复后,字符串的其余部分会被正确纳入 DES 哈希。因此,受此缺陷影响的任何已存储口令值将不再匹配,所以可能需要更新已存储的值。(CVE-2012-2143)

关联记录(1)

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

安全相关忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性

变更

忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性(Tom Lane)

把这类属性应用于调用处理程序可能导致服务器崩溃。(CVE-2012-2655)

关联记录(1)

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

BUG 修复让 contrib/citext 的升级脚本修复 citext 数组以及 citext 之上的域的排序规则

变更

让 contrib/citext 的升级脚本修复 citext 数组以及 citext 之上的域的排序规则(Tom Lane)

9.1.2 提供了对从 9.1 之前安装升级或重载的数据库中 citext 列和索引排序规则的修复,但该修复不完整:它遗漏了对数组以及 citext 之上的域的处理。本版本扩展了该模块的升级脚本以处理这些情况。和以前一样,如果你已经运行过升级脚本,则需要改为手工运行排序规则更新命令。具体做法参见 9.1.2 发行说明。

其他改进允许 timestamp 输入中的数字时区偏移距 UTC 最多 16 小时

变更

允许 timestamp 输入中的数字时区偏移距 UTC 最多 16 小时(Tom Lane)

一些历史时区的偏移超过此前 15 小时的限制。这可能导致转储的数据值在重载期间被拒绝。

关联记录(1)

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

BUG 修复修复时间戳转换,使其在给定时间恰好是当前时区最后一次夏令时转换时间时能正确处理

变更

修复时间戳转换,使其在给定时间恰好是当前时区最后一次夏令时转换时间时能正确处理(Tom Lane)

这一疏忽已存在很长时间,但此前未被注意到,因为大多数使用夏令时的时区被假定有无限的未来夏令时转换序列。

关联记录(1)

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

BUG 修复修复 text 到 name 以及 char 到 name 的转换,使其在多字节编码下正确执行字符串截断

变更

修复 text 到 name 以及 char 到 name 的转换,使其在多字节编码下正确执行字符串截断(Karl Schnaitter)

关联记录(1)

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

BUG 修复修复 to_tsquery() 中的内存复制缺陷

变更

修复 to_tsquery() 中的内存复制缺陷(Heikki Linnakangas)

关联记录(1)

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

BUG 修复确保 txid_current() 在热备中执行时报告正确的纪元(epoch)

变更

确保 txid_current() 在热备中执行时报告正确的纪元(epoch)(Simon Riggs)

关联记录(1)

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

BUG 修复修复规划器对子查询内外层 PlaceHolderVar 的处理

变更

修复规划器对子查询内外层 PlaceHolderVar 的处理(Tom Lane)

该缺陷涉及引用来自外层查询外连接可空侧变量的子 SELECT。在 9.1 中,受此缺陷影响的查询会报 “ERROR: Upper-level PlaceHolderVar found where not expected” 失败。但在 9.0 和 8.4 中,你会静默地得到可能错误的答案,因为传入子查询的值不会在该为空时变为空。

关联记录(1)

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

BUG 修复修复输出列不是简单变量的 UNION ALL 子查询的规划

变更

修复输出列不是简单变量的 UNION ALL 子查询的规划(Tom Lane)

由于对 “MergeAppend child's targetlist doesn't match MergeAppend” 错误的一次误导性修复,这类情况的规划在 9.1 中明显变差。现已撤销该修复并改用其他方法。

BUG 修复修复 pg_attribute 非常大会话启动缓慢的问题

变更

修复 pg_attribute 非常大会话启动缓慢的问题(Tom Lane)

如果 pg_attribute 超过 shared_buffers 的四分之一,会话启动期间有时需要的缓存重建代码就会触发同步扫描逻辑,使其耗时比正常情况多数倍。如果许多新会话同时启动,问题尤为严重。

关联记录(1)

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

其他改进确保顺序扫描以合理的频率检查查询取消

变更

确保顺序扫描以合理的频率检查查询取消(Merlin Moncure)

遇到许多不含存活元组的连续页面的扫描在此期间不会响应中断。

关联记录(1)

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

其他改进确保 PGSemaphoreLock() 的 Windows 实现在返回前清除 ImmediateInterruptOK

变更

确保 PGSemaphoreLock() 的 Windows 实现在返回前清除 ImmediateInterruptOK(Tom Lane)

这一疏忽意味着同一查询稍后收到的查询取消中断可能在不安全的时刻被接受,后果不可预测且不好。

关联记录(1)

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

其他改进在打印视图或规则时安全地显示整行变量

变更

在打印视图或规则时安全地显示整行变量(Abbas Butt、Tom Lane)

涉及有歧义名称(即该名称既可能是查询的表名也可能是列名)的极端情况此前以有歧义的方式打印,存在视图或规则在转储和重载后被不同解释的风险。现通过附加无操作转换来避免歧义情况。

关联记录(1)

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

BUG 修复修复 COPY FROM,使其正确处理对应无效编码的空值标记串

变更

修复 COPY FROM,使其正确处理对应无效编码的空值标记串(Tom Lane)

诸如 E'\\0' 这样的空值标记串本应有效,过去也确实有效,但该情况在 8.4 中被破坏。

关联记录(1)

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

BUG 修复修复对包含 RETURNING 子句的可写 CTE 的 EXPLAIN VERBOSE

变更

修复对包含 RETURNING 子句的可写 CTE 的 EXPLAIN VERBOSE(Tom Lane)

BUG 修复修复 PREPARE TRANSACTION,使其在存在咨询锁时正确工作

变更

修复 PREPARE TRANSACTION,使其在存在咨询锁时正确工作(Tom Lane)

历史上,PREPARE TRANSACTION 只是忽略会话持有的任何会话级咨询锁,但这一情况在 9.1 中被意外破坏。

BUG 修复修复不记录日志的表的截断

变更

修复不记录日志的表的截断(Robert Haas)

其他改进在 search_path 的非交互式赋值期间忽略缺失的模式

变更

在 search_path 的非交互式赋值期间忽略缺失的模式(Tom Lane)

这使 9.1 的行为与较旧的分支重新一致。此前,9.1 会对来自 ALTER DATABASE SET 等处的 search_path 设置中提到的不存在模式抛出错误。

BUG 修复修复扩展脚本中所用临时表或瞬态表的缺陷

变更

修复扩展脚本中所用临时表或瞬态表的缺陷(Tom Lane)

这包括扩展更新脚本中的重写型 ALTER TABLE 等情况,因为它在后台使用了瞬态表。

其他改进确保自动清理工作进程正确执行栈深度检查

变更

确保自动清理工作进程正确执行栈深度检查(Heikki Linnakangas)

此前,由自动 ANALYZE 调用的函数中的无限递归可能导致工作进程崩溃。

关联记录(1)

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

BUG 修复修复日志收集器,使其在高负载下不丢失日志连贯性

变更

修复日志收集器,使其在高负载下不丢失日志连贯性(Andrew Dunstan)

此前,如果收集器过于忙碌,可能无法重新组装大消息。

关联记录(1)

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

BUG 修复修复日志收集器,确保它在收到 SIGHUP 后会重新开始文件轮转

变更

修复日志收集器,确保它在收到 SIGHUP 后会重新开始文件轮转(Tom Lane)

关联记录(1)

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

BUG 修复修复 GiST 索引中的 “too many LWLocks taken” 失败

变更

修复 GiST 索引中的 “too many LWLocks taken” 失败(Heikki Linnakangas)

BUG 修复修复 GIN 索引的 WAL 重放逻辑,使其在索引随后被删除时不失败

变更

修复 GIN 索引的 WAL 重放逻辑,使其在索引随后被删除时不失败(Tom Lane)

关联记录(1)

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

其他改进在崩溃后正确检测预备事务的 SSI 冲突

变更

在崩溃后正确检测预备事务的 SSI 冲突(Dan Ports)

其他改进提交只修改了临时表的事务时避免同步复制延迟

变更

提交只修改了临时表的事务时避免同步复制延迟(Heikki Linnakangas)

在这种情况下,事务的提交记录不需要刷到备库服务器,但部分代码不知道这一点,仍然等待它发生。

BUG 修复修复 pg_basebackup 中的错误处理

变更

修复 pg_basebackup 中的错误处理(Thomas Ogrisegg、Fujii Masao)

BUG 修复修复 walsender,使其在连接终止时不进入忙循环

变更

修复 walsender,使其在连接终止时不进入忙循环(Fujii Masao)

BUG 修复修复 PL/pgSQL 的 RETURN NEXT 命令中的内存泄漏

变更

修复 PL/pgSQL 的 RETURN NEXT 命令中的内存泄漏(Joe Conway)

关联记录(1)

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

BUG 修复修复 PL/pgSQL 的 GET DIAGNOSTICS 命令在目标是函数第一个变量时的问题

变更

修复 PL/pgSQL 的 GET DIAGNOSTICS 命令在目标是函数第一个变量时的问题(Tom Lane)

关联记录(1)

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

其他改进确保 PL/Perl 为 _TD 变量加上包限定

变更

确保 PL/Perl 为 _TD 变量加上包限定(Alex Hunsaker)

该缺陷导致触发器调用在嵌套于更改当前包的函数调用中时失败。

BUG 修复修复返回组合类型的 PL/Python 函数,使其接受字符串作为结果值

变更

修复返回组合类型的 PL/Python 函数,使其接受字符串作为结果值(Jan Urbanski)

这一情况被 9.1 中允许以其他格式(如字典)提供组合结果值的新增内容意外破坏。

BUG 修复修复 psql 扩展显示(\x)模式中可能越过内存末尾的访问

变更

修复 psql 扩展显示(\x)模式中可能越过内存末尾的访问(Peter Eisentraut)

关联记录(1)

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

BUG 修复修复数据库包含大量对象时 pg_dump 的若干性能问题

变更

修复数据库包含大量对象时 pg_dump 的若干性能问题(Jeff Janes、Tom Lane)

如果数据库包含许多模式、许多对象处于依赖循环中、或有许多被拥有的序列,pg_dump 可能变得非常慢。

关联记录(1)

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

BUG 修复修复 pg_restore 读取目录格式归档时的内存和文件描述符泄漏

变更

修复 pg_restore 读取目录格式归档时的内存和文件描述符泄漏(Peter Eisentraut)

BUG 修复修复 pg_upgrade 处理存储在非默认表空间的数据库包含集簇默认表空间中的表的情况

变更

修复 pg_upgrade 处理存储在非默认表空间的数据库包含集簇默认表空间中的表的情况(Bruce Momjian)

关联记录(1)

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

BUG 修复在 ecpg 中,修复罕见的内存泄漏以及 sqlca_t 结构之后一个字节可能被覆写的问题

变更

在 ecpg 中,修复罕见的内存泄漏以及 sqlca_t 结构之后一个字节可能被覆写的问题(Peter Eisentraut)

关联记录(1)

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

BUG 修复修复 contrib/dblink 的 dblink_exec(),使其在出错时不泄漏临时数据库连接

变更

修复 contrib/dblink 的 dblink_exec(),使其在出错时不泄漏临时数据库连接(Tom Lane)

关联记录(1)

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

BUG 修复修复 contrib/dblink,使其在错误消息中报告正确的连接名

变更

修复 contrib/dblink,使其在错误消息中报告正确的连接名(Kyotaro Horiguchi)

关联记录(1)

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

BUG 修复修复 contrib/vacuumlo,使其在删除许多大对象时使用多个事务

变更

修复 contrib/vacuumlo,使其在删除许多大对象时使用多个事务(Tim Lewis、Robert Haas、Tom Lane)

此变更避免了需要删除许多对象时超出 max_locks_per_transaction。该行为可以通过新的 -l(limit)选项调整。

关联记录(1)

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

其他改进把时区数据文件更新为 tzdata 版本 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada。

变更

把时区数据文件更新为 tzdata 版本 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada。

关联记录(1)

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

PostgreSQL 9.1.3

升级与兼容性说明

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

不过,如果你是从早于 9.1.2 的版本升级,请参见第 E.23 节。

安全相关让 CREATE TRIGGER 要求对触发器函数有执行权限

变更

让 CREATE TRIGGER 要求对触发器函数有执行权限(Robert Haas)

这一缺失的检查可能允许另一用户通过把触发器函数安装到自己拥有的表上,以伪造的输入数据执行该触发器函数。这只对标记为 SECURITY DEFINER 的触发器函数有影响,因为其他情况下触发器函数本来就以表所有者身份运行。(CVE-2012-0866)

关联记录(1)

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

安全相关移除 SSL 证书中通用名长度的任意限制

变更

移除 SSL 证书中通用名长度的任意限制(Heikki Linnakangas)

libpq 和服务器此前都会把从 SSL 证书提取的通用名截断到 32 字节。通常这最坏只会造成意外的验证失败,但在一些相当难以置信的场景下,它可能允许一个证书持有者冒充另一个。受害者必须恰好有 32 字节长的通用名,而攻击者必须说服受信任的 CA 颁发一个通用名以该字符串为前缀的证书。冒充服务器还需要额外的攻击手段来重定向客户端连接。(CVE-2012-0867)

关联记录(1)

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

安全相关把 pg_dump 注释中写入的名称里的换行符转换为空格

变更

把 pg_dump 注释中写入的名称里的换行符转换为空格(Robert Haas)

pg_dump 此前对其输出脚本中 SQL 注释内写出的对象名清理不慎。包含换行符的名称至少会使脚本语法错误。恶意构造的对象名可能在脚本重载时构成 SQL 注入风险。(CVE-2012-0868)

关联记录(1)

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

BUG 修复修复插入与清理并发导致 btree 索引损坏的问题

变更

修复插入与清理并发导致 btree 索引损坏的问题(Tom Lane)

插入导致的索引页分裂有时会使并发运行的 VACUUM 漏删本应删除的索引项。在相应的表行被删除后,悬空的索引项会导致错误(例如 “could not read block N in file ...”),或者更糟:当不相关的行被重新插入到现已空闲的表位置后,查询会静默地得到错误结果。该缺陷自 8.2 起就存在,但发生频率极低,直到现在才被诊断出来。如果你有理由怀疑它曾在你的数据库中发生,对受影响的索引重建索引即可修复。

关联记录(1)

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

BUG 修复修复 WAL 重放期间共享缓冲区的瞬时清零

变更

修复 WAL 重放期间共享缓冲区的瞬时清零(Tom Lane)

重放逻辑有时会把一个共享缓冲区清零再重新填充,使其内容瞬时无效。在热备模式下,这可能导致并行执行的查询看到垃圾数据。这可能引发各种症状,但最常见的好像是 “invalid memory alloc request size”。

关联记录(1)

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

BUG 修复修复 READ COMMITTED 重新检查中对修改数据的 WITH 子计划的处理

变更

修复 READ COMMITTED 重新检查中对修改数据的 WITH 子计划的处理(Tom Lane)

在 READ COMMITTED 模式下,如果父 UPDATE 或 DELETE 命令因并发更新而需要在一行或多行上重新求值,包含 INSERT/UPDATE/DELETE 的 WITH 子句就会崩溃。

BUG 修复修复 SSI 事务清理中的一个极端情况

变更

修复 SSI 事务清理中的一个极端情况(Dan Ports)

在结束一个读写可序列化事务时,如果其余所有活动的可序列化事务都是只读的,就可能发生崩溃。

BUG 修复修复 postmaster,使其在热备崩溃后尝试重启

变更

修复 postmaster,使其在热备崩溃后尝试重启(Tom Lane)

一个逻辑错误导致:如果有后端进程在热备模式下运行时崩溃,postmaster 会终止而不是尝试重启集簇。

关联记录(1)

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

BUG 修复修复 CLUSTER/VACUUM FULL 对最近更新的行所拥有的 toast 值的处理

变更

修复 CLUSTER/VACUUM FULL 对最近更新的行所拥有的 toast 值的处理(Tom Lane)

这一疏忽可能导致在这些命令之一执行期间,toast 表的索引报 “duplicate key value violates unique constraint” 错误。

关联记录(1)

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

其他改进更改表所有者时,不仅更新表级权限,也更新逐列权限

变更

更改表所有者时,不仅更新表级权限,也更新逐列权限(Tom Lane)

未做到这一点意味着,此前授予的所有列权限仍显示为由旧所有者授予。这导致新所有者和超级用户都无法撤销这些现在无法追溯到表所有者的权限。

关联记录(1)

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

其他改进在 REASSIGN OWNED 中支持外部数据包装器和外部服务器

变更

在 REASSIGN OWNED 中支持外部数据包装器和外部服务器(Alvaro Herrera)

如果该命令需要更改任何这类对象的所有权,会报 “unexpected classid” 错误。

关联记录(1)

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

其他改进允许 ALTER USER/DATABASE SET 中某些设置取不存在的值

变更

允许 ALTER USER/DATABASE SET 中某些设置取不存在的值(Heikki Linnakangas)

允许把 default_text_search_config、default_tablespace 和 temp_tablespaces 设为未知的名称。这是因为设置要在其中使用的另一个数据库中它们可能是已知的;对表空间的情况,则是因为表空间可能尚未创建。此前 search_path 已被认识到有同样的问题,这些设置现在的行为与它一致。

关联记录(1)

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

BUG 修复修复 INSERT 表达式中的 COLLATE 导致的 “unsupported node type” 错误

变更

修复 INSERT 表达式中的 COLLATE 导致的 “unsupported node type” 错误(Tom Lane)

BUG 修复避免在提交后删除表文件出现问题时崩溃

变更

避免在提交后删除表文件出现问题时崩溃(Tom Lane)

删除表应只在事务提交后才删除底层磁盘文件。如果那时失败(例如因为文件权限错误),代码本应只发出警告消息并继续,因为此时中止事务已为时过晚。这一逻辑从 8.4 起被破坏,导致这类情况引发 PANIC 和无法重启的数据库。

关联记录(1)

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

其他改进从 DROP TABLESPACE 的 WAL 重放期间的错误中恢复

变更

从 DROP TABLESPACE 的 WAL 重放期间的错误中恢复(Tom Lane)

重放会尝试删除表空间的目录,但这可能因各种原因失败(例如这些目录的所有权或权限不正确)。此前重放代码会 panic,使数据库在没有人工干预的情况下无法重启。记录问题并继续似乎更好,因为删除目录失败唯一后果只是浪费一些磁盘空间。

关联记录(1)

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

BUG 修复修复为热备记录 AccessExclusiveLock 时的竞态条件

变更

修复为热备记录 AccessExclusiveLock 时的竞态条件(Simon Riggs)

有时锁会被记录为由“事务零”持有。至少已知这会在从库服务器上产生断言失败,还可能是更严重问题的原因。

关联记录(1)

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

其他改进在 WAL 重放期间正确跟踪 OID 计数器,即使它发生回卷

变更

在 WAL 重放期间正确跟踪 OID 计数器,即使它发生回卷(Tom Lane)

此前 OID 计数器会一直停留在高值,直到系统退出重放模式。其实际后果通常为零,但在某些场景下,已提升为主库的备库服务器在需要 OID 值时,可能要很长时间才能把 OID 计数器推进到合理的值。

关联记录(1)

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

BUG 修复防止在崩溃恢复开始时发出误导性的 “consistent recovery state reached” 日志消息

变更

防止在崩溃恢复开始时发出误导性的 “consistent recovery state reached” 日志消息(Heikki Linnakangas)

关联记录(1)

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

BUG 修复修复 pg_stat_replication.replay_location 的初始值

变更

修复 pg_stat_replication.replay_location 的初始值(Fujii Masao)

此前,在至少重放一条 WAL 记录之前,显示的值是错误的。

关联记录(1)

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

BUG 修复修复带 * 的正则表达式反向引用

变更

修复带 * 的正则表达式反向引用(Tom Lane)

代码实际上并不强制精确字符串匹配,而是接受任何满足反向引用符号所引用的模式子表达式的字符串。

类似问题仍困扰着嵌入在更大带量词表达式中(而非量词直接作用对象)的反向引用。这将在未来的 PostgreSQL 版本中解决。

关联记录(1)

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

BUG 修复修复最近引入的 inet/cidr 值处理中的内存泄漏

变更

修复最近引入的 inet/cidr 值处理中的内存泄漏(Heikki Linnakangas)

PostgreSQL 2011 年 12 月版本中的一个补丁导致这些操作中的内存泄漏,在此类列上构建 btree 索引等场景中可能相当显著。

关联记录(1)

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

BUG 修复修复规划器通过 UNION ALL 下推索引表达式限制的能力

变更

修复规划器通过 UNION ALL 下推索引表达式限制的能力(Tom Lane)

这类优化在 9.1.2 中被针对另一个问题的修复意外禁用。

BUG 修复修复继承表上 UPDATE/DELETE 中引用的 WITH 子句的规划

变更

修复继承表上 UPDATE/DELETE 中引用的 WITH 子句的规划(Tom Lane)

该缺陷导致 “could not find plan for CTE” 失败。

BUG 修复修复 GIN 代价估计,使其处理 column IN (...) 索引条件

变更

修复 GIN 代价估计,使其处理 column IN (...) 索引条件(Marti Raudsepp)

如果这类条件可用于 GIN 索引,这一疏忽通常会导致崩溃。

其他改进防止在会话带着打开的失败事务退出时断言失败

变更

防止在会话带着打开的失败事务退出时断言失败(Tom Lane)

该缺陷对未启用断言的常规构建没有影响。

BUG 修复修复 SQL 语言函数中 CREATE TABLE AS/SELECT INTO 之后的悬空指针

变更

修复 SQL 语言函数中 CREATE TABLE AS/SELECT INTO 之后的悬空指针(Tom Lane)

大多数情况下这只会在启用断言的构建中导致断言失败,但似乎可能有更糟的后果。

关联记录(1)

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

其他改进避免 Windows 上 syslogger 中文件句柄的双重关闭

变更

避免 Windows 上 syslogger 中文件句柄的双重关闭(MauMau)

通常这个错误不可见,但在调试版 Windows 上运行时会导致异常。

关联记录(1)

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

BUG 修复修复 plpgsql 中与 I/O 转换相关的内存泄漏

变更

修复 plpgsql 中与 I/O 转换相关的内存泄漏(Andres Freund、Jan Urbanski、Tom Lane)

某些操作会一直泄漏内存直到当前函数结束。

关联记录(1)

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

其他改进规避 perl 的 SvPVutf8() 函数中的缺陷

变更

规避 perl 的 SvPVutf8() 函数中的缺陷(Andrew Dunstan)

该函数在收到类型通配或某些只读对象(如 $^V)时崩溃。让 plperl 避免把它们传给它。

其他改进在 pg_dump 中,如果扩展本身未被转储,则不转储其配置表的内容

变更

在 pg_dump 中,如果扩展本身未被转储,则不转储其配置表的内容(Tom Lane)

其他改进改进 pg_dump 对继承表列的处理

变更

改进 pg_dump 对继承表列的处理(Tom Lane)

pg_dump 错误处理了子列与父列默认表达式不同的情况。如果默认值在文本上与父列相同但实际不同(例如因为模式搜索路径差异),它不会被识别为不同,因此转储和恢复后子列会被允许继承父列的默认值。子列为 NOT NULL 而父列不是的情况也可能被微妙地错误恢复。

关联记录(1)

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

BUG 修复修复 pg_restore 直接写数据库模式对 INSERT 式表数据的处理

变更

修复 pg_restore 直接写数据库模式对 INSERT 式表数据的处理(Tom Lane)

当使用 2011 年 9 月或 12 月版本的 pg_restore 时,对以 --inserts 或 --column-inserts 选项制作的归档文件直接恢复到数据库会失败,这是对另一个问题的修复中的一个疏忽所致。归档文件本身没有问题,文本模式输出也正常。

关联记录(1)

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

其他改进让 pg_upgrade 处理 plpython 共享库的重命名

变更

让 pg_upgrade 处理 plpython 共享库的重命名(Bruce Momjian)

由于这一疏忽,升级包含 plpython 的 9.1 之前数据库会失败。

其他改进允许 pg_upgrade 处理包含 regclass 列的表

变更

允许 pg_upgrade 处理包含 regclass 列的表(Bruce Momjian)

由于 pg_upgrade 现在注意保留 pg_class OID,这一限制不再有任何理由存在。

关联记录(1)

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

其他改进让 libpq 在查找 SSL 客户端证书文件时忽略 ENOTDIR 错误

变更

让 libpq 在查找 SSL 客户端证书文件时忽略 ENOTDIR 错误(Magnus Hagander)

即使用户的主目录被设置为 /dev/null 之类,这也能建立 SSL 连接(虽然没有证书)。

关联记录(1)

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

BUG 修复修复 ecpg 的 SQLDA 区域中更多的字段对齐问题

变更

修复 ecpg 的 SQLDA 区域中更多的字段对齐问题(Zoltan Boszormenyi)

关联记录(1)

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

其他改进允许 ecpg 的 DEALLOCATE 语句中使用 AT 选项

变更

允许 ecpg 的 DEALLOCATE 语句中使用 AT 选项(Michael Meskes)

支持它的基础设施已存在一段时间,但由于疏忽仍有一个错误检查拒绝这种情况。

关联记录(1)

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

其他改进在 ecpg 中定义 varchar 结构时不使用变量名

变更

在 ecpg 中定义 varchar 结构时不使用变量名(Michael Meskes)

关联记录(1)

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

BUG 修复修复 contrib/auto_explain 的 JSON 输出模式,使其产生有效的 JSON

变更

修复 contrib/auto_explain 的 JSON 输出模式,使其产生有效的 JSON(Andrew Dunstan)

输出在顶层使用了方括号,而本应使用花括号。

关联记录(1)

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

BUG 修复修复 contrib/intarray 的 int[] & int[] 操作符中的错误

变更

修复 contrib/intarray 的 int[] & int[] 操作符中的错误(Guillaume Lelarge)

如果两个输入数组共有的最小整数是 1,且任一数组中有更小的值,那么 1 会被错误地从结果中遗漏。

关联记录(1)

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

BUG 修复修复 contrib/pgcrypto 的 encrypt_iv() 和 decrypt_iv() 中的错误检测

变更

修复 contrib/pgcrypto 的 encrypt_iv() 和 decrypt_iv() 中的错误检测(Marko Kreen)

这些函数未能报告某些类型的无效输入错误,而是对错误输入返回随机垃圾值。

关联记录(1)

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

BUG 修复修复 contrib/test_parser 中的一字节缓冲区越界

变更

修复 contrib/test_parser 中的一字节缓冲区越界(Paul Guyot)

代码会尝试多读一个字节,这在极端情况下会崩溃。由于 contrib/test_parser 只是示例代码,这本身不是安全问题,但坏的示例代码仍然是坏的。

关联记录(1)

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

其他改进在 ARM 上如果可用则使用 __sync_lock_test_and_set() 实现自旋锁

变更

在 ARM 上如果可用则使用 __sync_lock_test_and_set() 实现自旋锁(Martin Pitt)

该函数取代了我们此前对 SWPB 指令的使用,该指令已被弃用且在 ARMv6 及更高版本上不可用。报告表明旧代码在较新的 ARM 板上不会以明显方式失败,而只是不对并发访问互锁,导致多进程操作中的离奇失败。

关联记录(1)

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

其他改进在使用接受该选项的 gcc 版本构建时使用 -fexcess-precision=standard 选项

变更

在使用接受该选项的 gcc 版本构建时使用 -fexcess-precision=standard 选项(Andrew Dunstan)

这防止了较新版本 gcc 产生"创造性"结果的各种场景。

关联记录(1)

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

其他改进允许在 FreeBSD 上使用线程化 Python

变更

允许在 FreeBSD 上使用线程化 Python(Chris Rees)

我们的 configure 脚本此前认为这种组合无法工作;但 FreeBSD 修复了问题,因此移除该错误检查。

关联记录(1)

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

其他改进允许 MinGW 构建使用标准命名的 OpenSSL 库

变更

允许 MinGW 构建使用标准命名的 OpenSSL 库(Tomasz Ostrowski)

PostgreSQL 9.1.2

升级与兼容性说明

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

不过,information_schema.referential_constraints 视图的定义中被发现存在一个长期错误。如果你依赖该视图的正确结果,应按下面第一条变更日志条目的说明替换其定义。

此外,如果你使用 citext 数据类型,并且是通过运行 pg_upgrade 从前一个大版本升级的,应执行 CREATE EXTENSION citext FROM unpackaged,以避免 citext 操作中与排序规则相关的失败。如果恢复来自包含 citext 数据类型的 9.1 之前数据库的转储,也需要这样做。如果你在升级到 9.1.2 之前已经运行过 CREATE EXTENSION 命令,则需要按下面第二条变更日志条目的说明手工更新系统目录。

BUG 修复修复 information_schema.referential_constraints 视图中的缺陷

变更

修复 information_schema.referential_constraints 视图中的缺陷(Tom Lane)

该视图在把外键约束与它依赖的主键或唯一键约束匹配时不够谨慎。这可能导致某个外键约束完全不被显示、被显示多次,或者声称它依赖于一个并非其实际依赖的约束。

由于该视图定义是由 initdb 安装的,仅靠升级不会修复问题。如果需要修复现有安装,可以(以超级用户身份)删除 information_schema 模式,然后通过载入 SHAREDIR/information_schema.sql 重新创建它。(如果不确定 SHAREDIR 在哪里,运行 pg_config --sharedir。)这必须在每个要修复的数据库中重复执行。

关联记录(1)

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

BUG 修复让 contrib/citext 的升级脚本修复 citext 列和索引的排序规则

变更

让 contrib/citext 的升级脚本修复 citext 列和索引的排序规则(Tom Lane)

在从 9.1 之前服务器执行 pg_upgrade 期间,或者当包含 citext 类型的 9.1 之前转储被载入 9.1 服务器时,现有的 citext 列和索引不会被正确标记为可排序数据类型。这导致这些列上的操作失败,报诸如 “could not determine which collation to use for string comparison” 的错误。此变更允许它们在 CREATE EXTENSION citext FROM unpackaged 期间由把 citext 模块升级为正规 9.1 扩展的同一脚本修复。

如果你有一个此前升级的、正受此问题困扰的数据库,而且你已经运行过 CREATE EXTENSION 命令,可以(以超级用户身份)手工运行 SHAREDIR/extension/citext--unpackaged--1.0.sql 末尾的 UPDATE 命令。(如果不确定 SHAREDIR 在哪里,运行 pg_config --sharedir。)如果不确定,重复执行也没有害处。

BUG 修复修复连接到返回标量的函数输出的 UPDATE 或 DELETE 期间可能崩溃的问题

变更

修复连接到返回标量的函数输出的 UPDATE 或 DELETE 期间可能崩溃的问题(Tom Lane)

只有当目标行被并发更新时才可能崩溃,因此该问题只是间歇性出现。

关联记录(1)

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

BUG 修复修复 GIN 索引更新 WAL 记录的错误重放

变更

修复 GIN 索引更新 WAL 记录的错误重放(Tom Lane)

这可能导致崩溃后或热备服务器上瞬时找不到索引项。不过,该问题会在该索引下一次 VACUUM 时被修复。

关联记录(1)

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

BUG 修复修复 CREATE TABLE dest AS SELECT * FROM src 或 INSERT INTO dest SELECT * FROM src 期间与 TOAST 相关的数据损坏

变更

修复 CREATE TABLE dest AS SELECT * FROM src 或 INSERT INTO dest SELECT * FROM src 期间与 TOAST 相关的数据损坏(Tom Lane)

如果表曾被 ALTER TABLE ADD COLUMN 修改过,在某些极端情况下,尝试把它的数据原样复制到另一个表可能产生损坏的结果。该问题只会在 8.4 及更高版本中以这种确切形式出现,但我们也给更早的版本打了补丁,以防有其他代码路径可能触发同一缺陷。

关联记录(1)

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

BUG 修复修复热备启动期间可能的失败

变更

修复热备启动期间可能的失败(Simon Riggs)

关联记录(1)

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

性能改进当初始快照不完整时更快地启动热备

变更

当初始快照不完整时更快地启动热备(Simon Riggs)

关联记录(1)

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

BUG 修复修复从过期 syscache 条目访问 toast 表时的竞态条件

变更

修复从过期 syscache 条目访问 toast 表时的竞态条件(Tom Lane)

典型症状是诸如 “missing chunk number 0 for toast value NNNNN in pg_toast_2619” 的瞬时错误,其中引用的 toast 表总是属于某个系统目录。

关联记录(1)

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

其他改进跟踪函数对参数默认值表达式中所用项的依赖

变更

跟踪函数对参数默认值表达式中所用项的依赖(Tom Lane)

此前,被引用的对象可以在未删除或修改函数的情况下被删除,导致函数被使用时行为异常。注意,仅仅安装此更新不会修复缺失的依赖条目;要做到这一点,之后需要对每个这样的函数执行 CREATE OR REPLACE。如果你的函数默认值依赖于非内建对象,建议这样做。

关联记录(1)

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

BUG 修复修复 nestloop 连接中占位符变量的错误管理

变更

修复 nestloop 连接中占位符变量的错误管理(Tom Lane)

已知该缺陷会导致 “variable not found in subplan target list” 规划器错误,并且在涉及外连接时可能导致错误的查询输出。

BUG 修复修复按涉及聚合的表达式排序的窗口函数

变更

修复按涉及聚合的表达式排序的窗口函数(Tom Lane)

此前它们可能报 “could not find pathkey item to sort” 规划器错误。

BUG 修复修复 “MergeAppend child's targetlist doesn't match MergeAppend” 规划器错误

变更

修复 “MergeAppend child's targetlist doesn't match MergeAppend” 规划器错误(Tom Lane)

BUG 修复修复对同时具有可排序和不可排序输入的操作符的索引匹配

变更

修复对同时具有可排序和不可排序输入的操作符的索引匹配(Tom Lane)

在 9.1.0 中,左输入类型不可排序而右输入类型可排序的可索引操作符不会被识别为匹配左列的索引。例如 hstore ? text 操作符。

其他改进允许内联带多个 OUT 参数的集合返回 SQL 函数

变更

允许内联带多个 OUT 参数的集合返回 SQL 函数(Tom Lane)

关联记录(1)

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

其他改进不要为连接消除信任延迟唯一索引

变更

不要为连接消除信任延迟唯一索引(Tom Lane、Marti Raudsepp)

延迟唯一约束在事务内可能不成立,因此假设它成立可能给出错误的查询结果。

关联记录(1)

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

其他改进让 DatumGetInetP() 解包带 1 字节头的 inet datum,并新增一个不做此事的宏 DatumGetInetPP()

变更

让 DatumGetInetP() 解包带 1 字节头的 inet datum,并新增一个不做此事的宏 DatumGetInetPP()(Heikki Linnakangas)

此变更不影响任何核心代码,但可能避免期望 DatumGetInetP() 按常规约定产生已解包 datum 的附加代码中的崩溃。

关联记录(1)

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

其他改进改进 money 类型输入和输出的区域支持

变更

改进 money 类型输入和输出的区域支持(Tom Lane)

除了不支持所有标准 lc_monetary 格式化选项外,输入和输出函数还不一致,这意味着在某些区域设置下转储的 money 值无法重新读取。

关联记录(1)

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

其他改进不让 transform_null_equals 影响 CASE foo WHEN NULL ... 构造

变更

不让 transform_null_equals 影响 CASE foo WHEN NULL ... 构造(Heikki Linnakangas)

transform_null_equals 只应影响用户直接写的 foo = NULL 表达式,而不是这种形式的 CASE 在内部生成的相等性检查。

关联记录(1)

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

其他改进更改外键触发器的创建顺序,以更好地支持自引用外键

变更

更改外键触发器的创建顺序,以更好地支持自引用外键(Tom Lane)

对于引用自身表的级联外键,行更新会作为一个事件同时触发 ON UPDATE 触发器和 CHECK 触发器。ON UPDATE 触发器必须先执行,否则 CHECK 会检查行的非最终状态,并可能抛出不恰当的错误。然而这些触发器的触发顺序由其名称决定,而由于触发器使用遵循 “RI_ConstraintTrigger_NNNN” 约定的自动生成名称,它们通常按创建顺序排序。彻底的修复需要修改该约定(我们将在 9.2 中做),但在现有版本中更改它似乎有风险。因此此补丁只更改触发器的创建顺序。遇到这类错误的用户应删除并重新创建外键约束,使其触发器处于正确顺序。

关联记录(1)

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

BUG 修复修复 IF EXISTS 在 DROP OPERATOR FAMILY 中的正确工作

变更

修复 IF EXISTS 在 DROP OPERATOR FAMILY 中的正确工作(Robert Haas)

其他改进禁止从扩展自己的脚本内删除该扩展

变更

禁止从扩展自己的脚本内删除该扩展(Tom Lane)

这防止了扩展依赖管理不正确时的怪异行为。

其他改进不把自动生成的类型标记为扩展成员

变更

不把自动生成的类型标记为扩展成员(Robert Haas)

关系行类型和自动生成的数组类型不需要在 pg_depend 中有自己的扩展成员条目,创建这类条目会使扩展升级复杂化。

其他改进在 CREATE EXTENSION 期间应对无效的既有 search_path 设置

变更

在 CREATE EXTENSION 期间应对无效的既有 search_path 设置(Tom Lane)

其他改进避免在跟踪缓冲区分配率时发生浮点下溢

变更

避免在跟踪缓冲区分配率时发生浮点下溢(Greg Matthews)

虽然这本身无害,但在某些平台上会导致烦人的内核日志消息。

关联记录(1)

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

其他改进防止自动清理事务以可序列化模式运行

变更

防止自动清理事务以可序列化模式运行(Tom Lane)

自动清理此前使用集簇范围的默认事务隔离级别,但它没有必要使用高于 READ COMMITTED 的级别,而使用 SERIALIZABLE 可能给其他进程带来不必要的延迟。

其他改进确保 walsender 进程及时响应 SIGTERM

变更

确保 walsender 进程及时响应 SIGTERM(Magnus Hagander)

其他改进把 postmaster.opts 排除在基础备份之外

变更

把 postmaster.opts 排除在基础备份之外(Magnus Hagander)

其他改进在 Windows 下启动子进程时保留配置文件名和行号值

变更

在 Windows 下启动子进程时保留配置文件名和行号值(Tom Lane)

此前它们不会在 pg_settings 视图中正确显示。

关联记录(1)

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

BUG 修复修复 ecpg 的 SQLDA 区域中不正确的字段对齐

变更

修复 ecpg 的 SQLDA 区域中不正确的字段对齐(Zoltan Boszormenyi)

关联记录(1)

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

其他改进在 psql 的命令历史中保留命令内的空行

变更

在 psql 的命令历史中保留命令内的空行(Robert Haas)

例如,如果从字符串字面量中删除了空行,先前的行为可能导致问题。

关联记录(1)

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

其他改进避免 pg_dump 中平台特定的无限循环

变更

避免 pg_dump 中平台特定的无限循环(Steve Singer)

BUG 修复修复 pg_dump 纯文本输出格式的压缩

变更

修复 pg_dump 纯文本输出格式的压缩(Adrian Klaver、Tom Lane)

历史上,pg_dump 把不带 -F 开关的 -Z 理解为应输出纯文本输出的 gzip 压缩版本。现已恢复该行为。

BUG 修复修复 pg_dump,使其转储自动生成类型(如表行类型)之间的用户定义转换

变更

修复 pg_dump,使其转储自动生成类型(如表行类型)之间的用户定义转换(Tom Lane)

关联记录(1)

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

BUG 修复修复 pg_dump 中外部服务器名称漏加引号的问题

变更

修复 pg_dump 中外部服务器名称漏加引号的问题(Tom Lane)

BUG 修复对 pg_upgrade 的若干修复

变更

对 pg_upgrade 的若干修复(Bruce Momjian)

正确处理排他约束、避免 Windows 上的失败、不再对 8.4 数据库中不匹配的 toast 表名报错。

关联记录(1)

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

其他改进在 PL/pgSQL 中,允许外部表定义行类型

变更

在 PL/pgSQL 中,允许外部表定义行类型(Alexander Soudakov)

BUG 修复修正 PL/Perl 函数结果的转换

变更

修正 PL/Perl 函数结果的转换(Alex Hunsaker、Tom Lane)

恢复 9.1 之前的行为:返回 void 的 PL/Perl 函数忽略其最后一条 Perl 语句的结果值;9.1.0 在该语句返回引用时会抛出错误。同时,确保可以为组合类型返回字符串值,只要该字符串符合该类型的输入格式。此外,当函数声明的结果类型不是数组或组合类型时,对分别尝试返回 Perl 数组或哈希的做法抛出错误。(9.1 之前的版本在这种情况下会返回诸如 ARRAY(0x221a9a0) 或 HASH(0x221aa90) 之类毫无用处的字符串。)

其他改进确保 PL/Perl 字符串总是正确地以 UTF8 编码

变更

确保 PL/Perl 字符串总是正确地以 UTF8 编码(Amit Khandekar、Alex Hunsaker)

其他改进使用首选版本的 xsubpp 构建 PL/Perl,而不一定是操作系统的主副本

变更

使用首选版本的 xsubpp 构建 PL/Perl,而不一定是操作系统的主副本(David Wheeler、Alex Hunsaker)

关联记录(1)

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

其他改进在 PL/Python 异常中正确传播 SQLSTATE

变更

在 PL/Python 异常中正确传播 SQLSTATE(Mika Eloranta、Jan Urbanski)

其他改进不为构建所针对的 Python 大版本之外的其他版本安装 PL/Python 扩展文件

变更

不为构建所针对的 Python 大版本之外的其他版本安装 PL/Python 扩展文件(Peter Eisentraut)

其他改进更改所有 contrib 扩展脚本文件,使其在被喂给 psql 时报告有用的错误消息

变更

更改所有 contrib 扩展脚本文件,使其在被喂给 psql 时报告有用的错误消息(Andrew Dunstan、Tom Lane)

这应有助于让人们了解使用 CREATE EXTENSION 加载这些文件的新方法。大多数情况下,直接载入脚本本来就会失败,只是错误消息更难理解。

BUG 修复修复 contrib/dict_int 和 contrib/dict_xsyn 中的错误编码

变更

修复 contrib/dict_int 和 contrib/dict_xsyn 中的错误编码(Tom Lane)

一些函数错误地假定 palloc() 返回的内存保证被清零。

关联记录(1)

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

其他改进把 contrib/sepgsql 测试从常规回归测试机制中移除

变更

把 contrib/sepgsql 测试从常规回归测试机制中移除(Tom Lane)

由于这些测试的设置需要 root 权限,自动运行不现实。改为手工方式,并提供一个测试脚本来协助。

BUG 修复修复 contrib/unaccent 配置文件解析中的若干错误

变更

修复 contrib/unaccent 配置文件解析中的若干错误(Tom Lane)

关联记录(1)

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

其他改进让 pgstatindex() 及时响应查询取消中断

变更

让 pgstatindex() 及时响应查询取消中断(Robert Haas)

关联记录(1)

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

BUG 修复修复 macOS 启动脚本中日志文件名的不正确引号

变更

修复 macOS 启动脚本中日志文件名的不正确引号(Sidar Lopez)

其他改进撤销无意中启用的 WAL_DEBUG

变更

撤销无意中启用的 WAL_DEBUG(Robert Haas)

幸运的是,就调试工具而言,这个相当廉价;但它并不打算默认启用,因此撤销。

其他改进确保 VPATH 构建正确安装所有服务器头文件

变更

确保 VPATH 构建正确安装所有服务器头文件(Peter Eisentraut)

关联记录(1)

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

其他改进缩短详细错误消息中报告的文件名

变更

缩短详细错误消息中报告的文件名(Peter Eisentraut)

常规构建一直只报告包含错误消息调用的 C 文件的名称,但 VPATH 构建此前报告绝对路径名。

关联记录(1)

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

BUG 修复修复中美洲 Windows 时区名的解释

变更

修复中美洲 Windows 时区名的解释(Tom Lane)

把“Central America Standard Time”映射为 CST6 而不是 CST6CDT,因为中美洲各地通常不实行夏令时。

关联记录(1)

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

其他改进把时区数据文件更新为 tzdata 版本 2011n for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; also historical corrections for Alaska and British East Africa。

变更

把时区数据文件更新为 tzdata 版本 2011n for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; also historical corrections for Alaska and British East Africa。

关联记录(1)

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

PostgreSQL 9.1.1

升级与兼容性说明

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

其他改进让 pg_options_to_table 对没有值的选项返回 NULL

变更

让 pg_options_to_table 对没有值的选项返回 NULL(Tom Lane)

此前这类情况会导致服务器崩溃。

关联记录(1)

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

BUG 修复修复 GiST 索引扫描结束时的内存泄漏

变更

修复 GiST 索引扫描结束时的内存泄漏(Tom Lane)

执行许多独立 GiST 索引扫描的命令(例如对已包含许多行的表验证新的基于 GiST 的排他约束)会因此泄漏瞬时需要大量内存。

关联记录(1)

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

BUG 修复修复 CREATE TEMPORARY TABLE 中对 pg_temp 模式的显式引用

变更

修复 CREATE TEMPORARY TABLE 中对 pg_temp 模式的显式引用(Robert Haas)

这过去是允许的,但在 9.1.0 中失败。

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。