选择 打开 改范围 完整检索页

PostgreSQL 10.12 发布说明

E.12. 发布版本 10.12 #

发布日期:. 2020-02-13

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

E.12.1. 迁移到版本 10.12

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

但是,如果是从早于 10.11 的版本升级,请参见 Section E.13

E.12.2. 变更

  • ALTER ... DEPENDS ON EXTENSION 补上缺失的权限检查(Álvaro Herrera)

    将对象标记为依赖某个扩展时,没有进行任何权限检查。这一疏漏使任何用户都可以将例程、触发器、物化视图或索引标记为可由任何有权删除该扩展的用户删除。现在要求调用用户拥有指定对象(因而有权删除它)。(CVE-2020-1720)

  • 修复逻辑复制订阅者代码,使其在适当情况下执行逐列 UPDATE 触发器(Peter Eisentraut)

  • 避免大事务必须溢写到许多独立临时文件时逻辑解码发生失败(Amit Khandekar)

  • 修复逻辑复制订阅者处理行更新时可能发生的崩溃或数据损坏(Tom Lane,Tomas Vondra)

    只有当订阅者的表包含未从发布者复制、且数据类型按引用传递的列时,此缺陷才会导致可见问题。

  • 修复对已订阅关系进行 DDL 变更后逻辑复制订阅者的崩溃(Jehan-Guillaume de Rorthais,Vignesh C)

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

  • 提高使用 REPLICA IDENTITY FULL 的逻辑复制效率(Konstantin Knizhnik)

    更新或删除操作中查找现有元组时,返回第一个匹配元组,而非最后一个。

  • 防止过早关闭位于 Limit 节点下方的 Gather 或 GatherMerge 计划节点(Amit Kapila)

    这可以避免此类计划节点需要被扫描多次时发生失败,例如它位于嵌套循环内侧时。

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

  • 在临时表上创建、删除或重建索引时,忽略 CONCURRENTLY 选项(Michael Paquier,Heikki Linnakangas,Andres Freund)

    这可以避免临时表具有 ON COMMIT 动作时发生奇怪的失败。对临时表使用 CONCURRENTLY 本来就没有益处,因为其他会话无法访问该表,额外处理没有意义。

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

  • 修复对 boxrangeinet 数据类型执行 BRIN 索引操作时可能发生的崩溃(Heikki Linnakangas)

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

    避免可能发生的死锁、对已删除页面状态的不正确更新,以及无法遍历最近删除页面的问题。

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

  • 修复 FileClose() 失败后发生的崩溃(Noah Misch)

    只有启用 data_sync_retry 时才能观察到此问题,否则 FileClose() 失败会被报告为 PANIC。

  • 修复使用按引用传递的聚合转换状态时发生的罕见崩溃(Andres Freund,Teodor Sigaev)

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

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

  • 修复对公元前日期计算 EXTRACT(ISOYEAR FROM timestamp) 时结果相差一的问题(Tom Lane)

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

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

  • 确保 WAL 发送进程 进程在 pg_stat_activity 中的事务开始时间始终显示为 NULL(Álvaro Herrera)

    以前,xact_start 列有时会显示进程启动时间。

  • 提高内侧关系非常大时的哈希连接性能(Thomas Munro)

  • 修复为范围操作符 <@@> 计算选择率时在边界情况下发生的崩溃和估算错误(Michael Paquier,Andrey Borodin,Tom Lane)

  • 应用最常见值扩展统计信息时忽略系统列(Tomas Vondra)

    这可避免受影响查询发生 negative bitmapset member not allowed 规划器错误。

  • 修复 BRIN 索引逻辑,使其支持假想 BRIN 索引(Julien Rouhaud,Heikki Linnakangas)

    以前,如果索引建议器扩展尝试让规划器生成包含假想 BRIN 索引的计划,就会失败,因为 BRIN 代价估算代码始终尝试实际访问索引的元页面。现在会检查索引是否只是假想索引;如果是,则使用索引参数的默认假设。

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

    这种用法从未得到支持,但以前只在执行时才抛出错误,因此它可能被规划器错误掩盖。

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

  • 禁止返回 record 等伪类型的分区键表达式(Tom Lane)

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

  • 修复仅包含 VALUES 列表的视图的转储,使其能够处理视图输出列被重命名的情况(Tom Lane)

  • 确保计算视图或规则的依赖关系时,将 XMLTABLE 结构中使用的数据类型和排序规则考虑在内(Tom Lane)

    以前,如果某个类型未在视图中的其他地方被引用,删除该类型就可能破坏使用 XMLTABLE 的视图。此修复不会纠正现有视图已记录的依赖关系,仅对新建视图生效。

  • 防止 RADIUS 认证参数被意外转换为小写或截断(Marcos David)

    pg_hba.conf 解析器错误地将这些字段当作 SQL 标识符,而它们通常并不是。

  • 在发送 ReadyForQuery 之前向客户端传送收到的 NOTIFY 消息,而非在之后发送(Tom Lane)

    此更改确保,对于 libpq 以及行为类似的其他客户端库,当客户端认为事务已完成时,事务期间收到的所有通知都已可用。这在实际应用中可能没有影响(无论如何,应用都需要处理异步通知),但更便于编写行为可重现的测试用例。

  • 即使未编译 GSSAPI 代码,也允许 libpq 解析所有与 GSS 有关的连接参数(Tom Lane)

    这使其行为与我们的 SSL 支持类似:我们早已认为始终接受所有相关参数是可取的,即使某个构建缺少相应特性,导致部分参数被忽略或受到限制。

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

  • 避免 postgres_fdw 尝试向远程服务器发送 UPDATE remote_tab SET (x,y) = (SELECT ...) 之类命令时发生崩溃(Tom Lane)

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

    这可防止该参数设置不合理时可能发生的崩溃。

  • contrib/tablefunccrosstab() 函数中禁止 NULL 类别值(Joe Conway)

    这种情况从未产生有用的结果,而且在某些平台上会导致崩溃。

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

    这适用于 idle_in_transaction_session_timeoutlock_timeoutstatement_timeouttrack_activitiestrack_countstrack_functions

  • 避免 slab 内存上下文健全性检查中的内存泄漏(Tomas Vondra)

    这不会影响生产构建,因为它们通常不会启用内存上下文检查;但在调试构建中,这种泄漏可能相当严重。

  • 修复 LWLock 统计机制报告重复统计条目的问题(Fujii Masao)

    由于哈希表键创建有误,LWLock 统计代码(默认不编译,需要使用 -DLWLOCK_STATS 编译)可能为同一个 LWLock 和后端进程报告多个条目。

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

    这使 NOTIFY 出现了可见的时序异常,也可能导致其他错误行为。

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

    这有助于处理目标文件已被标记为删除、但尚未实际消失,导致打开文件失败的情况。例如,pg_ctl 在探测 postmaster 是否已经关闭时,经常因此类错误而失败。