选择 打开 改范围 完整检索页
不受支持的版本: 11
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本手册首页的对应页面,或其他在上面列出的活跃大版本。

E.15. 发布版本 11.8 #

发布日期:. 2020-05-14

本次发布包含来自 11.7 的多项修复。 有关 11 主版本新特性的说明,请参见 Section E.23.

E.15.1. 迁移到版本 11.8

对于运行 11.X 的用户,不需要执行导出/恢复。

但是,如果是从早于 11.6 的版本升级,请参见 Section E.17

E.15.2. 变更

  • ALTER TABLE ... SET STORAGE 传播到索引(Peter Eisentraut)

    非表达式索引列在创建时一直会复制对应表列的 attstorage 属性。现在执行 ALTER TABLE ... SET STORAGE 时也更新它们,以保持一致。

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

    以前,ALTER TABLE 会丢失哪个索引曾用于 CLUSTER 的信息。

  • 保留由 ALTER TABLE 重写的索引的复制标识属性(Quan Zongliang,Peter Eisentraut)

  • DROP OWNED BY 期间更早地锁定对象(Álvaro Herrera)

    这可以避免另一个会话同时删除部分相同对象时,因竞争条件而发生的失败。

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

    某些错误情况会被报告为 unexpected node type 等消息,而非预期的消息。

  • 确保分离分区时移除所有从原父表克隆的触发器(Justin Pryzby)

  • 确保分区表上的唯一索引与分区键的相等语义一致(Guancheng Luo)

    这只会在索引操作符类采用不寻常的相等定义时成为问题,但理论上仍是错误,因此增加检查。

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

    pg_stat_progress_* 视图的底层函数以前没有遵守这一要求。

  • 修复 information_schema.triggers 视图的性能退化(Tom Lane)

    此补丁重新定义了该视图,使约束表名的外层 WHERE 子句可以下推到视图内部,从而只针对目标表的触发器进行计算,而非数据库中的所有触发器。在具有大量触发器的数据库中,这会显著提高此类查询的速度。由于 v11 之前就是这样工作的,这是一处潜在的性能退化。受此问题影响的用户可以替换视图定义来修复它(或许也可以直接删除并重新安装整个 information_schema 模式)。

  • 修复全文搜索,使其正确处理短语搜索之上的 NOT(Tom Lane)

    !(foo<->bar) 等查询在通过 GiST 或 GIN 索引搜索执行时,无法找到匹配行。

  • 修复短语搜索包含同时具有前缀匹配和权重限制的项时的全文搜索(Tom Lane)

  • 修复 ts_headline(),使其处理短语查询时更恰当地选择摘要片段(Tom Lane)

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

    较小的 gin_fuzzy_search_limit 值可能导致同一个索引页被意外重复扫描多次,从而运行异常缓慢。另一个代码路径则完全没有应用预期的过滤,可能返回过多的值。

  • 允许 circle 类型的输入按文档所述接受 (x,y),r 格式(David Zhang)

  • 使 get_bit()set_bit() 函数能够处理长于 256MB 的 bytea 字符串(Movead Li)

    由于位编号参数只有 int4,无法使用这些函数访问长 bytea 值前 256MB 之外的位。我们将在 v13 中将该参数扩为 int8,但在此之前,先允许这些函数处理长 bytea 值的起始子串。

  • pg_ls_waldir() 及相关函数中忽略文件不存在错误(Tom Lane)

    这可以防止文件在看到其目录项与尝试对其执行 stat() 之间被移除时,因竞争条件而发生的失败。

  • 避免 pg_ls_dir()pg_timezone_names()pg_tablespace_databases() 及相关函数可能泄漏目录的打开文件描述符(Justin Pryzby)

  • 修复多态函数的类型解析,使其仅给定 anyrange 输入时,也能正确推断 anyarray 输出的实际类型(Tom Lane)

  • 避免哈希子计划的哈希表在多次执行之间泄漏(Andreas Karlsson,Tom Lane)

    如果查询重复执行哈希子计划的次数足够多,这一错误可能导致严重的内存膨胀。

  • 避免 REINDEX 被会话关闭信号终止时不太可能发生的崩溃(Tom Lane)

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

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

  • 修复 VACUUM VERBOSE 对堆截断步骤耗时的报告(Tatsuhito Kasahara)

  • 修复 VACUUM VERBOSE 输出中可能低估已删除 B-树索引页数量的问题(Peter Geoghegan)

  • 修复 B-树索引中对最早删除页面的错误记录(Peter Geoghegan)

    这可能使有关 VACUUM 何时可以跳过索引清理扫描的判断出现细微错误,不过似乎未必有明显的用户可见影响。

  • 确保在所有读写时间线历史文件的代码路径中报告 TimelineHistoryRead 和 TimelineHistoryWrite 等待状态(Masahiro Ikeda)

  • 避免在进程的 PS 状态中可能两次显示 waiting(Masahiko Sawada)

  • 避免自动清理尝试访问刚删除的临时模式时发生失败(Tom Lane)

    只有超级用户手动删除临时模式时才会出现这一隐患;这虽然不是常规做法,但也应该能够正常工作。

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

    在崩溃恢复期间变为可归档状态的 WAL 段,可能在尚未归档的情况下就被回收。

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

    这可以消除许多从归档存储中获取不存在的 WAL 文件的尝试,在归档访问缓慢时很有帮助。

  • 移除逻辑解码中不正确的 subtransaction logged without previous top-level txn record 错误检查(Arseny Sher,Amit Kapila)

    在多种场景中都可以正常出现这种情况,因此移除该检查。

  • 确保在失败代码路径中释放复制槽的 io_in_progress_lock(Pavan Deolasee)

    这可能使 WAL 发送进程 之后卡在等待该锁的状态。

  • 修复同步备库管理中的竞争条件(Tom Lane)

    更改 synchronous_standby_names 设置期间,存在一个时间窗口,可能错误判断是否可以放行正在等待同步提交的事务。如果一个 WAL 发送进程 进程退出后立即被另一个替代,也存在作出类似错误判断的隐患。

  • 确保备库上的 nextXid 不会倒退(Eka Palamadai)

    此竞争条件可能使错误的热备反馈消息被发送回主库,从而可能让主库过早执行 VACUUM

  • 为几个错误报告补上缺失的 SQLSTATE 值(Sawada Masahiko)

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

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

    连接启动期间的证书验证可能泄漏一些内存。如果客户端进程在其生命周期内打开大量数据库连接,这就会成为问题。

  • 修复 ecpg,使其在所有平台上都将仅包含 - 的参数解释为从 stdin 读取(Tom Lane)

  • 允许对 psql\gx 命令的文件名参数进行 Tab 补全(Vik Fearing)

  • pg_dump 增加对 ALTER ... DEPENDS ON EXTENSION 的支持(Álvaro Herrera)

    pg_dump 以前忽略了以这种方式添加的依赖关系,导致它们在转储/恢复或 pg_upgrade 期间丢失。

  • 修复 pg_dump,使其转储 RLS 策略对象上的注释(Tom Lane)

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

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

  • 使 pg_verify_checksums 跳过属于其他 PostgreSQL 大版本的表空间子目录(Michael Banck,Bernd Helmle)

    这些子目录实际上不属于我们的数据库集簇,因此不得处理它们。

  • pg_verify_checksums 及相关程序中忽略 pg_internal.init 的临时副本(Michael Paquier)

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

  • 直接调用 contrib/lolo_manage() 函数,而非作为触发器调用时,会发生崩溃(Tom Lane)

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

  • 规避 oldest_xact 值超过 2^31-1 时 contrib/pageinspectbt_metap() 函数发生的失败(Peter Geoghegan)

    此类 XID 现在会被报告为负整数,这虽然不理想,但总比抛出错误好。v13 将把输出参数扩为 int8,以提供更合理的报告。

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

  • 避免在 Windows 上处理 Unix 风格区域设置名称时发生失败(Juan José Santamaría Flecha)

  • configure 期间,如果 pkg-config 可用,则使用它定位 libxml2(Hugh McMaster,Tom Lane,Peter Eisentraut)

    如果 pkg-config 不存在,或不包含 libxml2 的信息,我们仍像以前一样查询 xml2-config

    某些构建过程通过将非默认版本的 xml2-config 放入 PATH,来让 PostgreSQL 使用该版本的 libxml2;此项修改可能使这些构建过程失效。应改为设置 XML2_CONFIG,使其指向非默认的 xml2-config。这种方法对较旧和较新的 PostgreSQL 发行版都适用。

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

  • 在 MSVC 构建中,修复 Visual Studio 版本检测,使其适用于更多语言设置(Andrew Dunstan)

  • 在 MSVC 构建中,对高于 3.0 的 bison 版本使用 -Wno-deprecated,与非 Windows 构建现有行为一致(Andrew Dunstan)

  • 将时区数据文件更新到 tzdata 2020a 版,以反映摩洛哥和加拿大育空地区的夏令时法规变更,并修正上海的历史数据。

    America/Godthab 时区已更名为 America/Nuuk,以反映当前英语用法;不过,旧名称仍作为兼容性链接保留。

    另外,更新 initdb 的已知 Windows 时区名称列表,纳入最近新增的名称,提高在该平台上正确转换系统时区设置的可能性。