发布日期:2021-11-11
此版本包含来自14.0的各种修复程序。有关主要版本14中新功能的信息,请参阅e.2节.
运行14.x的人不需要转储/恢复。
但请注意,使用物理复制的安装应在主服务器之前更新备用服务器,如下面的第三个变更词条中所解释。
此外,已发现可能导致索引损坏的索引的几个错误,如下一个更改内容条目中所述。如果其中任何一个案例适用于您,建议在更新后reindex reindex可能受影响的索引。
在SSL或GSS加密握手(TOM Lane)之后使服务器拒绝无关数据
一个中间的中间能够将数据注入TCP连接可以将一些清晰的文本数据填充到据称加密保护的数据库会话的开始。这可以滥用将Faked SQL命令发送到服务器,尽管如果服务器未要求任何身份验证数据,则只能工作。(但是,依赖SSL证书身份验证的服务器可能不这样做。)
的PostgreSQLProject感谢Jacob Champion报告了这个问题。(cve - 2021 - 23214)
使libpq.在SSL或GSS加密握手后拒绝多余的数据(Tom Lane)
中间的一个人能够将数据注入TCP连接,他可以将一些明文数据填充到假定受加密保护的数据库会话的开始。这可能会被滥用,以向客户最初的几个查询注入伪造的响应,尽管libpq行为的其他细节使得这比听起来更难。另一种攻击方式是泄露客户端密码或会话早期可能发送的其他敏感数据。已经证明,对于易受CVE-2021-23214攻击的服务器,这是可能的。
的PostgreSQLProject感谢Jacob Champion报告此问题。(CVE-2021-23222)
修复初级碰撞后发运沃尔段以部分沃尔记录(Álvaroherrera)的危机
如果主存没有足够长的时间来写完剩余的不完整WAL记录,那么之前的崩溃恢复逻辑会备份它,并从不完整WAL记录的开始覆盖WAL。这是一个问题,因为备用服务器可能已经有WAL段的副本。然后,他们将看到一个不一致的下一段,并且将无法在没有人工干预的情况下恢复。为了解决这个问题,当崩溃后重新启动时,不要在WAL段边界上进行备份。相反,在下一个WAL段开始时写一个新的WAL记录类型,告诉读者不完整的WAL记录永远不会被完成,必须被忽略。
应用此更新时,最好在主之前更新备用服务器,以便如果主要碰巧崩溃,它们将准备好处理此新沃尔唱片类型。
确保平行真空
不会错过任何索引(Peter Geoghegan,Masahiko Sawada)
一个平行的真空
将无法处理低于min_parallel_index_scan_size
如果表中至少有两个索引大于该大小,则关闭。这可能会导致这些索引被破坏,因为它们仍然包含对被真空
;使用此类索引的后续查询可能会返回它们不应该的行。此问题不会影响autovacuum,因为它不使用并联吸尘。但是,建议汇装任何具有右指标尺寸混合的手动真空表。
修复同时创建索引
等待最新准备的交易(安德烈·博罗丁)
新索引中可能会忽略刚准备好的事务插入的行,从而导致依赖该索引的查询丢失这些行。以前对此类型问题的修复未能说明原因准备交易
仍在进步的命令同时创建索引
为他们检查。与前面一样,在已启用准备事务的安装中(最大准备交易量
> 0),建议重新索引所有并发构建的索引,以防在构建时出现此问题。
避免竞态条件,这会导致后端无法为正在并发构建的索引添加新行条目(Noah Misch, Andrey Borodin)
虽然在该领域显然很少见,但这种情况可能会影响建造或纠正的任何指标同时
选项。建议将任何此类索引重新绑架以确保它们是正确的。
修复同时重新编制索引
保留附加到目标索引的操作符类参数(Michael Paquier)
修复克隆包含非内置对象(Aleksander Alekseev)的数据库时不正确创建共享依赖项的问题
这个错误的影响在实践中可能是有限的。原则上,它允许在角色仍然拥有对象时将其删除;但大多数装置都不会想要删除一个角色,因为它们添加的对象曾经使用过这个角色模板1
.
确保对附加或从分区表附加或分离的表无效的关系缓存(Amit Langote,ÁlvaroHerrera)
这种疏忽可能导致后续插入/更新的错误行为直接指向分区,但只在当前存在的会话中。
创建范围类型的同时修复解析树的损坏(Alex Kozhemyakin,Sergey Shinderuk)
创建类型
错误地释放了解析树的元素,这可能导致后来的事件触发器的问题,或者如果是创建类型
命令存储在计划缓存中,稍后将再次使用。
修复复合域数组中元素字段的更新(Tom Lane)
命令,如更新选项卡设置fld[1]。subfld =瓦尔
如果数组的元素是域而不是普通复合材料,则失败。
禁止组合首先与关系一起获取
和对于更新,跳过锁定
(大卫·克里斯坦森)
首先与关系一起获取
必须比所请求的多取一行,因为它不能停止,直到它找到一个非平局的行。在我们当前的实现中,如果更新
,则即使未返回该行,该行也将被锁定。这会导致不良行为,如果跳转锁定
选项已指定。如果不引入一组不同的不良行为,很难改变这种情况,因此现在,禁止这种组合。
不允许ALTER INDEX INDEX ALTER COLUMN集合(选项)
(内森·博萨特、迈克尔·帕奎尔)
虽然解析器接受了这一点,但它没有文档记录,实际上不起作用。
修正角盒在数值计算中的精度损失权力()
(Dean Rasheed)
当第一个参数非常接近1时,结果可能是不准确的。
避免为备忘录化计划选择错误的哈希相等运算符(David Rowley)
此错误可能导致崩溃或不正确的查询结果。
修复了将子查询表达式拉入函数范围条目的规划器错误(Tom Lane)
如果函数在从
横向引用某些子对象的输出-选择
早些时候从
条款,我们可以将该子条款展平-选择
在外部查询中,没有完全处理复制到函数表达式中的表达式。这可能导致执行时崩溃。
避免使用仅MCV统计数据来估计列的范围(Tom Lane)
有一个转角案例分析
将构建一个最常见值(MCV)列表,而不是一个直方图,即使MCV列表不能解释所有的观测值。在这种情况下,不要让规划器单独使用MCV列表来估计列值的范围。
修复子事务中门户快照的恢复(Bertrand Drouvot)
如果一个过程提交或回滚一个事务,然后它的下一个重要操作在一个新的子事务中,快照管理出错,导致悬空指针和可能的崩溃。PL/pgSQL中的一个典型例子是提交
紧接着后面开始……异常
执行查询的块。
在导出快照后,如果事务失败,则正确地进行清理(Dilip Kumar)
如果同一会话尝试再次导出快照,则此监视只会导致问题。最可能的情况是创建复制插槽(后跟回滚),然后创建另一个复制插槽。
防止在备用服务器上对溢出的子事务进行跟踪(Kyotaro Horiguchi, Alexander Korotkov)
这种监督可能会在备用服务器上造成显着的性能下降(表现为过度的SubTransslrru流量)。
确保准备好的事务在备用服务器的提升过程中得到适当的解释(Michael Paquier, Andres Freund)
在一个狭窄的窗口中,可以从并发运行的会话所拍摄的快照中省略准备好的事务。如果该会话随后使用快照执行数据更新,则可能会出现错误结果或数据损坏。
修复”找不到reachosiveunion”错误的时候解释
尝试打印附加到WorkTableScan节点(Tom Lane)的筛选条件
在重命名表时,确保使用正确的锁级别(Nathan Bossart, Álvaro Herrera)
由于历史原因,,改变索引。。。改名
可以应用于任何一种关系。重命名索引所需的锁级别低于重命名表或其他类型的关系所需的锁级别,但是代码犯了这个错误,在拼写命令时将使用较弱的锁级别改变索引
.
在删除拥有同时删除的对象的角色时避免空指针取消引用崩溃(Álvaro Herrera)
防止”快照参考泄漏”警告何时lo_export ()
或相关功能失败(Heikki Linnakangas)
修复强制域表达式节点的低效代码生成(Ranier Vilela)
在一些列表操作操作中避免O(N^2)行为(Nathan Bossart,Tom Lane)
这些更改修复了几种情况下的缓慢处理,包括:当备用服务器重放在主服务器上持有许多独占锁的事务时;当许多文件由于在检查点后被解除链接;当散列聚合涉及多个批次时;当pg_trgm
从复杂的正则表达式中提取可索引条件。只有第一个方案实际上已从该领域报告,但它们看起来似乎是低效列表删除的合理后果。
围绕B树发布列表拆分添加更多防御检查(Peter Geoghegan)
此更改应有助于检测涉及重复表TID的索引损坏。
避免在将NaN插入BRIN float8或float4最小最大值多操作索引(Tomas Vondra)时出现断言失败
在生产构建中,这种情况会导致索引有点低效,但实际上并不错误。
允许自动真空发射程序响应pg_log_backend_memory_contexts ()
更快地请求(Koyu Tanigawa)
修复HMAC哈希计算中的内存泄漏(Sergey Shinderuk)
不允许设置巨大的书页
到在
什么时候shared_memory_type.
是SYSV
(托马斯·芒罗)
以前,此设置被接受,但它没有任何缺乏任何实施。
修复PL/pgSQL中查询类型的检查返回查询
声明(汤姆·莱恩)
返回查询
应该接受任何可以返回元组的查询,例如。更新返回
.v14意外不允许任何东西选择
; 此外,返回查询执行
变体根本未能应用任何查询类型检查。
修复垃圾场正确转储非全局默认权限(Neil Chen,Masahiko Sawada)
如果是全局的(无限制的)更改默认权限
例如,命令撤消了一些逐个默认的特权执行
对于函数,然后是受限的更改默认权限
命令再次为所选角色或架构授予该权限,垃圾场无法正确转储受限制的权限授予。
使垃圾场获取要转储的分区表上的共享锁(Tom Lane)
这种疏忽通常是无害的,因为有一次垃圾场已锁定任何叶分区,这将足以防止分区表本身上的重要DDL。然而,在转储无子分区表时可能会出现问题,因为不会持有相关的锁。
修复崩溃垃圾场当试图从8.3之前的服务器转储触发器定义时(Tom Lane)
修复中不正确的文件名pg_restore.有关无效大对象TOC文件的错误消息(Daniel Gustafsson)
确保pgbench在插座级别故障(Yugo Nagata,Fabien Coelho)之后退出非零状态
所需的行为是完成运行,然后以状态2退出。此外,修复此类错误的报告。
防止pg_amcheck检查临时关系,以及无效或未就绪的索引(Mark Dilger)
这避免了对几乎肯定会出现不一致的关系进行无益的检查。
使挑剔/ amcheck.
在备用服务器上运行时跳过未标记的表(Mark Dilger)
这样做是合适的,因为这样的表将是空的,并且已经以类似的方式处理了未记录的索引。
改变control / pg_stat_statements.
阅读”查询文本”以最多1GB为单位的文件(Tom Lane)
如此大的查询文本文件是非常罕见的,但如果它们真的发生了,之前的编码将在Windows 64上失败(它拒绝超过2GB的单个读请求)。
修复空指针崩溃时Contrien / Postgres_fdw.
试图报告数据转换错误(TOM Lane)
确保GetSharedSecurityLabel()
可用于尚未构建关键关系缓存项的新启动会话(Jeff Davis)
运行TAP测试时,将模块自己的目录包括在路径
(安德鲁·邓斯坦)
这允许测试找到未安装的内置程序,例如自定义测试驱动程序。
使用CLDR项目的数据将Windows时区名称映射到IANA时区(Tom Lane)
在Windows上运行时,initdb尝试设置新群集的时区
参数设置为与系统当前时区匹配的IANA时区。我们使用的是多年前生成的映射表,只是偶尔更新;不出所料,它包含许多错误以及遗漏了最近添加的区域。事实证明,CLDR一直在跟踪最合适的映射,因此开始使用它们的数据。此更改不会影响任何现有的安装,只会影响新初始化的集群。
更新时区数据文件tzdata发布2021e,了解斐济、约旦、巴勒斯坦和萨摩亚的DST法律变更,以及巴巴多斯、库克群岛、圭亚那、纽埃、葡萄牙和汤加的历史更正。
此外,Pacific / Ederbury区已被重新命名为Pacific / Kanton。此外,自1970年以来,以下区域已被合并到附近,其时钟已同意的区域:Africa / Accra,Amery / Atikokan,America / Blanc-Sablon,America / Creston,America / Curacao,America / Nassau,美国/ Port_of_Spain,南极洲/德米特德尔维尔和南极洲/迈威达。在所有这些情况下,先前的区域名称仍然是别名。
如果您在文档中看到任何不正确的东西,与您的经验不符的特188金宝慱网站地址定功能或需要进一步澄清,请使用这种形式报告文档问题。188金宝慱网站地址