pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
对比两个 PostgreSQL 大版本或小版本,查看沿途新增的功能、修复的问题与 CVE 安全记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
小版本更新
2014-12-18 2020-02-13
9.4.0 历史版本维护截止 2020-02-13
9.4.26 历史版本维护截止 2020-02-13
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2018-1058 记录如何配置安装和应用以防受其他用户依赖 search_path 的特洛伊木马攻击 目标版本已修复 | 8.8高危 | 9.4.17 |
| CVE-2018-10915 修复连接尝试之间未能完全重置 libpq 状态的问题 目标版本已修复 | 8.5高危 | 9.4.19 |
| CVE-2017-7547 进一步限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码 目标版本已修复 | 8.5高危 | 9.4.13 |
| CVE-2017-7486 限制pg_user_mappings.umoptions的可见性,以保护作为用户映射选项存储的密码 目标版本已修复 | 8.5高危 | 9.4.12 |
| CVE-2016-5424 修复客户端程序对数据库名和角色名中特殊字符的处理 目标版本已修复 | 8.5高危 | 9.4.9 |
| CVE-2019-3466 pg_ctlcluster script in postgresql-common does not drop privileges when creating socket/statistics temporary directories 目标版本已修复 | 8.4高危 | 9.4.25 |
| CVE-2017-12172 修复示例服务器启动脚本在打开 $PGLOG 之前变成 $PGUSER 目标版本已修复 | 8.4高危 | 9.4.15 |
| CVE-2017-7546 禁止在所有基于密码的认证方法中使用空密码 目标版本已修复 | 8.1高危 | 9.4.13 |
| CVE-2017-7485 恢复 libpq 对 PGREQUIRESSL 环境变量的识别 目标版本已修复 | 8.1高危 | 9.4.12 |
| CVE-2015-0244 修复出错后前端/后端协议可能失去同步的问题 目标版本已修复 | 8.1高危 | 9.4.1 |
| CVE-2019-10211 Windows installer bundled OpenSSL executes code from unprotected directory 目标版本已修复 | 7.8高危 | 9.4.24 |
| CVE-2019-10208 要求使用函数式转换语法转换到临时类型时进行模式限定 目标版本已修复 | 7.5高危 | 9.4.24 |
| CVE-2016-7048 Interactive installer downloads software over plain HTTP, then executes it 目标版本已修复 | 7.5高危 | 9.4.10 |
| CVE-2015-3165 避免客户端恰在认证超时到期前断开时可能出现的崩溃 目标版本已修复 | 7.5高危 | 9.4.2 |
| CVE-2019-10128 EnterpriseDB Windows installer does not clear permissive ACL entries 目标版本已修复 | 7.0高危 | 9.4.22 |
| CVE-2019-10127 BigSQL Windows installer does not clear permissive ACL entries. 目标版本已修复 | 7.0高危 | 9.4.22 |
| CVE-2014-0067 锁定 Windows 上回归测试的临时安装 目标版本已修复 | 7.0高危 | 9.4.1 |
| CVE-2019-10210 Windows installer writes superuser password to unprotected temporary file 目标版本已修复 | 6.7中危 | 9.4.24 |
| CVE-2018-1053 确保 pg_upgrade 创建的所有临时文件对其他用户不可读 目标版本已修复 | 6.7中危 | 9.4.16 |
| CVE-2016-0773 修复正则表达式中的无限循环和缓冲区越界问题 目标版本已修复 | 6.5中危 | 9.4.6 |
| CVE-2015-0243 修复contrib/pgcrypto中的缓冲区越界 目标版本已修复 | 6.5中危 | 9.4.1 |
| CVE-2015-5289 防御json解析中的栈溢出 目标版本已修复 | 5.9中危 | 9.4.5 |
| CVE-2015-3166 改进对系统调用失败的检测 目标版本已修复 | 5.6中危 | 9.4.2 |
| CVE-2017-7484 防止通过泄漏型操作符暴露统计信息 目标版本已修复 | 4.3中危 | 9.4.12 |
| CVE-2017-15098 修复 json{b}_populate_recordset() 中行类型不匹配导致的崩溃 目标版本已修复 | 4.3中危 | 9.4.15 |
| CVE-2016-5423 修复嵌套 CASE-WHEN 表达式可能被错误评估的问题 目标版本已修复 | 4.3中危 | 9.4.9 |
| CVE-2015-0242 修复替换实现的*printf()函数中的缓冲区越界 目标版本已修复 | 4.2中危 | 9.4.1 |
| CVE-2015-0241 修复to_char()中的缓冲区越界 目标版本已修复 | 4.2中危 | 9.4.1 |
| CVE-2015-3167 在contrib/pgcrypto中,统一将解密失败报告为“Wrong key or corrupt data” 目标版本已修复 | 3.7低危 | 9.4.2 |
| CVE-2017-7548 让 lo_put() 检查对目标大对象的 UPDATE 权限 目标版本已修复 | 3.1低危 | 9.4.13 |
| CVE-2015-5288 修复contrib/pgcrypto以检测并报告过短的crypt()盐值 目标版本已修复 | 3.1低危 | 9.4.5 |
| CVE-2014-8161 修复通过约束违反错误消息的信息泄露 目标版本已修复 | 3.1低危 | 9.4.1 |
| 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低危 | 该分支未提供 |
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.25 的版本升级,请参见第 E.2 节。
变更
修复大事务必须被溢出到许多单独临时文件时逻辑解码的失败(Amit Khandekar)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复数据库崩溃并重启之后逻辑复制发布方的失败(Vignesh C)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免没有空闲动态共享内存槽位时的内存泄漏(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
对临时表执行索引创建、删除或重建时忽略 CONCURRENTLY
选项(Michael Paquier、Heikki Linnakangas、Andres Freund)
这避免了临时表带有 ON COMMIT 动作时的奇怪失败。反正对临时表使用 CONCURRENTLY 没有益处,因为其他会话无法访问该表,额外的处理毫无意义。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能的失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN 索引中对已删除页的处理(Alexander Korotkov)
避免可能的死锁、已删除页状态的错误更新,以及穿过最近删除页的遍历失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能的崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复按引用传递的聚合转换状态不太可能的崩溃(Andres Freund、Teodor Sigaev)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 to_date() 和
to_timestamp() 中的错误报告(Tom Lane、Álvaro Herrera)
关于输入字符串中不正确月份或日期名称的报告,可能在多字节字符中间截断输入,导致错误编码的错误消息并引发后续失败。现在改为在下一个空白处截断。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复公元前日期的 EXTRACT(ISOYEAR FROM 的差一结果(Tom Lane)
timestamp)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免系统目录中存在自引用视图时 information_schema
视图中的栈溢出(Tom Lane)
自引用视图无法工作;它总是导致无限递归。我们在尝试执行该视图时能正确处理这种情况,但在查询它是否自动可更新时不能。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进有超大内侧关系的哈希连接的性能(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 <@ 和 @> 范围操作符选择率计算中的边界崩溃和估计错误(Michael Paquier、Andrey Borodin、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进对试图在带条件 INSTEAD 规则的视图上使用自动更新的错误报告(Dean Rasheed)
这从未被支持过,但此前错误只在执行时抛出,因此可能被规划器错误掩盖。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止复合类型通过范围类型间接包含自身(Tom Lane、Julien Rouhaud)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对禁止类型索引表达式的错误报告(Amit Langote)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复仅包含 VALUES 列表的视图的转储,以处理视图输出列被改名的情况(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 libpq 在未编译 GSSAPI 代码时也解析所有与 GSS 相关的连接参数(Tom Lane)
这使行为与我们的 SSL 支持相似——很久以前我们就认为始终接受所有相关参数是个好主意,即使在特定构建中因缺少该特性而忽略或限制某些参数。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 的
PGTYPEStimestamp_fmt_asc() 函数中
%b 和 %B 格式代码的错误处理(Tomas Vondra)
由于差一错误,这些代码会打印错误的月份名称,或者可能崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复并行 pg_dump/pg_restore 更优雅地处理工作者进程创建失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止试图通过信号终止并行 pg_dump/ pg_restore 运行时可能的崩溃或锁死(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_upgrade 中,搜索表中不可升级数据类型时深入数组和范围内部(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
对 createuser 的 --connection-limit 选项应用更彻底的语法检查(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/dict_int 中,拒绝小于一的
maxlen 设置(Tomas Vondra)
这防止了该参数的愚蠢设置可能导致的崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止 contrib/tablefunc 的
crosstab() 函数中的 NULL 类别值(Joe Conway)
这种情况从来就不能正常工作,而且在某些平台上会崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把一些超时和统计追踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们(Pascal Legrand)
这适用于 idle_in_transaction_session_timeout、lock_timeout、statement_timeout、track_activities、track_counts
和 track_functions。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复导致 Windows 上进程间信号延迟传递的竞态条件(Amit Kapila)
这导致 NOTIFY 中可见的时机异常,或许还有其他错误行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,ERROR_ACCESS_DENIED 文件访问失败后重试几次(Alexander Lakhin、Tom Lane)
这有助于应对目标文件已被标记为删除但尚未真正消失而导致打开失败的情况。例如,pg_ctl 在探测 postmaster 是否已关闭时经常因这种错误而失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
不过,如果你在 contrib/intarray 扩展中使用了 GiST 索引,并且依赖 <@ 操作符的索引搜索,请参见下面相关条目。
另外,如果你是从 9.4.18 之前的版本升级,参见第 E.9 节。
变更
防止 VACUUM 尝试冻结涉及仍在运行的事务的旧多事务 ID(Nathan Bossart、Jeremy Schneider)
这种情况会导致 VACUUM 失败,直到旧事务结束。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保查询表达式被改写时 WINDOW 子句中的偏移表达式也得到处理(Andrew Gierth)
这一疏漏可能在偏移是非平凡表达式时导致各种失败。一个例子是,如果函数被内联,此类表达式中的函数参数引用会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 WITH CHECK OPTION 表达式和行级安全策略表达式中整行变量的处理(Andres Freund)
此前,这种用法可能导致关于行类型不匹配的虚假错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 BEFORE UPDATE 触发器原样返回旧元组且它不是最后一个此类触发器时可能的双重释放(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在可序列化模式下,确保对正确版本的行获取行级谓词锁(Thomas Munro、Heikki Linnakangas)
如果行的可见版本经过 HOT 更新,锁可能被加到它现已死亡的前身上,导致细微的序列化保证失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 fsync() 只应用于以读/写方式打开的文件(Andres Freund、Michael Paquier)
某些代码路径在以只读方式打开文件后试图这样做,但在某些平台上这会导致 “bad file descriptor” 或类似错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许编码转换在比以前更长的字符串上成功(Álvaro Herrera、Tom Lane)
此前输入字符串有 0.25GB 的硬限制,但现在只要转换后的输出不超过 1GB 就能工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 repalloc() 在大块被缩小时归还空间(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免启用 recovery_min_apply_delay 时归档恢复的失败(Fujii Masao)
recovery_min_apply_delay 通常不用于这种配置,但它应当能工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免逻辑复制 walsender 关闭期间的不必要延迟(Craig Ringer、Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为逻辑解码正确地为复制消息打时间戳(Jeff Janes)
这一疏漏导致例如 pg_stat_subscription.last_msg_send_time 通常读作 NULL。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在逻辑解码中,确保重建快照时正确统计子事务(Masahiko Sawada)
这个错误导致断言失败;生产构建中是否存在不良影响尚不清楚。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复后端进程此前等待过同步复制时,后端退出期间的竞态条件(Dongming Liu)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER SYSTEM 应对 postgresql.auto.conf 中重复条目的问题(Ian Barwick)
ALTER SYSTEM 本身不会产生这种状态,但修改 postgresql.auto.conf 的外部工具可能这样做。目标变量的重复条目现在会被移除,然后新的设置(如果有)会被追加到末尾。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免使用 PAM 认证时记录关于废弃连接的抱怨(Tom Lane)
基于 libpq 的客户端在需要密码时通常会做两次连接尝试,因为它们直到第一次连接尝试失败才提示用户输入密码。因此服务器的编码被设计成当客户端在被要求输入密码时关闭连接不产生无用的日志垃圾。然而 PAM 认证代码没有收到这份备忘,会生成几条关于幻影认证失败的消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 time with time zone 输入中某些未检测到不完整日期规格的情况(Alexander Lakhin)
如果指定的时区 UTC 偏移量随时间变化,那么也必须指定日期才能解析偏移量。根据所用的语法,这一检查在某些情况下未被强制执行,允许产生虚假输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 bitshiftright() 的错误行为(Tom Lane)
当位串长度不是 8 的倍数时,位串右移操作符未能把结果最后一字节中存在的填充空间清零。虽然对大多数操作不可见,但那里的任何非零位都会导致意外的比较行为,因为位串比较不会特意忽略多余的位,而是预期它们始终为零。
如果你因把 bitshiftright() 的输出保存到表中而有不一致的数据,可以用类似下面的语句修复:
UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复间隔乘法中边界整数溢出的检测(Yuya Watari)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN posting 列表的错误压缩逻辑(Heikki Linnakangas)
如果相邻被索引 TID 之间的距离超过 16TB,一个 GIN posting 列表项可能需要 7 字节。逻辑中的一步与此不同步,可能试图把值写入 6 字节缓冲区。原则上这可能导致栈越界,但在大多数体系结构上,下一个字节很可能是未使用的对齐填充,使该 bug 无害。无论如何,这个 bug 都很难被触发到。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 KNN-GiST 中对无穷大、NaN 和 NULL 值的处理(Alexander Korotkov)
如果为非空列值计算的某些距离是无穷大或 NaN,查询的输出顺序可能错误(与普通排序的结果不同)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 KNN-SP-GiST 中对 NULL 搜索的处理(Nikita Glukhov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,识别 “Norwegian (Bokmål)” 区域名的更多拼法(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 ECPG 客户端在定义了 ENABLE_NLS 的情况下包含 ecpglib.h 时编译失败(Tom Lane)
这个风险是由一个错位的声明造成的:ecpg_gettext() 不应对客户端代码可见。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 中,意外连接丢失并成功重连之后重新同步关于服务器的内部状态(Peter Billen、Tom Lane)
通常这是不必要的,因为状态反正会相同。但在边界情况下可能有关系,例如连接可能通向几台服务器之一。这一更改使 psql 重新发出它在启动时会发出的任何交互式消息,例如关于是否使用 SSL。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 psql 中平台相关的空指针解引用(Quentin Rameau)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 对视图中循环依赖的处理(Tom Lane)
某些情况下视图可能依赖于 pg_dump 需要在视图之后转储的对象;最常见的例子是在主键列上使用 GROUP BY 的查询在没有主键时可能在语义上无效。现在通过发出一个仅建立视图列名和类型的虚拟 CREATE VIEW 命令、之后再发出带完整视图定义的 CREATE OR REPLACE VIEW 来处理。此前虚拟定义实际上是一条 CREATE TABLE 命令,之后通过 CREATE RULE 命令自动转换成视图。这种新方法在 PostgreSQL 版本 10 及之后已经成功使用。现在把它向后移植到较旧的版本,是因为有报告称以前的方法会导致关于视图副本身份状态的虚假错误消息。这一更改还避免了在涉及此类视图的恢复期间尝试使用 --clean 选项时的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 中,确保同名触发器和行级安全策略对象的稳定输出顺序(Benjie Gillam)
此前,如果不同表上的两个触发器同名,它们会按基于 OID 的顺序排序,这不如按表名排序理想。RLS 策略同理。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 重新与 8.3 之前的源服务器工作的问题(Tom Lane)
此前的一次修复使 pg_dump 总是试图查询 pg_opfamily,但该目录在 8.3 版之前不存在。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_restore 中,把 -f - 当作“输出到 stdout”(Álvaro Herrera)
这使 pg_restore 的行为与其他一些应用同步,特别是使 v12 之前的分支表现得与版本 12 的 pg_restore 相似,简化了跨多个 PostgreSQL 版本的转储/恢复脚本的创建。在此更改之前,pg_restore 把这种开关解释为“输出到名为 - 的文件”,但很少有人会想要那样。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 pg_upgrade 对使用表示已更改的数据类型(如 line)的检查(Tomas Vondra)
原来的编码可能被所关注数据类型构成域或复合类型的存储列底层的情况所欺骗。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
检测 pg_basebackup 期间的文件读取错误(Jeevan Chalke)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_waldump 使用 -s 选项且延续 WAL 记录恰好在页边界结束时失败的问题(Andrey Lepikhov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/intarray 的 GiST 操作符类在空数组使用 <@ 时不失败的问题(Tom Lane)
像 这样的子句被认为可索引,但索引搜索可能找不到空数组值;当然,这种条目应当平凡地匹配搜索。array_column <@ constant_array
唯一实际可向后移植的修复要求 <@ 索引搜索扫描整个索引,本补丁就是这么做的。这很不幸:这意味着查询性能可能比 plain 顺序扫描更差。
性能受此更改不利影响的应用有两种选择。可以改用没有此 bug 的 GIN 索引,或者把 替换为 array_column <@ constant_array。后者的性能与之前大致相同,并且会找到给定常数数组的所有非空子集——这本来就是以前对该查询唯一能可靠期望得到的。array_column <@ constant_array AND array_column && constant_array
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 configure --with-python 在只能找到 python3 或只能找到 python2 时成功(Peter Eisentraut、Tom Lane)
先搜索 python,再搜索 python3,再搜索 python2,使 configure 在没有名为 python 的可执行文件这一日益常见的情况下也能成功。仍然可以通过设置 PYTHON 环境变量覆盖这一选择。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 configure 的 libperl 存在性测试,使其在最近的 Red Hat 版本上工作(Tom Lane)
此前,如果用户把 CFLAGS 设为 -O0,它可能失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 PowerPC 上自旋锁的正确代码生成(Noah Misch)
原来的自旋锁编码允许编译器为一条不接受寄存器零的汇编指令选择寄存器零,导致构建失败。我们只见过一份很久以前与此 bug 匹配的报告,但它可能给尝试构建修改过的 PostgreSQL 代码或使用非典型编译器选项的人带来问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 AIX 上,不使用编译器选项 -qsrcmsg(Noah Misch)
这避免了 xlc v16.1.0 的内部编译器错误,除了更改编译器错误消息的格式之外几乎没有其他后果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 MSVC 构建过程以应对 OpenSSL 文件路径中的空格(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2019c,涉及斐济和诺福克岛的夏令时法规变更,以及艾伯塔、奥地利、比利时、不列颠哥伦比亚、柬埔寨、香港、印第安纳(佩里县)、加里宁格勒、肯塔基、密歇根、诺福克岛、韩国和土耳其的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节。
变更
要求使用函数式转换语法转换到临时类型时进行模式限定(Noah Misch)
我们长期以来一直要求临时函数的调用显式指定临时模式,即 pg_temp.。现在把这一要求同样应用于使用函数表示法转换到临时类型,例如 func_name(args)pg_temp.。否则有可能截获使用临时对象的函数调用,从而以与我们在 CVE-2007-2138 中封堵的方式大致相同的途径实现权限提升。(CVE-2019-10208)type_name(arg)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在一条命令中更改多列类型时 ALTER TABLE ... ALTER COLUMN TYPE 的失败(Tom Lane)
这修复了最近几个小版本中引入的回归:使用被更改列的索引未被正确处理,导致 ALTER TABLE 期间的奇怪失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复重建外键约束时多列外键的处理不当(Tom Lane)
如果键的所有列不都是同一类型,ALTER TABLE 可能对是否需要重新验证外键做出错误决定。看来该错误的方向总是保守的,即不必要地重新验证。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止对以 infinity 为端点的日期范围的错误规范化(Laurenz Albe)
如果端点是无穷,试图通过递增或递减端点值把开区间转换为闭区间或反之都是不正确的;因此在这种情况下保持范围不变。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复把非常大的 money 值转换为 numeric 时小数位数的丢失(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 MIPS CPU 的自旋锁汇编代码,使其在 MIPS r6 上工作(YunQiang Su)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 libpq 忽略连接服务文件中的回车(\r)(Tom Lane、Michael Paquier)
在某些边界情况下,包含 Windows 风格换行的服务文件可能被错误解析,导致连接失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 确保自定义操作符类以正确的顺序转储(Tom Lane)
如果用户定义的操作符类是某个用户定义范围类型的子类型操作符类,相关对象会以错误的顺序转储,产生无法恢复的转储。(操作符类依赖处理的这一底层失败也可能在其他情况下显现,但这是唯一已知的情况。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/passwordcheck 与 check_password_hook 的其他使用者共存的问题(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/sepgsql 测试在最近的 SELinux 版本下工作的问题(Mike Palmiotto)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少 pg_upgrade 测试脚本的 stderr 输出(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持用 Microsoft Visual Studio 2019 构建 Postgres(Haribabu Kommi)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Visual Studio 构建中,尊重 WindowsSDKVersion 环境变量(如果已设置)(Peifeng Qiu)
这修复了某些配置下的构建失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Visual Studio 构建中支持 OpenSSL 1.1.0 及更新版本(Juan José Santamaría Flecha、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 initdb 期间选择 localtime 或 posixrules 作为 TimeZone(Tom Lane)
某些情况下 initdb 会选择这些人工时区名之一而不是“真实”时区名。让任何其他与 C 库时区行为相匹配的时区都优先于这两个。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
调整 pg_timezone_names 视图,使其仅当 Factory 时区有短缩写时才显示它(Tom Lane)
历史上,IANA 为这个人工时区设置的“缩写”形如 Local time zone must be set--see zic manual page。现代版本的 tzdb 数据库显示 -00,但某些平台修改了数据以显示历史措辞之一或另一个。仅当该时区使用现代缩写时才显示它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把我们的时区库副本与 IANA tzcode 版本 2019b 同步(Tom Lane)
这增加了对 zic 新的 -b slim 选项的支持,以缩小安装的时区文件。我们目前没有使用它,但将来可能启用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2019b,涉及巴西的夏令时法规变更,以及香港、意大利和巴勒斯坦的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节。
变更
修复表带有部分排他约束时 ALTER TABLE ... ALTER COLUMN TYPE 的失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复带重复连接名的查询的错误打印(Philip Dubé)
这一疏漏导致包含此类查询的视图在转储/恢复时失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复正则表达式中 {1,1} 量词的错误优化(Tom Lane)
此类量词被当作无操作而被优化掉;但文档规定它们会给所附加的子表达式施加贪婪性,或者对于非贪婪变体 {1,1}? 施加非贪婪性,而这没有发生。只有当子表达式包含捕获圆括号或反向引用时才会出现错误行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复检查冲突 postmaster 是否仍在使用既有共享内存段的竞态条件(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在未连接到特定数据库的进程中尝试为参数检查做数据库访问(Vignesh C、Andres Freund)
这个错误可能导致诸如 “cannot read pg_class without having selected a database” 之类的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 initdb 对系统时区多个等价名称的处理(Tom Lane、Andrew Gierth)
让 initdb 检查 /etc/localtime 符号链接(如果存在),以在系统时区的等价名称之间打破平局。这使 initdb 在存在多个相同时区时更可能选择用户期望的时区名。如果 /etc/localtime 不是指向时区数据文件的符号链接,或者时区是由 TZ 环境变量确定的,则不会改变行为。
另外,当 TZ 和 /etc/localtime 都未提供提示时,优先选择 UTC 而不是该时区的其他拼法。这修复了 tzdata 2019a 把 UCT 和 UTC 时区名变为等价而引入的烦恼:initdb 随后偏爱 UCT,而几乎没人想要它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 reindexdb 的误导性错误报告(Julien Rouhaud)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/postgres_fdw 中,考虑本地 BEFORE ROW UPDATE 触发器可能做的数据修改(Shohei Mochizuki)
如果触发器修改了 UPDATE 本不会更改的列,新值不会被传输到远程服务器。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,避免数据库编码设为 SQL_ASCII 而我们尝试记录非 ASCII 字符串时的失败(Noah Misch)
代码此前假定这种字符串必须是 UTF-8,如果它们看起来不是有效编码就会抛出错误。现在,只是把未翻译的字节传给日志。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 PL/pgSQL 的头文件对 C++ 安全(George Tarasov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节。
变更
修复对每个表都可被排除的继承树或分区表执行 UPDATE 或 DELETE 时的行为(Amit Langote、Tom Lane)
这类情况下,当存在 RETURNING 子句时,查询没有报告正确的输出列集合;如果有应当触发的语句级触发器,它也没有触发。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复目标关系是可更新视图时带多行 VALUES 的 INSERT ... VALUES 命令中显式 DEFAULT 项的处理(Amit Langote、Dean Rasheed)
当可更新视图对该列没有默认值而其底层表有时,单行 INSERT ... VALUES 会使用底层表的默认值。然而在多行情况下,总是使用 NULL。已纠正为与单行情况一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 CREATE VIEW 允许零列视图(Ashutosh Sharma)
为了与允许零列表保持一致,我们应当允许这一点。由于表可以被转换为视图,即使有此限制也能创建零列视图,从而导致转储/恢复失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 xmloption 设为 content 时按 SQL:2006 及后续标准的要求接受 XML 文档作为 xml 类型的有效值(Chapman Flack)
此前 PostgreSQL 遵循不允许这么做的 SQL:2003 定义。但这给转储/恢复带来了严重问题:没有哪个 xmloption 设置能接受所有有效 XML 数据。因此切换到 2006 定义。
还修改了 pg_dump,使其在恢复数据期间发出 SET xmloption = content,确保即使当前设置是 document 转储/恢复也能工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进服务器启动时对既有共享内存段是否仍在使用的检查(Noah Misch)
即使 postmaster.pid 文件已被移除,postmaster 现在也更可能检测到上一个 postmaster 实例仍有活动进程。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN 索引 WAL 记录的不兼容(Alexander Korotkov)
二月份小版本中应用的一个修复对向后兼容性不够谨慎,导致那个年代的备库服务器读取前一个小版本的主库生成的 GIN 页删除 WAL 记录时出问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在适当的情况下容忍 fsync 和 sync_file_range 调用的 EINVAL 和 ENOSYS 错误结果(Thomas Munro、James Sewell)
此前对文件同步失败就 panic 的更改对于某些失败可预见且基本上意味着“操作不受支持”的情况显得过于偏执。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 FULL 外连接中通向外部横向引用导致的 “failed to build any N-way joins” 规划器失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在执行关于让泄漏型操作符看到 pg_statistic 数据的规则时,检查正确用户的权限(Dean Rasheed)
当底层表通过视图被访问时,在决定是否可以把泄漏型操作符应用于该表的统计数据时,考虑视图所有者的权限而不是发起查询的用户的权限。这使规划器关于哪些数据可见的规则与执行器的规则一致,避免了不必要的低劣计划。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免回滚创建了许多表的事务时的 O(N^2) 性能问题(Tomas Vondra)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复动态共享内存管理中的竞态条件(Thomas Munro)
这些可能导致 “dsa_area could not attach to segment” 或 “cannot unpin a segment that is not pinned” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复热备 postmaster 收到 smart 关闭请求后可能不关闭的竞态条件(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
收紧对编码后的 SCRAM-SHA-256 和 MD5 口令的验证(Jonathan Katz)
开头字符正确的口令字符串可能被误认为是已正确哈希为 SCRAM-SHA-256 或 MD5 格式的口令。这种口令会被接受但之后无法使用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对隐含与数据库编码不同的编码的 lc_time 设置的处理(Juan José Santamaría Flecha、Tom Lane)
包含非 ASCII 字符的本地化月份或日期名此前在此类区域中导致意外错误或错误输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止把 NaN 用作浮点服务器参数的值(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
重排 REINDEX 处理,避免对 pg_class 的单个索引重建时断言失败(Andres Freund、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复参数化虚拟路径的规划器断言失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 SnapBuildInitialSnapshot() 的结果中插入正确的测试函数(Antonin Houska)
没有核心代码关心这一点,但一些扩展关心。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Windows 上间歇性的 “could not reattach to shared memory” 会话启动失败(Noah Misch)
这些失败的一个此前未被识别的来源是为进程默认线程池创建线程栈。安排把这种栈分配在不同的内存区域。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Windows 上目录扫描中的错误检测(Konstantin Knizhnik)
诸如缺少读取目录权限之类的错误没有被正确检测或报告;代码而是静默地表现为目录为空。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 中的语法问题(Tom Lane)
一个缺失的分号导致 ecpg 程序中的 SET (但不是 variable = DEFAULTSET )被错误翻译,产生服务器会拒绝的语法无效输出。此外,在列出多个类型名的 variable TO DEFAULTDROP TYPE 或 DROP DOMAIN 命令中,实际上只处理了第一个类型名。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 处理 include 文件名时可能的缓冲区越界(Liu Huailing、Fei Wu)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免contrib/vacuumlo在lo_unlink()调用失败时崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把我们的时区库副本与 IANA tzcode 版本 2019a 同步(Tom Lane)
这更正了 zic 的一个小 bug——它在 Africa/Casablanca 时区输出错误的 2440 年转换,并增加了对 zic 新 -r 选项的支持。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2019a,涉及巴勒斯坦和梅特拉卡特拉的夏令时法规变更,以及以色列的历史修正。
Etc/UCT 现在是指向 Etc/UTC 的向后兼容链接,而不再是生成缩写 UCT 的独立时区 ——如今 UCT 通常是笔误。PostgreSQL 仍然接受 UCT 作为输入时区缩写,但不会输出它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节。
变更
默认情况下,fsync() 失败后 panic 而不是重试,以避免可能的数据损坏(Craig Ringer、Thomas Munro)
一些流行的操作系统在无法写出内核数据缓冲区时会将其丢弃,并把这报告为 fsync() 失败。如果我们重新发出 fsync() 请求它会成功,但实际上数据已经丢失,因此继续下去有数据库损坏的风险。通过引发 panic 条件,我们可以从 WAL 重放——这种情况下 WAL 中可能包含数据的唯一剩余副本。虽然这无疑丑陋且低效,但几乎没有其他选择,所幸这种情况很少发生。
新增了服务器参数data_sync_retry来控制这一行为;如果你确定你的内核在此类场景下不会丢弃脏数据缓冲区,可以把 data_sync_retry 设为 on 恢复旧行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
每个大版本分支的文档只包含该分支的发行说明,而不是该分支及所有之后分支的(Tom Lane)
以前的政策造成的重复越来越失控。我们的计划是在项目网站上提供完整的发行说明归档,而不是在每个发行版中重复它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免获取多个缓冲区锁时可能出现的死锁(Nishant Fnu)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免热备查询与 GIN 索引页删除重放之间的死锁(Alexander Korotkov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复使用索引表达式或谓词时逻辑复制可能崩溃的问题(Peter Eisentraut)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在表重写期间对 TOAST 数据进行无用且昂贵的逻辑解码(Tomas Vondra)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复启用同步复制时停止部分 WAL 发送进程的逻辑(Paul Guo、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在元组删除 WAL 记录中写入错误的副本标识字段(Stas Kelvich)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免libxml2返回空错误消息时崩溃(Sergio Conde Gómez)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复排序规则分配处理不一致导致的虚假分组相关分析器错误(Andrew Gierth)
某些情况下,如果表达式包含对可排序数据类型的操作,本应被视为匹配的表达式没有被看作匹配。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏,而不是直接假定它防泄漏(Tom Lane)
btree 比较函数的实际信息泄漏通常很难诱发,但原则上可能发生。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复横向引用必须在外部表扫描处求值的查询规划错误的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复归并连接代价的边界低估(Tom Lane)
当外键范围远小于内键范围时,即使内侧有如此多的重复键以至于这是糟糕的选择,规划器也可能偏爱归并连接。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免查询包含数千个可索引子句时规划时间 O(N^2) 增长的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 ANALYZE 对并发更新行的处理(Jeff Janes、Tom Lane)
此前,进行中事务删除的行被排除在 ANALYZE 的样本之外,但事实证明这比包含它们导致更多不一致。现在,样本实际上对应 ANALYZE 开始时刻的 MVCC 快照。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 TRUNCATE 忽略作为其他会话临时表的继承子表(Amit Langote、Michael Paquier)
这使 TRUNCATE 与其他命令的行为一致。此前这种情况通常以失败告终。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许在热备模式下执行 UNLISTEN(Shay Rojansky)
这必然是无操作,因为热备模式下不允许 LISTEN;但允许这个哑操作可以简化客户端的会话状态重置逻辑。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复某些模式和数据类型权限列表中缺失的角色依赖(Tom Lane)
某些情况下可以删除已被授予权限的角色。这不会立即造成问题,但之后的转储/恢复或升级会失败,症状涉及尝试向全数字角色名授予权限。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保重命名约束后关系缓存被正确更新(Amit Langote)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让自动清理更积极地移除遗留的临时表,并在 DISCARD TEMP 期间也移除遗留临时表(Álvaro Herrera)
这有助于确保崩溃会话的残留更及时地被清理。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止空的 GIN 索引页被过快回收而导致并发搜索失败(Andrey Borodin、Alexander Korotkov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复浮点到整数强制转换的边界失败(Andrew Gierth、Tom Lane)
略高于最大有效整数值的值可能未被拒绝,随后发生溢出,产生最小有效整数。另外,本应舍入到最小或最大整数值的值可能被错误拒绝。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止把 client_min_messages 设得比 ERROR 更高(Jonah Harris、Tom Lane)
此前可以把该变量设为 FATAL 或 PANIC,效果是抑制向客户端传输普通错误消息。然而这违背了 PostgreSQL 线上协议规范中给出的保证,并导致一些客户端非常困惑。在已发布分支中,通过把这种设置静默地当作 ERROR 处理来修复。版本 12 及之后将彻底拒绝这些选项。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()(Michael Meskes、Tom Lane)
由于 setlocale() 不是线程局部的,甚至可能不是线程安全的,原来的编码在多线程 ecpg 应用中造成问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复通过 ecpg SQLDA(SQL 描述符区域)传递的 numeric 数据的错误结果(Daisuke Higuchi)
带前导零的值没有被正确复制。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 psql 的 LaTeX 输出格式正确渲染特殊字符(Tom Lane)
反斜线和某些其他 ASCII 标点字符没有被正确渲染,导致文档语法错误或输出中的错误字符。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 对间接依赖主键的物化视图的处理(Tom Lane)
这导致此类视图的转储归档条目被错误标记,产生关于 “archive items not in correct section order” 的无害警告;更有害的是,依赖这些标签的选择性恢复选项(如 --section)可能行为异常。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免pg_dump或pg_restore尝试报告错误时在某些平台上出现空指针解引用崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值(Andrew Gierth)
原来的编码给出的结果与更新版本创建的空 hstore 值不同,因此可能导致哈希连接或哈希聚合的错误结果。如果表可能包含最早存储于 8.4 且此后从未转储/恢复过的数据,建议对 hstore 列上的哈希索引执行 REINDEX。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免contrib/intarray的gist__int_ops索引支持在大型输入下崩溃和运行时间过长的问题(Andrew Gierth)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
调整 configure 对线程相关编译器标志和库的选择,使其与后续 PostgreSQL 版本的做法一致(Tom Lane)
此前 9.4 和 9.5 分支中使用的代码在一些较新的平台上彻底失败,因此将其与 9.6 及更高版本的做法同步。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS(Christoph Berg)
这简化了扩展构建过程的自定义。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Perl 编写的构建脚本,不再假设搜索路径中包含“.”,因为较新的 Perl 版本不再默认包含它(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 OpenBSD 上服务器命令行选项解析的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2018i,涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二,创建了新时区 Asia/Qostanay,因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节。
变更
修复 has_ 函数族的边界失败(Tom Lane)foo_privilege()
提供无效对象 OID 时返回 NULL 而不是抛出错误。其中一些函数本来就做对了,但并非全部。has_column_privilege() 在某些平台上还可能崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免正则表达式匹配/分割函数在长字符串上的 O(N^2) 减速(Andrew Gierth)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免词法分析器在长+或-字符字符串上的 O(N^3) 减速(Andrew Gierth)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复外层查询反向扫描时 SubPlan 被错误执行的问题(Andrew Gierth)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复回卷所引用游标后 UPDATE/DELETE ... WHERE CURRENT OF ... 的失败(Tom Lane)
扫描多个关系(特别是继承树)的游标如果被回卷到较早的关系,可能产生错误行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 EvalPlanQual 正确处理条件执行的 InitPlan(Andrew Gierth、Tom Lane)
如果并发更新包含诸如 CASE 构造内的不相关子 SELECT 之类的代码,这会导致难以重现的崩溃或错误答案。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复字符类检查在 Windows 上对 U+FFFF 以上的 Unicode 字符不再失败(Tom Lane、Kenji Uno)
此 bug 影响全文搜索操作以及 contrib/ltree 和 contrib/pg_trgm。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保外部表拥有的序列由该表上的 ALTER OWNER 处理(Peter Eisentraut)
所有权更改应当也传播到这种序列,但外部表的情况被遗漏了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复array_out()结果字符串空间过度分配的问题(Keiichi Hirobe)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复重复 SP-GiST 索引扫描中的内存泄漏(Tom Lane)
目前已知只有当使用 SP-GiST 的排他约束在单条命令中接收许多新索引条目时,这才会达到显著程度。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 ApplyLogicalMappingFile() 用完后关闭映射文件(Tomas Vondra)
此前文件描述符被泄漏,最终导致逻辑解码期间的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码在已映射目录表被反复重写(例如被VACUUM FULL重写)时的问题(Andres Freund)
变更
阻止以过低的wal_level值(不足以支持现有复制槽)启动服务器(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免工具命令导致无限递归时崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
初始化热备时,处理主库两阶段事务造成的重复 XID(Michael Paquier、Konstantin Knizhnik)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 bootstrap 和独立后端以及 initdb 中随机化 random() 的种子(Noah Misch)
这一更改的主要实际效果是避免一种场景:initdb 因总是使用相同的随机种子导致的名称冲突,而错误地断定 POSIX 共享内存不可用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许中断 DSM 分配(Chris Travers)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免从 WAL 重放 GIN 页重压缩时可能的缓冲区越界(Alexander Korotkov、Sivasubramanian Ramasubramanian)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复复制槽目录遗漏 fsync 的问题(Konstantin Knizhnik、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在缓慢服务器上使用wal_sender_timeout时意外超时的问题(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保热备进程使用正确的 WAL 一致点(Alexander Kukushkin、Michael Paquier)
这防止备库服务器在 WAL 重放期间刚达到一致数据库状态之后可能的行为异常。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
处理SIGQUIT时不运行 atexit 回调(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不要把外部服务器用户映射记录为扩展的成员(Tom Lane)
如果在扩展脚本中执行 CREATE USER MAPPING,会为用户映射创建扩展依赖,这是意料之外的。角色不能是扩展成员,因此用户映射也不应该是。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 syslogger 在打开 CSV 日志文件失败时更加健壮(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pg_dump对不同对象名排序时可能不一致的问题(Jacob Champion)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_restore 发出 DISABLE/ENABLE TRIGGER 命令时对表名进行模式限定(Tom Lane)
这避免了以受限搜索路径运行恢复的新策略导致的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 正确处理扩展中的事件触发器(Haribabu Kommi)
pg_upgrade 未能保留事件触发器的扩展成员身份。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pg_upgrade的集簇状态检查在备库服务器上正确工作的问题(Bruce Momjian)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在所有 contrib/cube 函数中强制执行 cube 类型的维度限制(Andrey Borodin)
此前某些与 cube 相关的函数可以构造出会被 cube_in() 拒绝的值,导致转储/恢复失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/unaccent 的 unaccent() 函数使用与该函数同模式中的 unaccent 文本搜索词典(Tom Lane)
此前它尝试用搜索路径查找词典,如果搜索路径是受限值就可能失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 macOS 10.14(Mojave)上的构建问题(Tom Lane)
调整 configure 向 CPPFLAGS 添加 -isysroot 开关;没有它,PL/Perl 和 PL/Tcl 在 macOS 10.14 上无法配置或构建。所用的具体 sysroot 可以在配置或构建时通过在 configure 或 make 的参数中设置 PG_SYSROOT 变量来覆盖。
现在建议与 Perl 相关的扩展在其编译器标志中写 $(perl_includespec) 而不是 -I$(perl_archlibexp)/CORE。后者在大多数平台上继续有效,但在最近的 macOS 上不行。
此外,在最近的 macOS 版本上构建 PL/Tcl 应该不再需要手动指定 --with-tclconfig。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 MSVC 构建和回归测试脚本在最近的 Perl 版本上工作(Andrew Dunstan)
Perl 不再默认在搜索路径中包含当前目录;绕过这一点。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持在 Windows 上使用 Visual Studio 2015 或 Visual Studio 2017 构建(Michael Paquier、Haribabu Kommi)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 btree 比较函数返回 INT_MIN(Tom Lane)
到目前为止,我们禁止数据类型相关的比较函数返回 INT_MIN,这允许调用者只需对比较结果取反即可颠倒排序顺序。然而,对于直接返回 memcmp()、strcmp() 等结果的比较函数,这从来都不安全,因为 POSIX 没有对这些函数施加任何此类限制。至少某些最近版本的 memcmp() 可以返回 INT_MIN,导致错误的排序。因此我们移除了这一限制。调用者现在如果想颠倒排序顺序,必须使用 INVERT_COMPARE_RESULT() 宏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复共享失效消息处理中的递归风险(Tom Lane)
这个错误可能导致例如无法访问刚被 VACUUM FULL 处理过的系统目录或索引。
这一更改给 LockAcquire 添加了新的结果码,可能影响该函数的外部调用者,尽管只有非常不寻常的使用模式才会有问题。LockAcquireExtended 的 API 也有更改。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 SPI_connect() 和 SPI_finish() 期间保存和恢复 SPI 的全局变量(Chapman Flack、Tom Lane)
这防止一个使用 SPI 的函数调用另一个时可能的干扰。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在向后分支中提供 ALLOCSET_DEFAULT_SIZES 及同级宏(Tom Lane)
这些宏自 9.6 起就已存在,但有请求把它们添加到较旧的分支,以便扩展无需针对分支编写特定代码即可依赖它们。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免使用可能未充分对齐的页缓冲区(Tom Lane)
发明了新的联合类型 PGAlignedBlock 和 PGAlignedXLogBlock,并用它们代替普通的 char 数组,确保编译器不能把缓冲区放在未对齐的起始地址。这修复了对齐挑剔平台上可能的核心转储,并且即使在允许未对齐的平台上也可能改进性能。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 src/port/snprintf.c 遵循 C99 标准对 snprintf() 结果值的定义(Tom Lane)
在使用此代码的平台(主要是 Windows)上,其前 C99 行为可能导致无法检测缓冲区越界(如果调用代码假定 C99 语义)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 i386 上用 clang 编译器构建时,要求使用 -msse2(Andres Freund)
这避免了浮点溢出检查遗漏的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 configure 对 strerror_r() 结果类型的检测(Tom Lane)
原来的编码在 Linux 上用 icc 构建时(或许其他情况下)得到错误答案,导致 libpq 不能为系统报告的错误返回有用的错误消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2018g,涉及智利、斐济、摩洛哥和俄罗斯(伏尔加格勒)的夏令时法规变更,以及中国、夏威夷、日本、澳门和朝鲜的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节。
变更
修复连接尝试之间未能完全重置 libpq 状态的问题(Tom Lane)
dblink 或 postgres_fdw 的无权限用户可以绕过旨在防止使用服务器端凭据(如运行服务器的操作系统用户拥有的 ~/.pgpass 文件)的检查。允许本地连接上对等认证的服务器尤其容易受影响。其他攻击(如向 postgres_fdw 会话注入 SQL)也是可能的。以这种方式攻击 postgres_fdw 需要能够创建带选定连接参数的外部服务器对象,但任何能访问 dblink 的用户都可以利用该问题。一般而言,能够为使用 libpq 的应用选择连接参数的攻击者都可能作恶,尽管其他合理的攻击场景更难想到。感谢 Andrew Krasichkov 报告此问题。(CVE-2018-10915)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保对“钉住”的系统目录的 relfrozenxid 和 relminmxid 值的更新被及时处理(Andres Freund)
过于乐观的缓存规则可能阻止其他会话看到这些更新,导致虚假错误和/或数据损坏。对于 pg_authid 等共享目录,问题明显更严重,因为过期的缓存数据不仅存在于现有会话,还会持续到新会话中。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复刚提升的备库在完成第一个恢复后检查点之前崩溃的情况(Michael Paquier、Kyotaro Horiguchi、Pavan Deolasee、Álvaro Herrera)
这导致服务器在后续 WAL 重放期间认为自己没有达到一致的数据库状态,无法重启。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免回收全零 btree 页时发出虚假 WAL 记录(Amit Kapila)
这个错误曾被观察到导致断言失败,并且可能让热备服务器上发生不必要的查询取消。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进删除许多关系的事务的 WAL 重放性能(Fujii Masao)
这一更改减少了共享缓冲区被扫描的次数,因此在该设置较大时收益最大。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进备库 WAL 重放中锁释放的性能(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让逻辑 WAL 发送者正确报告流状态(Simon Riggs、Sawada Masahiko)
代码此前错误判断是否已追上上游服务器。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码期间快照处理的缺陷,罕见情况下可能导致错误的解码结果(Arseny Sher, Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保索引创建中途失败后正确重建表的缓存索引列表(Peter Geoghegan)
此前失败索引的 OID 可能留在列表中,在同一会话中之后引起问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN 索引中空未压缩 posting 列表页的处理不当(Sivasubramanian Ramasubramanian、Alexander Korotkov)
这可能导致 9.4 之前的 GIN 索引经 pg_upgrade 之后的断言失败(9.4 及之后不会创建这种页)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 VACUUM 在 btree 页删除循环中响应信号(Andres Freund)
损坏的 btree 索引可能在这里导致无限循环,而此前不强制崩溃就无法中断。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复涉及复合类型列的等价类的错误优化(Tom Lane)
这导致未能识别复合列上的索引可以为该列上的归并连接提供所需的排序顺序。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SQL 标准FETCH FIRST语法,按标准预期允许参数($)(Andrew Gierth)n
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 getObjectDescription 输出中某些对象名未做模式限定的问题(Kyotaro Horiguchi、Tom Lane)
排序规则、转换和文本搜索对象的名称在应当模式限定时没有限定。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把 COPY FROM 的当前行号计数器从 32 位加宽到 64 位(David Rowley)
这避免了超过 4G 行输入的两个问题:COPY FROM WITH HEADER 会每 4G 行丢弃一行而不只是第一行;错误报告可能显示错误的行号。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
向 ecpg 的 pgtypes 库添加字符串释放函数,以避免 Windows 上的跨模块内存管理问题(Takayuki Tsunakawa)
在 Windows 上,如果给定内存块的 free 调用不是来自 malloc 该内存的同一 DLL,就会发生崩溃。pgtypes 库有时返回期望调用者释放的字符串,使得无法遵循这一规则。添加了仅包装 free 的 PGTYPESchar_free() 函数,允许应用遵循规则。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复ecpg在 Windows 上对long long变量的支持,以及其他以非标准方式声明或不声明strtoll/strtoull的平台上的支持(Dang Minh Huong、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复规则更改导致会话内语句语义改变时 PL/pgSQL 对 SQL 语句类型的错误识别(Tom Lane)
这个错误导致断言失败,或者罕见情况下未能按预期执行 INTO STRICT 选项。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复客户端程序的密码提示,使 Windows 上stdin不是终端时正确关闭回显(Matthew Stickney)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
进一步修复转储中列表值 GUC 变量值的错误引号(Tom Lane)
此前对 pg_dump 输出中 search_path 及其他列表值变量加引号的修复,对空字符串列表元素行为不当,并且有截断长文件路径的风险。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 未能转储约束索引的 REPLICA IDENTITY 属性(Tom Lane)
手动创建的唯一索引被正确标记,但声明 UNIQUE 或 PRIMARY KEY 约束创建的没有。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 pg_upgrade 检查旧服务器是否被干净地关闭(Bruce Momjian)
原来的检查可能被立即模式关闭欺骗。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复contrib/ltree的lca()函数在输入数组为空时崩溃的问题(Pierre Ducroquet)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复若干可能报告错误错误码的错误处理代码路径(Michael Paquier、Tom Lane、Magnus Hagander)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
重排 makefile,确保程序链接到新构建的库(如 libpq.so)而不是系统库目录中可能存在的(Tom Lane)
这避免了在提供旧版 PostgreSQL 库副本的平台上构建时的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2018e,涉及朝鲜的夏令时法规变更,以及捷克斯洛伐克的历史修正。
此更新包括对爱尔兰以及纳米比亚和捷克斯洛伐克某些过去年份“夏令时”的重新定义。在这些司法管辖区,法律上夏季实行标准时间、冬季实行夏令时,因此夏令时偏移比标准时间晚一小时而不是早一小时。这不影响实际 UTC 偏移或所用的时区缩写;唯一已知的效果是这些情况下 pg_timezone_names 视图的 is_dst 列现在冬季为真、夏季为假。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
不过,如果下面第一条变更日志条目中提到的函数标记错误影响到你,你可能需要采取措施更正数据库系统目录。
另外,如果你是从 9.4.17 之前的版本升级,参见第 E.10 节。
变更
修复少数内建函数上不正确的易变性标记(Thomas Munro、Tom Lane)
函数 query_to_xml、cursor_to_xml、cursor_to_xmlschema、query_to_xmlschema 和 query_to_xml_and_xmlschema 应标记为 volatile,因为它们执行可能包含易变操作的用户提供的查询。它们没有被这样标记,导致错误查询优化的风险。新安装已通过更正初始目录数据修复,但现有安装将继续包含错误标记。实际使用这些函数似乎危害不大,但如遇到麻烦,可以手动更新这些函数的 pg_proc 条目来修复,例如 ALTER FUNCTION pg_catalog.query_to_xml(text, boolean, boolean, text) VOLATILE。(注意安装中的每个数据库都需要这样做。)另一个选择是把数据库 pg_upgrade 到包含更正后初始数据的版本。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免重用与已死但尚未清理的 TOAST 条目匹配的 TOAST 值 OID(Pavan Deolasee)
一旦 OID 计数器回卷,就可能分配一个 OID 与同一 TOAST 表中先前删除的条目匹配的 TOAST 值。如果该条目尚未被清理,就会导致 “unexpected chunk number 0 (expected 1) for toast value nnnnn” 错误,并持续到 VACUUM 移除死条目为止。修复方法是创建新 TOAST 条目时不选择这种 OID。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更改 ANALYZE 更新 pg_class.reltuples 的算法(David Gould)
此前,ANALYZE 未实际扫描的页被假定保留其旧的元组密度。在 ANALYZE 只采样很少一部分页的大表中,这意味着总体元组密度估计不会有太大变化,因此无论表中实际发生什么,reltuples 都几乎与表物理大小(relpages)的变化成比例地变化。据观察,这会导致 reltuples 远大于实际值,以致实际上关闭了自动清理。为修复,假定 ANALYZE 的样本是表的无偏统计样本(本应如此),直接把这些页中观察到的密度外推到整表。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 SERIALIZABLE 或 REPEATABLE READ 事务隔离下运行的并发 CREATE INDEX CONCURRENTLY 命令中的死锁(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 REFRESH MATERIALIZED VIEW CONCURRENTLY 可能缓慢的执行(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 UPDATE/DELETE ... WHERE CURRENT OF 在所引用游标使用仅索引扫描计划时不失败(Yugo Nagata、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复下推到参数化路径的连接子句的错误规划(Andrew Gierth、Tom Lane)
这个错误可能把本应是普通“过滤”条件的条件错误分类为外连接的“连接过滤”,导致错误的连接输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对顶层 AND/OR 条件带有可证明为 NULL 子子句的 CHECK 约束的错误优化(Tom Lane、Dean Rasheed)
这可能导致例如约束排除错误地排除不应从查询中排除的子表。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免提交预备事务时发生查询取消或会话终止中断时失败(Stas Kelvich)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复重复执行的哈希连接中的查询生命周期内存泄漏(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 heap_prepare_freeze_tuple 中过于严格的健全性检查(Álvaro Herrera)
在从 9.2 或更早版本 pg_upgrade 过来的数据库中,这可能导致错误的 “cannot freeze committed xmax” 失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 C 编写的 before-update 行触发器返回“旧”元组时的悬空指针解引用(Rushabh Lathia)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少自动清理工作者调度期间的锁定(Jeff Janes)
原来的行为导致有许多表的数据库中潜在工作者并发性的急剧丧失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保把 pg_stat_activity 数据复制到本地内存时复制客户端主机名(Edmund Horner)
此前,这个本应本地的快照包含指向共享内存的指针,使客户端主机名列可能因任何现有会话断开而意外改变。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ispell 词典中多个复合词缀的错误处理(Arthur Zakirov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 text 列上 SP-GiST 索引中的排序规则感知搜索(即使用不等操作符的索引扫描)(Tom Lane)
在大多数非 C 区域中,这种搜索会返回错误的行集合。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 SP-GiST 索引初始构建期间正确计数索引元组数(Tomas Vondra)
此前,元组数被报告为与底层表相同,如果索引是部分索引就错了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 GiST 索引清理期间正确计数索引元组数(Andrey Borodin)
此前它报告的是估计的堆元组数,可能不准确,而且如果索引是部分索引则肯定错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复流式备库在 WAL 延续记录处卡住的一个边界情况(Kyotaro Horiguchi)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在逻辑解码中,避免 walsender 重启时 WAL 数据可能被双重处理(Craig Ringer)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 scalarltsel 和 scalargtsel 用于非核心数据类型(Tomas Vondra)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少收集了大量查询输出之后服务器报告错误时 libpq 的内存消耗(Tom Lane)
在处理错误消息之前而不是之后丢弃先前的输出。在某些平台(特别是 Linux)上,这可以改变应用之后的内存占用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 中的双重释放崩溃(Patrick Krecker、Jeevan Ladhe)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 在 MSVC 构建中正确处理 long long int 变量(Michael Meskes、Andrew Gierth)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复转储中列表值 GUC 变量值的错误引号(Michael Paquier、Tom Lane)
local_preload_libraries、session_preload_libraries、shared_preload_libraries 和 temp_tablespaces 变量在 pg_dump 输出中没有正确加引号。如果这些变量的设置出现在 CREATE FUNCTION ... SET 或 ALTER DATABASE/ROLE ... SET 子句中,这会导致问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_recvlogical 对 v10 之前的 PostgreSQL 服务器不失败的问题(Michael Paquier)
此前的一次修复使 pg_recvlogical 不论服务器版本都发出一条命令,但它只应对 v10 及之后的服务器发出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/pgSQL 整数 FOR 循环中的溢出处理(Tom Lane)
原来的编码在一些非 gcc 编译器上未能检测到循环变量的溢出,导致无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
调整 PL/Python 回归测试在 Python 3.7 下通过(Peter Eisentraut)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持用 Python 3 和 MSVC 构建时测试 PL/Python 及相关模块(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
重命名内部 b64_encode 和 b64_decode 函数,避免与 Solaris 11.4 内置函数冲突(Rainer Orth)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把我们的时区库副本与 IANA tzcode 版本 2018e 同步(Tom Lane)
这修复了 zic 时区数据编译器应对负夏令时偏移的能力。虽然 PostgreSQL 项目不会立即发布这种时区数据,但 zic 可能被用于直接从 IANA 获得的时区数据,因此现在更新 zic 是审慎的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2018d,涉及巴勒斯坦和南极洲(凯西站)的夏令时法规变更,以及葡萄牙及其殖民地、恩德伯里、牙买加、特克斯和凯科斯群岛及乌拉圭的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
不过,如果你运行的安装中并非所有用户都相互信任,或者你维护打算在任意场合使用的应用或扩展,强烈建议阅读下面第一条变更日志条目所述的文档更改,并采取适当步骤确保你的安装或代码安全。
另外,下面第二条变更日志条目所述的更改可能导致索引表达式或物化视图中使用的函数在自动分析期间或从转储重新装载时失败。升级之后,请监控服务器日志中此类问题,并修复受影响的函数。
另外,如果你是从 9.4.13 之前的版本升级,参见第 E.14 节。
变更
记录如何配置安装和应用以防受其他用户依赖 search_path 的特洛伊木马攻击(Noah Misch)
使用包含任何可被恶意用户写入的模式的 search_path 设置,会使该用户能够截获查询的控制,然后以被攻击用户的权限运行任意 SQL 代码。虽然可以写出能防范此类劫持的查询,但记法上很繁琐,而且很容易遗漏漏洞。因此,我们现在推荐不把任何不受信任模式放入搜索路径的配置。相关文档见第 5.7.6 节(面向数据库管理员和用户)、第 31.1 节(面向应用作者)、第 35.15.1 节(面向扩展作者)和CREATE FUNCTION(面向 SECURITY DEFINER 函数的作者)。(CVE-2018-1058)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 pg_dump 和其他客户端程序中使用不安全的 search_path 设置(Noah Misch、Tom Lane)
pg_dump、pg_upgrade、 vacuumdb 等 PostgreSQL 自带的应用本身也容易受到上一条变更日志条目所述劫持的影响;由于这些应用通常由超级用户运行,它们是特别有吸引力的目标。为使它们无论整个安装是否已被加固都安全,修改它们使其 search_path 设置只包含 pg_catalog 模式。自动清理工作者进程现在也同样如此。
当用户提供的函数被这些程序间接执行时(例如索引表达式中的用户提供函数),更严格的 search_path 可能导致错误,需要通过调整这些用户提供的函数使其不对被调用时的搜索路径做任何假定来更正。这从来都是良好实践,但现在这是正确行为的必要条件。(CVE-2018-1058)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复子计划中出现 CTE 引用时并发更新重检查的错误行为(Tom Lane)
如果 CTE(WITH 子句引用)被用于 InitPlan 或 SubPlan,且查询因试图更新或锁定并发更新的行而需要重检查,可能得到错误结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复外连接中重叠 mergejoin 子句导致的规划器失败(Tom Lane)
这些错误在边界情况下导致 “left and right pathkeys do not match in mergejoin” 或 “outer pathkeys do not match mergeclauses” 规划器错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 未能为物化视图保留 relfrozenxid 的问题(Tom Lane、Andres Freund)
这一疏漏可能导致升级后物化视图中的数据损坏,表现为 “could not access status of transaction” 或 “found xmin from before relfrozenxid” 错误。很少刷新的物化视图,或只用 REFRESH MATERIALIZED VIEW CONCURRENTLY 维护的物化视图更可能出现问题。
如果观察到这种损坏,可以通过刷新物化视图(不带 CONCURRENTLY)来修复。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复错误 CONTEXT 栈中 PL/Python 函数名的错误报告(Tom Lane)
嵌套 PL/Python 函数调用(即通过 SPI 查询从另一个 PL/Python 函数到达的调用)中发生的错误会导致栈跟踪把内层函数名显示两次,而不是预期的结果。此外,嵌套 PL/Python DO 块中的错误在某些平台上可能导致空指针解引用崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 contrib/auto_explain 的 log_min_duration 设置范围达到 INT_MAX,即约 24 天而不是 35 分钟(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.13 的版本升级,请参见第 E.14 节。
变更
确保 pg_upgrade 创建的所有临时文件对其他用户不可读(Tom Lane、Noah Misch)
pg_upgrade 通常将其临时文件限制为只有调用用户可读写。但如果用户的 umask 设置允许,包含 pg_dumpall -g 输出的临时文件会是组可读或全局可读,甚至可写。在多用户机器的典型用法中,umask 和/或工作目录的权限会足够严格以防止问题;但可能有人在 pg_upgrade 的这一疏漏允许向不友好者泄露数据库密码的场景下使用它。(CVE-2018-1053)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对在键共享锁定下被更新的元组的清理(Andres Freund、Álvaro Herrera)
某些情况下,VACUUM 即使这些元组现在已经死亡也不会移除它们,导致各种数据损坏场景。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复某些 LSN 获取中不充分的缓冲区锁定(Jacob Champion、Asim Praveen、Ashwin Agrawal)
这些错误可能导致并发负载下的行为异常。潜在后果尚未完全弄清。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免与 ALTER TABLE NO INHERIT 并发地从树中移除某个子表时对继承树的查询不必要的失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复多个会话运行 CREATE INDEX CONCURRENTLY 时的虚假死锁失败(Jeff Janes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 LATERAL 子查询内 VALUES 内相关子 SELECT 的失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复横向子查询内嵌套 UNION ALL 的某些情况下 “could not devise a query plan for the given query” 规划器失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码正确清理崩溃事务的磁盘文件(Atsushi Torikoshi)
逻辑解码可能为生成许多 WAL 记录的事务把 WAL 记录溢出到磁盘。通常这些文件在事务的提交或中止记录到达后清理;但如果从未看到这样的记录,移除代码就会行为不当。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复处理大事务时的 walsender 超时失败和中断响应失败(Petr Jelinek)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 has_sequence_privilege() 像其他权限测试函数一样支持 WITH GRANT OPTION 测试(Joe Conway)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在使用 UTF8 编码的数据库中,忽略断言不同编码的 XML 声明(Pavel Stehule、Noah Misch)
我们总是以数据库编码存储 XML 字符串,因此允许 libxml 对另一种编码的声明采取行动会给出错误结果。在 UTF8 之外的编码中,我们本来就不承诺支持非 ASCII XML 数据,因此为错误兼容保留以前的行为。这一更改只影响 xpath() 及相关函数;其他 XML 代码路径已经这样做了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为与未来次版本协议的前向兼容做准备(Robert Haas、Badrul Chowdhury)
到目前为止,PostgreSQL 服务器只是拒绝使用比 3.0 更新的协议版本的请求,因此协议版本号的主部分和次部分之间没有功能差别。允许客户端请求 3.x 版本而不失败,发回一条表明服务器只理解 3.0 的消息。这目前没有区别,但向后移植此更改应能更快引入未来的次协议升级。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
应对并行工作者进程启动失败(Amit Kapila、Robert Haas)
此前如果工作者无法启动(因 fork() 失败或其他低概率问题),并行查询往往无限挂起。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止规划极深层嵌套集合操作(UNION/INTERSECT/EXCEPT)时的栈溢出崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_hba.conf 中出现的某些类型 LDAP URL 的空指针崩溃(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/pgSQL 文档中的 INSTR() 示例函数(Yugo Nagata、Tom Lane)
这些函数声称与 Oracle® 兼容,但并不完全如此。特别是对负第三参数的解释有分歧:Oracle 认为负值表示目标子串可以开始出现的最后一个位置,而我们的函数把它当作目标可以结束的最后一个位置。此外,Oracle 对零或负第四参数抛出错误,而我们的函数返回零。
示例代码已被调整以更精确地匹配 Oracle 的行为。把这段代码复制到其应用中的用户可能希望更新其副本。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 使 ACL(权限)、注释和安全标签条目在归档输出格式中可靠可识别(Tom Lane)
ACL 归档条目的“标记”部分通常只是相关对象的名称。使它以对象类型开头,使 ACL 与注释和安全标签归档条目已使用的约定一致。同时修复整个数据库的注释和安全标签条目(如果存在),使其标记以 DATABASE 开头,从而也遵循这一约定。这防止试图通过查看标记是否以 LARGE OBJECT 开头来识别大对象相关条目的代码发生假匹配。那可能导致条目被错误分类为数据而非模式,在仅模式或仅数据转储中产生不希望的结果。
注意,这一更改在 pg_restore --list 的输出中有用户可见的结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 ecpg 中,检测长度不正确的指示符数组并报错(David Rader)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 contrib/hstore 中因对相同源和目标指针使用 memcpy() 而触发 libc 断言(Tomas Vondra)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
提供在 macOS 上自动启动 Postgres 的现代示例(Tom Lane)
contrib/start-scripts/osx 中的脚本使用已被弃用十多年的基础设施,并且在过去几年的 macOS 版本中已完全不能工作。添加了包含使用较新 launchd 基础设施的脚本的新子目录 contrib/start-scripts/macos。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Windows 上为 OpenSSL 错误选择配置特定的库(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持链接到 MinGW 构建的 libperl 版本(Noah Misch)
这允许用一些常见的 Windows Perl 发行版构建 PL/Perl。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 MSVC 构建测试 32 位 libperl 是否需要 -D_USE_32BIT_TIME_T(Noah Misch)
可用的 Perl 发行版在这点上不一致,且没有报告它的可靠手段,因此求助于对所使用的库实际行为的构建时测试。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,在 postmaster 启动更早阶段安装崩溃转储处理器(Takayuki Tsunakawa)
这可以允许为一些以前不产生转储的早期启动失败收集核心转储。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,避免 postmaster 启动极早期发出消息时与编码转换相关的崩溃(Takayuki Tsunakawa)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 OpenBSD 上也使用现有的 Motorola 68K 自旋锁代码,与 NetBSD 一样(David Carlier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
新增对 Motorola 88K 自旋锁的支持(David Carlier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到tzdata发行版 2018c,以反映巴西、圣多美和普林西比的夏令时法规变更,以及玻利维亚、日本和南苏丹的历史修正。US/Pacific-New时区已被移除(它本来就只是America/Los_Angeles的别名)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.13 的版本升级,请参见第 E.14 节。
变更
修复 json{b}_populate_recordset() 中行类型不匹配导致的崩溃(Michael Paquier、Tom Lane)
这些函数使用 FROM ... AS 子句中指定的结果行类型,而没有检查它与所提供元组值的实际行类型匹配。如果不匹配,通常会导致崩溃,尽管泄露服务器内存内容似乎也有可能。(CVE-2017-15098)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复示例服务器启动脚本在打开 $PGLOG 之前变成 $PGUSER(Noah Misch)
此前,postmaster 日志文件是在仍以 root 运行时打开的。因此数据库所有者可以通过让 $PGLOG 成为指向某个其他文件的符号链接来攻击另一个系统用户,该文件随后会因追加日志消息而被损坏。
默认情况下这些脚本不会安装到任何地方。使用了它们的用户需要手动重新复制,或对其修改版应用相同的更改。如果现有的 $PGLOG 文件为 root 所有,在用修正后的脚本重启服务器之前需要把它移开或重命名。(CVE-2017-12172)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复从使用 SPI 的函数(特别是任何用 PL 语言编写的函数)调用逻辑解码时崩溃的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复json_build_array()、json_build_object()及其jsonb等价函数正确处理显式VARIADIC参数的问题(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确拒绝把无穷大浮点值转换为 numeric 类型的尝试(Tom Lane、KaiGai Kohei)
此前行为是与平台相关的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在视图末尾添加列后极端情况下崩溃的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在视图或规则包含 FieldSelect 或 FieldStore 表达式节点时记录正确的依赖(Tom Lane)
缺少这些依赖可能允许本应失败的列或数据类型 DROP 成功执行,从而导致之后使用该视图或规则时出错。此补丁不会保护现有视图/规则,只保护将来创建的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确检测范围数据类型的可哈希性(Tom Lane)
规划器错误地假定任何范围类型都可以哈希用于哈希连接或哈希聚合,但实际上必须检查范围的子类型是否有哈希支持。这不影响任何内置范围类型,因为它们反正都是可哈希的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复因 XID 回卷导致的低概率 NOTIFY 消息丢失(Marko Tiikkaja、Tom Lane)
如果一个会话在超过 20 亿个事务期间不执行查询而只是监听通知,它就开始遗漏来自并发提交事务的一些通知。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 Linux 上 DSM 内存请求超出tmpfs可用空间时出现SIGBUS崩溃(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止嵌套触发器触发处理中低概率的崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 COPY 的 FREEZE 选项在事务隔离级别为 REPEATABLE READ 或更高时工作(Noah Misch)
这种情况意外地被之前的 bug 修复破坏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复COPY或lo_export()中文件创建失败时正确恢复 umask 设置的问题(Peter Eisentraut)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为ANALYZE中的重复列名提供更好的错误消息(Nathan Bossart)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对无换行结尾的pg_hba.conf文件最后一行的错误解析(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 libpq 不要求用户的主目录存在(Tom Lane)
在 v10 中,尝试读取 ~/.pgpass 时找不到主目录被当作硬错误,但它应该只是导致找不到该文件。v10 和以前的发布分支在读取 ~/.pg_service.conf 时犯了同样的错误,不过这不太明显,因为除非指定了服务名否则不寻找该文件。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复libpq对PGresult行数的整数溢出防护(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复ecpg对带指针或数组变量的超作用域游标声明的处理(Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
ecpglib 中根据是否设置了standard_conforming_strings正确处理字符串字面量中的反斜线(Tsunakawa Takayuki)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 ecpglib 的 Informix 兼容模式按预期忽略整数输入字符串中的小数位(Gao Zengqi、Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把我们的时区库副本与 IANA tzcode2017c 同步(Tom Lane)
这修复了若干问题;唯一可能对用户可见的是,当时区数据目录中没有 posixrules 文件时,POSIX 风格时区名的默认夏令时规则现在匹配当前美国法律而不是十几年前的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到tzdata发行版 2017c,以反映斐济、纳米比亚、北塞浦路斯、苏丹、汤加以及特克斯和凯科斯群岛的夏令时法规变更,以及阿拉斯加、阿皮亚、缅甸、加尔各答、底特律、爱尔兰、纳米比亚和帕果帕果的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.13 的版本升级,请参见第 E.14 节。
变更
修复 walsender 进程不响应关闭信号的问题(Marco Nenciarini)
由于遗漏了标志更新,只要还有备库服务器连接,walsender 就会继续运行,从而阻止主库服务器关闭,除非使用立即关闭模式。
变更
在 information_schema.table_privileges 视图中显示外部表(Peter Eisentraut)
所有其他相关的 information_schema 视图都包含外部表,只有这一个忽略了它们。
由于这个视图定义是由 initdb 安装的,仅升级不会修复问题。如果需要在现有安装中修复,可以以超级用户身份在 psql 中执行以下操作:
SET search_path TO information_schema;
CREATE OR REPLACE VIEW table_privileges AS
SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
CAST(grantee.rolname AS sql_identifier) AS grantee,
CAST(current_database() AS sql_identifier) AS table_catalog,
CAST(nc.nspname AS sql_identifier) AS table_schema,
CAST(c.relname AS sql_identifier) AS table_name,
CAST(c.prtype AS character_data) AS privilege_type,
CAST(
CASE WHEN
-- object owner always has grant options
pg_has_role(grantee.oid, c.relowner, 'USAGE')
OR c.grantable
THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
FROM (
SELECT oid, relname, relnamespace, relkind, relowner,
(aclexplode(coalesce(relacl, acldefault('r', relowner))).*
FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
pg_namespace nc, pg_authid u_grantor,
(
SELECT oid, rolname FROM pg_authid
UNION ALL
SELECT 0::oid, 'PUBLIC'
) AS grantee (oid, rolname)
WHERE c.relnamespace = nc.oid
AND c.relkind IN ('r', 'v', 'f')
AND c.grantee = grantee.oid
AND c.grantor = u_grantor.oid
AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
AND (pg_has_role(u_grantor.oid, 'USAGE')
OR pg_has_role(grantee.oid, 'USAGE')
OR grantee.rolname = 'PUBLIC');
这必须在每个要修复的数据库中重复,包括 template0。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
清理尝试对失败事务执行 ROLLBACK 时发生致命退出(例如因收到 SIGTERM)的处理(Tom Lane)
这种情况可能导致断言失败。在生产构建中退出仍会发生,但会记录一条关于 “cannot drop active portal” 的意外消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除在致命退出期间可能触发的断言(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列(Tom Lane)
某些更改复合类型或域类型定义的 ALTER 命令本应在该类型有存储值时失败,因为它们缺少更新或检查这类值所需的基础设施。此前这些检查可能遗漏包裹在范围类型或子域中的相关值,可能允许数据度变得不一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pg_restore在使用并行模式并使用列表文件选择要还原项的子集时崩溃的问题(Fabrízio de Royes Mello)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句(Michael Meskes)
这允许 ecpg 程序包含在内部使用 RETURNING(例如在 CTE 内)而不是用它定义返回给客户端的值的 SQL 构造。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 Windows 上 PL/Perl 编译器标志的选择(Tom Lane)
此修复避免了因对 time_t 值宽度的假定不一致而可能的 PL/Perl 崩溃。扩展开发者可能看到的一个副作用是 _USE_32BIT_TIME_T 不再在 PostgreSQL Windows 构建中全局定义。这预计不会引起问题,因为 time_t 类型没有用于任何 PostgreSQL API 定义。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你使用的外部数据服务器依赖用户密码进行认证,请参见下面的第一条变更日志条目。
另外,如果你是从早于 9.4.12 的版本升级,请参见第 E.15 节。
变更
进一步限制 pg_user_mappings.umoptions 的可见性,以保护存储为用户映射选项的密码(Noah Misch)
CVE-2017-7486 的修复不正确:它允许用户看到她自己用户映射中的选项,即使她对相关外部服务器没有 USAGE 权限。这种选项可能包含由服务器所有者而非用户自己提供的密码。由于 information_schema.user_mapping_options 在这种情况下不显示选项,pg_user_mappings 也不应该。(CVE-2017-7547)
此补丁本身只会修复新 initdb 的数据库中的行为。如果希望在现有数据库中应用此更改,需要执行以下操作:
在 postgresql.conf 中添加 allow_system_table_mods = true 后重启 postmaster。(在支持 ALTER SYSTEM 的版本中,可以用它进行配置更改,但仍需重启。)
在集簇的每个数据库中,以超级用户身份运行以下命令:
SET search_path = pg_catalog;
CREATE OR REPLACE VIEW pg_user_mappings AS
SELECT U.oid AS umid, S.oid AS srvid, S.srvname AS srvname,
U.umuser AS umuser,
CASE WHEN U.umuser = 0 THEN 'public' ELSE A.rolname END AS usename,
CASE WHEN (U.umuser <> 0 AND A.rolname = current_user
AND (pg_has_role(S.srvowner, 'USAGE')
OR has_server_privilege(S.oid, 'USAGE')))
OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
THEN U.umoptions ELSE NULL END AS umoptions
FROM pg_user_mapping U
LEFT JOIN pg_authid A ON (A.oid = U.umuser)
JOIN pg_foreign_server S ON (U.umserver = S.oid);
不要忘记包括 template0 和 template1 数据库,否则漏洞仍会存在于之后创建的数据库中。要修复 template0,需要暂时让它接受连接。在 PostgreSQL 9.5 及之后,可以使用
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
修复 template0 之后再撤销:
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
在更早的版本中,改用:
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0'; UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
最后,移除 allow_system_table_mods 配置设置,并再次重启 postmaster。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止在所有基于密码的认证方法中使用空密码(Heikki Linnakangas)
libpq 忽略空的密码说明,不把它们传输给服务器。因此,如果用户的密码被设为空字符串,就无法通过 psql 或其他基于 libpq 的客户端用该密码登录。管理员可能因此认为把密码设为空等同于禁用密码登录。然而,使用修改过的或非 libpq 的客户端,登录可能是可能的,这取决于配置的认证方法。特别是最常见的方法 md5 接受空密码。更改服务器在所有情况下拒绝空密码。(CVE-2017-7546)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 lo_put() 检查对目标大对象的 UPDATE 权限(Tom Lane、Michael Paquier)
lo_put() 理所当然应要求与 lowrite() 相同的权限,但检查缺失,允许任何用户更改大对象中的数据。(CVE-2017-7548)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复元组更新链的并发锁定(Álvaro Herrera)
如果多个会话用非冲突锁模式并使用旧快照并发锁定一条元组更新链,且都成功,由于竞态条件其中一些仍可能失败(并得出没有存活元组版本的结论)。这会导致诸如外键检查看不到一个确实存在但正被并发更新的元组之类的后果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复冻结 XMAX 为恰好剩一个仍受关注成员的多事务的元组时潜在的数据损坏(Teodor Sigaev)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在内存中排序超过十亿个元组时的整数溢出及随后的崩溃(Sergey Koposov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,如果在新进程中为共享内存保留地址范围失败,则重试进程创建(Tom Lane、Amit Kapila)
这有望修复可能由杀毒产品干扰导致的偶发子进程启动失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Windows 构建中共享谓词锁哈希表低概率损坏的问题(Thomas Munro、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免把 SSL 连接的正常关闭记录成连接重置(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止向客户端发送 SSL 会话票据(Tom Lane)
此修复防止使用票据感知的客户端 SSL 代码时的重连失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Solaris 上设置tcp_keepalives_idle的代码(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复统计收集器处理 postmaster 关闭并立即重启之后发出的查询消息(Tom Lane)
在上一个 postmaster 关闭之后半秒内发出的统计查询实际上被忽略。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保统计收集器的接收缓冲区大小至少为 100KB(Tom Lane)
这降低了默认接收缓冲区大小小于该值的老平台上统计数据丢失的风险。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复备库在刚处理完XLOG_SWITCHWAL 记录后被提升时可能创建无效 WAL 段的问题(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复walsender在客户端请求关闭时及时退出的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 walsender 进程中SIGHUP和SIGUSR1的处理(Petr Jelinek、Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止关闭检查点期间由 walsender 触发的 panic(Andres Freund、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复因 postmaster 中的竞争条件导致walreceiver进程不必要地缓慢重启的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复极宽元组导致逻辑解码失败的问题(Andres Freund)
逻辑解码在宽于 64KB 的元组(压缩后但仍全部内联存储)上会崩溃。该情况仅在包含此类元组的表上启用了REPLICA IDENTITY FULL时才会出现。
变更
修复逻辑解码期间溢出到磁盘的小子事务的泄漏(Andres Freund)
这导致临时文件消耗过多的磁盘空间。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少创建逻辑解码槽期间构建快照所需的工作(Andres Freund、Petr Jelinek)
原来的算法在有大量打开事务的服务器上昂贵得不可行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复可能无限延迟逻辑解码槽创建的竞争条件(Andres Freund、Petr Jelinek)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少处理系统缓存失效事件的开销(Tom Lane)
这对逻辑解码特别有帮助,它触发频繁的缓存失效。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复INSERT或UPDATE对域于数组类型列的多于一个元素赋值的情况(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许在聚合函数参数内的子SELECT中使用窗口函数(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 ALTER ... RENAME 期间把自动生成的数组类型移开(Vik Fearing)
此前我们在 CREATE 期间会把冲突的自动生成数组类型重命名移开;此修复把该行为扩展到重命名操作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保ALTER USER ... SET接受ALTER ROLE ... SET接受的所有语法变体(Peter Eisentraut)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把数据类型 I/O 函数的参数或返回类型从 opaque 更改为正确类型时正确更新依赖信息(Heikki Linnakangas)
CREATE TYPE 会更新以这种早已过时风格声明的 I/O 函数,但忘记记录对类型的依赖,允许随后的 DROP TYPE 留下损坏的函数定义。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少ANALYZE处理tsvector列时的内存占用(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复money值与整数或浮点数相乘/相除时不必要的精度损失和草率舍入(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
收紧对解析标识符的函数(如 regprocedurein())中空白的检查(Tom Lane)
根据当前区域,这些函数可能把多字节字符的片段误解释为空白。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
编译 PL/Perl 时使用来自 Perl 的相关 #define 符号(Ashutosh Sharma、Tom Lane)
这避免了可移植性问题(通常表现为库加载期间的“握手”不匹配),在使用最近 Perl 版本时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 libpq 中,连接尝试失败后正确重置 GSS/SASL 和 SSPI 认证状态(Michael Paquier)
不这样做意味着当从 SSL 回退到非 SSL 连接时,SSL 尝试中的 GSS/SASL 失败总是导致非 SSL 尝试失败。SSPI 不会失败,但泄漏内存。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 中,修复 COPY FROM STDIN 以键盘 EOF 信号结束后再尝试另一个 COPY FROM STDIN 时失败的问题(Thomas Munro)
这种错误行为在 BSD 衍生平台(包括 macOS)上观察到,但在大多数其他平台上没有。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 和 pg_restore 把 REFRESH MATERIALIZED VIEW 命令放在最后发出(Tom Lane)
这防止了物化视图引用其他用户拥有的表时转储/恢复期间的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进pg_dump/pg_restore对源自zlib的错误情况的报告(Vladimir Kunschikov, Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 使用 --clean 选项按预期删除事件触发器(Tom Lane)
它现在还正确分配事件触发器的所有权;此前它们被恢复为归运行恢复脚本的超级用户所有。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pg_dump对空操作符类不再输出无效 SQL 的问题(Daniel Gustafsson)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 在 Windows 上输出到 stdout(Kuntal Ghosh)
由于未把文件描述符置为二进制模式,写到 stdout 的压缩纯文本转储会包含损坏的数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_get_ruledef() 为列被重命名的视图的 ON SELECT 规则打印正确输出(Tom Lane)
某些边界情况下 pg_dump 依靠 pg_get_ruledef() 转储视图,因此这个错误可能导致转储/恢复失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对带空约束的外连接(例如没有公共列的NATURAL LEFT JOIN结果)的转储(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复FROM子句中函数表达式在表达式无法反向解析为类似函数调用形式时的转储(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_basebackup 在 Windows 上输出到 stdout(Haribabu Kommi)
由于未把文件描述符置为二进制模式,写到 stdout 的备份会包含损坏的数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 确保结束 WAL 记录不具有wal_level = minimum(Bruce Momjian)
这一条件可能阻止升级后的备库服务器重新连接。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 postgres_fdw 中,ALTER SERVER 或 ALTER USER MAPPING 命令之后重建到远程服务器的连接(Kyotaro Horiguchi)
这确保影响连接参数的选项更改被及时应用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 postgres_fdw 中,允许取消远程事务控制命令(Robert Haas、Rafia Sabih)
这一更改使我们能在比以前多得多的情况下快速摆脱对无响应远程服务器的等待。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
提高MAX_SYSCACHE_CALLBACKS以为扩展提供更多空间(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
用 gcc 构建共享库时始终使用 -fPIC 而不是 -fpic(Tom Lane)
这在有差别的平台上支持更大的扩展库。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复我们用于 Microsoft MSVC 的构建脚本中未转义花括号的问题,以避免较新 Perl 版本发出警告或错误(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
MSVC 构建中,处理openssl库不在VC子目录内的情况(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,为 libxml2 头文件添加正确的包含路径(Andrew Dunstan)
这修复了以前需要移动标准 Windows 安装的 libxml2 中某些东西的需要。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
MSVC 构建中,识别名为tcl86.lib的 Tcl 库(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
MSVC 构建中,遵循vcregress.pl命令行上的PROVE_FLAGS设置(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
不过,如果你使用的外部数据服务器依靠用户密码进行身份验证,请参见下面第一条变更日志条目。
另外,如果你使用依赖“逻辑解码”的第三方复制工具,请参见下面的第四条变更日志条目。
另外,如果你是从早于 9.4.11 的版本升级,请参见第 E.16 节。
变更
限制pg_user_mappings.umoptions的可见性,以保护作为用户映射选项存储的密码(Michael Paquier、Feike Steenbergen)
原来的编码允许外部服务器对象的所有者,或任何被他授予服务器 USAGE 权限的人,看到与该服务器关联的所有用户映射的选项。这很可能包括其他用户的密码。调整视图定义以匹配 information_schema.user_mapping_options 的行为,即这些选项对被映射的用户可见,或者当映射针对 PUBLIC 且当前用户是服务器所有者时,或者当前用户是超级用户时可见。(CVE-2017-7486)
该补丁本身只会修复新 initdb 的数据库中的行为。如果希望在现有数据库中应用此变更,请按照第 E.14 节中 CVE-2017-7547 的变更日志条目所示的更正程序操作。
变更
防止通过泄漏型操作符暴露统计信息(Peter Eisentraut)
规划器的一些选择率估计函数会对从 pg_statistic 获得的值(如最常见值和直方图条目)应用用户定义操作符。这发生在表权限检查之前,因此恶意用户可以利用这一行为获得他无权读取的表列的这些值。为修复,当操作符的实现函数未被证明防泄漏且调用用户无权读取所需统计信息的表列时,回退到默认估计。实践中大多数情况下至少满足这些准则之一。(CVE-2017-7484)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
恢复 libpq 对 PGREQUIRESSL 环境变量的识别(Daniel Gustafsson)
对这个环境变量的处理在 PostgreSQL 9.3 中被意外丢弃,但其文档还在。这造成了安全隐患,因为用户可能依赖该环境变量强制 SSL 加密连接,但这不再有保证。恢复对该变量的处理,但其优先级低于 PGSSLMODE,以避免破坏在 9.3 之后代码下正常工作的配置。(CVE-2017-7485)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码初始快照可能无效的问题(Petr Jelinek、Andres Freund)
为逻辑解码复制槽创建的初始快照可能不正确。这可能导致使用逻辑解码复制不完整/不一致初始数据的第三方工具。如果创建槽时源服务器繁忙,或者已存在另一个逻辑槽,更有可能发生。
如果你使用依赖逻辑解码的复制工具,并且它本应在复制开始时复制了非空数据集,建议在安装此更新后重建副本,或对照源服务器验证其内容。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复未记录索引的“init fork”可能的损坏(Robert Haas、Michael Paquier)
这可能导致未记录索引在崩溃和重启之后被置为无效状态。这种问题将持续到索引被删除并重建为止。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复备库重放已预备但未提交的两阶段事务时 pg_subtrans 条目的错误重建(Tom Lane)
大多数情况下这没有可见的不良影响,但在边界情况下可能导致 pg_subtrans 中的循环引用,可能使检查两阶段事务所修改行的查询陷入无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 walsender 因未能初始化字符串缓冲区而可能的崩溃(Stas Kelvich、Fujii Masao)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 postmaster 对后台工作者进程 fork() 失败的处理(Tom Lane)
此前 postmaster 会像进程成功启动一样更新其状态的一部分,导致后续的混乱。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保扩展脚本中查询的解析能看到紧邻的前一条 DDL 的结果(Julien Rouhaud、Tom Lane)
由于扩展脚本文件中命令之间缺少缓存刷新步骤,非实用查询可能看不到紧邻的目录更改(如 ALTER TABLE ... RENAME)的效果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 ALTER TABLE ... ALTER COLUMN TYPE 重建现有索引时跳过表空间权限检查(Noah Misch)
如果调用用户当前对包含索引的表空间没有 CREATE 权限,命令就会失败。这种行为似乎无益,因此跳过检查,允许索引在原地重建。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER TABLE ... VALIDATE CONSTRAINT 在约束被标记 NO INHERIT 时不递归到子表(Amit Langote)
此修复防止子表中不存在匹配约束时不需要的 “constraint does not exist” 失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 VACUUM 正确考虑因页 pin 冲突而无法扫描的页(Andrew Gierth)
这往往导致低估表中的元组数。在小型高争用表的最坏情况下,VACUUM 可能错误地报告表不包含任何元组,导致非常糟糕的计划选择。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保哈希连接中的批量元组传输循环可被查询取消请求中断(Tom Lane、Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 interval 比较中的整数溢出问题(Kyotaro Horiguchi、Tom Lane)
interval 类型的比较操作符对超过约 296000 年的间隔可能给出错误答案。包含这种大值的列上的索引应执行 REINDEX,因为它们可能已损坏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 cursor_to_xml() 在 tableforest = false 时产生有效输出(Thomas Munro、Peter Eisentraut)
此前它未能产生包裹的 <table> 元素。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 float8_timestamptz() 和 make_interval() 中的舍入问题(Tom Lane)
这些函数在把浮点值转换为整数微秒时是截断而不是舍入;这可能导致意外的差一结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 pg_timezone_names 视图的性能(Tom Lane、David Rowley)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少包含许多大块的内存上下文的内存管理开销(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对 lseek() 和 close() 边界情况错误的草率处理(Tom Lane)
这两个系统调用在典型情况下不太可能失败,但如果失败,fd.c 会变得相当混乱。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对 postmaster 是否作为 Windows 服务运行的不正确检查(Michael Paquier)
这可能导致在事件日志不可访问时尝试写入它,以至于完全不进行日志记录。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 支持 COMMIT PREPARED 和 ROLLBACK PREPARED(Masahiko Sawada)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 中处理美元引用字符串字面量时的双重释放错误(Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 中,修复某些类型数据库对象的注释和安全标签的模式和所有者标记错误(Giuseppe Broccolo、Tom Lane)
简单情况下这没有不良影响;但例如,选择性模式恢复可能遗漏本应包含的注释,因为它们没有被标记为属于其相关对象的模式。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 SQL 对象名包含换行时 pg_restore -l 发出无效列表文件(Tom Lane)
用空格替换换行,这足以使输出对 pg_restore -L 的用途有效。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 传输附加到“大对象”(blob)的注释和安全标签(Stephen Frost)
此前,blob 被正确传输到新数据库,但附加到它们的任何注释或安全标签都丢失了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 contrib/adminpack 的 pg_file_write() 函数中的错误处理(Noah Misch)
值得注意的是,它未能检测 fclose() 报告的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/dblink 中,建立新的未命名连接时避免泄漏先前的未命名连接(Joe Conway)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_trgm 从正则表达式提取三元组的问题(Tom Lane)
某些情况下它会产生永远无法匹配任何东西的损坏数据结构,导致使用三元组索引的 GIN 或 GiST 索引扫描找不到与正则表达式的任何匹配。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/postgres_fdw 中,把查询取消请求传输到远程服务器(Michael Paquier、Etsuro Fujita)
以前,本地查询取消请求不会导致已发送的远程查询提前终止。这是对最初为 9.6 完成的工作的回移植。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持 OpenSSL 1.1.0(Heikki Linnakangas、Andreas Karlsson、Tom Lane)
这是把先前在较新分支中完成的工作向后移植;由于许多平台正在采用更新的 OpenSSL 版本,因此需要它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中支持 Tcl 8.6(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把我们的时区库副本与 IANA tzcode2017b 同步(Tom Lane)
这修复了影响 2038 年 1 月某些夏令时转换的 bug。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2017b,涉及智利、海地和蒙古的夏令时法规变更,加上厄瓜多尔、哈萨克斯坦、利比里亚和西班牙的历史修正。南美洲、太平洋和印度洋以及一些亚洲和中东国家的众多时区改用数字缩写。
IANA 时区数据库以前为所有时区提供文本缩写,有时编造在当地居民中几乎或完全没有使用的缩写。他们正在逆转这一政策,改为在没有证据表明实际使用英文缩写的区域使用数字 UTC 偏移。至少目前,PostgreSQL 将继续接受这种被移除的缩写用于时间戳输入。但它们不会显示在 pg_timezone_names 视图中,也不用于输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中对 POSIX 风格时区名使用正确的夏令时规则(David Rowley)
Microsoft MSVC 构建脚本忽略了把 posixrules 文件安装到时区目录树中。这导致时区代码回退到它内置的关于 POSIX 风格时区名应假定什么 DST 行为的规则。由于历史原因,那仍然对应美国 2007 年之前使用的 DST 规则(即 4 月第一个星期日和 10 月最后一个星期日更改)。有了此修复,POSIX 风格时区名将使用 US/Eastern 时区的当前和历史 DST 转换日期。如果不希望这样,移除 posixrules 文件,或用其他某个时区文件的副本替换它(见第 8.5.3 节)。注意由于缓存,可能需要重启服务器才能使这种更改生效。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
不过,如果你的安装受到下面第一条变更日志条目所述 bug 的影响,更新之后你可能需要采取行动修复损坏的索引。
另外,如果你是从 9.4.10 之前的版本升级,参见第 E.17 节。
变更
修复可能导致用 CREATE INDEX CONCURRENTLY 构建的索引损坏的竞态条件(Pavan Deolasee、Tom Lane)
如果 CREATE INDEX CONCURRENTLY 被用于构建一个依赖于先前未被索引的列的索引,那么与 CREATE INDEX 命令并发运行的事务所更新的行可能收到错误的索引条目。如果怀疑这可能已发生,最可靠的解决方案是在安装此更新后重建受影响的索引。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保用于目录扫描的特殊快照不被过早的数据修剪失效(Tom Lane)
后端在通告其最旧 xmin 时没有考虑这个快照,可能允许并发清理操作移除仍需要的数据。这导致 “cache lookup failed for relation 1255” 之类的瞬态失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
无条件地为未记录表的 “init fork” 写 WAL 日志(Michael Paquier)
此前当wal_level = minimum 时跳过这一步,但实际上即使在这种情况下也需要它,以确保未记录表在崩溃后被正确重置为空。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少备库服务器重放 btree 索引清理操作期间的互锁(Simon Riggs)
此更改避免了重放这种操作期间有时发生的显著复制延迟。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果统计收集器在热备期间死亡,重启它(Takayuki Tsunakawa)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保热备反馈在备库服务器启动时启用的情况下正确工作(Ants Aasma、Craig Ringer)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
热备等待冲突查询时检查中断(Simon Riggs)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免边界情况下自动清理启动器的不断重启(Amit Khandekar)
此修复避免了自动清理名义上关闭且有一些需要冻结的表,但所有这种表都已被自动清理工作者处理时的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复扩展成员对象何时可被删除的检查(Tom Lane)
扩展升级脚本应当能删除成员对象,但对序列列的序列(可能还有其他情况)这不被允许。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 ALTER TABLE 重建索引时保留索引表空间分配(Tom Lane、Michael Paquier)
此前,default_tablespace的非默认设置可能导致索引损坏。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复用 ALTER TABLE ... ALTER CONSTRAINT 更改外键约束可延迟性属性时触发器函数属性的错误更新(Tom Lane)
这导致之后执行外键时的奇怪失败,因为触发器在错误的时间触发。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果被引用关系有未决的触发器事件,防止删除外键约束(Tom Lane)
这避免了 “could not find trigger NNN” 或 “relation NNN has no triggers” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复带 OID 的表通过 ALTER TABLE ... INHERIT 关联到带 OID 的父表时 OID 列的处理(Amit Langote)
这种情况下 OID 列应当与普通用户列同等对待,但没有,导致之后继承更改中的奇怪行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 CREATE OR REPLACE VIEW 在尝试应用新视图选项之前先更新视图查询(Dean Rasheed)
此前如果新选项与旧视图定义不一致,命令就会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER TEXT SEARCH CONFIGURATION 期间报告正确的对象身份(Artur Zakirov)
向逻辑解码等扩展报告了错误的目录 OID。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在报告约束违反失败之前检查可序列化冲突(Thomas Munro)
使用可序列化事务隔离时,希望任何因并发事务导致的错误都表现为序列化失败,从而提示应用重试可能成功。不幸的是,对并发插入导致的重复键失败这不能可靠发生。此更改确保如果应用在事务中早些时候显式检查过冲突键的存在(且未找到),这种错误将被报告为序列化错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 UPDATE 源表达式中 foo.* 的多列展开(Tom Lane)
这导致 “UPDATE target count mismatch --- internal error”。现在该语法被理解为整行变量,与其他上下文中一样。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保多行 VALUES 构造的列 typmod 被准确确定(Tom Lane)
这修复了列的第一个值有可确定的 typmod(如 varchar 值的长度)但后面的值不共享同一限制时发生的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
对 Unicode 字符串末尾未完成的 Unicode 代理项对抛出错误(Tom Lane)
通常 Unicode 代理项前导字符后面必须跟 Unicode 代理项后随字符,但当前导字符是 Unicode 字符串字面量(U&'...')或 Unicode 标识符(U&"...")的最后一个字符时漏掉了这一检查。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保纯否定的文本搜索查询(如 !foo)匹配空的 tsvector(Tom Dunstan)
GIN 索引搜索能找到这种匹配,但顺序扫描或 GiST 索引搜索不能。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 ts_rewrite() 用空查询替换非顶层子树时崩溃(Artur Zakirov)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ts_rewrite() 的性能问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ts_rewrite() 对嵌套 NOT 操作符的处理(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 array_fill() 正确处理空数组(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 quote_literal_cstr() 中的一字节缓冲区越界(Heikki Linnakangas)
只有当输入完全由单引号和/或反斜线组成时才会发生越界。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 pg_start_backup() 和 pg_stop_backup() 的多次调用并发运行(Michael Paquier)
这避免了有人试图并行运行这些函数时的断言失败以及可能更糟的事情。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免丢弃并非真正无操作的 interval 到 interval 强制转换(Tom Lane)
某些情况下,本应导致清零低阶 interval 字段的强制转换被错误地当作无操作而丢弃。例如从 INTERVAL MONTH 转换到 INTERVAL YEAR 未能清除月份字段。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保缓存计划因外部表选项的更改而失效(Amit Langote、Etsuro Fujita、Ashutosh Bapat)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 转储使用内建函数的用户定义强制转换和转换(Stephen Frost)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_restore 使用 --create --if-exists 时对包含无法识别的 DROP 命令的归档表现得更理智(Tom Lane)
这不修复任何现存 bug,但如果 pg_restore 与更晚的 pg_dump 版本生成的归档一起使用,将来可能改进行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复慢 I/O 情况下 pg_basebackup 的速率限制(Antonin Houska)
如果磁盘 I/O 暂时比指定的速率限制慢得多,计算就会溢出,实际上禁用了运行剩余部分的速率限制。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_basebackup 对符号链接的 pg_stat_tmp 和 pg_replslot 子目录的处理(Magnus Hagander、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复包含 WAL 文件时备库服务器上可能的 pg_basebackup 失败(Amit Kapila、Robert Haas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保我们为 PL/Python 创建的 Python 异常对象被正确引用计数(Rafa de la Torre、Tom Lane)
这避免了对象在 Python 垃圾回收周期发生之后被使用时的失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Tcl 支持以 .tupno 为列名的表上的触发器(Tom Lane)
这与 PL/Tcl 的 spi_exec 和 spi_execp 命令(以前未写入文档)的行为一致,即只在不存在该名字的真实列时才插入幻 .tupno 列。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 ~/.pgpass 文件中的 DOS 风格行尾,即使在 Unix 上也一样(Vik Fearing)
这一更改简化了在 Unix 和 Windows 机器之间使用同一密码文件。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 被给定以点结尾的文件名时的一字节缓冲区越界(Takayuki Tsunakawa)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 对 ALTER DEFAULT PRIVILEGES 的 Tab 补全(Gilles Darold、Stephen Frost)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 中,把 PAGER 环境变量的空或全空白设置当作“不使用分页器”(Tom Lane)
此前这种设置导致本应发给分页器的输出完全消失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 contrib/dblink 对低层 libpq 错误(如内存不足)的报告(Joe Conway)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 contrib/dblink 在使用 contrib/postgres_fdw 外部服务器作为连接选项来源时忽略无关的服务器选项(Corey Huinker)
此前如果外部服务器对象的选项不是 libpq 连接选项,就会出错。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,确保环境变量更改被传播到以调试选项构建的 DLL(Christian Ullrich)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把我们的时区库副本与 IANA tzcode2016j 同步(Tom Lane)
这修复了若干问题,最显著的是当目标目录不支持硬链接时区数据安装失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2016j,涉及北塞浦路斯(新增时区 Asia/Famagusta)、俄罗斯(新增时区 Europe/Saratov)、汤加和 Antarctica/Casey 的夏令时法规变更。还有意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史修正。汤加改用首选数字时区缩写。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
不过,如果你的安装受到下面第一条变更日志条目所述 bug 的影响,更新之后你可能需要采取行动修复损坏的空闲空间映射。
另外,如果你是从 9.4.6 之前的版本升级,参见第 E.21 节。
变更
修复关系空闲空间映射和可见性映射截断的 WAL 记录(Pavan Deolasee、Heikki Linnakangas)
这些文件有可能在崩溃恢复期间未被正确恢复,或者在备库服务器上被错误写入。空闲空间映射中的虚假条目可能导致访问已从关系中截断掉的页,通常产生诸如 “could not read block XXX: read only 0 of 8192 bytes” 的错误。如果启用了校验和,可见性映射中的校验和失败也是可能的。
判断是否存在问题以及如何修复的程序在https://wiki.postgresql.org/wiki/Free_Space_Map_Problems中讨论。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复在大端机器上 GIN 索引 WAL 记录创建不正确的问题(Tom Lane)
典型症状是 WAL 重放期间出现“unexpected GIN leaf action”错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SELECT FOR UPDATE/SHARE,使其正确锁定已被随后中止的事务更新过的元组(Álvaro Herrera)
在 9.5 及之后的版本中,SELECT 有时可能完全不返回此类元组。虽然尚未证明在更早的版本中会发生失败,但在并发更新的情况下是有可能的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复涉及 CTE 扫描的 EvalPlanQual 重新检查(Tom Lane)
重新检查总是把 CTE 视为不返回任何行,通常导致无法更新最近已更新的行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复子查询中哈希聚合不当重复先前结果的问题(Andrew Gierth)
判断能否复用先前计算的聚合状态值哈希表的测试,忽略了聚合参数表达式中出现外层查询引用的可能性。这种引用的值发生变化时本应重新计算哈希表,但实际没有。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对带 PRIMARY KEY 或 REPLICA IDENTITY 索引的表执行批量 UPDATE 时的查询生命周期内存泄漏(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复track_io_timing打开时 EXPLAIN 发出有效 XML(Markus Winand)
此前 XML 输出格式选项产生语法无效的标记,如 <I/O-Read-Time>。现在它被渲染为 <I-O-Read-Time>。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
抑制在 EXPLAIN 中为未测量的时间打印零值(Maksim Milyutin)
某些选项组合会为在该组合下实际上从不测量的时间打印零值。EXPLAIN 的一般策略是完全不打印此类字段,因此在所有情况下都保持一致。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 VACUUM 为截断表而等待排他表锁时的超时长度(Simon Riggs)
该超时本应为 50 毫秒,但实际上只有 50 微秒,导致 VACUUM 比预期更容易放弃截断。将其设置为预期值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复创建或更改表时合并继承 CHECK 约束的 bug(Tom Lane、Amit Langote)
允许以任一顺序向父表和子表添加相同的 CHECK 约束。防止父表的有效约束与子表的 NOT VALID 约束合并。同样防止 NO INHERIT 子约束与继承约束合并。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除对 numeric_in() 和 numeric_recv() 所接受值的人为限制(Tom Lane)
我们允许数值达到存储格式的极限(超过 1e100000),因此 numeric_in() 拒绝科学计数法指数超过 1000 的做法相当无意义。同样,numeric_recv() 拒绝输入值超过 1000 位数字也很荒谬。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免因未持有缓冲区锁测试元组可见性而导致的极低概率数据损坏(Thomas Munro、Peter Geoghegan、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复子事务的 WAL 输出大到足以溢出到磁盘时逻辑 WAL 解码的正常工作(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑 WAL 解码中的缓冲区过度读取(Tom Lane)
元组更新记录的逻辑解码会多读取 23 个字节,这通常无害,但运气极差时可能导致崩溃。
变更
修复截断超过 1GB 的临时关系时文件描述符泄漏的问题(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止在启用 standby_mode 的情况下启动独立后端(Michael Paquier)
这不可能有任何用处,因为不会有 WAL 接收器进程来获取更多 WAL 数据;而且这可能导致未针对此种情况设计的代码出现不当行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在回收先前使用过的复制槽时正确初始化其状态(Michael Paquier)
未重置槽的所有字段可能阻止 VACUUM 移除死元组。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Linux 上尝试使用大页时,把共享内存分配请求舍入到实际大页大小的整数倍(Tom Lane)
这避免了在默认大页大小非典型的系统上 munmap() 期间可能的失败。除崩溃恢复情况外,除了日志消息之外没有不良影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为动态共享内存控制段的 ID 使用更随机的值(Robert Haas、Tom Lane)
以前每次都会选择相同的值,因为它派生自 random(),而 srandom() 尚未被调用。虽然相对无害,但这不是预期行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,动态共享内存控制段创建遇到访问拒绝错误后重试(Kyotaro Horiguchi、Amit Kapila)
当段已存在时,Windows 有时返回 ERROR_ACCESS_DENIED 而不是 ERROR_ALREADY_EXISTS。这导致系统认为前者是不可恢复的错误,从而使 postmaster 启动失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不要在 libpq 中跨多个连接共享 SSL 上下文(Heikki Linnakangas)
这导致了各种边界情况 bug,特别是当尝试对不同连接使用不同 SSL 参数时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 libpq 中的边界情况内存泄漏(Tom Lane)
报告的问题涉及 PQreset() 期间泄漏错误报告,但可能有相关情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 ecpg 的 --help 和 --version 选项与其他可执行程序保持一致(Haribabu Kommi)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pgbench 平均延迟的计算(Fabien Coelho)
当脚本中存在 \sleep 命令,或者测试时长以事务数而非总时间指定时,计算是不正确的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 中,永不转储范围构造函数(Tom Lane)
这一疏漏导致包含范围类型的扩展在 pg_upgrade 时因重复创建构造函数而失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_xlogdump 中,使用 --follow 选项时重试打开新的 WAL 段(Magnus Hagander)
这考虑到服务器创建下一段的可能延迟。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_xlogdump 处理以跨越多页的续页记录开头的 WAL 文件的问题(Pavan Deolasee)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pg_buffercache 在 shared_buffers 超过 256GB 时的工作问题(KaiGai Kohei)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/intarray/bench/bench.pl,使其在给定 -e 选项时打印它执行的 EXPLAIN 的结果(Daniel Gustafsson)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
安装 TAP 测试基础设施,使其可用于扩展测试(Craig Ringer)
当 PostgreSQL 配置了 --enable-tap-tests 时,“make install” 现在会把 TAP 测试的 Perl 支持文件安装到 PGXS 能找到的位置。这允许非核心扩展使用 $(prove_check) 而无需额外测试。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 MSVC 构建中,把 pg_recvlogical 包含在仅客户端安装中(MauMau)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新 Windows 时区映射,以识别较新 Windows 版本中新增的一些时区名称(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止已过时的动态时区缩写失效(Tom Lane)
如果动态时区缩写与所引用时区中的任何条目都不匹配,就把它视为等效于该时区名称。这避免了当 IANA 从其时区数据库中移除缩写时出现意外失败——他们在 tzdata 2016f 版中就这样做过,而且将来可能再次这样做。后果不仅限于无法识别单个缩写;任何不匹配都会导致 pg_timezone_abbrevs 视图完全失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新时区数据文件到 tzdata 版本 2016h,涉及巴勒斯坦和土耳其的夏令时法规变更,加上土耳其和俄罗斯一些地区的历史修正。南极洲、前苏联和斯里兰卡的一些时区改用数字缩写。
IANA 时区数据库以前为所有时区提供文本缩写,有时编造在当地居民中几乎或完全没有使用的缩写。他们正在逆转这一政策,改为在没有证据表明实际使用英文缩写的区域使用数字 UTC 偏移。至少目前,PostgreSQL 将继续接受这种被移除的缩写用于时间戳输入。但它们不会显示在 pg_timezone_names 视图中,也不用于输出。
在此更新中,AMT 不再显示为表示亚美尼亚时间。因此我们把 Default 缩写集改为把它解释为亚马逊时间,即 UTC-4 而不是 UTC+4。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.6 的版本升级,请参见第 E.21 节。
变更
修复嵌套 CASE-WHEN 表达式可能被错误评估的问题(Heikki Linnakangas、Michael Paquier、Tom Lane)
出现在另一个 CASE 的测试值子表达式中的 CASE 表达式,可能会混淆其自身的测试值是否为空。此外,内联实现 CASE 表达式所用相等操作符的 SQL 函数时,可能向该 SQL 函数体内 CASE 表达式中调用的函数传递错误的测试值。如果测试值的数据类型不同,可能导致崩溃;而且此类情况可被滥用以泄露服务器内存的部分内容。(CVE-2016-5423)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复客户端程序对数据库名和角色名中特殊字符的处理(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)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对嵌套组合值应用 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 可能产生类似错误行为的远程查询。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 inet 和 cidr 数据类型正确拒绝包含过多冒号分隔字段的 IPv6 地址(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 close_ps()(point ## lseg 操作符)在输入坐标为 NaN 时崩溃(Tom Lane)
使其返回 NULL 而不是崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免向 pg_get_expr() 传入不一致的值时可能发生的崩溃(Michael Paquier、Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 to_number() 中几处一字节缓冲区过读(Peter Eisentraut)
在几种情况下,to_number() 函数会从输入字符串中多读取一个字符。如果输入恰好位于内存末尾附近,则有很小的崩溃可能。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当指定了 WITH NO DATA 时,不对 CREATE MATERIALIZED VIEW 或 CREATE TABLE AS 中包含的查询运行规划器(Michael Paquier、Tom Lane)
这避免了一些不必要的失败条件,例如物化视图调用的稳定函数依赖某个尚不存在的表时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在经过 heap_update() 的高开销路径中出现不安全的中间状态(Masahiko Sawada、Andres Freund)
以前,这些情况会锁定目标元组(通过设置其 XMAX),但不为该动作记录 WAL,因此如果页面被刷出到磁盘,随后在元组更新完成之前发生数据库崩溃,就有数据完整性问题的风险。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复行锁定操作 WAL 重放期间的提示位更新(Andres Freund)
此问题唯一已知的后果是,已预备但未提交的事务所持有的行锁,在崩溃并重启之后可能无法被执行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在可串行化模式下获取 FOR KEY SHARE 行锁时出现不必要的“could not serialize access”错误(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免当指定变量的字符串值为空时 postgres -C 崩溃(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码中可能丢失大型子事务的问题(Petru-Florin Mihancea)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复子事务不包含实际更改时逻辑解码失败的问题(Marko Tiikkaja、Andrew Gierth)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保后端能看到共享目录的最新统计信息(Tom Lane)
统计收集器在普通后端发出请求后,未能更新共享目录的统计文件。这个问题被部分掩盖了,因为自动清理启动器会定期发出确实触发此类更新的请求;但在禁用自动清理时就变得明显了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免多个后端进程密集请求更新时统计信息文件的冗余写入(Tom Lane、Tomas Vondra)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 VACUUM 期间消耗事务 ID(Alexander Korotkov)
VACUUM 中的某些情况会不必要地导致向当前事务分配 XID。通常这可以忽略不计,但如果已接近 XID 回卷限制,在防回卷清理期间消耗更多 XID 就非常糟糕了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在VACUUM FREEZE期间取消热备查询(Simon Riggs, Álvaro Herrera)
在原本空闲的主库服务器上执行VACUUM FREEZE可能导致其备库服务器上的查询被不必要地取消。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止在从 9.3 之前版本 pg_upgrade 而来的安装中清理多事务 ID 时可能出现的失败(Andrew Gierth、Álvaro Herrera)
此 bug 的常见症状是类似“MultiXactId NNN has not been created yet -- apparent wraparound”的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当手动 ANALYZE 指定列列表时,不要重置表的 changes_since_analyze 计数器(Tom Lane)
如果只分析部分列,就不应阻止其他列的例行自动分析。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ANALYZE 对包含大量空值的唯一或近似唯一列的 n_distinct 高估(Tom Lane)
空值可能被当作它们本身就是不同的值来计数,导致某些类型查询中规划器的严重误估。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止自动清理为同一共享目录启动多个工作进程(Álvaro Herrera)
通常这不是什么大问题,因为清理本来就不会花很长时间;但在目录严重膨胀的情况下,这可能导致除一个工作进程外的所有工作进程都在无用地等待,而不是对其他表做有用的工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在放弃 b-tree 索引页删除尝试时重复释放缓冲区锁(Tom Lane)
在涉及损坏的 b-tree 索引的某些情况下,这一错误导致 VACUUM 无法完成。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止为包含 NaN 分量值的几何列构建 GiST 索引时出现无限循环(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复contrib/btree_gin以正确处理最小的bigint值(Peter Eisentraut)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
让 libpq 能正确解码来自未来版本服务器的服务器版本号(Peter Eisentraut)
计划在 9.6 之后的版本中把服务器版本号从三段式改为两段式。确保 PQserverVersion() 在此类情况下返回正确的值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复ecpg对unsigned long long数组元素的代码(Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pg_dump同时使用-c和-C选项时避免输出多余的CREATE SCHEMA public命令(David Johnston、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进并行 pg_dump 和 pg_restore 对 SIGTERM/Ctrl-C 的处理(Tom Lane)
确保工作进程迅速退出,并设法向所连接的后端发送查询取消请求,以防它们正在执行诸如 CREATE INDEX 之类的长时间运行操作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复并行 pg_dump 和 pg_restore 中的错误报告(Tom Lane)
以前,pg_dump 或 pg_restore 工作进程报告的错误可能永远无法到达用户的控制台,因为消息要经过主进程传递,而存在多种会阻止主进程转发消息的死锁场景。现在改为把所有内容直接打印到 stderr。在某些情况下这会导致重复消息(例如所有工作进程都报告服务器关闭),但这似乎比没有消息要好。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 Windows 上的并行 pg_dump 或 pg_restore 在出错后正确关闭(Kyotaro Horiguchi)
以前,它会报告错误,然后就一直停在那里,直到用户手动停止。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_dump 在构建时未包含 zlib 支持时表现更好(Kyotaro Horiguchi)
它在并行转储时不能正确工作,在其他情况下还会发出一些相当无意义的警告。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使pg_basebackup接受-Z 0表示不压缩(Fujii Masao)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复构建 AIX 共享库的 makefile 规则,使其在并行 make 下安全(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复构建目录路径名包含空格时 TAP 测试和 MSVC 脚本的工作(Michael Paquier、Kyotaro Horiguchi)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使“statement timeout”与“lock timeout”的报告更具可预测性(Tom Lane)
在高负载机器上,回归测试有时会因报告“lock timeout”而失败,尽管语句超时本应先发生。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使回归测试在丹麦语和威尔士语区域设置下安全(Jeff Janes、Tom Lane)
修改了一些会触发这些区域设置特殊排序规则的测试数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
更新我们的时区代码副本,以匹配 IANA 的 tzcode 2016c 版(Tom Lane)
这是为了应对时区数据文件未来预期的变更。它还修复了处理特殊时区方面的一些边界 bug。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到tzdata发行版 2016f,以反映克麦罗沃和新西伯利亚的夏令时法规变更,以及阿塞拜疆、白俄罗斯和摩洛哥的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.6 的版本升级,请参见第 E.21 节。
变更
在调用 OpenSSL 之前清空 OpenSSL 错误队列,而不是假设它已经为空;并确保调用之后也让它保持为空(Peter Geoghegan、Dave Vitek、Peter Eisentraut)
此变更可防止在单个进程内存在多条使用 OpenSSL 的连接、且相关代码并非全部遵循相同的错误队列清空规则时出现问题。特别是当客户端应用并发使用 libpq 的 SSL 连接和 PHP、Python 或 Ruby 的 OpenSSL 封装库的 SSL 连接时,已有失败报告。如果扩展模块建立外向 SSL 连接,服务器内部也可能出现类似问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复左连接右侧包含全连接时出现“failed to build any N-way joins”规划器错误的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复多层级 nestloop 计划中等价类测试的处理不正确的问题(Tom Lane)
对于三个或更多变量的等价类(例如 X.X = Y.Y = Z.Z),规划器可能遗漏一些确保所有变量确实相等的测试,导致输出不满足 WHERE 子句的连接行。由于种种原因,实践中很少选中错误的计划,因此这个 bug 长期未被发现。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN 索引扫描中查询级内存泄漏(Julien Rouhaud)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN 索引插入中的查询生命周期内存泄漏和潜在的索引损坏风险(Tom Lane)
在简单查询中,内存泄漏通常不会很大,但在以高 maintenance_work_mem 构建大型 GIN 索引期间,泄漏可能非常可观。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 to_timestamp() 中 TH、th 和 Y,YYY 格式代码可能的错误行为(Tom Lane)
这些代码可能越过输入字符串末尾,导致后续格式代码读取垃圾数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复结构的value operator ANY (array)array参数为子 SELECT 时规则和视图的转储(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止 ALTER SYSTEM 参数值中出现换行(Tom Lane)
配置文件解析器不支持字符串字面量中的内嵌换行,因此我们不能允许 ALTER SYSTEM 插入的值中包含换行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复ALTER TABLE ... REPLICA IDENTITY USING INDEX在选中的是 OID 上的索引时正确工作的问题(David Rowley)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对齐敏感平台上逻辑解码崩溃的问题(Tom Lane、Andres Freund)
该失败仅发生在事务大到需要溢出到磁盘、且该事务内发生主键更改的情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 walsender 关闭期间反复请求接收端反馈(Nick Cleaton)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_regress 在设置了 PGCTLTIMEOUT 环境变量时使用其中的启动超时(Tom Lane)
这是为了与最近添加到 pg_ctl 的行为保持一致;它方便了在慢速机器上进行自动化测试。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 对仅包含一个操作符类的操作符族正确恢复扩展成员关系的问题(Tom Lane)
在这种情况下,操作符族会被恢复到新数据库中,但不再被标记为扩展的一部分。这没有直接的坏影响,但会导致后续 pg_dump 运行产生在恢复时引发(无害)错误的输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复新集群 TOAST 规则与旧集群不同时 pg_upgrade 失败的问题(Tom Lane)
pg_upgrade 原有专门代码处理新 PostgreSQL 版本认为表应有 TOAST 表而旧版本认为没有的情况。该代码有问题,因此将其移除,在这种情况下改为不做任何处理;没有理由认为,如果按照旧版本的规则没有 TOAST 表也没问题,我们就无法在没有 TOAST 表的情况下正常运作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少以--disable-spinlocks配置的构建所使用的 SysV 信号量数量(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将内部函数strtoi()重命名为strtoint(),以避免与 NetBSD 库函数冲突(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Windows 上bind()和listen()系统调用错误的报告(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
降低使用 Microsoft Visual Studio 构建时编译器输出的详细程度(Christian Ullrich)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复putenv()在 Visual Studio 2013 下正常工作的问题(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免可能不安全地使用 Windows 的 FormatMessage() 函数(Christian Ullrich)
在适当之处使用 FORMAT_MESSAGE_IGNORE_INSERTS 标志。目前不知道这里存在实际的 bug,但小心谨慎似乎是明智的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到tzdata发行版 2016d,以反映俄罗斯和委内瑞拉的夏令时法规变更。新增了时区名Europe/Kirov和Asia/Tomsk,以反映这些地区现在与邻近地区有不同的时区历史。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.6 的版本升级,请参见第 E.21 节。
变更
修复索引化 ROW() 比较中对 NULL 索引条目处理不正确的问题(Tom Lane)
使用诸如 ROW(a, b) > ROW('x', 'y') 的行比较进行索引搜索时,会在到达 b 列的 NULL 条目时停止,忽略了 b 列可能有与更靠后的 a 值关联的非 NULL 值这一事实。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免因重命名文件前后缺少充分的fsync()调用而导致的罕见数据丢失场景(Michael Paquier、Tomas Vondra、Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复json_to_record()在其输入对象的某个字段包含与所请求输出列名同名的子对象字段时的缺陷(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复to_char()的OF格式代码对负时区偏移的错误格式化(Thomas Munro、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在恢复达到一致状态之前忽略recovery_min_apply_delay参数(Michael Paquier)
以前,备库在重放使其数据库状态有效所需的初始 WAL 部分时,也会响应 recovery_min_apply_delay 而延迟应用 WAL 记录。由于备库在达到一致数据库状态之前毫无用处,这被认为没有帮助。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确处理服务器启动期间pg_subtrans接近 XID 回卷的情况(Jeff Janes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑解码中的若干 bug(Andres Freund)
问题情形包括:副本标识为 FULL 时超过一页的元组、在大到需要假脱机到磁盘的事务中更改主键的 UPDATE、错误地报告“subxact logged without previous toplevel record”,以及事务提交时间的错误报告。
变更
修复外层视图的WHERE子句包含相关子查询时嵌套安全屏障视图的规划器错误(Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复因多次尝试释放localeconv()输出字符串而导致的极端情况崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ispell 词典词缀文件的解析(Tom Lane)
如果词缀文件包含任何在大小写转换期间字节长度会变化的字符(例如土耳其语 UTF8 区域设置中的 I),代码就可能出错。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免使用 sscanf() 解析 ispell 词典文件(Artur Zakirov)
这规避了 FreeBSD 衍生平台(包括 macOS)上的一个可移植性问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在旧版 Windows(7SP1/2008R2SP1 之前)上配合支持 AVX2 的 CPU 和使用 Visual Studio 2013 构建的 Postgres 时崩溃(Christian Ullrich)
这是对 Visual Studio 2013 运行时库中一个 bug 的变通方案,微软已表示不会在该版本中修复它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复psql的制表符补全逻辑以正确处理多字节字符(Kyotaro Horiguchi、Robert Haas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 对 SECURITY LABEL 的 Tab 补全(Tom Lane)
在 SECURITY LABEL 之后按 TAB 可能导致崩溃或提供不合适的关键字。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_ctl 在命令行未指定时接受来自 PGCTLTIMEOUT 环境变量的等待超时(Noah Misch)
这方便了较慢的 buildfarm 成员的测试,允许它们全局指定比正常更长的 postmaster 启动和关闭超时。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_ctl 中对 Windows 服务状态的不正确测试(Manuel Mathar)
上一轮小版本发布试图修复 pg_ctl,使其正确判断是否把日志消息发送到 Windows 事件日志,但把测试条件弄反了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pgbench正确处理-C与-M prepared选项组合的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_upgrade 中,当新数据目录位于旧数据目录之内时跳过创建删除脚本(Bruce Momjian)
在这种情况下盲目执行该脚本会导致新数据目录丢失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
PL/Perl 中正确将空的 Postgres 数组转换为空的 Perl 数组(Alex Hunsaker)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 PL/Python 能处理不是合法 Python 标识符的函数名(Jim Nasby)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复contrib/pgstattuple的pgstatindex()函数返回统计信息中的多处错误(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除 MSVC 构建中对psed的依赖,因为核心 Perl 已不再提供它(Michael Paquier、Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到tzdata发行版 2016c,以反映阿塞拜疆、智利、海地、巴勒斯坦和俄罗斯(阿尔泰、阿斯特拉罕、基洛夫、萨哈林、乌里扬诺夫斯克地区)的夏令时法规变更,以及立陶宛、摩尔多瓦和俄罗斯(加里宁格勒、萨马拉、伏尔加格勒)的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你要升级的安装中包含任何使用(非默认的)jsonb_path_ops操作符类的 GIN 索引,请参见下面的第一条变更日志条目。
另外,如果你是从早于 9.4.4 的版本升级,请参见第 E.23 节。
变更
修复jsonb_path_opsGIN 索引中不一致的哈希计算(Tom Lane)
在处理同一嵌套层级同时包含标量和子对象的jsonb值(例如同时包含标量和子数组的数组)时,键哈希值的计算方式可能与同一键在其他上下文中的计算方式不同。这可能导致查询找不到本应找到的条目。修复该问题意味着现有索引可能与新的哈希计算代码不一致。用户在安装此更新后应当对jsonb_path_opsGIN 索引执行REINDEX,以确保所有搜索按预期工作。
变更
修复正则表达式中的无限循环和缓冲区越界问题(Tom Lane)
方括号表达式中非常大的字符范围在某些情况下可能导致无限循环,在另一些情况下可能导致内存覆写。(CVE-2016-0773)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果postmaster.pid文件被移除则执行立即关闭(Tom Lane)
postmaster 现在大约每分钟检查一次postmaster.pid是否仍然存在且仍包含自己的 PID。如果不是,它会执行立即关闭,就像收到SIGQUIT一样。此变更的主要目的是确保失败的 buildfarm 运行无需人工干预即可被清理;同时也可在 DBA 强行删除postmaster.pid并启动新 postmaster 时限制不良影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在SERIALIZABLE事务隔离模式下,插入期间的竞争条件可能导致漏掉串行化异常(Kevin Grittner、Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对非日志关系执行ALTER TABLE ... SET TABLESPACE时未发出适当 WAL 记录的问题(Michael Paquier、Andres Freund)
尽管关系的数据是非日志的,但移动操作本身必须被记录,否则在备库提升为主库后该关系将不可访问。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复崩溃恢复结束时未日志关系可能初始化不当的问题(Andres Freund、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 walsender 槽位在重用时被完全重新初始化(Magnus Hagander)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ALTER COLUMN TYPE 使其正确重建继承的检查约束(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 REASSIGN OWNED 使其正确更改组合类型的所有权(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 REASSIGN OWNED 和 ALTER OWNER,使其在更改数据类型、外部数据包装器或外部服务器的所有者时正确更新已授予权限列表(Bruce Momjian, Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 REASSIGN OWNED 使其忽略外部用户映射而不是失败(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对可更新视图进行查询重写后可能崩溃的问题(Stephen Frost)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复规划器对 LATERAL 引用的处理(Tom Lane)
这修复了一些导致 “failed to build any N-way joins” 或 “could not devise a query plan” 规划器错误的极端情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 GIN 索引的内部统计信息非常过时时,为其扫描的错误规划器代价估计增加更多防御(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使规划器能处理索引顾问插件建议的假想 GIN 索引(Julien Rouhaud)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
加速 EXPLAIN 和规则转储中唯一表别名的生成,并确保生成的别名不超过 NAMEDATALEN(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ROW() 和 VALUES() 列表中整行 Var 的转储(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把负无穷日期和时间戳转换为 json 或 jsonb 时曾错误地将其呈现为正无穷(Tom Lane)
变更
修复 numeric 除法中可能的内部溢出(Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复正则表达式先行约束中括号内限制的执行(Tom Lane)
根据手册,先行约束不允许包含反向引用,且其中的括号始终被视为非捕获括号。但代码未能正确处理括号子表达式内的这些情况,会给出意外的结果。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
把正则表达式转换为索引扫描边界时,可能从包含先行约束的正则表达式产生错误的边界(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复正则表达式编译器使其处理约束弧构成的环(Tom Lane)
为 CVE-2007-4772 添加的代码既不完整——未能处理涉及多个状态的环——又不正确——可能导致断言失败(不过在非断言构建中似乎没有不良后果)。多状态环会使编译器一直运行,直到查询被取消或达到状态数过多的错误条件。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进正则表达式编译器中的内存用量统计(Tom Lane)
这使代码在一些以前耗费不合理时间和内存量的情况下发出 “regular expression is too complex” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进正则表达式编译器的性能(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 log_line_prefix 中的 %h 和 %r 转义对因 log_connections 而发出的消息也生效(Tom Lane)
以前,%h/%r 要等到新会话发出“connection received”日志消息之后才开始生效;现在它们对该消息也生效。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,确保不需要共享内存映射句柄的子进程关闭该句柄(Tom Lane、Amit Kapila)
只要 logging_collector 处于开启状态,这一疏忽就会导致无法从崩溃中恢复。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Windows 上非阻塞模式下可能无法检测套接字 EOF 的问题(Tom Lane)
目前尚不完全清楚此问题是否会在 9.5 之前的分支中发生,但如果发生,其症状将是 walsender 进程无限等待而不是察觉到连接丢失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 SSPI 身份验证期间泄漏令牌句柄(Christian Ullrich)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 中,确保当终端窗口大小改变时更新 libreadline 所认知的屏幕尺寸(Merlin Moncure)
此前,如果窗口在查询输出期间被调整大小,libreadline 不会察觉,导致之后输入多行查询时出现奇怪的行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 的 \det 命令,使其以与其他可能带模式限定模式的 \d 命令相同的方式解释模式参数(Reece Hart)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 psql 的 \c 命令在先前连接经由 Unix 套接字、而命令指定了新的主机名和相同用户名时可能出现的崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_ctl start -w 中,直接测试子进程状态而不是依赖启发式方法(Tom Lane、Michael Paquier)
此前,pg_ctl 依赖一个假设:新的 postmaster 总会在五秒内创建 postmaster.pid。但在高负载系统上这可能失败,导致 pg_ctl 错误地报告 postmaster 启动失败。
除 Windows 外,此变更还意味着紧接另一个此类命令之后执行的 pg_ctl start -w 现在会可靠地失败,而此前如果在第一条命令后两秒内执行则会报告成功。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_ctl start -w 中,不再尝试使用通配监听地址连接 postmaster(Kondo Yuta)
在 Windows 上,如果 listen_addresses 被设置为 0.0.0.0 或 ::,pg_ctl 将无法检测到 postmaster 的启动,因为它会试图原样使用该值作为要连接的地址,而这行不通。现在改为假定应分别使用 127.0.0.1 或 ::1。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上的 pg_ctl 中,通过检查服务状态来决定输出发送到哪里,而不是检查标准输出是否为终端(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_dump 和 pg_basebackup 中,采用 GNU 约定来处理超过 8GB 的 tar 归档成员(Tom Lane)
tar 文件格式的 POSIX 标准不允许归档成员文件超过 8GB,但大多数现代 tar 实现支持解决此问题的扩展。采用这一扩展后,pg_dump 使用 -Ft 时不再在数据超过 8GB 的表上失败,pg_basebackup 也能处理大于 8GB 的文件。此外,还修复了一些可移植性问题,它们可能在某些平台上导致 4GB 到 8GB 之间的成员失败。这些问题有可能因备份文件不可读而造成不可恢复的数据丢失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 处理扩展成员对象时的若干边界 bug(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_dump 把视图的触发器标记为需要在其规则之后处理,以防止并行 pg_restore 期间可能出现的失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在 pg_dump 中正确引用关系选项值(Kouhei Sutou、Tom Lane)
不是简单标识符或数字的 reloption 值可能因 pg_dump 发出的 CREATE 语句中的语法错误而导致转储/重载失败。核心 PostgreSQL 目前支持的任何 reloption 都不存在此问题,但扩展可能允许导致该问题的 reloption。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免并行 pg_dump 期间重复的口令提示(Zeus Kronion)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_upgrade 的文件复制代码,使其在 Windows 上正确处理错误(Bruce Momjian)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pgbench 中加入防护,防止计算脚本指定的除法或取模运算符期间的边界溢出情况(Fabien Coelho、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_receivexlog 和 pg_recvlogical 发出的消息未能本地化的问题(Ioseph Kim)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免同时使用 plpython2 和 plpython3 时的转储/重载问题(Tom Lane)
原则上,两个版本的 PL/Python 可以在同一个数据库中使用,但不能在同一个会话中使用(因为两个版本的 libpython 无法安全地并发使用)。然而,pg_restore 和 pg_upgrade 都会做一些可能触犯同会话限制的事情。通过更改检查的时机来规避这一点。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Python 回归测试,使其在 Python 3.5 下通过(Peter Eisentraut)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复看到套接字 EOF 时过早清空 libpq 输入缓冲区的问题(Tom Lane)
这一错误导致 libpq 有时在报告 “server closed the connection unexpectedly” 之前未能报告后端的最终错误消息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止某些 PL/Java 参数被非超级用户设置(Noah Misch)
此变更缓解了 PL/Java 的一个安全 bug(CVE-2016-0766),该 bug 在 PL/Java 中已通过把这些参数标记为仅超级用户可用来修复。为了保护那些更新 PostgreSQL 比 PL/Java 更频繁的站点,核心代码现在也识别这些参数。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 libpq 对内存不足情况的处理(Michael Paquier、Amit Kapila、Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 生成的 typedef 语句中参数的顺序(Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 ecpg 的 PGTYPESnumeric_from_double() 中使用 %g 而非 %f 格式(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 提供的头文件,使其不包含从预处理指令行延续到下一行的注释(Michael Meskes)
这样的注释会被 ecpg 拒绝。尚不清楚是否应该更改 ecpg 本身。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 hstore_to_json_loose() 对 hstore 值能否转换为 JSON 数字的测试(Tom Lane)
以前该函数可能被尾部的非字母数字字符欺骗,导致输出语法无效的 JSON。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 contrib/pgcrypto 的 crypt() 函数可被查询取消中断(Andreas Karlsson)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复contrib/postgres_fdw中在数据修改命令中使用tableoid触发的缺陷(Etsuro Fujita、Robert Haas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
接受晚于 2.5.x 的flex版本(Tom Lane、Michael Paquier)
由于 flex 2.6.0 已发布,需要调整构建脚本中的版本检查。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
通过确保以固定顺序向链接器提供文件名,提高构建输出的可重现性(Christoph Berg)
这避免了产生的可执行文件在不同构建之间可能出现按位差异。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将我们的missing脚本安装到 PGXS 构建能找到的位置(Jim Nasby)
这使得在缺少bison等构建工具的机器上进行 PGXS 构建时能有合理的行为。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 MSVC 构建中安装的头文件包含dynloader.h(Bruce Momjian、Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
新增变体回归测试期望输出文件,以匹配当前libxml2的行为(Tom Lane)
libxml2对 CVE-2015-7499 的修复导致它在某些过去会输出错误上下文报告的情况下不再输出。这似乎是一个缺陷,但我们可能不得不在一段时间内接受它,因此做了变通处理。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到tzdata发行版 2016a,以反映开曼群岛、梅特拉卡特拉和外贝加尔边疆区的夏令时法规变更,以及巴基斯坦的历史修正。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.4 的版本升级,请参见第 E.23 节。
变更
防御json解析中的栈溢出(Oskari Saarenmaa)
如果应用程序从任意用户输入构造 PostgreSQL json或jsonb值,应用程序的用户就能可靠地使 PostgreSQL 服务器崩溃,造成短暂的服务拒绝。(CVE-2015-5289)
变更
修复contrib/pgcrypto以检测并报告过短的crypt()盐值(Josh Kupershmidt)
某些无效的盐值参数会导致服务器崩溃或泄露少量服务器内存字节。我们尚未排除通过安排让泄露字节中出现机密信息实施攻击的可行性,但这种攻击似乎不太可能。(CVE-2015-5288)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复属于外部子事务的门户(游标)失败后的子事务清理问题(Tom Lane、Michael Paquier)
在外部子事务游标中执行的函数可能因引用在内部子事务中创建的关系而导致断言失败或崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复设置了 commit_delay 时 WAL 插入期间可能的死锁(Heikki Linnakangas)
变更
确保更新语句期间对可更新视图引用的所有关系正确加锁(Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复关系插入关系缓存“init 文件”的问题(Tom Lane)
最近几个小版本中一个补丁的疏忽导致pg_trigger_tgrelid_tgname_index被遗漏在 init 文件之外。后续会话检测到这一点后认定 init 文件已损坏并静默忽略它,导致会话启动时间显著退化。除修复该缺陷外,还加入了一些防护,使未来任何类似错误更明显。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免向 SPI 查询结果插入大量元组时的 O(N^2) 行为(Neil Conway)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进存在大量未读通知时 LISTEN 的启动时间(Matt Newell)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复会话更改大量外键约束时的性能问题(Jan Wieck、Tom Lane)
这主要在还原拥有数千张表的数据库的pg_dump输出时出现。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
默认禁用 SSL 重新协商(Michael Paquier、Andres Freund)
虽然使用 SSL 重新协商在理论上是个好主意,但实践中我们看到了太多缺陷,无论是底层 OpenSSL 库中还是我们对它的使用中。重新协商将在 9.5 及更高版本中完全移除。在较旧的分支中,只是把ssl_renegotiation_limit的默认值改为零(禁用)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
降低*_freeze_max_age参数的最小值(Andres Freund)
这主要是为了使相关行为的测试不那么耗时,但对磁盘空间有限的安装也可能有价值。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将 wal_buffers 的最大值限制为 2GB 以避免服务器崩溃(Josh Berkus)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免当只能在服务器启动时设置的参数在 postgresql.conf 中多次出现时记录抱怨日志,并修复 include_dir 指令之后的行号计数(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 numeric 值乘法中罕见的内部溢出(Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防范涉及记录类型、范围类型、json、jsonb、tsquery、ltxtquery 和 query_int 的难以触发的栈溢出(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复日期时间输入中DOW和DOY的处理(Greg Stark)
这些记号本不应在日期时间值中使用,但过去它们导致的是难懂的内部错误消息,而不是“无效的输入语法”。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为正则表达式匹配添加更多查询取消检查(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
为正则表达式、SIMILAR TO和LIKE匹配增加递归深度保护(Tom Lane)
合适的搜索模式加上较低的栈深度限制可能导致栈越界崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复正则表达式执行中潜在的无限循环(Tom Lane)
一个表面上能匹配零长度字符串、但实际上因反向引用而不匹配的搜索模式可能导致无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在正则表达式执行中,即使匹配长度为零,也正确记录量词内捕获括号的匹配数据(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复正则表达式编译中的内存不足失败(Andreas Seltenreich)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复正则表达式执行期间低概率的内存泄漏(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复事务中止期间锁清理中罕见的内存不足失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复使用较小 work_mem 设置的元组存储时出现的 “unexpected out-of-memory situation during sort” 错误(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 qsort 中概率极低的栈越界(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复使用较大 work_mem 设置的哈希连接中出现的 “invalid memory alloc request size” 失败(Tomas Vondra、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复若干规划器缺陷(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 通过模糊测试暴露了这些问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进规划器在大型继承集上执行 UPDATE/DELETE 的性能(Tom Lane、Dean Rasheed)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在 postmaster 启动时移除备库提升触发文件(Michael Paquier、Fujii Masao)
这可以防止这些文件出现在用于初始化新备库服务器的数据库备份中时发生不需要的提升。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 postmaster 关闭期间,确保在移除postmaster.pid文件之前移除各套接字的锁文件并关闭监听套接字(Tom Lane)
这可以避免外部脚本在pg_ctl stop一返回就尝试启动新 postmaster 时出现竞争条件失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 postmaster 直到其所有子进程都退出后才退出,即使在立即关闭时也是如此(Tom Lane)
与上一条类似,这避免了与随后启动的 postmaster 之间可能出现的竞态条件。
变更
修复 postmaster 对崩溃恢复期间启动进程崩溃的处理(Tom Lane)
如果在崩溃恢复周期中,启动进程在尚未恢复数据库一致性时崩溃,我们会尝试启动一个新的启动进程,而这通常只会再次崩溃,导致无限循环。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使针对多事务 ID 回卷的紧急自动清理更加健壮(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当我们试图向某个自动清理工作进程发送信号而它已经不在时,不再打印 WARNING,并降低此类信号的日志详细程度(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止自动清理启动器在服务器时钟被大幅回拨时睡眠过长时间(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 GIN 索引的待处理插入列表清理可被取消请求中断(Jeff Janes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许重用 GIN 索引中的全零页(Heikki Linnakangas)
崩溃之后可能遗留这样的页。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SP-GiST 索引中对全零页的处理(Heikki Linnakangas)
VACUUM 曾试图回收此类页,但方式并非崩溃安全。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复一个差一错误,该错误导致子事务/多事务截断中出现关于 “apparent wraparound” 的原本无害的警告(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/pgSQL 错误上下文消息中对 CONTINUE 和 MOVE 语句类型的误报(Pavel Stehule、Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Perl 使其正确处理非 ASCII 的错误消息文本(Alex Hunsaker)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Python 返回 record 结果的字符串表示时的崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/Tcl 中一些未检查 malloc() 调用失败之处(Michael Paquier, Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/isn 中,修复以 979 开头的 ISBN-13 号码的输出(Fabien Coelho)
以 979(但不以 9790)开头的 EAN 被视为 ISBN,但它们必须以新的 13 位格式而非 10 位格式打印。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 contrib/pg_stat_statements 对查询文本垃圾回收的处理(Peter Geoghegan)
包含查询文本的外部文件可能膨胀到非常大的尺寸;一旦超过 1GB,修剪它的尝试就会失败,很快就会导致该文件完全无法读取的情况。
变更
改进 contrib/postgres_fdw 对排序规则相关决策的处理(Tom Lane)
预期主要的用户可见效果是:涉及 varchar 列的比较将比以前在更多情况下被发送到远程服务器执行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 libpq 对内存不足情况的处理(Michael Paquier、Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 中的内存泄漏和缺失的内存不足检查(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 中对数字输出的区域感知格式化代码(Tom Lane)
\pset numericlocale on 所调用的格式化代码在一些不常见的情况下会出错,例如带指数但没有小数点的数字。它还可能破坏 money 数据类型已经区域化的输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 psql 的 \c 命令在没有当前连接时崩溃(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_dump 正确处理继承的 NOT VALID 检查约束(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 目录输出格式中默认 zlib 压缩级别的选择(Andrew Dunstan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_dump 以 tar 格式输出运行期间创建的临时文件不会被所有用户读取(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 和 pg_upgrade,以支持 postgres 或 template1 数据库位于非默认表空间的情况(Marti Raudsepp、Bruce Momjian)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 从过于陈旧而没有特定权限类型的服务器转储时对对象权限的处理(Tom Lane)
从 9.2 之前的服务器转储数据类型,以及从 7.3 之前的服务器转储函数或过程语言时,pg_dump 会生成撤销所有者可授予权限、转而将所有权限授予 PUBLIC 的 GRANT/REVOKE 命令。由于所涉及的权限只是 USAGE 和 EXECUTE,这不构成安全问题,但这种表示与旧系统的行为明显不符。现已修复,在这些情况下保持默认权限状态不变。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pg_dump以转储 shell 类型(Tom Lane)
shell 类型(即尚未完全定义的类型)用处不大,但pg_dump仍应转储它们。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 和其他客户端程序中的各种轻微内存泄漏(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复查询或 pgbench 自身卡住时 pgbench 的进度报告行为(Fabien Coelho)
变更
修复 Alpha 硬件的自旋锁汇编代码(Tom Lane)
变更
修复 PPC 硬件的自旋锁汇编代码使其与AIX本机汇编器兼容(Tom Lane)
如果gcc被配置为使用本机汇编器(这正变得越来越普遍),则用gcc构建无法工作。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 AIX 上,测试 -qlonglong 编译器选项,而不是仅仅假定可以安全使用(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在AIX上,使用-Wl,-brtllib链接选项以允许符号在运行时解析(Noah Misch)
Perl 5.8.0 及更高版本依赖这一能力。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使用 32 位 xlc 编译时避免使用内联函数,因为编译器存在缺陷(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
必要时使用 librt 提供 sched_yield(),在某些 Solaris 版本上正是如此(Oskari Saarenmaa)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将编码UHC按 Windows 代码页 949 处理(Noah Misch)
这修复了未附属到任何特定数据库的进程(如 postmaster)发出的非 ASCII 日志消息的呈现。
变更
在 Windows 上,避免在事务之外(例如为日志消息)进行到 UTF16 的编码转换时失败(Noah Misch)
变更
修复因未复制setlocale()返回值导致的 postmaster 启动失败(Noah Misch)
这在 ANSI 代码页设为 CP936(“简体中文(中华人民共和国)”)的 Windows 系统上曾有报告,其他多字节代码页也可能出现。
变更
修复 Windows install.bat 脚本以处理包含空格的目标目录名(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 PostgreSQL 版本号的数字形式(例如 90405)以名为 VERSION_NUM 的变量方便地供扩展 Makefile 使用(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 发行版 2015g,涵盖开曼群岛、斐济、摩尔多瓦、摩洛哥、诺福克岛、朝鲜、土耳其和乌拉圭的夏令时法规变更。为加拿大北部落基山脉新增了时区名 America/Fort_Nelson。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你要升级的安装此前曾使用 9.3.0 到 9.3.4(含)之间的pg_upgrade版本升级过,请参见下面的第一条变更日志条目。
另外,如果你是从早于 9.4.2 的版本升级,请参见第 E.25 节。
变更
修复从不一致数据库状态恢复时可能失败的问题(Robert Haas)
最近的PostgreSQL发行版引入了防御多事务 ID 回卷的机制,但其中一些代码没有考虑到可能需要在崩溃恢复期间(数据库可能不处于一致状态时)运行。这可能导致崩溃后无法重启或无法启动辅助服务器。在曾使用 9.3.0 到 9.3.4 之间pg_upgrade版本的安装中,pg_upgrade一个已修复缺陷的残留影响也可能导致这种失败。
所涉及的pg_upgrade缺陷是:即使真实值应该更高,它也会把pg_control中的oldestMultiXid设为 1。有了本发行版引入的修复,这种情况将导致立即进行紧急自动清理,直到能够确定正确的oldestMultiXid值。如果这会造成困难,用户可以在升级到本发行版之前进行手工清理来避免。具体步骤如下:
检查pg_controldata报告的“Latest checkpoint's oldestMultiXid”是否为 1。如果不是,则无需任何操作。
查看PGDATA/pg_multixact/offsets中是否有名为0000的文件。如果有,则无需任何操作。
否则,对于 pg_class.relminmxid 等于 1 的每个表,将vacuum_multixact_freeze_min_age和vacuum_multixact_freeze_table_age都设为零后对该表执行 VACUUM。(可以使用第 18.4.4 节中描述的清理延迟代价参数来减小对并发会话的性能影响。)
变更
修复罕见的未能使关系缓存 init 文件失效的问题(Tom Lane)
在并发活动时序恰好不对的情况下,对系统目录执行VACUUM FULL可能无法更新用于避免新会话缓存加载工作的“init 文件”。这将导致后续会话完全无法访问该目录。这是一个非常古老的缺陷,但它极难触发,直到最近才出现可复现的案例。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免传入会话与CREATE/DROP DATABASE之间的死锁(Tom Lane)
在作为DROP DATABASE命令目标或CREATE DATABASE命令模板的数据库中启动的新会话,可能导致该命令等待五秒后失败,即使新会话本会在此之前退出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进规划器对带内层索引扫描的半连接和反连接的代价估计(Tom Lane、Tomas Vondra)
当所有连接子句都被用作索引扫描条件时,这种计划相当廉价,即使内层扫描名义上会取回很多行,因为执行器在取得一行后就会停止。规划器只部分考虑了这一效应,因此会高估代价,从而可能选择其他效率低得多的计划类型。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是从早于 9.4.2 的版本升级,请参见第 E.25 节。
变更
避免崩溃重启期间对数据目录执行fsync时失败(Abhijit Menon-Sen、Tom Lane)
在前几个小版本中,我们加入了一个补丁,在崩溃后对数据目录中的所有内容执行fsync。遗憾的是,它对任何错误情况的响应都是失败,从而阻止服务器启动,即使问题相当无害。例如,数据目录中一个不可写的文件在某些平台上会阻止重启;但把 SSL 证书文件设为服务器不可写是很常见的做法。我们修改了这一行为:权限失败被完全忽略,其他类型的失败会被记录但不会阻止继续。
在initdb --sync-only中也应用同样的规则。这种情况不那么关键,但行为应当类似。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_get_functiondef(),使其在设置了函数的 LEAKPROOF 属性时加以显示(Jeevan Chalke)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复pushJsonbValue()以解包jbvBinary对象(Andrew Dunstan)
此变更不影响 9.4 核心代码中的任何行为,但为可能的第三方调用者避免了一个极端情况。
变更
移除configure中对在OpenBSD上链接线程版libpython的禁止性检查(Tom Lane)
这一限制原本要防止的失败在当前的OpenBSD版本上似乎已不再是问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你使用contrib/citext的regexp_matches()函数,请参见下面相关的变更日志条目。
另外,如果你是从早于 9.4.1 的版本升级,请参见第 E.26 节。
变更
避免客户端恰在认证超时到期前断开时可能出现的崩溃(Benkocs Norbert Attila)
如果超时中断在会话关闭序列进行到一半时触发,SSL 相关状态会被释放两次,通常导致崩溃并对其他会话造成服务拒绝。实验表明,未经认证的远程攻击者能够相当稳定地触发此缺陷,因此按安全问题处理。(CVE-2015-3165)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进对系统调用失败的检测(Noah Misch)
我们替换实现的snprintf()未检查底层系统库调用报告的错误;可能被遗漏的主要情况是内存耗尽。在最坏情况下,由于我们的代码假定缓冲区已被覆写而实际未覆写,这可能导致信息暴露。此外,还有少数地方对安全相关的其他系统库函数调用未检查失败。
仍有可能某些对*printf()族函数的调用在恰逢内存耗尽错误时存在信息泄露风险。我们判断风险不大,但将继续在此领域进行分析。(CVE-2015-3166)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在contrib/pgcrypto中,统一将解密失败报告为“Wrong key or corrupt data”(Noah Misch)
此前,某些使用错误密钥解密的情况可能报告其他错误消息文本。已经证明,这种错误报告的差异可能帮助攻击者从其他系统恢复密钥。虽然尚不清楚pgcrypto的具体行为是否同样可被利用,但使用统一消息来避免风险似乎更好。(CVE-2015-3167)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防御多事务成员 ID 的回卷(Álvaro Herrera、Robert Haas、Thomas Munro)
在某些使用模式下,现有的防御措施可能不够,导致pg_multixact/members文件被过早移除,造成数据丢失。修复包括:修改服务器使会导致覆写旧多事务成员 ID 数据的事务失败,并改进自动清理以确保它能像防御事务 ID 回卷那样主动防御多事务成员 ID 回卷。
变更
修复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()函数的视图或规则。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
转换为 json 时将无穷日期和时间戳呈现为 infinity,而不是抛出错误(Andrew Dunstan)
变更
修复 json/jsonb 的 populate_record() 和 to_record() 函数对空输入的处理(Andrew Dunstan)
变更
修复 HOT 更新后延迟排他约束检查不正确的问题(Tom Lane)
如果同一事务中稍后对一条可能违反延迟排他约束的新行进行了 HOT 更新(即没有索引列发生变化,且该行可以存回同一表页),那么最终执行检查时将报告排他约束被违反,即使新行最初与之冲突的行已被删除。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复用 ALTER TABLE ... ALTER CONSTRAINT 更改外键约束可延迟状态时的行为(Tom Lane)
同一会话中稍后的操作或并发会话中的操作可能不会立即遵循该状态变更。
变更
修复星型模式风格查询的规划(Tom Lane)
有时,对大表的高效扫描要求索引参数来自不止一个其他表(通常是维度表,其键用于对大型事实表建立索引)。规划器应当能找到此类计划,但一个过于严苛的搜索启发式阻止了这一点。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止反连接(NOT EXISTS 连接)与其他外连接之间的不当重排序(Tom Lane)
已知规划器中的这一疏忽会导致 “could not find RelOptInfo for given relids” 错误,但有时错误的查询计划似乎有可能通过该一致性检查并导致静默错误的查询输出。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复外连接计划节点中子表达式匹配不正确的问题(Tom Lane)
此前,如果文本相同的非严格子表达式在外连接的上、下方都被使用,规划器可能试图重用在连接下方计算的值,但这是不正确的,因为对于未匹配的外部行,执行器会将该值强制置为 NULL。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GEQO 规划器以应对其连接顺序启发式的失败(Tom Lane)
已知这一疏忽会在涉及 LATERAL 的查询中导致 “failed to join all relations together” 错误,其他情况下也可能发生。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保当 UPDATE 或 DELETE 的目标是安全屏障视图时正确进行行锁定(Stephen Frost)
变更
数据库启动期间同步复制槽数据时使用以读写方式打开的文件(Andres Freund)
在某些平台上,以前的编码可能导致类似 “could not fsync file "pg_replslot/...": Bad file descriptor” 的错误。
变更
修复 max_prepared_transactions 过小时启动阶段可能的死锁(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
时间线切换后不再归档无用的预分配 WAL 文件(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
崩溃之后递归地对数据目录执行 fsync()(Abhijit Menon-Sen、Robert Haas)
这确保了若随后不久再发生崩溃时数据仍保持一致。(要有问题的话,第二次崩溃必须是系统级崩溃,而不只是数据库崩溃。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复自动清理启动器在收到 SIGTERM 之后发生错误时可能无法关闭的问题(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复会话启动早期未能处理系统目录失效消息的问题(Tom Lane)
这一疏忽可能导致与系统目录上的 VACUUM FULL 并发启动的会话出现失败。
变更
修复试图获取刚刚退出的后端进程状态时 BackendIdGetTransactionIds() 的崩溃(Tom Lane)
变更
处理 LockBufferForCleanup() 中的意外信号(Andres Freund)
这一疏忽可能导致有关 “multiple backends attempting to wait for pincount 1” 的虚假错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复向带有包含整行引用的检查约束的表执行 COPY IN 时的崩溃(Tom Lane)
已知的失败情形只在 9.4 及以上版本中崩溃,但 9.3 和 9.2 中也有非常相似的代码,因此这些分支也被向后修补。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
就用户而言是只读的事务,在提交期间不再等待 WAL 刷写或同步复制(Andres Freund)
此前,由于 HOT 页清理而写入了 WAL 的事务在提交时可能出现延迟,导致不良影响,例如所有同步副本都停机时会话在启动时卡住。还观察到使用同步复制时会话卡在追赶中断处理中;此修复也将解决该问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在使用较短的 recovery_min_apply_delay 值时忙等待(Andres Freund)
变更
修复操作临时表上的哈希索引时的崩溃(Heikki Linnakangas)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复其他进程并发修改索引时哈希索引桶分裂可能失败的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 GIN 索引清理中的内存泄漏(Heikki Linnakangas)
变更
在分析索引表达式期间检查中断(Jeff Janes)
ANALYZE 会多次执行索引表达式;如果此类表达式中存在慢速函数,就希望能在此循环结束之前取消 ANALYZE。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在 SELECT FOR UPDATE、UPDATE 或 DELETE 锁定行之后发生 READ COMMITTED 重新检查时,正确报告外部表的 tableoid(Etsuro Fujita)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在外部服务器用户映射的对象描述字符串中加入目标服务器的名称(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在转换的对象标识字符串中包含模式名(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
建议在使用 Kerberos/GSSAPI/SSPI 认证时将 include_realm 设置为 1(Stephen Frost)
不这样设置的话,来自不同领域的同名用户无法区分。目前这只是文档变更,但在 PostgreSQL 9.5 中它将成为默认设置。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
移除将 IPv4 pg_hba.conf 条目匹配到 IPv4-in-IPv6 地址的代码(Tom Lane)
这段应急代码于 2003 年添加,起因是当时的某些 Linux 内核会把 IPv4 连接报告为 IPv4-in-IPv6 地址。然而该逻辑在 9.0 中被意外破坏。此后没有任何现场投诉,说明它已不再需要。现在反而有报告称被破坏的代码在某些系统上导致崩溃,因此我们选择直接移除而不是修复它。(如果选择修复,将会使 IPv4 pg_hba.conf 条目的实际含义发生微妙且可能涉及安全性的变化,在次版本中这样做似乎并不妥当。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对从未真正启动即终止的后台工作进程的状态报告(Robert Haas)
变更
数据库崩溃之后,不再重启标记为 BGW_NEVER_RESTART 的后台工作进程(Amit Khandekar)
变更
在IDENTIFY_SYSTEM复制命令中报告 WAL 刷写位置而非插入位置(Heikki Linnakangas)
这避免了pg_receivexlog可能出现的启动失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上关闭服务期间,定期向服务控制管理器发送状态更新以防它过早终止服务;并确保 pg_ctl 会等待关闭完成(Krystian Bigaj)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
降低使用libpq非阻塞模式时网络死锁的风险(Heikki Linnakangas)
在发送大量数据时,定期排空输入缓冲区很重要,以防服务器已发送足够的响应数据导致其在输出上阻塞。(典型场景是服务器在COPY FROM STDIN期间发送一连串 NOTICE 消息。)这在普通阻塞模式下工作正常,但在非阻塞模式下则不然。我们修改了libpq,使其在可能时顺便排空输入,但要完全防御此问题需要应用程序配合:应用程序应同时监视套接字的读就绪和写就绪条件,并确保在读就绪时调用PQconsumeInput()。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 libpq 中 URI 连接串空值的误解析(Thomas Fanghaenel)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 中的数组处理(Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复psql以合理处理作为\connect第一个参数的 URI 和 conninfo 串(David Fetter、Andrew Dunstan, Álvaro Herrera)
这一语法已被接受(但未写入文档)很长时间,但此前某些参数可能取自旧连接而非给定字符串,这被认为是不合适的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
抑制psql在某些平台上关于退出时未能写入~/.psql_history的错误抱怨(Tom Lane)
这一不当行为源自针对非常老(2006 年之前)的libedit版本中一个缺陷的变通方案。我们通过移除该变通方案修复了问题,但这会使仍在使用此类libedit版本的用户出现类似失败。建议:升级该库,或改用libreadline。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 判断哪些转换是不应转储的系统提供转换的规则(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 中 -Z 压缩级别选项与 -Fd 一起使用时未被遵循的问题(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使pg_dump在选择转储顺序时考虑扩展配置表之间的外键关系(Gilles Darold、Michael Paquier、Stephen Frost)
这一疏忽可能导致生成的转储无法重新加载,因为外键约束会被瞬时违反。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免并发会话创建和删除临时函数时 pg_dump 可能失败的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复仅由 VALUES(...) 构成但带有列别名的视图的转储(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在转储/还原期间视图的副本标识被正确设置为nothing(Marko Tiikkaja)
此前,如果视图涉及循环依赖,它最终可能带有不正确的副本标识属性。
变更
在pg_upgrade中,强制新集簇使用时间线 1(Bruce Momjian)
此变更可防止因错误抱怨缺少 WAL 历史文件而导致的升级失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_upgrade 中,继续之前检查是否存在不可正常连接的数据库(Bruce Momjian)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 pg_upgrade 中,在生成的 delete_old_cluster 脚本中正确引用目录路径(Bruce Momjian)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在pg_upgrade中正确保留数据库级冻结信息(Bruce Momjian)
这一疏忽可能导致postgres和template1数据库中的表出现缺少 clog 文件的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上以受限权限运行 pg_upgrade 和 pg_resetxlog,使它们被管理员运行时不会失败(Muhammad Asif Naeem)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 initdb 和 pg_basebackup 扫描目录时对 readdir() 失败的处理(Marco Nenciarini)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/intarray 中缓慢的排序算法(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 Sparc V8 机器上的编译失败(Rob Rowan)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
消除 macOS 上的一些构建警告(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 发行版 2015d,涵盖埃及、蒙古和巴勒斯坦的夏令时法规变更,以及加拿大和智利的历史变更。同时为 America/Adak 时区采用修订后的时区缩写(HST/HDT 而非 HAST/HADT)。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
对于运行 9.4.X 的用户,不需要转储/恢复。
但是,如果你是 Windows 用户且使用“Norwegian (Bokmål)”区域,升级后需要手工将PostgreSQL系统目录中存储的任何“Norwegian (Bokmål)_Norway”或“norwegian-bokmal”区域名替换为纯 ASCII 别名“Norwegian_Norway”。详情参见http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale
变更
修复to_char()中的缓冲区越界(Bruce Momjian)
当to_char()处理要求数字位数很多的数字格式模板时,PostgreSQL会读取越过缓冲区末尾。当处理恶意构造的时间戳格式模板时,PostgreSQL会写入越过缓冲区末尾。两种情况都可能导致服务器崩溃。我们尚未排除导致权限提升攻击的可能性,尽管这种攻击似乎不太可能。(CVE-2015-0241)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复替换实现的*printf()函数中的缓冲区越界(Tom Lane)
PostgreSQL包含printf及相关函数的替换实现。当代码格式化浮点数(转换说明符e、E、f、F、g或G)且请求的精度超过约 500 时,会发生栈缓冲区越界。这会导致服务器崩溃,我们尚未排除导致权限提升攻击的可能性。数据库用户可以通过to_char()SQL 函数触发这种缓冲区越界。虽然这是唯一受影响的核心PostgreSQL功能,但使用 printf 族函数的扩展模块也可能存在风险。
此问题主要影响 Windows 上的PostgreSQL。PostgreSQL在系统实现足够完善时会使用系统实现,而其他现代平台上正是如此。(CVE-2015-0242)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复contrib/pgcrypto中的缓冲区越界(Marko Tiikkaja、Noah Misch)
pgcrypto模块中内存大小跟踪的错误导致了栈缓冲区越界和对未初始化内存内容的不当依赖。缓冲区越界情况可能导致服务器崩溃,我们尚未排除导致权限提升攻击的可能性。(CVE-2015-0243)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复出错后前端/后端协议可能失去同步的问题(Heikki Linnakangas)
如果服务器在从客户端读取协议消息中途发生任何错误,它可能失去同步,错误地把消息数据的一部分解释为新的协议消息。能够在命令参数中提交恶意构造二进制数据的攻击者可能借此注入自己的 SQL 命令。语句超时和查询取消是触发此场景最可能的错误来源。尤其容易受影响的是既使用超时又将任意用户构造数据作为二进制查询参数提交的应用程序。禁用语句超时会降低但不能消除被利用的风险。感谢 Emil Lenngren 报告此问题。(CVE-2015-0244)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复通过约束违反错误消息的信息泄露(Stephen Frost)
某些服务器错误消息会显示违反约束(如唯一约束)的列的值。如果用户对该表的所有列没有SELECT权限,这可能意味着暴露用户不应看到的值。我们调整了代码,使值仅在来自 SQL 命令本身或用户可以查询到时才显示。(CVE-2014-8161)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
锁定 Windows 上回归测试的临时安装(Noah Misch)
使用 SSPI 认证,只允许启动测试套件的操作系统用户连接。这在 Windows 上关闭了此前已在其他平台上关闭的同一漏洞,即其他用户可能连接到测试 postmaster。(CVE-2014-0067)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
处理名为“Norwegian (Bokmål)”的 Windows 区域(Heikki Linnakangas)
非 ASCII 区域名是有问题的,因为不清楚应该用什么编码表示它们。将这个麻烦的区域名映射为纯 ASCII 别名“Norwegian_Norway”。
9.4.0 曾将这个麻烦的名称映射为“norwegian-bokmal”,但事实证明这并非在所有 Windows 配置上都有效。现在改为推荐“Norwegian_Norway”。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 EvalPlanQual 处理中使用已释放内存的问题(Tom Lane)
在READ COMMITTED模式下,锁定或更新最近更新过的行的查询可能因此缺陷崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免在 EvalPlanQual 处理中试图获取元组锁时可能出现的死锁(Álvaro Herrera、Mark Kirkwood)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复当某事务试图获取 FOR NO KEY EXCLUSIVE 元组锁而多个其他事务当前持有 FOR SHARE 锁时不等待的问题(Álvaro Herrera)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
改进 EXPLAIN 在大型范围表上的性能(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复jsonb的 Unicode 转义处理,并因此禁止\u0000(Tom Lane)
此前,JSON Unicode 转义\u0000被接受并按这六个字符存储;但这与输入\\u0000时存储的内容无法区分,造成歧义。此外,在期望得到去转义文本输出的场合(如->>操作符),该序列被打印为\u0000,不符合去除 JSON 转义的预期。(一致的行为需要输出零字节,但PostgreSQL不支持文本字符串中嵌入零字节。)9.4.0 中曾有一次不明智的尝试,试图通过调整 JSON 输出转换规则来改善这一状况;但这当然无法修复根本性的歧义,而且事实证明它破坏了 Unicode 转义序列的其他用法。我们撤销了那项修改,并为避免核心问题,在jsonb输入中拒绝\u0000。
如果jsonb列包含 9.4.0 存储的\u0000值,此后它将被读出为\\u0000,这是 9.4.0 为这种情况存储的数据的另一种有效解释。
json类型没有存储歧义问题,但确实存在去转义文本输出不一致的问题。因此,当需要转换为去转义形式时,json值中的\u0000现在也会被拒绝。此变更并不破坏在json列中存储\u0000的能力,只要不对这些值做任何处理。这与数据库编码不是 UTF8 时允许非 ASCII Unicode 转义的情况完全类似。
变更
修复xpath()中的命名空间处理(Ali Akbar)
此前,如果命名空间声明附在输入xml值的祖先元素上而非被返回的特定元素上,xpath()调用产生的xml值就不会包含命名空间声明。我们将祖先声明传播下来,使结果在孤立考虑时也是正确的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复范围操作符选择率估计中的各种疏漏(Emre Hasegeli)
此补丁修复了极端情况下 “unexpected operator NNNN” 规划器错误,并改进了其他一些情况下的选择率估计。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
恢复 GIN 索引项最大大小曾被无意间造成的缩减(Heikki Linnakangas)
对于以前版本会接受的数据,9.4.0 可能报 “index row size exceeds maximum” 错误而失败。
变更
修复重复重新扫描 GIN 索引期间查询时长的内存泄漏(Heikki Linnakangas)
变更
修复使用非零 gin_fuzzy_search_limit 时可能崩溃的问题(Heikki Linnakangas)
变更
针对逻辑解码的多项修复(Andres Freund)
变更
修复报告 wal_log_hints 设置变更的 WAL 参数变更记录的不正确重放(Petr Jelinek)
变更
将 “pgstat wait timeout” 警告消息改为 LOG 级别,并重新措辞使其更易理解(Tom Lane)
这条消息最初被认为基本属于不可能发生的情况,但它在我们较慢的 buildfarm 成员上出现得足够频繁,成了干扰。现已将其降为 LOG 级别,并在措辞上多下了一点功夫:现在它的内容为 “using stale statistics instead of current ones because stats collector is not responding”。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 macOS 的 setlocale() 在 postmaster 内部启动多余的额外线程时发出警告(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 /etc/passwd 不可读时 libpq 的行为(Tom Lane)
在执行 PQsetdbLogin() 期间,libpq 会试图确定用户的操作系统用户名,在大多数 Unix 平台上这需要读取 /etc/passwd。从 9.4 起,读取失败被视为硬错误。现已恢复以前的行为:只有当应用程序未提供要连接的数据库角色名时才失败。这支持在缺少 /etc/passwd 文件的 chroot 环境中运行。
变更
改进 psql 特殊变量解析的一致性(Tom Lane)
允许 ECHO_HIDDEN 和 ON_ERROR_ROLLBACK 使用 on 和 off 的变体拼写(如 1/0)。对 COMP_KEYWORD_CASE、ECHO、ECHO_HIDDEN、HISTCONTROL、ON_ERROR_ROLLBACK 和 VERBOSITY 的无法识别的值发出警告。对所有这些变量的所有值进行不区分大小写的识别;此前大小写敏感与不敏感的行为混杂在一起。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 使其处理事件触发器上的注释时不失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许并行 pg_dump 使用 --serializable-deferrable(Kevin Grittner)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止备库提升为主库后 pg_basebackup -x/-X 创建的 WAL 文件被再次归档(Andres Freund)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果,尤其是 NULL(Michael Paquier)
此前 connectby() 遇到 NULL 键值时会崩溃。现在它会打印该行但不再进一步递归。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
大量清理 Coverity 静态代码分析器的警告(Andres Freund、Tatsuo Ishii、Marko Kreen、Tom Lane、Michael Paquier)
这些变更大多只是表面性的,但在某些情况下修复了极端情况的缺陷,例如内存不足失败后崩溃而不是正确报告错误。据信它们都不构成安全问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许 configure 环境中的 CFLAGS 覆盖自动提供的 CFLAGS(Tom Lane)
此前,configure 会把它自行选择的开关追加到用户指定的 CFLAGS 字符串末尾。由于大多数编译器从左到右处理开关,这意味着发生冲突时 configure 的选择会覆盖用户指定的标志。正确的方向应当相反,因此调整了逻辑,把用户的字符串放在末尾而不是开头。
变更
使 pg_regress 成功退出时删除其创建的任何临时安装(Tom Lane)
这使 make check-world 期间的磁盘空间用量大幅减少,因为该序列会创建大量临时安装。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将 CST(中国标准时间)加入我们的时区缩写列表(Tom Lane)
变更
将时区数据文件更新到 tzdata 发行版 2015a,涵盖智利和墨西哥的夏令时法规变更,以及冰岛的历史变更。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。