E.1.版本 10.13

发布日期: 2020-05-14

此版本包含自 10.12 起的各种修复程序。有关主要版本 10 中新功能的信息,请参阅Section E.14

E.1.1. 迁移到版本 10.13

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

但是,如果要从 10.11 之前的版本升级,请参见Section E.3

E.1.2. Changes

  • 保留由ALTER TABLE(Amit Langote,Justin Pryzby)重写的索引的indisclustered设置

以前,ALTER TABLE失去了对CLUSTER使用哪个索引的跟踪。

  • 保留由ALTER TABLE重写的索引的副本身份属性(Quan Zongliang,Peter Eisentraut)

  • DROP OWNED BY(ÁlvaroHerrera)期间尽快锁定对象

这样可以避免在竞争条件下发生故障,在这种情况下,另一个会话正在删除某些相同的对象。

  • 修复CREATE ROLE ... IN ROLE(Andrew Gierth)的错误情况处理

某些错误情况将被报告为“意外的节点类型”等,而不是预期的消息。

  • 确保pg_read_all_stats角色的成员可以按预期读取所有统计信息视图(Magnus Hagander)

pg_stat_progress_*视图的基本功能尚未获得此备忘。

  • 修复全文搜索,以正确处理短语搜索上方的“ NOT”(汤姆巷)

当实现为 GiST 或 GIN 索引搜索时,诸如!(foo<->bar)之类的查询无法找到匹配的行。

  • 修复全文搜索,以解决短语搜索包含前缀匹配和权重限制的项目的情况(Tom Lane)

  • 修复ts_headline(),以便在使用词组查询时更好地选择标题(Tom Lane)

  • 修复gin_fuzzy_search_limit处理中的错误(AdéHeyward,Tom Lane)

较小的gin_fuzzy_search_limit值可能会由于无意中多次重新扫描同一索引页而导致意外的运行缓慢。另一个代码路径根本无法应用预期的过滤,可能返回了太多的值。

  • 允许类型为circle的 Importing 接受格式为“ (x,y),r”,如文档所述(David Zhang)

  • 使get_bit()set_bit()函数处理长度超过 256MB 的bytea字符串(Movead Li)

由于 bit number 参数仅为int4,因此无法使用这些函数访问长bytea的前 256MB 以外的位。我们将在 v13 中将参数扩展为int8,但是与此同时,允许这些函数对长bytea的初始子字符串起作用。

  • 忽略pg_ls_waldir()和相关函数中的文件未找到错误(Tom Lane)

如果在看到文件的目录条目和尝试对其进行stat()之间删除文件时,这可以防止出现竞争情况失败。

  • 避免泄漏pg_ls_dir()pg_timezone_names()pg_tablespace_databases()和相关函数中的目录的打开文件 Descriptors(Justin Pryzby)

  • 修复多态函数类型的分辨率,以在仅提供anyrangeImporting 时正确推断anyarray输出的实际类型(Tom Lane)

  • 避免当REINDEX被会话关闭 signal 终止时(Tom Lane)崩溃

  • 修复分区表中违反约束的错误后出现的低概率崩溃(Andres Freund)

  • 防止在EXPLAIN中打印出可能不正确的哈希联接表统计信息(Konstantin Knizhnik,Tom Lane,Thomas Munro)

  • 修复了VACUUM VERBOSE中堆截断步骤所用时间的报告(Tatsuhito Kasahara)

  • 确保在读取或写入时间轴历史记录文件的所有代码路径中报告了 TimelineHistoryRead 和 TimelineHistoryWriteawait 状态(池田雅弘)

  • 避免在进程的 PS 状态中两次显示“正在 await”(泽田正彦)

  • 避免在崩溃恢复期间过早地回收 WAL 网段(Jehan-Guillaume de Rorthais)

准备在崩溃恢复期间进行归档的 WAL 段可能被回收而没有归档。

  • 避免在归档恢复期间扫描无关的时间表(Kyotaro Horiguchi)

这可以消除许多尝试从归档存储中获取不存在的 WAL 文件的尝试,如果归档访问速度很慢,这很有用。

  • 删除逻辑解码中的虚假“没有先前的顶级 txn 记录而记录的子事务”错误检查(Arseny Sher,Amit Kapila)

在各种情况下都可以正常达到此条件,因此请删除该检查。

  • 确保在故障代码路径中释放了复制插槽的io_in_progress_lock(Pavan Deolasee)

这可能导致 walsender 稍后卡住以 await 锁定。

  • 修复同步备用 Management(Tom Lane)中的竞争条件

synchronous_standby_names设置中进行更改期间,会出现一个窗口,在该窗口中可能会做出有关是否可以释放 await 同步提交的事务的错误决定。如果退出 walsender 程序并立即由另一个替换,则存在同样错误决定的另一个危险。

  • 确保nextXid不能在备用服务器(Eka Palamadai)上向后移动

此争用条件可能允许将不正确的热备用反馈消息发送回主服务器,从而可能使VACUUM在主服务器上运行得太早。

  • 将缺失的 SQLSTATE 值添加到一些错误报告中(泽田正彦)

  • 修复 PL/pgSQL 以可靠地拒绝将事件触发函数作为普通函数执行(Tom Lane)

  • 修复使用sslmode=verify-full时 libpq 中的内存泄漏(罗马 Peshkurov)

连接启动期间的证书验证可能会泄漏一些内存。如果 Client 端进程在其生命周期中打开了许多数据库连接,这将成为一个问题。

  • 修复 ecpg 在所有平台上将仅-的参数视为“从 stdin 读取”(Tom Lane)

  • 允许对 psql 的\gx命令的 filename 参数使用制表符补全(Vik Fearing)

  • 添加对ALTER ... DEPENDS ON EXTENSION(ÁlvaroHerrera)的 pg_dump 支持

pg_dump 以前忽略的依赖项是通过这种方式添加的,导致它们在转储/恢复或 pg_upgrade 期间被遗忘。

  • 修复 pg_dump 以在 RLS 策略对象上转储 Comments(Tom Lane)

  • 在 pg_dump 中,将事件触发器的恢复推迟到最后(Fabríziode Royes Mello,Hamid Akhtar,Tom Lane)

这将事件触发器可能干扰其他对象恢复的风险降至最低。

  • 修复 createdb 实用工具中的--encoding--lc-ctype--lc-collate值的引号(Michael Paquier)

  • 如果直接调用contrib/lolo_manage()函数而不是作为触发器调用,则会崩溃(Tom Lane)

  • contrib/ltree中,防止ltreelquery长度字段溢出(Nikita Glukhov)

  • 修复contrib/sepgsql中的缓存引用泄漏(Michael Luo)

  • 在 Windows 上处理 Unix 样式的语言环境名称时,避免失败(JuanJoséSantamaríaFlecha)

  • 使用 pkg-config(如果可用)在配置过程中定位 libxml2(Hugh McMaster,Tom Lane,Peter Eisentraut)

如果 pkg-config 不存在或不了解 libxml2,我们仍然像以前一样查询 xml2-config。

通过将 xml2-config 放入PATH,此更改可能会破坏试图使 PostgreSQL 使用非默认版本的 libxml2 的构建过程。而是将XML2_CONFIG设置为指向非默认的 xml2-config。该方法适用于旧的或较新的 PostgreSQL 版本。

  • 构建共享库时,在CXXFLAGS中包括CFLAGS_SL(Oleksii Kliukin)

这样可以确保正确编译 C 源文件,例如在需要时添加-fPIC

  • 在 MSVC 构建中,应对 Python 的路径名中的空格(Victor Wagner)

  • 在 MSVC 版本中,修复对 Visual Studio 版本的检测以使用更多语言设置(Andrew Dunstan)

  • 在 MSVC 版本中,将-Wno-deprecated与版本高于 3.0 的野牛版本一起使用,就像非 Windows 版本一样(Andrew Dunstan)

  • 将时区数据文件更新为 tzdata 版本 2020a,以解决摩洛哥和加拿大育空地区的 DST 法律变更,以及上海的历史更正。

America/Godthab 区域已重命名为 America/Nuuk 以反映当前英语用法;但是,旧名称仍然可以用作兼容性链接。

另外,更新 initdb 的已知 Windows 时区名称列表以包括最近添加的内容,从而提高了它将正确转换该平台上的系统时区设置的几率。