E.1。10.19版本

上映日期(待定):2021-11-11

这个版本包含了10.18版本的各种修复。有关主要版本10的新特性的信息,请参见部分E.20

E.1.1。迁移到10.19版本

对于运行10.X的程序,不需要转储/恢复。

但是,请注意,使用物理复制的安装应该在更新主服务器之前更新备用服务器,如下面的第三个更改日志条目所述。

此外,还发现了一些可能导致索引损坏的错误,下面几个更新日志条目将对此进行解释。如果其中任何一种情况适用于您,则建议在更新后重新索引可能受到影响的索引。

此外,如果您从10.16之前的版本升级,请参见部分E.4

E.1.2。变化

  • 使服务器在SSL或GSS加密握手后拒绝多余的数据(Tom Lane)

    一个有能力将数据注入TCP连接的中间人可以将一些明文数据塞到一个被认为是加密保护的数据库会话的开始。这可能被滥用来向服务器发送伪造的SQL命令,尽管这只在服务器不要求任何身份验证数据的情况下才会起作用。(但是,依赖SSL证书身份验证的服务器很可能不会这样做。)

    PostgreSQLProject感谢Jacob Champion报告了这个问题。(cve - 2021 - 23214)

  • 使libpq在SSL或GSS加密握手后拒绝多余的数据(Tom Lane)

    一个有能力将数据注入TCP连接的中间人可以将一些明文数据塞到一个被认为是加密保护的数据库会话的开始。尽管libpq行为的其他细节使这比听起来更难,但这可能被滥用,以向客户端的前几个查询注入虚假响应。另一种攻击方式是窃取可能在会话早期发送的客户端密码或其他敏感数据。这已经被证明是可能的,因为服务器容易受到CVE-2021-23214的攻击。

    PostgreSQLProject感谢Jacob Champion报告了这个问题。(cve - 2021 - 23222)

  • 修复了在发送了以部分WAL记录结束的WAL段后主服务器崩溃的物理复制(Álvaro Herrera)

    如果主存没有足够长的时间来写完剩余的不完整WAL记录,那么之前的崩溃恢复逻辑会备份它,并从不完整WAL记录的开始覆盖WAL。这是一个问题,因为备用服务器可能已经有WAL段的副本。然后,他们将看到一个不一致的下一段,并且将无法在没有人工干预的情况下恢复。为了解决这个问题,当崩溃后重新启动时,不要在WAL段边界上进行备份。相反,在下一个WAL段开始时写一个新的WAL记录类型,告诉读者不完整的WAL记录永远不会被完成,必须被忽略。

    当应用这个更新时,最好在主服务器之前更新备用服务器,这样当主服务器崩溃时备用服务器就可以处理这个新的WAL记录类型。

  • 修复同时创建索引等待最近准备好的交易(安德烈·博罗丁)

    由刚刚准备好的事务插入的行可能会从新索引中删除,从而导致依赖于索引的查询会错过这些行。针对这类问题的上一个修复没有考虑到准备事务仍在执行中的命令同时创建索引为他们检查。与前面一样,在已启用准备事务的安装中(max_prepared_transactions> 0),建议重新索引所有并发构建的索引,以防在构建时出现此问题。

  • 避免竞态条件,这会导致后端无法为正在并发构建的索引添加新行条目(Noah Misch, Andrey Borodin)

    虽然这种情况在该领域很少见,但这种情况可能会影响使用同时选择。建议重新索引这些索引,以确保它们是正确的。

  • 修复float4float8为nan产生一致结果的哈希函数(Tom Lane)

    PostgreSQL的浮点类型认为所有nan都是相等的,因此根据IEEE 754标准,哈希函数为所有的nan位模式产生相同的哈希码是很重要的。这种情况以前没有发生,这意味着散列索引和基于散列的查询计划可能会为非规范NaN值产生不正确的结果。(“南”::float8是在大多数机器上产生这种值的一种方法)。建议对浮点列重索引哈希索引,如果它们有可能包含这样的值。

  • 防止数据丢失在崩溃恢复创建表空间,当wal_level最小的(诺亚米诗)

    如果服务器崩溃之间创建表空间而下一个检查点,重放将完全删除新表空间目录的内容,依赖于后续的WAL重放来恢复该目录中的所有内容。这与跳过写WAL的优化交互很差(一个例子是复制放入刚刚创建的表中)。只有在以下情况下才应用此类优化wal_level最小的,这不是v10和更高版本中的默认值。

  • 对于连接到分区表或从分区表分离的表,确保关系缓存无效(Amit Langote, Álvaro Herrera)

    这种疏忽可能导致后续插入/更新的错误行为直接指向分区,但只在当前存在的会话中。

  • 请确保在创建或删除时关系缓存无效对所有表侯志杰,Vignesh C)

    这种疏忽可能导致不恰当的复制行为,直到当前存在的所有会话都退出为止。

  • 不要丢弃具有未指定类型修饰符的相同类型的强制转换(汤姆莱恩)

    例如,if列f1的类型是数字(18岁,3),用来简单地丢弃类型转换的解析器,如外国游客1::数字,理由是它不会对运行时产生影响。这是对的,但是表达式的公开类型仍然应该被认为是普通的数字,而不是数字(18岁,3).这对于正确解析较大构造(如递归)的类型非常重要联盟年代。

  • 如果当前数据库的编码不支持ICU排序,则不允许创建它(Tom Lane)

    以前这是允许的,但是由于排序规则查找的方式,不能引用排序规则;您不能使用排序,甚至不能丢弃它。

  • 修正了数字精度的角情况损失权力()拉希德(院长)

    当第一个参数非常接近1时,结果可能不准确。

  • 避免包含括号的正则表达式错误{0}(汤姆巷)

    正则表达式如(){0}…\ 1画了无效的backreference数量.但是,其他regexp引擎(如Perl)并没有抱怨,因此,我们的引擎在一些密切相关的情况下也没有抱怨。更糟糕的是,它可能会抛出断言失败。修复它,这样就不会抛出错误,而是将反向引用视为永远不匹配。

  • 防止正则表达式的反向引用有时不应该匹配(汤姆·莱恩)

    在拒绝部分匹配之后,regexp引擎对于清除用于捕获括号的匹配数据很粗心。这可以允许后面的反向引用在缺少已定义的引用而应该失败的地方进行匹配。

  • 修复在迭代节点内使用反向引用的正则表达式性能错误(Tom Lane)

    不正确的回溯逻辑可能导致花在寻找匹配上的时间呈指数增长。幸运的是,在大多数情况下,这个问题被其他优化所掩盖。

  • 修复来自在的时区应用于时区时间值(汤姆巷)

    如果目标时区是由动态时区缩写(即定义为等效于完整时区名称而不是固定的UTC偏移量的时区缩写)指定的,则结果是不正确的。

  • 避免使用仅mcv统计信息来估计列的范围(Tom Lane)

    在某些情况下分析将构建一个最常见值(MCV)列表,而不是一个直方图,即使MCV列表不能解释所有的观测值。在这种情况下,不要让规划器单独使用MCV列表来估计列值的范围。

  • 在导出快照后,如果事务失败,则正确地进行清理(Dilip Kumar)

    只有在同一会话试图再次导出快照时,这种疏忽才会导致问题。最可能的场景是创建一个复制槽(然后是回滚),然后创建另一个复制槽。

  • 防止在备用服务器上对溢出的子事务进行跟踪(Kyotaro Horiguchi, Alexander Korotkov)

    这种疏忽可能会导致备用服务器上显著的性能下降(表现为过多的SubtransSLRU流量)。

  • 确保准备好的事务在备用服务器的提升过程中得到适当的解释(Michael Paquier, Andres Freund)

    在一个狭窄的窗口中,可以从并发运行的会话所拍摄的快照中忽略准备好的事务。如果该会话随后使用快照执行数据更新,则可能出现错误结果或数据损坏。

  • 修复已增长到最大允许长度的关系的检测(汤姆莱恩)

    试图扩展表或索引超过2^32-1块的限制将被拒绝,但还不足以阻止创建不一致的内部状态。

  • 当扩展时,正确跟踪数据修改cte的存在做的规则(格雷格·南卡罗、汤姆·莱恩)

    之前的失败可能会导致一些问题,比如不安全地选择并行计划。

  • 修复扩展统计数据对象的权限错误报告(Tomas Vondra)

    通常生成的代码缓存查找错误而不是要传达的信息。

  • 修复了不正确的快照处理(Greg Nancarrow)

    如果事务隔离级别小于,则这种疏忽可能导致并行查询中的不当行为可重复读取

  • 确保walreceiver进程在退出之前创建所有必需的归档通知文件(Fujii Masao)

    如果walreceiver正好在WAL段边界退出,则它无法为最后接收的段创建通知文件,从而延迟了该段在standby上的归档。

  • 避免试图锁定规则中的伪关系选择更新(泽田正彦,汤姆·莱恩)

  • 修复解析器对聚合的处理过滤器条款(汤姆巷)

    如果过滤器表达式是一个普通的布尔列,聚合的语义级别可能会被错误确定,导致不符合规范的行为。如果过滤器表达式本身是一个返回布尔值的聚合,应该抛出错误,但没有抛出,很可能导致执行时崩溃。

  • 当删除一个同时拥有被删除对象的角色时,避免空指针解引用崩溃(Álvaro Herrera)

  • 防止快照参考泄漏警告时lo_export ()或相关功能失效(Heikki Linnakangas)

  • 确保在统计视图中统计SP-GiST索引的扫描(Tom Lane)

    在SP-GiST代码中,尽管每个元组计数器都被正确地提高了,但索引扫描计数器的数量的增加被忽略了。

  • 如果,则重新计算相关的等待间隔recovery_min_apply_delay在恢复过程中改变(Soumyadeep Chakraborty, Ashwin Agrawal)

  • 修复无限循环simplehash.h哈希表达到2^32个元素(Yura Sokolov)

    在实践中似乎不太可能像它所要求的那样击中这个错误work_mem为现有用途的数百gb的设置simplehash.h

  • 在计算扩展统计信息时减少内存消耗(Justin Pryzby, Tomas Vondra)

  • 修复ecpg正确恢复malloc ()建立连接时失败(迈克尔帕奎尔)

  • 允许退出PL/pgSQL例程中最外层的块(Tom Lane)

    如果例程不需要显式返回,此用法应该是有效的,但被拒绝。

  • 删除pg_ctl的硬编码限制生成的命令的总长度(菲尔克雷洛夫)

    例如,这消除了对可以传递给postmaster的命令行选项数量的限制。单独的路径名pg_ctl处理,例如postmaster可执行文件的名称或数据目录的名称,仍然受到限制MAXPGPATH大多数情况下是字节。

  • 修复pg_dump正确转储非全局默认特权(Neil Chen, Masahiko Sawada)

    如果是全局的(无限制的)改变默认的权限例如,命令撤销某些当前默认特权执行对于函数,然后是受限的改变默认的权限命令再次为选定的角色或模式授予该特权,pg_dump无法正确转储受限制的权限授予。

  • 使pg_dump获取要转储的分区表上的共享锁(Tom Lane)

    这种疏忽通常是无害的,因为有一次pg_dump已锁定任何叶分区,这将足以防止分区表本身上的重要DDL。然而,在转储无子分区表时可能会出现问题,因为不会持有相关的锁。

  • 改善pg_dump通过避免对RLS策略进行每个表的查询,并避免重复调用format_type ()(汤姆巷)

    当从本地服务器转储数据时,这些更改只提供了少量的改进,但是从远程服务器转储数据可以从很大程度上受益,因为更少的网络往返。

  • 修正不正确的文件名pg_restore关于一个无效的大对象TOC文件的错误消息(Daniel Gustafsson)

  • 修复的失败contrib / btree_gin上的索引“字符”(不char (n)列时,索引扫描使用<<=操作符被执行(汤姆·莱恩)

    这样的索引扫描没有返回它应该返回的所有条目。

  • 改变contrib / pg_stat_statements阅读它查询文本文件的单位不超过1GB (Tom Lane)

    如此大的查询文本文件是非常罕见的,但如果它们真的发生了,之前的编码将在Windows 64上失败(它拒绝超过2GB的单个读请求)。

  • 修复空指针崩溃时contrib / postgres_fdw试图报告一个数据转换错误(汤姆莱恩)

  • 为RISC-V架构添加自旋锁支持(Marek Szuba)

    这对于该平台上的合理性能至关重要。

  • 支持OpenSSL 3.0.0 (Peter Eisentraut, Daniel Gustafsson, Michael Paquier)

  • 在OpenSSL BIO (I/O抽象)对象上设置正确的类型标识符PostgreSQL(伊塔玛Gafni)

    这种疏忽可能只对执行OpenSSL安装审计等任务的代码有影响。但它在名义上违反了OpenSSL API,所以要修复它。

  • 使pg_regexec ()对超出范围的信号很强劲search_start参数(汤姆巷)

    返回REG_NOMATCH,而不是可能崩溃,当search_start超过了字符串的末尾。这种情况在核心内部可能是无法达到的PostgreSQL,但是扩展可能对参数值更加粗心。

  • 确保GetSharedSecurityLabel ()可以在尚未构建关键关系缓存项的新启动的会话中使用(Jeff Davis)

  • 使用CLDR项目的数据将Windows时区名称映射到IANA时区(Tom Lane)

    在Windows上运行时,initdb尝试设置新集群的时区参数设置为与系统当前时区匹配的IANA时区。我们使用的是多年前生成的映射表,只是偶尔更新;不出所料,它包含许多错误以及遗漏了最近添加的区域。事实证明,CLDR一直在跟踪最合适的映射,因此开始使用它们的数据。此更改不会影响任何现有的安装,只会影响新初始化的集群。

  • 将时区数据文件更新到tzdata发布2021年斐济、约旦、巴勒斯坦和萨摩亚的夏令时法修改,以及巴巴多斯、库克群岛、圭亚那、纽埃、葡萄牙和汤加的历史修正。

    此外,太平洋/安德伯里地区已更名为太平洋/坎顿。此外,以下区域已经合并为附近的、人口更多的区域,这些区域的时钟自1970年以来就与它们一致:非洲/阿克拉、美洲/阿提科坎、美洲/布兰科-萨布伦、美洲/克雷斯顿、美洲/库拉索、美洲/拿骚、美洲/西班牙港、南极洲/杜蒙德维尔和南极洲/西奥瓦。在所有这些情况下,前面的区域名称仍然作为别名。

提交修正

如果您在文档中看到任何不正确的东西,与您的经验不符的特188金宝慱网站地址定功能或需要进一步澄清,请使用这种形式报告文档问题。188金宝慱网站地址