E.5. 11.4 版

发布日期: 2019-06-20

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

E.5.1. 迁移到版本 11.4

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

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

E.5.2. Changes

任何经过身份验证的用户都可以通过将自己的密码更改为特定的值来导致基于堆栈的缓冲区溢出。除了可以使 PostgreSQL 服务器崩溃之外,这还可以作为 PostgreSQLos 帐户执行任意代码。

libpq 中也存在类似的溢出危险,这可能使流氓服务器使 Client 端崩溃,或者可能以 Client 端的 os 帐户身份执行任意代码。

PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。 (CVE-2019-10164)

如果动态确定用于修剪的比较值,或者在修剪决策中涉及多个范围分区的列,或者涉及稳定(而非不变)的比较运算符,则这些错误可能导致对分区表的查询产生错误的答案。

此错误可能导致“找不到要排序的 pathkey 项”错误。

这种疏忽导致包含此类查询的视图的转储/还原失败。

在这种情况下,应该将 Literals 作为独立的 JSON 值生成,但是如果 Literals 包含任何需要转义的字符,则代码行为不正确。

这些量词被视为无操作并已被优化掉;但是文档指定它们对附加的子表达式强加贪婪,或者在非贪婪变体{1,1}?的情况下强加不贪婪,但这没有发生。仅当子表达式包含捕获括号或向后引用时,才会发生不当行为。

无效的页面不会影响正常的索引操作,但是可能导致后续的 VACUUM 失败。如果您的其中一个索引发生了这种情况,请通过重新索引索引来恢复。

某些可能失败的操作(例如,将从 SSL 证书提取的字符串转换为数据库编码)正在关键部分内执行。失败将导致由于违反共享pg_stat_activity数据的访问协议而导致数据库范围内的锁定。

这样可以避免罕见的问题,在这些问题中,walreceiver 进程在被命令关闭时会崩溃或死锁。

该错误可能导致失败,例如“如果没有选择数据库就无法读取 pg_class”。

使 initdb 检查/etc/localtime符号链接(如果存在),以断开系统时区等效名称之间的联系。当存在多个相同的时区时,initdb 更有可能选择用户期望的时区名称。如果/etc/localtime不是到区域数据文件的符号链接,或者从TZ环境变量确定时区,它也不会更改行为。

另外,当TZ/etc/localtime都不提供提示时,相对于该时区的其他拼写,更喜欢UTC。这修复了 tzdata 2019a 的更改使UCTUTC区域名称等效的烦恼:然后 initdb 更喜欢UCT,几乎没人想要。

如果已发出级联授权,则由于GRANT命令的执行 Sequences 不遵守其相互依赖性,还原可能会失败。

这避免了分区的列 Sequences 可能会更改为与父级匹配的问题。而且,现在即使未还原其父表,也可以从转储中还原该分区(作为独立表)。 ATTACH将失败,但是可以忽略不计。

以前,即使auto_explain尚未记录父查询,并行工作者也可能尝试记录其查询。有时这可能会起作用,但会造成混乱,并且在某些情况下会导致失败,例如“在 shm TOC 中找不到密钥 N”。

此外,解决一个因果关系错误,即使将采样率设置为 1.0,该错误也不一定会记录每个查询。

如果触发器修改了原本不会被UPDATE更改的列,则新值不会传输到远程服务器。

该代码假定这些字符串必须使用 UTF-8,并且如果它们似乎没有被有效地编码,则将引发错误。现在,只需将未翻译的字节传输到日志。

上一章 首页 下一章