E.2.版本 10.12

发布日期: 2020-02-13

此版本包含自 10.11 起的各种修复程序。有关主要版本 10 中新功能的信息,请参阅Section E.14

E.2.1. 迁移到版本 10.12

运行 10.X 的用户不需要转储/还原。

但是,如果要从 10.11 之前的版本升级,请参见Section E.3

E.2.2. Changes

  • ALTER ... DEPENDS ON EXTENSION(ÁlvaroHerrera)添加缺少的权限检查

将对象标记为依赖于 extensions 没有任何特权检查。这种监督允许任何用户将例程,触发器,物化视图或索引标记为任何能够删除扩展的用户都可以删除的对象。要求主叫用户拥有指定的对象(因此有权删除它)。 (CVE-2020-1720)

  • 修复逻辑复制订户代码以在适当的时候执行每列UPDATE触发器(Peter Eisentraut)

  • 当必须将大笔 Transaction 溢出到许多单独的临时文件中时,避免逻辑解码失败(Amit Khandekar)

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

仅当订户的表包含未从发布者复制的列并且具有按引用传递的数据类型时,此错误才引起可见的问题。

  • 修复 DDL 在订阅关系上更改后逻辑复制订阅服务器崩溃的问题(Jehan-Guillaume de Rorthais,Vignesh C)

  • 修复数据库崩溃并重启后逻辑复制发布程序中的故障(Vignesh C)

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

在更新或删除操作期间搜索现有 Tuples 时,返回第一个匹配的 Tuples 而不是最后一个。

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

如果这样的计划节点需要多次扫描(例如,如果它在 Nestloop 内部),则可以避免失败。

  • 没有可用的动态共享内存插槽时避免内存泄漏(Thomas Munro)

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

如果临时表具有ON COMMIT操作,这可以避免奇怪的故障。无论如何,对临时表使用CONCURRENTLY都是没有好处的,因为其他会话无法访问该表,因此多余的处理毫无意义。

  • 修复了在标记为ON COMMIT DELETE ROWS(Tom Lane)的临时表上重置表达式索引时可能出现的故障

  • 修复了使用boxrangeinet数据类型的 BRIN 索引操作可能崩溃的问题(Heikki Linnakangas)

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

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

  • 使用多行VALUES列表(“汤姆车道”)中的 SubPlan(sub_SELECT)修复可能的崩溃

  • 修复 FileClose()失败后崩溃的问题(Noah Misch)

仅在启用data_sync_retry时才能观察到此问题,因为否则 FileClose()失败将被报告为 PANIC。

  • 使用按引用传递的聚合过渡状态来修复不太可能的崩溃(Andres Freund,Teodor Sigaev)

  • 改善to_date()to_timestamp()(Tom Lane,ÁlvaroHerrera)中的错误报告

关于 Importing 字符串中不正确的月份或日期名称的报告可能会截断多字节字符中间的 Importing,从而导致编码错误的错误消息,从而可能导致后续失败。截断下一个空格。

  • 修正 BC 日期的EXTRACT(ISOYEAR FROM timestamp)的不符结果(Tom Lane)

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

自我参照的观点行不通;它将始终导致无限递归。在尝试执行视图时,我们正确地处理了这种情况,但是在询问它是否可自动更新时,我们没有正确地处理这种情况。

  • 确保 walsender 进程在pg_stat_activity(ÁlvaroHerrera)中的事务开始时间始终显示 NULL。

以前,xact_start列有时会显示流程开始时间。

  • 通过非常大的内部关系提高哈希联接的性能(Thomas Munro)

  • 修复了<@@>范围运算符(Michael Paquier,Andrey Borodin,Tom Lane)的选择性计算中的边缘情况崩溃和错误估计

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

这样可以防止受影响的查询出现“不允许负位图集成员”计划程序错误。

  • 修复 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之前而不是在(Tom Lane)之后,将传入的NOTIFY消息发送到 Client 端。

此项更改可确保使用 libpq 和其他与此类似的 Client 端库,在 Client 端认为事务完成时,在事务期间收到的任何通知将可用。这在实际应用中可能没有什么区别(无论如何都需要处理异步通知)。但它使构建具有可复制行为的测试用例更加容易。

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

这使得行为类似于我们的 SSL 支持,在很早以前就认为始终接受所有相关参数是一个好主意,即使由于某些特定版本缺少该功能而忽略或限制了其中一些参数。

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

由于出现一对一错误,这些代码将打印错误的月份名称,否则可能会崩溃。

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

  • 尝试通过 signal 终止并行 pg_dump/pg_restore 运行时,防止可能的崩溃或锁定(Tom Lane)

  • 在 pg_upgrade 中,在表中搜索不可升级的数据类型时查看数组和范围(Tom Lane)

  • 对 createuser 的--connection-limit选项应用更全面的语法检查(ÁlvaroHerrera)

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

  • 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

  • 在“平板”内存上下文的完整性检查中避免内存泄漏(Tomas Vondra)

这对于生产版本来说不是问题,因为它们通常不会启用内存上下文检查。但是在调试版本中泄漏可能会非常严重。

  • 修复 LWLock 统计机制报告的多个统计条目(富士井正雄)

由于哈希表密钥创建错误,LWLock 统计代码(默认情况下未构建;它需要使用-DLWLOCK_STATS进行编译)可能报告同一 LWLock 和后端进程的多个条目。

  • 修复导致 Windows 上进程间 signal 延迟传递的竞争状况(Amit Kapila)

这导致NOTIFY中出现可见的计时奇数,并且可能还有其他不良行为。

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

这有助于应对文件打开尝试失败的情况,因为目标文件被标记为删除但尚未 true 消失。例如,pg_ctl 在尝试检查邮局主管是否已关闭时经常因此类错误而失败。