支持的版本: 10

E.1. Release 10.11

发布日期:2019-11-14

此版本包含自10.10起的各种修复程序. 有关主要版本10中新功能的信息,请参阅第E.12节 .

E.1.1. Migration to Version 10.11

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

但是,如果将contrib/intarray扩展名与GiST索引一起使用,并且依赖于索引搜索的<@运算符,请参见下面的条目.

另外,如果要从10.6之前的版本进行升级,请参见第E.6节 .

E.1.2. Changes

  • 使用自定义关联选项修复ALTER TABLE SET失败(Michael Paquier)

  • Disallow changing a multiply-inherited column's type if not all parent tables were changed (Tom Lane)

    以前,这是允许的,因此对现在不同步的父级的查询将失败.

  • 防止VACUUM尝试冻结涉及仍在运行的事务的旧的多产品ID(Nathan Bossart,Jeremy Schneider)

    这种情况将导致VACUUM失败,直到旧事务终止.

  • 使用ICU排序规则(Tom Lane)修复ILIKE针对大小写可折叠字符的计划程序测试

    此错误导致计划人员将太多模式视为固定前缀,因此从ILIKE子句派生的索引扫描可能会丢失他们应找到的条目.

  • 确保在处理查询的表达式时处理WINDOW子句中的偏移量表达式(Andrew Gierth)

    当偏移量是非平凡的表达式时,这种疏忽可能导致各种各样的失败. 一个示例是,如果内联函数,则此类表达式中的函数参数引用将失败.

  • 修复了WITH CHECK OPTION表达式和行级安全策略表达式(Andres Freund)中的整行变量的处理

    以前,这种用法可能会导致有关行类型不匹配的虚假错误.

  • 如果在没有postmaster子进程数组插槽可用的情况下并行查询请求后台工作程序,则避免postmaster失败(Tom Lane)

  • 如果BEFORE UPDATE触发器按原样返回旧的元组,而不是最后一个这样的触发器,则防止可能的双重释放(Thomas Munro)

  • 在并行工作程序启动期间设置GUC参数时发生错误时,提供相关的错误上下文行(Thomas Munro)

  • 在可序列化模式下,确保在正确版本的行(Thomas Munro,Heikki Linnakangas)上获取行级谓词锁

    如果该行的可见版本进行了HOT更新,则该锁可能会在其已死的前任上获得锁定,从而导致微妙的故障,无法保证序列化.

  • 确保fsync()仅应用于以读写方式打开的文件(Andres Freund,Michael Paquier)

    Some code paths tried to do this after opening a file read-only, but on some platforms that causes 错误的文件描述符 or similar errors.

  • 允许编码转换在更长的字符串上成功完成(ÁlvaroHerrera,Tom Lane)

    以前,输入字符串的硬限制为0.25GB,但现在只要转换后的输出不超过1GB,它就可以使用.

  • 避免在堆页面修剪期间进行不必要的目录查找(Thomas Munro)

    在此不再需要检查未记录的索引,并且该检查在某些工作负载中导致了严重的性能问题. 从理论上讲,至少也存在僵局的可能性.

  • 避免为窗口函数创建不必要的大型元组存储(Andrew Gierth)

    在某些情况下,元组存储将包括源表的所有列,而不仅仅是查询所需的列.

  • 当大块的大小减小时,允许repalloc()返回空间(Tom Lane)

  • 确保在存档恢复结束时删除临时的WAL和历史记录文件(Sawada Masahiko)

  • 在归档恢复避免失败,如果recovery_min_apply_delay启用(藤井正雄)

    recovery_min_apply_delay通常不在此配置中使用,但是应该可以使用.

  • 当发布者和订阅者对表的副本标识列有不同的想法时,修复逻辑复制失败(Jehan-Guillaume de Rorthais,Peter Eisentraut)

    如果在发布服务器上根本不存在一列,则在订阅服务器上将其声明为副本身份的一部分,将导致" 负的bitmapset成员不允许 "错误.

  • 避免在逻辑复制walsender关机期间出现不必要的延迟(Craig Ringer,ÁlvaroHerrera)

  • 修复逻辑复制walreceiver进程中的超时处理(Julien Rouhaud)

    错误的逻辑阻止了wal_receiver_timeout在逻辑复制部署中工作.

  • 正确地为时间戳复制消息进行逻辑解码(Jeff Janes)

    例如,这种疏忽导致了pg_stat_subscription . last_msg_send_time通常读取为NULL.

  • 在逻辑解码中,请确保在重建快照时正确考虑了子事务(泽田正彦)

    该错误导致断言失败. 目前尚不清楚生产版本中是否存在任何不良影响.

  • 当后端进程先前已等待同步复制发生时,修复后端退出期间的竞争状况(刘东明)

  • 修复ALTER SYSTEM以应对postgresql.auto.conf重复条目(Ian Barwick)

    ALTER SYSTEM本身不会生成这种状态,但是修改postgresql.auto.conf外部工具可以生成这种状态. 现在将删除目标变量的重复条目,然后在末尾附加新设置(如果有).

  • 拒绝配置文件中包含空文件名的包含指令,并更清楚地报告包含文件的递归(Ian Barwick,Tom Lane)

  • 使用PAM身份验证时,避免记录有关废弃连接的投诉(Tom Lane)

    基于libpq的客户端通常在需要密码时会进行两次连接尝试,因为在第一次连接尝试失败之前,它们不会提示用户输入密码. 因此,当客户端在询问密码时关闭连接时,服务器被编码为不会产生无用的日志垃圾邮件. 但是,PAM身份验证代码尚未获得该备忘,并且会生成一些有关幻像身份验证失败的消息.

  • 修复某些情况下在time with time zone输入未及时检测到不完整的日期规范的情况下(Alexander Lakhin)

    如果指定了时区UTC偏移量的时区,则日期也必须是正确的,以便可以解决偏移量. 根据使用的语法,在某些情况下不会强制执行此检查,从而导致产生伪造的输出.

  • 修复bitshiftright()不良行为(汤姆·莱恩)

    当位串长度不是8的倍数时,位串右移运算符无法将结果的最后一个字节中存在的填充空间清零.尽管对于大多数操作不可见,但任何非零位都将导致意外的比较行为,因为位串比较不会费心忽略多余的位,期望它们始终为零.

    如果由于将bitshiftright()的输出保存在表中而导致数据不一致,则可以使用以下方法修复它:

    UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
  • XMLTABLE (Chapman Flack)中选择名称空间节点时避免崩溃

  • 修复间隔乘法中边缘情况整数溢出的检测(Yuya Watari)

  • 修复使用ICU归类时在lower()upper()initcap()函数中的内存泄漏(Konstantin Knizhnik)

  • 如果ispell文本搜索词典包含错误的词缀数据,请避免崩溃(Arthur Zakirov)

  • 修复GIN发布列表的错误压缩逻辑(Heikki Linnakangas)

    如果相邻索引的TID之间的距离超过16TB,则GIN发布列表项可能需要7个字节. 逻辑中的一个步骤与此不同步,可能会尝试将值写入6字节缓冲区. 原则上,这可能会导致堆栈溢出,但是在大多数体系结构上,下一个字节可能是未使用的对齐填充,从而使该错误无害. 无论如何,该错误都很难被发现.

  • 修复了KNN-GiST(Alexander Korotkov)中对无穷大,NaN和NULL值的处理

    如果为非空列值计算的某些距离是无穷大或NaN,则查询的输出顺序可能是错误的(与普通排序的结果不同).

  • 修复在KNN-SP-GiST(Nikita Glukhov)中搜索NULL的处理

  • 在Windows上,识别" Norwegian(Bokmål) "区域设置名称(Tom Lane)的其他拼写

  • 避免编译失败如果ECPG客户端包括ecpglib.h同时具有ENABLE_NLS定义(汤姆泳道)

    This risk was created by a misplaced declaration: ecpg_gettext() should not be visible to client code.

  • psql中 ,在意外的连接丢失和成功的重新连接之后,重新同步服务器的内部状态(Peter Billen,Tom Lane)

    通常,这是不必要的,因为无论如何状态都是相同的. 但这在某些情况下可能很重要,例如在连接可能指向多个服务器之一的情况下. 此更改使psql重新发出启动时可能发出的任何交互式消息,例如有关是否正在使用SSL的消息.

  • psql中避免平台特定的空指针取消引用(Quentin Rameau)

  • pg_dump中 ,确保类似名称的触发器和行级安全策略对象的稳定输出顺序(Benjie Gillam)

    以前,如果不同表上的两个触发器具有相同的名称,则它们将基于基于OID的顺序进行排序,这比按表名对它们进行排序不太可取. 对于RLS策略也是如此.

  • 修复pg_dump以再次与8.3之前版本的源服务器一起工作(Tom Lane)

    先前的修复导致pg_dump始终尝试查询pg_opfamily ,但是该目录在8.3版之前不存在.

  • pg_restore中 ,将-f -视为" 输出到stdout " (ÁlvaroHerrera)

    这可以使pg_restore的行为与其他一些应用程序同步,特别是使v12之前的分支的行为类似于版本12的pg_restore ,从而简化了跨多个PostgreSQL版本工作的转储/恢复脚本的创建. 在进行此更改之前, pg_restore将此开关解释为" 输出到名为-的文件 "的意思 ,但是很少有人会希望这样做.

  • 改进pg_upgrade的检查,以检查是否更改了表示形式的数据类型,例如line (Tomas Vondra)

    如果感兴趣的数据类型位于域或复合类型的存储列的下面,则可能会愚弄先前的编码.

  • pg_basebackup期间检测文件读取错误(Jeevan Chalke)

  • pg_basebackup中 ,在备份结束之前不要fsync输出文件(Michael Paquier)

    如果fsync很慢,则先前的编码可能会导致超时失败.

  • 在具有在线源集群的pg_rewind中 ,禁用超时,就像pg_dump一样(Alexander Kukushkin)

  • 当连续WAL记录正好在页面边界处结束时,使用-s选项修复pg_waldump中的失败(Andrey Lepikhov)

  • pg_waldump中 ,在btree页拆分记录中包含newitemoff字段(Peter Geoghegan)

  • 在与pg_waldump --bkp-details选项,避免排放涉及全页写WAL记录额外的新行(安德烈斯·弗罗因德)

  • 修复pg_waldump (Andres Freund)中的小内存泄漏

  • 使用高--jobs选项修复vacuumdb以更好地处理文件描述符不足的问题(Michael Paquier)

  • 修复contrib/amcheck以在热备用期间跳过未记录的索引(Andrey Borodin,Peter Geoghegan)

    在此上下文中,未记录的索引不一定包含有效数据,因此请勿尝试对其进行检查.

  • 修复contrib/intarray的GiST opclass不会因<@ (Tom Lane)的空数组而失败

    array_column <@ constant_array这样的子句被认为是可索引的,但是索引搜索可能找不到空数组值. 当然,此类条目应与搜索简单匹配.

    为此,唯一可行的可后修补程序解决方案是使<@索引搜索扫描整个索引,而此修补程序正是这样做的. 这很不幸:这意味着查询性能可能比普通顺序扫描要差.

    性能受到此更改不利影响的应用程序有两种选择. 他们可以切换到没有此错误的GIN索引,也可以将array_column <@ constant_array替换为array_column <@ constant_array AND array_column && constant_array . 这将提供与以前几乎相同的性能,并且将找到给定常量数组的所有非空子集,这是查询之前可以可靠地期望的全部.

  • 修复configure的libperl的测试,以便它可以在最新的Red Hat版本中使用(Tom Lane)

    以前,如果用户将CFLAGS设置为-O0 ,它可能会失败.

  • 确保在PowerPC上正确生成自旋锁的代码(Noah Misch)

    先前的自旋锁编码允许编译器选择寄存器零,以与不接受该寄存器的汇编指令一起使用,从而导致构建失败. 我们仅看到一个与此错误相称的长期报告,但对于试图构建经过修改的PostgreSQL代码或使用非典型编译器选项的人来说,这可能会引起问题.

  • 在PowerPC上,避免依赖xlc编译器的__fetch_and_add()函数(Noah Misch)

    xlc 13及更高版本以与我们的用法不兼容的方式解释此功能,从而导致无法使用PostgreSQL构建. 通过改用自定义汇编代码进行修复.

  • 在AIX上,请勿使用编译器选项-qsrcmsg (Noah Misch)

    这避免了xlc v16.1.0的内部编译器错误,除了更改编译器错误消息的格式外,几乎没有其他后果.

  • 修复MSVC生成过程,以处理OpenSSL文件路径中的空格(Andrew Dunstan)

  • 将时区数据文件更新为tzdata版本2019c,以进行斐济和诺福克岛DST法律变更,以及阿尔伯塔省,奥地利,比利时,不列颠哥伦比亚省,柬埔寨,香港,印第安纳州(佩里县),加里宁格勒,肯塔基州,密歇根州,诺福克郡的历史更正岛,韩国和土耳其.

Submit correction

如果您在文档中发现任何不正确的内容,与特定功能不匹配的经验或需要进一步说明,请使用此表格报告文档问题.

by  ICOPY.SITE