E.4. 11.5 版

发布日期: 2019-08-08

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

E.4.1. 迁移到版本 11.5

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

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

E.4.2. Changes

我们长期以来都需要调用临时函数来显式指定临时模式,即pg_temp.func_name(args)。同时也需要使用功能符号转换为临时类型,例如pg_temp.type_name(arg)。否则,可以使用临时对象捕获函数调用,从而以与在 CVE-2007-2138 中阻止的方式几乎相同的方式允许特权提升。 (CVE-2019-10208)

哈希子计划使用外部查询的原始比较运算符来比较哈希表的条目。如果该运算符是交叉类型的,这是错误的事情,因为所有哈希表条目都将是子查询的输出类型。对于核心 PostgreSQL 中的一组可散列的交叉类型运算符,此错误在 64 位计算机上似乎几乎是无害的,但可能导致崩溃或在 32 位计算机上未经授权地泄露服务器内存。扩展可能会提供散列的交叉类型运算符,从而产生更大的风险。 (CVE-2019-10209)

这修复了最新的次要发行版中引入的回归问题:使用更改的列的索引未正确处理,从而导致ALTER TABLE期间发生奇怪的错误。

这特别适用于外键约束,因为这些约束是由触发器实现的。

ALTER TABLE ... DROP COLUMN将拒绝删除作为分区键列的列。但是,间接删除(例如从删除键列的数据类型而来的级联)没有这种检查,因此可以删除键列。这导致分区表严重损坏,无法访问或删除该分区表。

此修复程序添加了pg_depend个条目,这些条目强制执行以下操作:如果级联放置强制删除键列,则将删除整个分区表,而不仅仅是键列。但是,只有在创建分区表时才会创建此类条目。因此,此修补程序不会消除分区表已存在的风险。仅对于非内置数据类型的分区键列会出现此问题,因此对于大多数用户来说似乎并不构成危害。

如果 Map 不完全一对一,则某些操作会发生错误,例如,如果一个表中有被删除的列,而另一个表中没有被删除的列。

以前,在遇到外部表分区时引发了一个错误,但这是无济于事的,无法防止任何实际问题。

通常,如果表的主键列包含在GROUP BY中,则可以删除任何其他分组列,因为主键列足以使组唯一。但是,如果查询也正在读取继承子表,则此规则不起作用。parent 的独特性不会扩展到孩子。

此错误导致来自某些EXISTS查询的重复结果行。

当使用最近创建的索引来确定列的最小值或最大值时,计划者可以选择一个实际上不包含端点值的最近失效的 Tuples。在最坏的情况下,Tuples 可能包含空值,从而导致可见错误“在索引中找到意外的空值”;我们很可能最终会使用错误的值,从而降低计划估算的质量。

在存在并发更新的情况下,依赖于过渡表的触发器有时会失败。

如果不是键的所有列都不都是同一类型,则ALTER TABLE可能会做出关于是否需要重新验证外键的错误决定。该错误似乎总是在保守的方向上发生,即不必要地进行了重新验证。

这样可以避免在ANALYZE期间出现“Tuples 已经被自身更新”错误。

当两个或多个事务正在 await 事务 T1 释放 Tuples 级别的锁,并且 T1 将其锁升级到更高级别时,可以在 T1 完成时报告正在 await 的事务中的虚假死锁。

目前尚不清楚非人工查询是否可以解决此错误,但如果确实发生此错误,则本来可以解决的死锁所涉及的查询将阻塞直到被取消。

如果端点是无限的,尝试通过增加或减小端点值来将开放范围转换为封闭范围,反之亦然,这是不正确的。因此在这种情况下,请不要理会范围。

如果结果直接存储到表中,则可以避免出现问题。

在某些特殊情况下,包含 Windows 样式换行符的服务文件可能会被错误地解析,从而导致连接失败。

如果用户定义的 opclass 是用户定义的范围类型的子类型,则相关对象将以错误的 Sequences 转储,从而产生不可恢复的转储。 (在其他情况下,也可能表现出无法处理 opclass 依赖项的潜在故障,但这是唯一已知的情况.)

这修复了某些配置中的构建失败。

在某些情况下,initdb 会在“真实”区域名称上选择这些人工区域名称之一。与这两个函数相比,其他任何匹配项都比 C 库的时区行为更可取。

从历史上看,IANA 使用“ Local time zone must be set--see zic manual page”之类的“缩写”来设置此人工区域。 tzdb 数据库的现代版本改为显示-00,但是某些平台会更改数据以显示一个或另一个历史短语。仅在使用现代缩写时显示此区域。

这增加了对 zic 的新-b slim选项的支持,以减小已安装区域文件的大小。我们目前尚未使用它,但将来可能会启用它。

上一章 首页 下一章