PostgreSQL 每周新闻祝您新年快乐!
Database Lab 2.1 发布,该工具用于快速克隆大型 PostgreSQL 数据库以构建非生产环境: https://postgres.ai/blog/dle-2.1-release/
https://archives.postgresql.org/pgsql-jobs/2021-01/
Planet PostgreSQL: https://planet.postgresql.org/
PostgreSQL 每周新闻本周由 David Fetter 为您带来
请在太平洋标准时间下午 3:00 之前通过 david@fetter.org 提交新闻和公告。
Jeff Davis 推送
Bruce Momjian 推送
还原 “添加密钥管理系统” (978f869b99) & 后续提交。该补丁需要测试用例、重组和 cfbot 测试。技术上还原提交 5c31afc49d..e35b2bad1a (互斥/互补) 和 08db7c63f3..ccbe34139b。报告者:Tom Lane, Michael Paquier 讨论:https://postgr.es/m/E1ktAAG-0002V2-VB@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/3187ef7c46c5b884267a88f2d6119c9a05f1bbba
更新 2021 年的版权。向后移植:9.5 https://git.postgresql.org/pg/commitdiff/ca3b37487be333a1d241dab1bbdd17a211a88f43
Fujii Masao 推送
Michaël Paquier 推送
修复快照的共享失效导致的不一致代码。自 568d413 以来,负责处理单个失效消息的代码一直在使用关系映射消息的结构。幸运的是,这没有造成任何后果,因为两者都在相同的位置定位数据库 ID,但是如果代码的这个区域发生更改,将来可能会成为问题。作者:Konstantin Knizhnik 讨论:https://postgr.es/m/8044c223-4d3a-2cdb-42bf-29940840ce94@postgrespro.ru 向后移植:9.5 https://git.postgresql.org/pg/commitdiff/643428c54b95d472c6d949c3c3c11f347e371a2b
doc: 改进 min_dynamic_shared_memory 的描述。同时,修复 90fbf7c 中的一个疏忽,它引入了对 pg_dump 压缩级别的不正确值的引用。作者:Justin Pryzby 审查人:Thomas Munro, Michael Paquier 讨论:https://postgr.es/m/CA+hUKGJRTLWWPcQfjm_xaOk98M8aROK903X92O0x-4vLJPWrrA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/1b3433e25f81d6fc4f231887ab965e1ea1bcb47e
删除 adminpack 和 old_snapshot 中对 libpq_srcdir 的引用。这两个模块都包含了对 libpq 源路径的引用,但没有使用 libpq 中的任何内容。当每个模块创建时所做的一些复制粘贴很可能是这些无用引用的根源(old_snapshot 的 aecf5ee,adminpack 的 fe59e56)。审查人:Tom Lane, David Rowley 讨论:https://postgr.es/m/X+LQpfLyk7jgzUki@paquier.xyz https://git.postgresql.org/pg/commitdiff/107a2d4204ff4bf4ce05e3525f0d94fc0bd497ff
清理 CTAS 和物化视图的 EXPLAIN 中的 IF NOT EXISTS。当在 CREATE MATERIALIZED VIEW 或 CREATE TABLE AS 的 EXPLAIN 查询中指定时,IF NOT EXISTS 会被忽略。因此,如果指定了此子句,如果关系已存在,调用者将收到失败而不是收到带有 NOTICE 消息的成功。此提交使 EXPLAIN 中 IF NOT EXISTS 的行为与非 EXPLAIN 的 DDL 查询一致,如果 要创建 的关系已存在,则防止 IF NOT EXISTS 失败。跳过操作在用于关系的 SELECT 查询计划或执行之前完成,并根据 EXPLAIN 使用的格式生成“虚拟”计划。作者:Bharath Rupireddy 审查人:Zhijie Hou, Michael Paquier 讨论:https://postgr.es/m/CALj2ACVa3oJ9O_wcGd+FtHWZds04dEKcakxphGz5POVgD4wC7Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e665769e6d1e84b6650f53ed297058fc11152f7f
Tom Lane 推送
修复 plpgsql 内存泄漏修复中的 thinko。提交 a6b1f5365 旨在将 CALL 语句的瞬态“目标”列表放置在函数的语句生命周期上下文中,但是我犯了一个错误,使用了 get_eval_mcontext() 而不是 get_stmt_mcontext()。eval_mcontext 属于“简单表达式”基础结构,该结构在事务结束时被销毁。最终效果是,如果被调用的过程执行了 COMMIT,则在具有 OUT 或 INOUT 参数的过程中对另一个过程的 CALL 将失败。根据 Peter Eisentraut 的报告。像之前的补丁一样向后移植到 v11。讨论:https://postgr.es/m/f075f7be-c654-9aa8-3ffc-e9214622f02a@enterprisedb.com https://git.postgresql.org/pg/commitdiff/ea80d8d9437e80de6506dbfe3765d834653312bf
进一步修复 plpgsql 内存泄漏修复中的 thinko。还有第二个 get_eval_mcontext() 调用也应该为 get_stmt_mcontext()。这实际上是无用代码,因为在切换回原始上下文之前不会发生任何有趣的分配,但是我们应该使其与另一个调用保持同步,以防止将来可能出现的错误。讨论:https://postgr.es/m/f075f7be-c654-9aa8-3ffc-e9214622f02a@enterprisedb.com https://git.postgresql.org/pg/commitdiff/5f2e09bcccd771629fb7a2885f8c468ae0f7fb33
在 PQconndefaults() 中公开 channel_binding 的默认值。如果连接选项存在静态默认值,则应在 PQconninfoOptions 数组中显示。Daniele Varrazzo 讨论:https://postgr.es/m/CA+mi_8Zo8Rgn7p+6ZRY7QdDu+23ukT9AvoHNyPbgKACxwgGhZA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/cf61b0734c61d93c62827fe4e44fa2162a533b8e
修复 libpq 的 GSSAPI 加密支持中的错误。此处修复的关键问题是,如果成功建立了 GSSAPI 加密连接,则 pqsecure_open_gss() 会清除 conn->allow_ssl_try,这是一种阻止我们尝试在已加密的连接上隧道传输 SSL 加密的(公认的)临时方法。问题在于,如果我们因身份验证期间的失败而放弃 GSSAPI 连接,我们将不会在下一次使用同一服务器的尝试中尝试 SSL 加密。这可能会导致意外的连接失败,或者在需要加密连接的地方静默获取非加密连接。幸运的是,只有当客户端和服务器在同一 Kerberos 基础结构中持有有效票证时,我们才能成功建立 GSSAPI 加密连接,这是一种相对不常见的环境。尽管如此,这仍然是一个具有潜在安全隐患的非常糟糕的错误。要修复,请不要重置该标志,而是在决定是否尝试启动 SSL 时添加对 conn->gssenc 是否已为 true 的检查。同时,修复 libpq 的 GSSAPI 代码中的一些较小问题: *
在删除尝试的 GSSAPI 连接时,使用 need_new_connection 节,而不是部分重复该代码。这造成的后果很小:AFAICS 它可能只会导致 auth_req_received 或 password_needed 在不应该设置时仍然设置,这不是太有害。 *
修复 pg_GSS_error() 以不重复多次给定的 “mprefix”,并注意 gss_display_status() 的任何失败返回。 *
避免在 pg_GSS_load_servicename() 中不必要的依赖 NI_MAXHOST。根据 Mikael Gustavsson 的报告。向后移植到引入此代码的 v12。讨论:https://postgr.es/m/e5b0b6ed05764324a2f3fe7acfc766d5@smhi.se https://git.postgresql.org/pg/commitdiff/ff6ce9a3a691a96e8e47ed449bc51c5a178e6931
修复后端 GSSAPI 加密支持中的各种问题。GSSAPI 加密检测到的不可恢复的错误不能仅仅用 elog(ERROR) 或 elog(FATAL) 来报告,因为尝试将错误报告发送到客户端可能会导致无限递归或协议同步丢失。相反,使此代码执行 SSL 加密代码长期以来一直在执行的操作,即将此类故障报告给服务器日志(使用 elevel COMMERROR),然后通过返回 errno = ECONNRESET 来假装我们失去了连接。同时,修复关于消息翻译是由 pg_GSS_error() 还是其调用方完成的混乱(后者应该这样做),并使该函数的后端版本的工作方式更像前端版本。在需要之前避免分配 port->gss 结构;我们肯定不需要在 postmaster 中分配它。改进启用 GSS 后 “连接已授权” 消息的日志记录。(作为此操作的一部分,我向后移植了 dc11f31a1 中的代码更改。)使 BackendStatusShmemSize() 考虑由 CreateSharedBackendStatus() 分配的 GSS 相关空间。此遗漏可能会导致 max_connections 设置非常高时出现共享内存不足的问题。删除仅可以在 GSS 加密连接上使用 GSS 身份验证的任意、无意义的限制。改进文档;值得注意的是,记录 libpq 现在优先于 SSL 加密使用 GSS 加密(如果两者都可能)。根据 Mikael Gustavsson 的报告。向后移植到引入此代码的 v12。讨论:https://postgr.es/m/e5b0b6ed05764324a2f3fe7acfc766d5@smhi.se https://git.postgresql.org/pg/commitdiff/622ae4621ece72a9f64b5602c74d7aaf373c1631
改进与 pg_hba.conf 不匹配的连接相关的日志消息。包括有关是否已激活 GSS 加密的详细信息;自从我们添加了 “hostgssenc” 类型 HBA 条目以来,这是相关信息。Kyotaro Horiguchi 和 Tom Lane。向后移植到引入 GSS 加密的 v12。讨论:https://postgr.es/m/e5b0b6ed05764324a2f3fe7acfc766d5@smhi.se https://git.postgresql.org/pg/commitdiff/3995c424984e991b1069a2869af972dc07574c0b
抑制来自 SIGQUIT 关闭的多个报告的日志垃圾信息。当 postmaster 向其子进程发送 SIGQUIT 时,所有子进程都没有真正必要记录该事实;postmaster 已经为此做了一个日志条目,因此添加可能数十或数百个子进程日志条目没有任何价值。因此,让我们引入一个新的 ereport 级别来指定 “WARNING,但永远不要发送到日志”,并将该级别用于这些消息。在提交 7e784d1dc 之前,这样的更改是不可取的,因为如果有人手动对后端进行 SIGQUIT 操作,我们 确实 希望记录它。但是现在,我们可以合理地确定 postmaster 发出的信号和不是 postmaster 发出的信号之间的区别。同时,在 ereport() 之前还清除 error_context_stack,以防止在信号处理程序上下文中调用错误回调。这应该减少在尝试通知客户端时被挂起的可能性。根据 Andres Freund 的建议。讨论:https://postgr.es/m/20201225230331.hru3u6obyy6j53tk@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/1f9158ba48122fa232db955a2ee324eec1848ba9
文档:修复因表格列过宽导致的 PDF 构建警告。向表格 8.27 和 65.1 添加多范围信息导致它们在 PDF 文档构建中开始抛出“超出可用区域”的警告。对于 8.27,调整现有的列宽提示足以解决此问题。对于 65.1,我稍微调整了宽度,但要真正修复它,我必须在表格中的每个逗号后插入一个空格,以便允许在那里发生换行符。(这似乎比插入 &zws;; 实体更容易阅读和维护。)根据 buildfarm 的反馈。https://git.postgresql.org/pg/commitdiff/f20dc2c8dd50a5c738d535205d5d44bff82d3f75
修复 krb_server_keyfile GUC 参数的使用。secure_open_gssapi() 无条件地将 krb_server_keyfile 设置安装为 KRB5_KTNAME,只要它不为空。但是,pg_GSS_recvauth() 仅在 KRB5_KTNAME 尚未设置时才安装它,导致了一个令人不安的不一致:理论上,客户端可能会看到不同的服务器主体名称集,具体取决于他们是否使用 GSSAPI 加密。始终使用 krb_server_keyfile 似乎是正确的做法,因此让这两个地方都这样做。此外,修复 secure_open_gssapi() 缺少对 setenv() 失败的检查 --- 这当然不太可能,但安全关键的操作不应该马虎。此外,改进了相关的文档。此补丁没有处理 secure_open_gssapi() 对 setenv() 的使用,实际上还导致 pg_GSS_recvauth() 也使用它。这名义上违反了项目的可移植性规则,但由于此代码仅在使用 --with-gssapi 构建时才构建,因此我认为没有必要在后向分支中对此采取任何措施。不过,HEAD 将会有一个修复程序。向引入 GSSAPI 加密的 v12 进行反向移植。pg_GSS_recvauth() 中的可疑行为可以追溯到更早的版本,但它没有任何不一致之处,因此就这样吧。讨论:https://postgr.es/m/2187460.1609263156@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/860fe27ee1e2a4a1c36c2f874c37656533cccce9
优先使用 setenv() 而不是 putenv()。自 2001 年以来,我们一直使用 putenv() 并避免使用 setenv(),理由是后者不可移植且不在 POSIX 中。但是,POSIX 在同一年添加了它,而现在情况已经逆转:setenv() 可能比 putenv() 更具可移植性,因为 POSIX 现在将后者视为非核心函数。而且 setenv() 的语义也更清晰。因此,让我们反转旧策略。此提交为任何掉队者添加了一个简单的 src/port/ setenv() 实现(我们在 buildfarm 中有一个,但如果该代码在实际使用中从未使用过,我不会感到惊讶)。更重要的是,扩展 win32env.c 以便也支持 setenv()。然后,将 putenv() 的用法替换为 setenv(),并删除一些 setenv() 模仿者的临时实现。此外,调整我们的 src/port/ unsetenv() 实现以遵循 POSIX 规范,即它返回一个错误指示符,而不是像古老的 BSD 惯例那样返回 void。我认为没有必要让所有调用点都检查错误,但是可移植性存根应该与实际实践相符。讨论:https://postgr.es/m/2065122.1609212051@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/7ca37fb0406bc2cbbd864a2ffdbdb4479e338c0c
对 pg_upgrade 跨版本测试进行更多修复。提交 7ca37fb04 从 regress.so 库中删除了 regress_putenv,因此重新加载依赖于该函数的 SQL 函数将不起作用。与 52202bb39 类似地修复。根据 buildfarm 的反馈。https://git.postgresql.org/pg/commitdiff/091866724cb3ee7251fa56e2517248c4b7796ca8
文档:详细说明日期/时间类型的比较行为。日期/时间数据类型之间的跨类型比较的行为实际上没有在任何地方解释。如果您认识到其他地方有关数据类型转换的注释的适用性,您可能会推断出它,但是似乎值得明确的文档说明。根据 Dana Burd 的错误 #16797。讨论:https://postgr.es/m/16797-f264b0b980b53b8b@postgresql.org https://git.postgresql.org/pg/commitdiff/319f4d54e82d15d4a0c3f4cc1328c40dba024b5c
文档:改进对不带时区的 timestamp 的 EXTRACT(EPOCH) 的解释。尝试更清楚地说明这里实际发生的是什么计算。根据 Dana Burd 的错误 #16797。讨论:https://postgr.es/m/16797-f264b0b980b53b8b@postgresql.org https://git.postgresql.org/pg/commitdiff/4d3f03f42227bb351c2021a9ccea2fff9c023cfc
Alexander Korotkov 推送
修复 multirange_bsearch_match() 的比较函数中的错误。两个函数 multirange_range_overlaps_bsearch_comparison() 和 multirange_range_contains_bsearch_comparison() 包含返回 -1 而不是 1 的错误。此提交修复了这些错误并添加了相应的回归测试。https://git.postgresql.org/pg/commitdiff/a5b81b6f0006ea0b502780ce7f73d295a225842c
实现用于检查范围是否包含多范围的运算符。我们有用于检查多范围是否包含范围的运算符,但没有相反的运算符。此提交通过添加两个新运算符来提高运算符集的完整性:@> (anyrange,anymultirange) 和 <@(anymultirange,anyrange)。Catversion 已被提升。https://git.postgresql.org/pg/commitdiff/4d7684cc754f312aee468abb83ca4f7da94b30a3
改进内部多范围函数的签名。include/utils/multirangetypes.h 中公开了一组 *_internal()
函数。此提交从两个方面改进了这些函数的签名。*
在适用情况下添加 const 修饰符。*
将多范围类型缓存参数替换为范围类型缓存参数。多范围类型缓存仅用于查找范围类型缓存。同时,范围类型缓存更容易被调用者找到。https://git.postgresql.org/pg/commitdiff/d1d61a8b23b604faf797695eeacaa5da4fe64762
向现有的范围 GiST 索引添加多范围匹配支持。6df7a9698b 引入了一组范围和多范围之间的运算符。现有的范围 GiST 索引可以轻松支持其中的大多数。此提交向现有的范围 GiST 索引添加了对新运算符的支持。新运算符驻留在与现有运算符相同的策略编号中。使用子类型确定适当的检查函数。Catversion 已被提升。https://git.postgresql.org/pg/commitdiff/db6335b5b1d6654b0e3104f36817800d127c1c91
修复 @> (anymultirange, anyrange) 运算符的选择性估计。尝试获取 @> (anymultirange, anyrange) 运算符的选择性估计导致了 buildfarm 中的错误,因为此运算符在 calc_hist_selectivity() 的 switch() 中丢失了。修复该问题,并使回归测试可靠地检查 (多)范围的选择性估计是否没有下降。以前,我们是否测试 (多)范围的选择性估计取决于 autovacuum 是否设法与测试同时进行收集。报告者:Michael Paquier 讨论:https://postgr.es/m/X%2BwmgjRItuvHNBeV%40paquier.xyz https://git.postgresql.org/pg/commitdiff/62097a4cc8c725fa86d3170396a8f30609acd0d3
重构 multirange_in()。此提交保留了 multirange_in() 的逻辑,但使其更清楚地说明了正在发生的事情。此外,此提交修复了 buildfarm 发现的编译器警告。报告者:Tom Lane 讨论:https://postgr.es/m/2246043.1609290699%40sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/16d531a30a120d13cc3b460fba6570024a1fcfa8
Noah Misch 推送
在 pg_upgrade 跨版本测试中,处理缺少 oldstyle_length() 的情况。这足以测试 v12 -> v13;某些其他版本对需要更多更改。反向移植到删除了该函数的 v10。https://git.postgresql.org/pg/commitdiff/52202bb396b1e96c43bfd767d6e434b1c6fd2ae1
在 pg_upgrade 跨版本测试中,处理后缀运算符。提交 1ed6b895634ce0dc5fd4bd040e87252b32182cba 取消了对它们的支持,因此在升级之前从回归数据库中删除它们。这对于测试 v13 -> v14 升级是必要的但不足够的。讨论:https://postgr.es/m/449144.1600439950@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/fa744697c79189a661f802d9a979d959b4454df0
Amit Kapila 推送
*
begin_prepare *
filter_prepare * prepare *
commit_prepared *
rollback_prepared *
stream_prepare 其中大部分是对现有方法的简单扩展,语义上的区别在于事务尚未提交,并且可能会在稍后中止。到目前为止,两阶段事务在订阅者上被转换为常规事务,并且 GID 没有转发给它。没有任何两阶段命令被传达给订阅者。此补丁为逻辑解码插件提供了通知两阶段命令的基础设施,例如带有相应 GID 的 PREPARE TRANSACTION、COMMIT PREPARED 和 ROLLBACK PREPARED 命令。这也扩展了“test_decoding”插件,实现了这些新方法。此提交只是添加了这些新的 API,即将到来的“允许在 ReorderBuffer 中在准备时进行解码”的补丁将使用这些 API。作者:Ajin Cherian 和 Amit Kapila,基于 Nikhil Sontakke 和 Stas Kelvich 先前的工作。审核者:Amit Kapila、Peter Smith、Sawada Masahiko 和 Dilip Kumar 讨论:https://postgr.es/m/02DA5F5E-CECE-4D9C-8B4B-418077E2C010@postgrespro.ru https://postgr.es/m/CAMGcDxeqEpWj3fTXwqhSwBdXd2RS9jzwWscO-XbeCfso6ts3+Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/0aa8a01d04c8fe200b7a106878eebc3d0af9105cPeter Geoghegan 推送
修复索引删除最新移除XID的错误。用于在REDO例程中生成恢复冲突的逻辑在确定最新移除的XID时存在微妙的错误。它未能跟踪HOT链中的链接,因此在某些情况下未能考虑所有相关的堆元组头。为了修复这个问题,扩展处理LP_REDIRECT行指针的循环,使其也能处理HOT链。这个新版本的循环松散地基于heap_prune_chain()中类似的循环。这个错误的潜在影响可能相当有限,因为水平线代码必然会处理由LP_DEAD设置的索引元组指向的堆元组。设置LP_DEAD索引元组(例如在kill_prior_tuple机制中)的过程与机会性地修剪指向的堆元组高度相关。另外,生成恢复冲突的问题通常是在索引元组的LP_DEAD位最初设置后的一段时间才出现,这与堆修剪不同,堆修剪是在修剪操作时生成latestRemovedXid(堆修剪没有延迟的“潜在页面分割”风格的处理,它会懒惰地产生冲突)。仅回溯到Postgres 12,这是此逻辑在原始执行期间运行的第一个版本(在commit 558a9165e08之后)。索引的latestRemovedXid机制自10多年前首次出现以来(在commit a760893d中)就存在相同的错误,但是现在回溯到所有支持的版本似乎从整体上来说不是一个好主意。在恢复期间运行新的改进代码似乎有风险,特别是考虑到没有收到来自实际应用的任何投诉。作者:Peter Geoghegan pg@bowt.ie 讨论:https://postgr.es/m/CAH2-Wz=Eib393+HHcERK_9MtgNS7Ew1HY=RDC_g6GL46zM5C6Q@mail.gmail.com 回溯:12- https://git.postgresql.org/pg/commitdiff/422881744997417944634a7f84af7a66a608de9a
在持有缓冲区锁的情况下获取堆页的最大偏移量。进一步考虑后,似乎最好在获取页面的缓冲区锁之后调用PageGetMaxOffsetNumber()。这实际上不应该有任何影响,但是这样做更清晰。是对commit 42288174的后续改进。回溯:12-,与commit 42288174一样 https://git.postgresql.org/pg/commitdiff/32d6287d2eef6b6a4dde07e0513f3e4f321792ad
Noah Misch 发送了一个补丁,将类似的算法合并到 roles_is_member_of() 中。
Vigneshwaran C 发送了一个基于现有补丁的补丁,用于并行化 COPY 的部分,将查找行边界的任务委派给工作进程。
Bharath Rupireddy 发送了一个补丁,实现了 REFRESH MATERIALIZED VIEW 的 EXPLAIN [ANALYZE]。
Masahiko Sawada 发送了另一个修订版的补丁,添加新的 FDW API 以支持 2PC,引入全局事务管理器,并在 PostgreSQL FDW 中实现这些 FDW API。
Peter Geoghegan 发送了另一个修订版的补丁,用于修改 btvacuumstrategy() 的自底向上索引删除。
Bharath Rupireddy 发送了另外两个修订版的补丁,使得 CTAS 可以使用并行插入。
Luc Vlaming 发送了两个修订版的补丁,用于懒加载地生成 JIT IR 代码。这个问题出现在以下情况:对于分区表,不必要地生成了大量 JIT IR 代码,其中许多分区的 IR 从未执行,因为这些分区被修剪了。
Thomas Munro 发送了另一个修订版的补丁,使得可以使用并行哈希来执行 Full 和 Right JOIN。
Andrey Borodin 发送了另一个修订版的补丁,将 LZ4 添加为 WALL FPI 的一种可能的压缩方案。
David Rowley 发送了另外两个修订版的补丁,用于减少在 Windows 上构建 contrib 模块的特殊情况的数量。
Noah Misch 发送了一个补丁,用于转储公共模式的所有权和安全标签。
Paul Martinez 发送了一个补丁,用于简化 user.c 中的权限检查逻辑。
Bharath Rupireddy 发送了另一个修订版的补丁,允许在 REFRESH MATERIALIZED VIEW 的规划中使用并行模式。
Thomas Munro 发送了另一个修订版的补丁,用于在共享内存中跟踪关系大小,此功能由新的 GUC smgr_shared_relation 控制,它限制了新引入的 SMgrSharedRelation 对象池的数量,并为 smgrnblocks() 提供了无锁的快速路径。
Peter Smith 发送了另一个修订版的补丁,允许 table-sync worker 使用多个事务。
Andrey V. Lepikhov 发送了另一个修订版的补丁,通过向 FDW API 添加三个新例程来加速对具有外部分区的表的 COPY 操作:BeginForeignCopy、EndForeignCopy 和 ExecForeignCopy,并在 PostgreSQL FDW 中添加相同例程。
Andrey Borodin 发送了另一个修订版的补丁,重新组织 pglz 压缩代码,使其更高效:将宏函数转换为常规函数以提高可读性,使用具有 uint16 索引而不是指针的更紧凑的哈希表,避免哈希表中的 prev 指针,并在搜索中使用 4 字节比较而不是 1 字节比较。
Justin Pryzby 发送了另一个修订版的补丁,实现了 CREATE TABLE (LIKE .. INCLUDING ACCESS METHOD)。
Luc Vlaming 发送了另一个修订版的补丁,允许部分 UNION ALL,从而改进了并行子查询的成本计算。
Rui Zhao 发送了另一个修订版的补丁,重构了在 RelationIdGetRelation 之后调用 RelationClose 的方式。
Peter Eisentraut 发送了另一个修订版的补丁,实现了来自过程的动态结果集。
David Fetter 发送了两个修订版的补丁,将 popcount 公开给 SQL。
Joe Wildish 发送了另一个修订版的补丁,允许在 FOR EACH STATEMENT 触发器的 WHEN 表达式中使用查询。
David Fetter 发送了另一个修订版的补丁,使得可以从 initdb 设置 pg_hba.conf 参数。
Greg Sabino Mullane 发送了另一个修订版的补丁,让 psql 的 \df 通过输入类型帮助选择函数。
David Fetter 和 Krasiyan Andreev 交换了补丁,以实现窗口函数的 NULL 处理。
Dmitry Dolgov 发送了另外三个修订版的补丁,将通用类型下标基础设施用于 JSONB。
David Fetter 发送了一个 WIP 补丁,用于记录钩子系统。
Michael Banck 发送了一个补丁,添加了一个新的 PGC_ADMINSET guc 上下文和 pg_change_role_settings 默认角色,为 GUC 上下文在 “超级用户” 和 “用户” 之间创建了一个空间。
Álvaro Herrera 发送了另一个修订版的补丁,实现了 MERGE。
Peter Geoghegan 发送了另一个修订版的补丁,向下传递一个 “逻辑上未更改的索引” 提示,并使用它来实现自底向上的索引删除。
Soumyadeep Chakraborty 发送了另一个修订版的补丁,向 table AM API 添加一个接受列投影列表的例程。
Bruce Momjian 和 Michaël Paquier 交换了补丁,将其他十六进制函数移动到源代码树中的公共位置。
Etsuro Fujita 发送了另外两个修订版的补丁,实现了 postgres_fdw 节点上的异步追加。
David Fetter 发送了另一个修订版的补丁,实现了 TID 的范围扫描。
Pavel Stěhule 发送了另一个修订版的补丁,用于减少 PL/pgSQL 中非原子模式下 CALL 语句的执行开销。
Pavel Stěhule 发送了另一个修订版的补丁,实现了模式变量。
Josef Šimánek 发送了另一个修订版的补丁,添加了一个带有 COPY 进度报告的 pg_stat_progress_copy 视图。
Pavel Stěhule 发送了一个补丁,使得可以在 PL 中编写窗口函数,因为它们目前仅限于 C。
Luc Vlaming 发送了一个补丁,通过为每个后端分配一组独立的、本地于该后端的块,从而提高堆表批量加载的效率,并通过移动逻辑来减少锁定分区缓冲区所花费的时间,使每组 128 个块使用相同的缓冲区分区,然后添加一个自定义函数来专门为扩展获取缓冲区块,同时保持之前的分区锁,从而减少我们在互斥锁上花费的时间。
Michael Banck 发送了一个补丁,将 --data-checksums 移动到 initdb 的 --help 输出中的公共选项。
Thomas Munro 发送了一个补丁,为缺少 pthread barrier 的平台向 pgbench 添加 pthread barrier 模拟。