On this page
E.1. 11.8 版
发布日期: 2020-05-14
此版本包含自 11.7 起的各种修复程序。有关主要版本 11 中新功能的信息,请参阅Section E.9。
E.1.1. 迁移到版本 11.8
运行 11.X 的用户不需要转储/还原。
但是,如果要从 11.6 之前的版本升级,请参见Section E.3。
E.1.2. Changes
- 将
ALTER TABLE ... SET STORAGE
传播到索引(Peter Eisentraut)
非表达式索引列在创建时始终会复制其表列的attstorage
属性。完成ALTER TABLE ... SET STORAGE
后更新它们,以保持一致性。
- 保留由
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)的错误情况处理
某些错误情况将被报告为“意外的节点类型”等,而不是预期的消息。
确保在分离分区时,删除从其先前父表克隆的所有触发器(Justin Pryzby)
确保分区表上的唯一索引与分区键的相等语义匹配(Guancheng Luo)
对于索引操作类具有不寻常的相等性概念,这只会是一个问题,但是从理论上讲是错误的,因此请检查一下。
- 确保
pg_read_all_stats
角色的成员可以按预期读取所有统计信息视图(Magnus Hagander)
pg_stat_progress_*
视图的基本功能尚未获得此备忘。
- 修复
information_schema
中的性能回归。triggers
视图(汤姆巷)
此修补程序重新定义了该视图,以便可以将约束表名的外部WHERE
子句下推到视图中,从而仅对属于感兴趣表的触发器(而不是数据库中的所有触发器)进行计算。在具有许多触发器的数据库中,这将对该形式的查询产生明显的速度差异。由于 v11 之前的工作方式是这样,所以这是潜在的性能下降。认为这是一个问题的用户可以通过替换视图定义(或者,也许只是删除并重新安装整个information_schema
模式)来解决此问题。
- 修复全文搜索,以正确处理短语搜索上方的“ 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)修复多态函数类型的分辨率,以在仅提供
anyrange
Importing 时正确推断anyarray
输出的实际类型(Tom Lane)避免散列子计划的哈希表在多个执行中泄漏(Andreas Karlsson,Tom Lane)
如果查询重新执行一个哈希子计划足够多次,此错误可能会导致严重的内存膨胀。
避免当
REINDEX
被会话关闭 signal 终止时(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 和 TimelineHistoryWriteawait 状态(池田雅弘)
避免在进程的 PS 状态中两次显示“正在 await”(泽田正彦)
如果 autovacuum 尝试访问刚删除的临时模式(Tom Lane),请避免失败
仅当超级用户手动删除临时模式时,才会出现这种危险。这不是正常的做法,但应该可以。
- 避免在崩溃恢复期间过早地回收 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)
这将事件触发器可能干扰其他对象恢复的风险降至最低。
- 使 pg_verify_checksums 跳过属于不同 PostgreSQL 主要版本(Michael Banck,Bernd Helmle)的表空间子目录
这样的子目录并不 true 属于我们的数据库集群,因此不能进行处理。
忽略 pg_verify_checksums 和相关程序中
pg_internal.init
的临时副本(Michael Paquier)修复 createdb 实用工具中的
--encoding
,--lc-ctype
和--lc-collate
值的引号(Michael Paquier)如果直接调用
contrib/lo
的lo_manage()
函数而不是作为触发器调用,则会崩溃(Tom Lane)在
contrib/ltree
中,防止ltree
和lquery
长度字段溢出(Nikita Glukhov)当 oldest_xact 值超过 2 ^ 31-1 时,解决
contrib/pageinspect
的bt_metap()
函数中的失败(Peter Geoghegan)
这样的 XID 现在将报告为负整数,虽然不是很好,但是可以抛出错误。 v13 会将输出参数扩展为int8
,以提供更清晰的报告。
修复
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 版本。
在 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 时区名称列表以包括最近添加的内容,从而提高了它将正确转换该平台上的系统时区设置的几率。