PostgreSQL 每周新闻 - 2020 年 11 月 22 日

由 PWN 于 2020-11-23 发布
PWN

PostgreSQL 每周新闻 - 2020 年 11 月 22 日

本周人物:https://postgresql.life/post/markus_wanner/

PostgreSQL 产品新闻

PGroonga 2.2.7,一个适用于所有语言的全文搜索平台,已发布。https://pgroonga.github.io/

PostGIS 3.0.3,PostgreSQL 行业标准的地理信息系统软件包,已发布。https://postgis.net.cn/2020/11/20/postgis-3.0.3/

pgtt 2.2,一个用于实现全局临时表的扩展,已发布。https://github.com/darold/pgtt/releases/tag/v2.2

pgAdmin4 4.28,一个用于 PostgreSQL 的 Web 和原生 GUI 控制中心,已发布。https://www.pgadmin.org/docs/pgadmin4/dev/release_notes_4_28.html

pgbouncer 1.15.0,一个用于 PostgreSQL 的连接池工具,已发布。https://www.pgbouncer.org/2020/11/pgbouncer-1-15-0

pitrery 3.2,一组用于管理 PostgreSQL 的 PITR 备份的 Bash 脚本,已发布。http://dalibo.github.io/pitrery/

pg_statement_rollback v1.1,一个在语句级别添加具有回滚功能的服务器端事务的扩展,已发布。https://github.com/lzlabs/pg_statement_rollback/releases/tag/v1.1

11 月的 PostgreSQL 工作

http://archives.postgresql.org/pgsql-jobs/2020-11/

PostgreSQL 新闻

PostgreSQL 星球:http://planet.postgresql.org/

本周的 PostgreSQL 每周新闻由 David Fetter 为您带来

请在太平洋标准时间下午 3:00 前(PST8PDT)将新闻和公告提交至 david@fetter.org。

已应用的补丁

Tom Lane 推送

  • 修复了关于 amcanmulticol 与 amcaninclude 的模糊思考。这些标志应该是独立的:特别是索引 AM 应该能够表示它支持包含列,而不必一定支持多个键列。包含列的补丁弄错了这一点,可能部分原因是它没有费心更新文档。在此期间,澄清了一些关于 amcanreturn 的文本,这些文本对于当 amcanreturn 报告只有部分索引列可以返回时应该发生什么有点含糊。在审查 SP-GiST 包含列的补丁时发现,该补丁完全不正确(且不安全地)更改了 SP-GiST,以声明 amcanmulticol = true 作为此错误的解决方法。向引入包含列的 v11 进行回溯。https://git.postgresql.org/pg/commitdiff/29d29d652f0be47dc42fa9d667dee5b8e1baa18a

  • 在一个 ICU 函数调用中使用“true”而不是“TRUE”。这显然在提交 6337865f3 中被遗漏了,该提交通常将所有地方的 s/TRUE/true/ 都替换了。直到现在都没有引起注意,因为 ICU 68 之前的版本都提供了“TRUE”和“FALSE”的定义,无论如何。在 ICU 68 中,它无法编译。根据 Condor 的报告。回溯到 6337865f3 所在的 v11。(我没有测试过这个调用起源的 v10,但我认为它没有问题,因为我们当时在 c.h 中定义了 TRUE。)讨论:https://postgr.es/m/7a6f3336165bfe3ca66abcda7966f9d0@stz-bg.com https://git.postgresql.org/pg/commitdiff/ad84ecc98d7e2ad81567094b8a6910b5078927a7

  • 不要在 satisfies_hash_partition() 的错误情况下返回 NULL。由于此函数用作 CHECK 约束条件,返回 NULL 等同于返回 TRUE,这将导致让不满足哈希条件的行进入。诚然,这种情况在实践中应该是无法达到的,但这并不会使其成为一个不好的主意。看起来也像是随意决定哪些错误情况应该抛出错误而不是返回 NULL。对于 NULL 输入值的检查,我只是将其切换为返回 false。有人认为错误会更好;但这种情况在生成的哈希约束中真的不应该发生,因此可能不值得为此编写更多代码。对于父关系打开失败的情况,似乎我们不妨让 relation_open 抛出一个错误,而不是出现一个无法诊断的约束失败。回溯到此代码所在的 v11。讨论:https://postgr.es/m/24067.1605134819@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/4025e6c46620048804467d2ad29d31aa9ba50387

  • 在完全构建 VFD 条目之前,不要 Insert() 它。否则,如果启用了 FDDEBUG,调试输出会失败,因为它会尝试读取尚未设置的 fileName(实际上应该始终为 NULL)。据我所知,自从伯克利以来,这个就一直是错误的。在 96bf88d52 之前,它会在 snprintf() 对 %s 传递 NULL 指针时比较宽松的平台上意外地不会崩溃;但本来应该包含在调试输出中的文件名永远不会显示出来。由 Greg Nancarrow 报告和修复。尽管这仅在定制构建中明显出现问题,但它仍然值得回溯到所有支持的分支,因为 FDDEBUG 代码目前几乎没用。讨论:https://postgr.es/m/CAJcOf-cUDgm9qYtC_B6XrC6MktMPNRby2p61EtSGZKnfotMArw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/2bd49b493a52f0a21bc3fc51c355963f99ac1a4e

  • 进一步修复 CREATE TABLE LIKE:处理自引用 FK。提交 502898192 在执行 expandTableLikeClause 生成的额外 ALTER TABLE 操作的顺序时过于粗心。它只是把它们都放在了最后,这对于大多数目的来说似乎没问题。但是,在 LIKE 导入主键或唯一索引,并且外部 CREATE TABLE 包括一个需要依赖该索引的 FOREIGN KEY 约束的情况下,它会失败。尽管这种情况很奇怪,但它过去可以工作,因此我们应该保持它正常工作。为了修复这个问题,让 parse_utilcmd.c 在转换后的命令列表中,在索引创建和 FK 创建命令之间插入 LIKE 子句,并更改 utility.c,以便立即执行 expandTableLikeClause 生成的命令,而不是在最后执行。可以想象会出现这种情况也无法工作的场景;但目前 expandTableLikeClause 只会生成列默认表达式、CHECK 约束和索引,并且这种排序对于这些情况似乎没问题。根据 Sofoklis Papasofokli 的错误 #16730。与之前的补丁一样,回溯到所有支持的分支。讨论:https://postgr.es/m/16730-b902f7e6e0276b30@postgresql.org https://git.postgresql.org/pg/commitdiff/97390fe8a6e96a153e59b0180f4303acaeb75b84

  • 删除未记录的 IS [NOT] OF 语法。此功能是在很久以前,在 7c1e67bd5 和 eb121ba2c 中添加的,但从未以任何面向用户的方式进行记录。(在 6126d3e70 中添加的文档几乎立即在 8272fc3f7 中被注释掉。)这是因为,尽管此语法是由 SQL:99 定义的,但我们的实现仅与该标准的语义略有相关。该标准似乎旨在进行运行时而不是解析时测试,并且它肯定希望该测试能够理解子类型关系。在过去的几年里,没有人站出来修复这个问题,但是人们不断遇到代码并询问为什么它没有被记录。让我们把它删除吧:如果有人想按照规范使其工作,他们可以很容易地从我们的 git 历史中恢复此代码中仍然有价值的任何部分。如果有人实际上在没有文档的情况下使用此代码,他们可以改为使用 pg_typeof(),例如“pg_typeof(something) = 'mytype'::regtype”。这给出的语义与我们的 IS OF 代码所做的基本相同。(我们上次讨论时没有这个函数,否则我们当时就会删掉 IS OF。)讨论:https://postgr.es/m/CAKFQuwZ2pTc-DSkOiTfjauqLYkNREeNZvWmeg12Q-_69D+sYZA@mail.gmail.com 讨论:https://postgr.es/m/BAY20-F23E9F2B4DAB3E4E88D3623F99B0@phx.gbl 讨论:https://postgr.es/m/3E7CF81D.1000203@joeconway.com https://git.postgresql.org/pg/commitdiff/926fa801ac9eb54c5275472271ec63a059904698

  • 在 macOS 上,在链接步骤以及编译步骤中使用 -isysroot。我们之前仅将 -isysroot 开关放入 CPPFLAGS 中,认为它仅需要查找正确的包含文件副本。但是,似乎我们在链接程序时也需要使用它,以查找正确的库存根 “.tbd” 文件。我们到目前为止还没有这样做,但显然这主要是运气。也可能是只有当 Xcode 版本与主机 macOS 版本明显不同步时才会观察到失败;目前提示采取行动的情况是在 macOS Catalina 上使用最新的 Xcode (12.2) 时构建失败,即使在 Big Sur 上它很好。因此,也将 -isysroot 添加到 LDFLAGS 中。(似乎更常见的做法是将其放入 CFLAGS 中,这样它将在编译和链接步骤中都包含在内。但是,我们不能在平台模板文件中更改 CFLAGS,而不混淆 configure 选择默认 CFLAGS 的逻辑。)这应该回溯,但首先让我们看看构建场是否喜欢 HEAD 上的它。由 James Hilliard 报告和修补(我做了一些外观上的修改)讨论:https://postgr.es/m/20201120003314.20560-1-james.hilliard1@gmail.com https://git.postgresql.org/pg/commitdiff/49407dc32a2931550e4ff1dea314b6a25afdfc35

  • 稍微扩展几何回归测试用例。向“point_tbl”添加另一个边缘情况值,并为 line(point, point) 函数添加一个测试。这里暴露的一些行为是错误的,但是单独提交此代码的想法是为了纪念我们正在获得的内容,并允许更容易地检查由即将到来的补丁引起的行为更改。Kyotaro Horiguchi(由我添加的 line() 测试)讨论:https://postgr.es/m/CAGf+fX70rWFOk5cd00uMfa__0yP+vtQg5ck7c2Onb-Yczp0URA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/a45272b25d6fc8f96793623545fc1f836ac39d94

  • 修复 FPeq() 及其相关函数,使其能正确处理无穷大。“FPeq(infinity, infinity)” 返回 false,原因是两个输入相减时得到 NaN。通过添加单独的精确相等性检查来修复此问题。FPle() 和 FPge() 在处理两个同号无穷大时也得到了错误的结果。在这些情况下,我们可以重新排列比较,以避免潜在的无穷大相减。虽然同类的函数 FPne() 等意外地给出了正确答案,即使内部结果为 NaN,但最好对它们进行类似的调整,以避免依赖这种情况。FPeq() 必须转换为内联函数,以避免对其参数进行双重评估,为了保持一致性,我对其他函数也做了同样的处理。顺便说一下,使 line_eq() 和 point_eq_point() 中对 NaN 情况的处理更简单、更易于理解,或许也更快。这导致只有一个可见的回归测试更改:slope() 现在对于 (inf,1e300) 的两个输入给出 DBL_MAX,这与它对 (1e300,inf) 的处理方式一致,因此这似乎是一个错误修复。讨论:https://postgr.es/m/CAGf+fX70rWFOk5cd00uMfa__0yP+vtQg5ck7c2Onb-Yczp0URA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8597a48d01b6cc0b09ff626253ac93c67e5516d5

  • 在 geo_ops.c 中,将无限斜率表示为 Infinity,而不是 DBL_MAX。既然我们现在假设使用 IEEE 浮点数,似乎没有理由不这样做。这样做的好处是,当由于存在 Inf 坐标而将斜率计算为无穷大时,我们从 line_construct() 获得的行为比以前更合理,从而在一些依赖操作(如查找最近点)中也是如此。同时修复 line_construct() 以特殊处理斜率为零的情况。之前的编码在大多数情况下得到了正确的答案,但当点具有 Inf 坐标时,它可能会将 C 计算为 NaN。讨论:https://postgr.es/m/CAGf+fX70rWFOk5cd00uMfa__0yP+vtQg5ck7c2Onb-Yczp0URA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/9fe649ea295f00baf6d0f0c1f9b0cb1298f64fb9

Michaël Paquier 推送了

Alexander Korotkov 推送了

藤井正雄推送了

Peter Eisentraut 推送了

Álvaro Herrera 推送了

Bruce Momjian 推送了

Amit Kapila 推送了

Peter Geoghegan 推送了

  • nbtree:重命名 nbtinsert.c 变量以保持一致性。停止在不适用的上下文中将特殊区域/不透明指针变量命名为“lpageop”。这是从一个逻辑分散在 _bt_insertonpg()、_bt_findinsertloc() 和 _bt_split() 的时代遗留下来的。“lpageop”表示“左页”,这在没有右页的上下文中没有意义。此外,在 _bt_insertonpg() 中预先获取页面标志变量。这使得它更接近于重构提交 bc3087b626d 之后的 _bt_split()。这允许页面分割和零售插入路径都使用相同的变量。 https://git.postgresql.org/pg/commitdiff/a034f8b60c6e9afd75f42dc420a76cb9d3875fcb

  • 弃用 nbtree 的 BTP_HAS_GARBAGE 标志。简化我们必须在 nbtinsert.c 中避免页面分割的各种策略的处理。当看起来叶子页面即将溢出时,我们现在在一个中心位置执行删除 LP_DEAD 项和去重。这大大简化了 _bt_findinsertloc()。这有一个独立有用的结果:nbtree 不再依赖 BTP_HAS_GARBAGE 页面级标志/提示来处理任何重要的事情。我们仍然像以前一样设置和取消设置该标志,但在考虑是否应检查已设置的 LP_DEAD 位时,不再将其视为门控条件。这发生在页面看起来可能必须分割的情况下,因此顺便检查 LP_DEAD 位实际上是免费的。这避免了仅因为页面级提示未设置而错过 LP_DEAD 位,这可能相当常见(例如,当 VACUUM 取消设置页面级标志而不实际删除最近设置了 LP_DEAD 位的索引元组时,在 VACUUM 操作开始之后但在其到达所讨论的叶子页面之前)。请注意,与 PostgreSQL 13 相比,这并不是一个大的行为更改。在考虑执行去重传递之前,我们已经在检查是否设置了 LP_DEAD 位,而不管是否设置了 BTP_HAS_GARBAGE 页面级标志。此提交只是更进一步,对所有索引执行相同的检查,即使是不会执行去重的索引也是如此。我们不会完全删除 BTP_HAS_GARBAGE 标志。我们仍然依赖它作为来自 B 树版本 4/PostgreSQL 12 之前的 pg_upgrade 索引的门控条件。这很有意义,因为在插入带有版本 4 之前索引的元组时,我们有时必须在充满重复项的页面中做出选择。在那里避免访问页面的行指针数组可能仍然是值得的,因为目前尚不清楚我们是否会插入到所讨论的页面上,更不用说因此分割它了。作者:Peter Geoghegan pg@bowt.ie 审阅者:Victor Yegorov vyegorov@gmail.com 讨论: https://postgr.es/m/CAH2-Wz%3DYpc1PDdk8OVJDChGJBjT06%3DA0Mbv9HyTLCsOknGcUFg%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/cf2acaf4dcb5e20204dcec4d698cb4478af533e7

Heikki Linnakangas 推送了

Thomas Munro 推送了

Magnus Hagander 推送了

  • 删除独立选择随机数生成器的功能。删除从 SSL 库独立选择随机数生成器的功能。相反,如果配置了 SSL 库(目前仅支持 OpenSSL),则使用该库中的随机数生成器。如果未配置 SSL 库,则使用平台默认值(这意味着在 Win32 上使用 CryptoAPI,在 Linux 上使用 /dev/urandom)。这还重构了 pg_strong_random.c,使其具有三个清晰的分区,每个实现一个分区,每个分区有两个函数,而不是在整个文件中分散的一组 ifdefs。作者:Daniel Gustafsson、Magnus Hagander、Michael Paquier 讨论: https://postgr.es/m/632623.1605460616@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/16f96c74d48e65da23d28665103e2c4c9d3414cc

待处理补丁

鳥越 淳发送了另一个补丁修订版,以启用 pg_get_backend_memory_contexts() 来收集任意后端进程的内存上下文。以前,pg_get_backend_memory_contexts() 只能获取本地内存上下文。此补丁使可以获取由参数指定的 PID 的任意后端进程的内存上下文。

Tomáš Vondra 发送了两个补丁修订版,以支持表达式的扩展统计信息。

Seino Yuki 和 Fujii Masao 交换了补丁,以向 pg_stat_statements 扩展添加新的 pg_stat_statements_info 视图。

Jacob Champion 和 Daniel Gustafsson 交换了补丁,以支持 NSS 作为 libpq 的 TLS 后端。

Alexandra Pervushina 发送了另外两个补丁修订版,以使异步副本可以等待重放 lsn。

Álvaro Herrera 和 Dmitry Dolgov 交换了补丁,以从 CREATE INDEX CONCURRENTLY 中删除伪等待。

Thomas Munro 发送了两个补丁修订版,以跟踪共享内存中的关系大小,并为 smgrnblocks() 提供无锁快速路径。

Masahiro Ikeda 发送了另一个补丁修订版,以添加 track_wal_io_timing GUC 和一个匹配的 pg_stat_wal 视图以支持它。

Li Japin 发送了另外四个补丁修订版,以使可以使用新的 GUC idle_session_timeout 终止空闲会话,并在传递中减少调用 setitimer() 的次数。

Masahiko Sawada 和 Bertrand Drouvot 交换了补丁,以在备用恢复冲突期间添加信息,并由新的 GUC log_recovery_conflict_waits 控制。

大隅孝道提交了两个补丁的修订版本,使得在数据加载期间可以禁用 WAL 日志记录。

Simon Riggs 提交了五个补丁的修订版本,以修复 `DISABLE_PAGE_SKIPPING` 的文档行为与当前行为不匹配的情况。

Ajin Cherian 和 Amit Kapila 交换了补丁,以实现两阶段事务的逻辑解码。

山田達郎提交了两个补丁的修订版本,以添加用于扩展统计信息的 psql 命令 `\dX`。

Daniel Gustafsson 提交了另一个补丁的修订版本,以支持在运行中的集群中启用和禁用页面校验和。

Justin Pryzby 提交了一个补丁,允许在引导程序中使用复合类型,并向 `pg_statistic_ext_data` 添加一个列 `stxdexpr`。

Peter Geoghegan 提交了另一个补丁的修订版本,以删除唯一索引中的旧版本,从而避免页面分裂。

Heikki Linnakangas 提交了另一个补丁的修订版本,将 `copy.c` 分割为四个文件:`copy.c`,现在包含 `COPY FROM` 和 `COPY TO` 共用的函数;`copyto.c`,包含 `COPY TO` 的代码;`copyfrom.c`,包含初始化 `COPY FROM` 和将元组路由到正确表的代码;以及 `copyfromparse.c`,包含从客户端/文件/程序读取数据,并将输入的文本/CSV/二进制格式解析为元组的代码。

David G. Johnston 提交了另一个补丁的修订版本,以澄清信号函数没有反馈的事实。

Simon Riggs 提交了一个补丁,添加了一个 `wal_sessioninfo` GUC,当启用时,它会将有关用户会话的信息添加到每个提交或中止记录中。

David G. Johnston 提交了一个补丁,以澄清 libpq 中批处理/管道支持的文档。

Dean Rasheed 提交了另一个补丁的修订版本,以改进 OR 子句的估计。

Heikki Linnakangas 提交了一个补丁,使 `ResourceOwner` 实现更高效,并向外部代码公开更方便的接口。

Aleksey Kondratov 提交了一个补丁,向 PostgreSQL FDW 添加一个自定义 GUC,以控制它是否尝试保持连接,其名称令人惊讶地为 `keep_connections`。

高行俊介 (Takayuki Tsunakawa) 和 Tomáš Vondra 交换了补丁,以实现 PostgreSQL FDW 的 INSERT 批处理。

Justin Pryzby 和 Pavel Stěhule 交换了补丁,向 pg_dump 添加了一个 `--filter` 选项,该选项从一个指定要使用的过滤器的文件中提取信息,并使参数解析既可以用于命令行,也可以用于如此描述的文件。

Bharath Rupireddy 提交了另一个补丁的修订版本,在 autoprewarm 模块中使用标准的 SIGHUP 和 SIGTERM 处理程序。

藤田悦朗提交了另一个补丁的修订版本,以在 postgres_fdw 节点上启用异步追加。

Tomáš Vondra 提交了一个补丁,修复了一个错误,该错误表现为增量排序通过向 `get_useful_pathkeys_for_relation()` 添加 `is_parallel_safe` 检查来更改查询行为。

David Pirotte 提交了另一个补丁的修订版本,以在流式传输时向消息添加 xid,并向 pgoutput 输出插件添加一个 "messages" 选项。当 "messages" 为 true 时,逻辑解码消息(即通过 `pg_logical_emit_message` 生成的消息)将被发送到槽消费者。

Junfeng (Jerome) Yang 提交了另一个补丁的修订版本,通过更改 `vac_update_datfrozenxid()` 从磁盘堆表而不是系统缓存中获取当前数据库的 `pg_database` 元组的源,来修复使用 `pg_database` toast 属性的 vacuum freeze。

Dmitry Dolgov 提交了一个补丁,以防止在 `ArrayExpr` 中混淆每个元素。这样做的动机是,`pg_stat_statements` 会为诸如 `SELECT something FROM table WHERE col IN (1, 2, 3, ...)` 之类的查询生成多个条目,具体取决于参数的数量,因为 `ArrayExpr` 的每个元素都被混淆了。如果 Consts 是系列的一部分并且位于指定的阈值之外的位置,则不对混淆哈希做出贡献。对于带有 VALUES 的类似查询也执行相同的操作。

Thomas Munro 提交了另一个补丁的修订版本,以实现 WAL 预取。

Andrew Dunstan 提交了另一个补丁的修订版本,允许匹配来自客户端证书的整个 DN。

Pavel Stěhule 提交了两个补丁的修订版本,为 PL/pgsql 添加参数和局部变量引用的简写。

鳥越敦史提交了两个补丁的修订版本,以记录用于创建缓存计划的统计信息在更新时,缓存计划会失效的事实。

鳥越敦史提交了两个补丁的修订版本,以更新 PREPARE 文档,以说明 `pg_prepared_statements` 现在显示在当前会话中,每个预准备语句累计选择通用计划和自定义计划的次数。

Vigneshwaran C 提交了另一个补丁的修订版本,以并行化 COPY。

Thomas Munro 提交了另一个补丁的修订版本,以最大限度地减少闩锁信号。

Masahiro Ikeda 提交了另一个补丁的修订版本,以向 `pg_stat_wal` 视图添加有关 wal 相关参数调整的统计信息。

Craig Ringer 提交了一个补丁,以检测并报告何时由于调用者已持有 LWLock 而导致 `LWLockAcquire()` 产生简单的自死锁。

Craig Ringer 提交了一个补丁,以从 `LWLockWaitForVar` 中删除虚假的 `lwlock__acquire` 跟踪点,将目标 `LWLock*` 和 tranche ID 传递给 LWLock 跟踪点,并添加到 LWLock 例程中的跟踪点。

Heikki Linnakangas 提交了另一个补丁的修订版本,将 `peragg` 和 `pertrans` 重复查找移至 `prepagg.c`。

Craig Ringer 在上述资源所有者重构补丁之上提交了一个补丁,该补丁添加了一些 systemtap/dtrace 跟踪点,并提供了一个演示 systemtap 脚本,该脚本显示了使用它们完成的一些基本统计信息收集。

Surafel Temesgen 提交了另一个补丁的修订版本,以实现系统版本化的时态表。

Justin Pryzby 提交了两个补丁的修订版本,以避免 brin 汇总中的错误,如果索引同时重新索引,则可能会发生这些错误。

李佳品提交了一个补丁,使用宏来计算 LWLock 偏移量。

堀口京太郎提交了另一个补丁的修订版本,以实现 CatCache 过期。

Peter Eisentraut 提交了另一个补丁的修订版本,以支持使用符合 SQL 标准的函数体,为语言 SQL 编写 CREATE FUNCTION 和 CREATE PROCEDURE 语句。

Greg Nancarrow 提交了另一个补丁的修订版本,以在安全的情况下,为“INSERT INTO ... SELECT ...”启用并行 SELECT,以及为“INSERT INTO ... SELECT ...”启用并行 INSERT 和/或 SELECT。

Amit Langote 提交了一个补丁,也在分区表中创建外键触发器,以便允许后续的提交在某些情况下使用父表触发器而不是分区的触发器来触发外键相关事件,并在跨分区更新期间正确强制执行外键。

Laurenz Albe 提交了另一个补丁的修订版本,以将会话统计信息添加到 `pg_stat_database`。

Justin Pryzby 提交了另一个 pg_restore 的补丁的修订版本,以便它单独解析并运行 SQL 命令,并允许即使父表不存在或缺少/不兼容的列,也可以独立恢复子分区。

Peter Eisentraut 提交了另一个补丁的修订版本,以暂停恢复以应对不充分的参数设置。

Peter Eisentraut 提交了另一个补丁的修订版本,以添加对抽象 Unix 域套接字的支持,并通过仅在 `errno == EADDRINUSE` 时才显示提示来使 `bind()` 失败的错误提示更准确。

Matthias van de Meent 提交了一个补丁,以修复 CLUSTER 扫描的块数的进度报告。

Stephen Frost 提交了一个补丁,以将有些不准确的“默认角色”术语替换为更精确的“预定义角色”。

Erik Rijkers 在添加架构教程章节的补丁之上提交了一个补丁,以修复一些拼写错误并进行其他文字润色。

Bharath Rupireddy 提交了另一个补丁的修订版本,以避免在 CTAS 和 MatView 中检查 INSERT 权限,以便符合标准。

Gilles Darold 提交了两个补丁的修订版本,添加一个钩子,供插件在 `AbortCurrentTransaction` 结束时获得控制权,并添加一个扩展来启用基于同一级别的语句级回滚。

Krasiyan Andreev 提交了另一个补丁的修订版本,以实现窗口函数的 `<null treatment>`。

Álvaro Herrera 提交了一个补丁,修复了 `pageinspect` 中的一个错误,当页面严重损坏时,该错误表现为类似 “错误:无效的内存分配请求大小 18446744073709551451” 的消息。修复方法是不尝试打印数据,而是直接终止。

Justin Pryzby 提交了另一个补丁的修订版本,以淘汰 `pg_standby`。

Michaël Paquier 提交了两个补丁的修订版本,以删除 `currtid()` 和 `currtid2()`,在此过程中清理了一些表 AM。

James Coleman 提交了一个补丁,以强制在 `generate_useful_gather_paths` 中路径键的并行安全性,并确保 `generate_useful_gather_paths` 不会跳过未排序的子路径。

Vigneshwaran C 提交了一个 PoC 补丁,该补丁可以使通过连接到服务器来获取 PostgreSQL 进程的调用堆栈成为可能。

Tom Lane 提交了一个补丁,使“无法插入”消息更精确地说明原因是非默认值永远无法插入的事实。