E.12.版本 10.2

发布日期: 2018-02-08

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

E.12.1. 迁移到版本 10.2

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

但是,如果您使用contrib/cube~>运算符,请参阅下面的条目。

另外,如果要从 10.1 之前的版本升级,请参见Section E.13

E.12.2. Changes

该错误导致崩溃,或者经过精心设计的 Importing 导致任意后端内存的泄露。 (CVE-2018-1052)

pg_upgrade 通常将其临时文件限制为只能由调用用户读取和写入。但是,如果用户的umask设置允许,则包含pg_dumpall -g输出的临时文件将是组可读或全局可读的,甚至是可写的。在多用户计算机上的典型用法中,umask和/或工作目录的权限足够严格,可以防止出现问题。但是在某些情况下,有些人可能会使用 pg_upgrade,而这种疏忽可能会使数据库密码泄露给不友好的人。 (CVE-2018-1053)

在某些情况下,VACUUM即使删除了这些 Tuples 也将无法删除,从而导致各种数据损坏情况。

这是确保删除死索引条目所必需的。旧代码将其倒退,如果其他一些进程正在同时运行清理操作,则允许 vacuum 跳过清理操作,从而有可能在索引中留下无效的条目。

这些错误可能导致并发负载下的异常行为。潜在后果尚未得到充分描述。

这可以防止在重建表上的哈希索引时出现不良行为,因为这些索引使用pg_class统计信息来控制初始哈希大小。

目前,这些情况将被视为不受支持的功能。

在几种情况下,尤其是COPYALTER TABLE ADD COLUMN,未应用预期的默认值,而是插入了空值。

在继承树中混合使用常规表和外部表会导致为UPDATEDELETE查询创建错误的计划。在某些情况下,这会导致可见的失败,尤其是当外部子表上存在行级触发器时。

以前,尽管可以在布尔列上声明并收集扩展的统计信息,但计划者无法应用它们。

SELECT DISTINCT unnest(foo)相似的案例在 10.0 中的输出行计数估计值比早期版本中的输出行计数估计值低,这可能导致不利的计划选择。恢复先前的估计行为。

逻辑解码可能会将 WAL 记录溢出到磁盘上,以进行生成许多 WAL 记录的事务。通常,这些文件在事务的提交或中止记录到达后被清除;但是,如果没有看到这样的记录,则删除代码的行为不正确。

以前,此名称打印为scram-sha256,可能会使用户混淆正确的拼写。

我们总是将 XML 字符串存储在数据库编码中,因此,允许 libxml 对另一种编码的声明进行操作会导致错误的结果。在 UTF8 以外的编码中,我们不会保证仍然支持非 ASCII XML 数据,因此请保留以前的行为以实现错误兼容性。此更改仅影响xpath()和相关功能;其他 XML 代码路径已经以这种方式起作用。

到目前为止,PostgreSQL 服务器仅拒绝使用 3.0 版以上协议版本的请求,因此协议版本号的主要部分和次要部分之间在功能上没有区别。允许 Client 端请求版本 3.x 而不失败,发送回一条消息,表明服务器仅理解 3.0. 目前,这没有什么区别,但是回补此更改应可以更快地引入将来的次要协议升级。

v10 没有此功能,并且关于是否使用它的连接时协商不正确。

给定反复的不幸时间,试图唤醒所有 await 者 await 条件变量的过程可能会无限循环。由于 v10 中条件变量的用法有限,这仅影响并行索引扫描和复制插槽上的某些操作。

如果fork()失败或其他低概率问题导致无法启动工作程序,则并行查询以前倾向于无限期地挂起。

这样可以防止在此类工作人员的 postmaster 日志输出中发出垃圾。

通常,编译器假定__int128变量在 16 个字节的边界上对齐,但是我们的内存分配基础结构不准备保证这一点,并且出于多种原因,增大 MAXALIGN 的设置似乎是不可行的。调整代码以仅在我们可以告诉编译器假设较小的对齐方式时才允许使用__int128。到目前为止,此问题的唯一已知症状是某些并行聚合查询崩溃。

只有在同时更新某些选定行的情况下,才可能在连接的更新或SELECT FOR UPDATE期间发生这种情况。

这些功能据说与 Oracle®兼容,但并不完全相同。特别是,在负的第三个参数的解释上存在差异:Oracle 认为负值表示目标子字符串可以开始的最后位置,而我们的函数将其作为目标子字符串可以结束的最后位置。同样,Oracle 为第四个参数为零或负数引发错误,而我们的函数返回零。

示例代码已进行了调整,以更精确地匹配 Oracle 的行为。已将此代码复制到其应用程序中的用户可能希望更新其副本。

ACL 存档条目的“标签”部分通常只是关联对象的名称。而是使其从对象类型开始,使 ACL 与已经用于 Comments 和安全标签归档条目的约定保持一致。此外,修复整个数据库的 Comments 和安全标签条目(如果存在),以使其标签以DATABASE开头,以便它们也遵循此约定。这样可以通过查看标记是否以LARGE OBJECT开头来防止试图识别与大对象相关的条目的代码中出现错误匹配。这可能会导致将条目错误地分类为数据而不是模式,从而导致仅模式或仅数据转储中出现不良结果。

请注意,此更改在pg_restore --list的输出中具有用户可见的结果。

此更改可防止使用较新的 glibc 版本导致构建失败。

第二个参数(尺寸 selectors)的含义已更改,即使在处理多维尺寸的多维数据集时,也可以预测选择哪个值。

这是不兼容的更改,但是由于运算符的点将在 KNN 搜索中使用,因此按原样看似毫无用处。安装此更新后,将需要重新索引/刷新使用此运算符的任何表达式索引或实例化视图。

contrib/start-scripts/osx中的脚本使用的基础架构已被弃用了十年以上,并且在过去几年的 macOS 版本中根本不再起作用。添加一个新的子目录contrib/start-scripts/macos,其中包含使用较新启动的基础结构的脚本。

这允许使用 Windows 的一些常见 Perl 发行版来构建 PL/Perl。

可用的 Perl 发行版与期望的内容不一致,并且缺少任何可靠的报告方式,因此请对生成的库实际使用的功能进行构建时测试。

这可以允许收集核心转储,以解决一些之前没有产生转储的早期启动故障。

上一章 首页 下一章