选择 打开 改范围 完整检索页
不受支持的版本: 10
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本手册首页的对应页面,或其他在上面列出的活跃大版本。

E.23. 发布版本 10.1 #

发布日期:. 2017-11-09

本次发布包含来自 10.0 的多项修复。 有关 10 主版本新特性的说明,请参见 Section E.24.

E.23.1. 迁移到版本 10.1

对于运行 10.X 的用户,不需要执行导出/恢复。

但是,如果使用了 BRIN 索引,请参阅下方第四条变更日志。

E.23.2. 变更

  • 确保 INSERT ... ON CONFLICT DO UPDATE 在所有情况下都检查表权限和 RLS 策略(Dean Rasheed)

    INSERT ... ON CONFLICT DO UPDATE 的更新路径要求对仲裁索引的列拥有 SELECT 权限,但在通过约束名称指定仲裁对象时,没有检查该权限。此外,对于启用了行级安全的表,它没有依据表的 SELECT 策略检查更新后的行(无论以何种方式指定仲裁索引)。(CVE-2017-15099)

  • 修复 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)

  • 修复 BRIN 索引摘要生成,使其正确处理并发的表扩展(Álvaro Herrera)

    以前,一个竞态条件可能导致索引遗漏某些表行。可能需要重建现有 BRIN 索引,以修复此问题过去造成的影响。

  • 修复并发更新 BRIN 索引期间可能发生的失败(Tom Lane)

    这些竞态条件可能导致 invalid index offnuminconsistent range map 等错误。

  • 防止逻辑复制在复制 UPDATE 时将未复制的列设为空值(Petr Jelinek)

  • 修复逻辑复制,使其按预期触发 BEFORE ROW DELETE 触发器(Masahiko Sawada)

    以前,除非表还具有 BEFORE ROW UPDATE 触发器,否则不会触发。

  • 修复从使用 SPI 的函数(尤其是用 PL 语言编写的任何函数)调用逻辑解码时的崩溃(Tom Lane)

  • 查找 INSERT/UPDATE/DELETE 的目标表时忽略 CTE,并防止将带模式限定的目标表名与触发器过渡表名匹配(Thomas Munro)

    这恢复了 v10 之前附加到 DML 命令的 CTE 的行为。

  • 避免在聚合函数的 FILTER 测试不通过的行上计算其参数表达式(Tom Lane)

    这恢复了 v10 之前的行为(也符合 SQL 标准)。

  • 修复多个 GROUPING SETS 列包含相同简单变量时查询结果不正确的问题(Tom Lane)

  • 修复计算 SELECT 目标列表中的集合返回函数时,在查询生命周期内发生的内存泄漏(Tom Lane)

  • 允许并行执行使用通用计划的预备语句(Amit Kapila,Kuntal Ghosh)

  • 修复对嵌套查询作出的不正确并行化决定(Amit Kapila,Kuntal Ghosh)

  • 修复并行查询处理,避免最近使用过的角色被删除时发生失败(Amit Kapila)

  • 修复并行执行位图扫描时,BitmapOr 节点下具有 BitmapAnd 计划节点所导致的崩溃(Dilip Kumar)

  • 修复 json_build_array()json_build_object() 及其 jsonb 对应函数,使其正确处理显式 VARIADIC 参数(Michael Paquier)

  • 修复自动清理的工作项逻辑,防止可能的崩溃和工作项静默丢失(Álvaro Herrera)

  • 修复在视图末尾添加列时的极端情况崩溃 (Tom Lane)

  • 当视图或规则包含 FieldSelectFieldStore 表达式节点时,记录正确的依赖关系(Tom Lane)

    缺少这些依赖关系可能导致本应失败的列或数据类型 DROP 得以执行,从而使随后使用该视图或规则的操作出错。此补丁不会保护现有视图或规则,只保护今后创建的视图或规则。

  • 正确检测范围数据类型是否可哈希(Tom Lane)

    规划器错误地假定任何范围类型都可进行哈希,用于哈希连接或哈希聚合,但实际上必须检查该范围的子类型是否支持哈希。这不影响任何内置范围类型,因为它们都可哈希。

  • 检查函数依赖统计信息时,正确忽略 RelabelType 表达式节点(David Rowley)

    例如,这使 varchar 列上的扩展统计信息能够得到正确使用。

  • 防止有序集聚合之间共享转换状态(David Rowley)

    这会使内置有序集聚合崩溃,用户编写的聚合很可能也会如此。v11 及更高版本将提供安全处理此类情况的措施,但在已发布分支中,仅禁用这项优化。

  • 防止在先前发生 statement_timeout 后忽略 idle_in_transaction_session_timeout(Lukas Fittl)

  • 修复 XID 回卷导致 NOTIFY 消息以低概率丢失的问题(Marko Tiikkaja,Tom Lane)

    如果一个会话在超过 20 亿个事务期间不执行查询,只监听通知,它就会开始遗漏某些来自并发提交事务的通知。

  • 降低批量复制文件期间的数据刷盘请求频率,以避免 macOS 上的性能问题,尤其是其新的 APFS 文件系统(Tom Lane)

  • 允许在事务隔离级别为 REPEATABLE READ 或更高时使用 COPYFREEZE 选项(Noah Misch)

    之前的一项缺陷修复意外破坏了这种用法。

  • 修复 AggGetAggref(),使其向转换计算已合并的聚合的最终函数返回正确的 Aggref 节点(Tom Lane)

  • 修复 pg_dumppsql 中某些新查询的模式限定不充分的问题(Vitaly Burovoy,Tom Lane,Noah Misch)

  • 避免在 psql\d 查询中使用 @> 操作符(Tom Lane)

    这避免了安装 parray_gin 扩展时出现问题,因为该扩展定义了一个冲突的操作符。

  • 修复 pg_basebackup 的表空间路径匹配,使其在比较前先规范化两条路径(Michael Paquier)

    这在 Windows 上尤其有用。

  • 修复 libpq,使其不再要求用户主目录存在(Tom Lane)

    在 v10 中,尝试读取 ~/.pgpass 时找不到主目录被视为严重错误,但实际上应只视为找不到该文件。v10 和以前的发布分支在读取 ~/.pg_service.conf 时都犯了同样的错误,不过这个问题不太明显,因为只有指定服务名时才会查找该文件。

  • 在 ecpglib 中,根据是否设置了 standard_conforming_strings 正确处理字符串字面量中的反斜杠(Tsunakawa Takayuki)

  • 使 ecpglib 的 Informix 兼容模式按预期忽略整数输入字符串中的小数位(Gao Zengqi,Michael Meskes)

  • 修复类似 check 的 Make 目标缺少 temp-install 前置依赖的问题(Noah Misch)

    某些本应像 make check 一样工作的非默认测试过程,未能确保临时安装是最新的。

  • 将时区数据文件更新到 tzdata 2017c 版,以反映斐济、纳米比亚、北塞浦路斯、苏丹、汤加和特克斯 & 凯科斯群岛的夏令时法规变更,并修正阿拉斯加、阿皮亚、缅甸、加尔各答、底特律、爱尔兰、纳米比亚和帕果帕果的历史数据。

  • 在文档中,恢复使用大写字符串作为 HTML 锚点(Peter Eisentraut)

    由于工具链变更,10.0 用户手册的页内锚点使用了小写字符串,导致某些指向我们网站文档的外部链接失效。现在恢复了以前使用大写字符串的惯例。