2025年9月25日: PostgreSQL 18 发布!

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

发布于 2020-11-23,作者 PWN
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 相关新闻

Planet PostgreSQL: http://planet.postgresql.org/

本周 PostgreSQL 周报由 David Fetter 提供。

请在太平洋标准时间(PST8PDT)周日晚上3:00之前将新闻和公告发送至 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,而 fileName 尚未设置(实际上应该始终为 NULL)。据我所知,自 Berkeley 以来一直如此。在 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:处理自引用外键。提交 502898192 在 expandTableLikeClause 生成的附加 ALTER TABLE 操作的执行顺序方面过于粗心。它只是将它们全部放在最后,这在大多数情况下似乎都可以。但在 LIKE 导入主键或唯一索引,并且外部 CREATE TABLE 包含需要依赖该索引的外键约束的情况下,它会失败。尽管这很奇怪,但它曾经有效,所以我们应该保持它有效。为了修复,将 parse_utilcmd.c 中的 LIKE 子句插入到转换后的命令列表中索引创建和外键创建命令之间,并更改 utility.c,以便 expandTableLikeClause 生成的命令立即执行,而不是在最后。人们可能会想象这种情况也不会起作用;但目前 expandTableLikeClause 只创建列默认表达式、CHECK 约束和索引,并且此排序对它们来说似乎是好的。根据 Sofoklis Papasofokli 的 bug #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) 的处理一致,因此这似乎是一个 bug 修复。讨论: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 提交了

Fujii Masao 提交

Peter Eisentraut 提交

Álvaro Herrera 提交

Bruce Momjian 已推送

Amit Kapila 提交

Peter Geoghegan 提交

  • nbtree:重命名 nbtinsert.c 变量以保持一致。停止在不适用时将特殊区域/不透明指针变量命名为“lpageop”。这是从逻辑更集中地执行 _bt_insertonpg()、_bt_findinsertloc() 和 _bt_split() 任务时继承下来的。“lpageop”表示“左页”,在不存在右页的情况下没有意义。还会在 _bt_insertonpg() 中提前获取页面标志变量。这使其更接近 _bt_split() 在重构提交 bc3087b626d 之后。这允许页面拆分和零售插入路径都使用相同的变量。 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 库,则使用 SSL 库中的随机数生成器(今天仅支持 OpenSSL)。如果未配置 SSL 库,则使用平台默认值(这意味着在 Win32 上使用 CryptoAPI,在 Linux 上使用 /dev/urandom)。这还将 pg_strong_random.c 重构为三个清晰分开的部分,每个实现一个部分,每个部分有两个函数,而不是在整个文件中分散的 ifdef 集合。作者:Daniel Gustafsson, Magnus Hagander, Michael Paquier 讨论:https://postgr.es/m/632623.1605460616@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/16f96c74d48e65da23d28665103e2c4c9d3414cc

待处理补丁

Atsushi Torikoshi 发送了另一个补丁修订版,该修订版使 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 控制。

Takamichi Osumi 发送了另外两个补丁修订版,以使在数据加载期间可以禁止 WAL 日志记录。

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

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

Tatsuro Yamada 发送了另外两个补丁修订版,为 psql 添加了扩展统计信息的命令 \dX。

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

Justin Pryzby 发送了一个补丁,允许在 bootstrap 中使用复合类型,并向 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,该 GUC 控制它是否尝试保持连接,其令人惊讶的名称是 keep_connections。

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

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

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

Etsuro Fujita 发送了另一个补丁修订版,以在 postgres_fdw 节点上启用异步追加。

Tomáš Vondra 发送了一个补丁,通过添加对 get_useful_pathkeys_for_relation() 的 is_parallel_safe 检查,修复了增量排序改变查询行为的 bug。

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 是系列的一部分且位置超过指定阈值,则使 Consts 对混淆哈希的贡献为零。对具有 VALUES 的类似查询也执行相同操作。

Thomas Munro 发送了另一个补丁修订版,以实现 WAL 预取。

Andrew Dunstan 发送了另一个补丁修订版,以允许匹配客户端证书中的整个 DN。

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

Atsushi Torikoshi 发送了两个补丁修订版,以记录缓存计划在用于创建它们的统计信息更新时无效的事实。

Atsushi Torikoshi 发送了两个补丁修订版,以更新 PREPARE 文档,指出 pg_prepared_statements 现在显示每个准备好的语句在当前会话中累积选择通用计划和自定义计划的次数。

Vigneshwaran C 发送了另一个补丁修订版,以并行化 COPY。

Thomas Munro 发送了另一个补丁修订版,以最小化锁信号。

Masahiro Ikeda 发送了另一个补丁修订版,向 pg_stat_wal 视图添加了 WAL 相关参数调优的统计信息。

Craig Ringer 发送了一个补丁,用于检测并报告 LWLockAcquire() 由于调用者已持有 LWLock 而导致简单的自死锁的情况。

Craig Ringer 发送了一个补丁,移除了 LWLockWaitForVar 中错误的 lwlock__acquire tracepoint,将目标 LWLock* 和 tranche ID 传递给 LWLock tracepoint,并添加到 LWLock 例程中的 tracepoint。

Heikki Linnakangas 发送了另一个补丁修订版,将 peragg 和 pertrans 重复查找移动到 prepagg.c。

Craig Ringer 发送了一个补丁,该补丁基于上面的资源所有者重构补丁,添加了一些 systemtap/dtrace tracepoint,并提供了一个演示 systemtap 脚本,该脚本显示了一些使用它们完成的基本统计信息收集。

Surafel Temesgen 发送了另一个补丁修订版,以实现系统版本化的时间表。

Justin Pryzby 发送了另外两个补丁修订版,以避免在 concurrent 索引重索引时可能发生的 brin 摘要错误。

Li Japin 发送了一个补丁,使用宏来计算 LWLock 偏移量。

Kyotaro HORIGUCHI 发送了另一个补丁修订版,以实现 CatCache 过期。

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

Greg Nancarrow 发送了另一个补丁修订版,以在安全的情况下启用“INSERT INTO ... SELECT ...”的并行 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 发送了另一个补丁修订版,为窗口函数实现了“空值处理”。

Álvaro Herrera 发送了一个补丁,用于修复 pageinspect 中的一个 bug,该 bug 会导致出现类似“ERROR: invalid memory alloc request size 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 发送了一个补丁,使“不能插入”消息更精确地指出原因是不能插入非默认值。