E.1。第11.14版

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

这个版本包含从11.13开始的各种修复。有关主要版本11中的新特性的信息,请参见部分E.15.

E.1.1.迁移到11.14版

运行11.X的程序不需要转储/还原。

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

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

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

E.1.2。变化

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

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

    这个PostgreSQL项目感谢Jacob Champion报告此问题。(CVE-2021-23214)

  • 制作libpq在SSL或GSS加密握手后拒绝无关数据(Tom Lane)

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

    这个PostgreSQL项目感谢Jacob Champion报告此问题。(CVE-2021-23222)

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

    如果主记录没有保存足够长的时间来完成不完整WAL记录的其余部分的写入,那么之前的崩溃恢复逻辑会让它备份并从不完整WAL记录的开头开始覆盖WAL。这是有问题的,因为备用服务器可能已经有该WA段的副本。然后,他们将看到一个不一致的下一段,并且在没有人工干预的情况下无法恢复。若要修复此问题,请在崩溃后重新启动时不要在WAL段边界上备份。相反,在下一个WAL段开始时编写一个新类型的WAL记录,通知读者不完整的WAL记录永远不会完成,必须忽略。

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

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

    新索引中可能会忽略刚准备好的事务插入的行,从而导致依赖该索引的查询丢失这些行。以前针对此类问题的修复方法无法解释准备事务仍在执行中的命令同时创建索引检查他们。与以前一样,在已启用准备事务的安装中(max_prepared_transactions>0),建议对任何并发生成的索引重新编制索引,以防在生成索引时出现此问题。

  • 避免可能导致后端无法将新行的条目添加到同时构建的索引中的争用条件(Noah Mish,Andrey Borodin)

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

  • 修复float4float8为NAN生成统一结果的哈希函数(Tom Lane)

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

  • 防止数据丢失在崩溃恢复创建表空间,当瓦卢层=最小的(诺亚·米施)

    如果服务器崩溃之间创建表空间下一个检查点replay将完全删除新表空间目录的内容,依靠后续的WAL replay恢复该目录中的所有内容复制放入刚刚创建的表中)。只有在以下情况下才应用此类优化瓦卢层最小的,这不是v10和更高版本中的默认值。

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

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

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

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

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

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

  • 修复复合域数组中元素字段的更新(Tom Lane)

    命令,如更新选项卡设置fld[1]。subfld =瓦尔如果数组的元素是域而不是普通的复合元素,则失败。

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

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

  • 修正角盒在数值计算中的精度损失权力()拉希德(院长)

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

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

    正则表达式如(.){0}...\1画了无效的反向引用号但是,其他regexp引擎(如Perl)不会抱怨,在某些密切相关的情况下,我们的也不会抱怨。更糟糕的是,它可能会引发断言失败。请修复它,以便不会引发错误,相反,反向引用会被默认为不匹配。

  • 防止正则表达式反向引用有时在不应该匹配时进行匹配(Tom Lane)

    regexp引擎在拒绝部分匹配后不小心清除匹配数据以捕获括号。这可能允许稍后的反向引用在缺少已定义引用而失败的位置进行匹配。

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

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

  • 修复来自的错误结果在的时区应用于时区时间价值观(汤姆巷)

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

  • 避免使用仅MCV统计数据来估计列的范围(Tom Lane)

    在某些情况下分析将建立一个最常见值(MCV)列表,但不是直方图,即使MCV列表没有考虑所有观察到的值。在这种情况下,不要让计划员单独使用MCV列表来估计列值的范围。

  • 修复了在子事务中恢复门户快照的问题

    如果一个过程提交或回滚一个事务,然后它的下一个重要操作在一个新的子事务中,则快照管理出错,导致指针悬空并可能崩溃。PL/pgSQL中的一个典型示例是提交紧接着是开始例外块,它执行查询。

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

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

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

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

  • 确保在升级备用服务器期间正确记录准备好的事务(Michael Paquier,Andres Freund)

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

  • 拒绝倒带光标标记没有滚动如果由于以下原因而从以前的交易中延期:与持有选项(汤姆巷)

    长期以来,我们一直禁止从数据库中反向提取数据没有滚动游标,但由于历史原因,这种限制并没有扩展到完全倒回查询然后重新向前获取的情况。这种异常会导致不一致,特别是对于可能没有存储回滚所需的所有数据的保留游标。禁止对不可滚动的保留游标进行倒带,以阻止最严重的不一致。(v15将完全删除异常。)

  • 修正可能的失败,同时保存与持有在事务结束时游标,如果它已经读到完成(汤姆莱恩)

  • 修复已增长到最大允许长度的关系检测(Tom Lane)

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

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

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

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

    通常生成的代码缓存查找错误而不是预期的信息。

  • 修复并行工作进程中不正确的快照处理(Greg-Arrow)

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

  • 修复逻辑解码以正确忽略瞬态表的toast表更改(Bertrand Drouvot)

    逻辑解码通常忽略瞬态表中的更改,例如在更改表格堆重写。但是,如果有关联的toast表,则该筛选不会应用于该表,从而导致在重写正在发布的表时可能出现错误。

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

    如果walreceiver恰好在WAL段边界处退出,则它无法为最后接收的段生成通知文件,从而延迟了该段在待机状态下的存档。

  • 避免试图锁定古老的规则中的伪关系选择更新(Tom Lane Sawada Masahiko)

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

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

  • 避免试图在LLVM中发生错误后清理LLVM状态(Andres Freund, Justin Pryzby)

    这可以防止在致命的LLVM错误后后台退出时发生崩溃。

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

  • 防止快照参考泄漏警告时卢奥出口公司()或相关功能失败(Heikki Linnakangas)

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

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

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

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

    这似乎不太可能在实践中碰到这个bug,因为它需要work_mem为现有用途的数百gb的设置simplehash.h.

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

  • 修复ecpg恢复正常malloc ()建立连接时失败(Michael Paquier)

  • 修复在PL/pgSQL的参数中调用的稳定函数的错误计算呼叫声明(汤姆·莱恩)

    使用过期的快照调用它们,这样它们就不会看到自会话的顶级命令启动以来所做的任何数据库更改。

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

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

  • 删除pg_ctl对生成的命令总长度的硬编码限制(Phil Krylov)

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

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

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

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

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

  • 改善pg_dump通过避免对RLS策略进行逐表查询,以及避免重复调用格式(u type)(汤姆巷)

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

  • 修复崩溃pg_dump尝试从8.3版本之前的服务器(Tom Lane)转储触发器定义时

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

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

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

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

    如此大的查询文本文件是非常不寻常的,但如果它们真的发生,以前的编码将在Windows 64上失败(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(伊塔马尔·加夫尼)

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

  • 制作pg_regexec ()对超出范围的信号很强劲搜索开始参数(汤姆巷)

    返回雷格诺马奇,而不是可能的崩溃,当搜索开始已超过字符串的结尾。在core中可能无法访问此大小写PostgreSQL,但扩展可能对参数值更为粗心。

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

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

    在Windows上运行时,initdb尝试设置新集群的时区IANA时区的参数与系统的主要时区相匹配。我们使用的映射表是几年前生成的,只是断断续续地更新;毫不奇怪,它包含许多错误以及最近添加的区域的遗漏。结果表明,CLDR一直在跟踪最合适的映射,所以开始使用它们的映射此更改不会影响任何现有安装,仅影响新初始化的群集。

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

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

提交修正

如果您在文档中看到任何不正确、与您的体验不匹配或需要进188金宝慱网站地址一步澄清的内容,请使用这张表报告文档问题。188金宝慱网站地址