支持的版本: 当前12

E.1. Release 12.1

发布日期:2019-11-14

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

E.1.1. Migration to Version 12.1

对于运行12.X的用户,不需要转储/还原.

E.1.2. Changes

  • 修复了ALTER TABLE添加没有默认值的列以及进行其他需要重写表的更改时崩溃的问题(Andres Freund)

  • Fix lock handling in REINDEX CONCURRENTLY (Michael Paquier)

    REINDEX CONCURRENTLY被忽略在新索引版本上进行会话级锁定,这可能使其他会话过早地对其进行操作. 同样,查询取消或会话终止中断在错误的时间到达可能会导致无法释放REINDEX CONCURRENTLY确实保留的会话级锁.

  • 报告CREATE INDEX CONCURRENTLYREINDEX CONCURRENTLY命令(ÁlvaroHerrera)的进度时,避免由于竞争条件而导致崩溃

  • 避免在REINDEX CONCURRENTLY期间创建重复的依赖项(Michael Paquier)

    这个错误导致pg_depend膨胀,但是没有比这更糟糕的后果了.

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

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

  • 尝试对表达式索引进行CLUSTER修复" 插槽类型错误"错误(Andres Freund)

  • SET CONSTRAINTS ... DEFERRED在分区表上失败,错误地抱怨缺少触发器(ÁlvaroHerrera)

  • 如果父分区表包含任何删除的列,则为分区创建索引时修复失败(Michael Paquier)

  • 修复删除分区表中的索引列的问题(Amit Langote,Michael Paquier)

    以前,这可能会失败,并显示一条错误消息,抱怨索引的依赖性. 它应该自动删除索引.

  • 确保在无法同时为索引重新建立索引后可以删除该分区索引(Michael Paquier)

    索引的pg_class . 在这种情况下, relispartition标志处于错误状态,从而导致DROP INDEX失败.

  • 修复对按分区联接的等效类成员的处理(Amit Langote)

    这种疏忽可能导致无法使用可行的按分区联接计划,也可能导致" 无法找到要排序的路径键项 "计划程序失败.

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

    This oversight could result in assorted failures when the offsets are nontrivial expressions. One example is that a function parameter reference in such an expression would fail if the function was inlined.

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

  • 修复使用BEFORE UPDATE触发器对表进行EvalPlanQual重新检查触发的崩溃(Andres Freund)

  • 修复查询尝试访问TOAST表时的" 意外的relkind "错误(John Hsu,Michael Paquier和Tom Lane)

    该错误应表明权限被拒绝,但是这种情况在代码重构期间被破坏了.

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

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

    某些代码路径在以只读方式打开文件后尝试执行此操作,但在某些平台上会导致" 错误的文件描述符 "或类似错误.

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

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

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

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

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

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

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

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

  • 在崩溃恢复过程中忽略restore_commandrecovery_end_commandrecovery_min_apply_delay设置(Fujii Masao)

    现在可以在postgresql.conf指定这些设置,可以在崩溃恢复期间将其打开,但是不希望使用它们. 忽略这些设置,直到崩溃恢复完成.

  • 当发布者和订阅者对表的副本标识列有不同的想法时,修复逻辑复制失败(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.

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

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

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

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

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

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

    UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
    
  • 为空的搜索字符串(Tom Lane)修复文本position()函数(也称为strpos() )的结果

    从历史上看,按照SQL标准,在这种情况下,结果应为1,但12.0返回零.

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

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

  • 清除GiST索引时避免内存泄漏(Dilip Kumar)

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

  • 修复libpq,以允许在整数参数的字符串值中尾随空格(Michael Paquier)

    第12版加强了libpq对整数参数的验证,但不允许尾随空格似乎是不可取的.

  • libpq中 ,在语法上无效的connect_timeout参数值导致错误后正确报告CONNECTION_BAD连接状态(Lars Kanis)

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

    此风险是由声明放错位置造成的: ecpg_gettext()对客户端代码不可见.

  • 修复在分区表上并行还原外键约束的计划(ÁlvaroHerrera)

    pg_dump无法为分区表的外键发出完整的依赖项信息. 这可能允许并行pg_restore过早尝试重新创建外键约束.

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

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

  • pg_upgrade中 ,拒绝列类型为sql_identifier表,因为这已更改了版本12中的表示形式(Tomas Vondra)

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

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

  • 在与pg_rewind --dry-run选项,避免更新pg_control (阿列克谢Kondratov)

    这可能导致随后的pg_rewind尝试失败.

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

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

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

  • 放回pqsignal()作为导出的libpq符号(Tom Lane)

    删除该函数的理由是,不应该使用任何客户端,但是事实证明,这会破坏当前libpq与非常老版本的psql以及其他应用程序的使用.

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

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

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

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

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

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

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

Submit correction

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

by  ICOPY.SITE