PostgreSQL 14 的下一个 Commitfest 已经开始。如果您是补丁的作者,请务必跟进审查,以便您的贡献可以准备好提交。
pgbitmap 0.93,一个空间优化的非稀疏位图类型,已发布。https://pgxn.org/dist/pgbitmap/
Pgpool-II 4.2 beta1 https://www.pgpool.net/docs/42/en/html/release-4-2-0.html
pglogical 2.3.3,一个基于逻辑 WAL 的 PostgreSQL 复制系统,已发布。https://www.2ndquadrant.com/en/resources/pglogical/release-notes/
pg_activity 1.6.2,一个类似 top 的 PostgreSQL 服务器活动监控应用程序,已发布。https://github.com/dalibo/pg_activity/releases/tag/v1.6.2
pg_dumpbinary 2.3,一个用于以二进制格式转储 PostgreSQL 数据库的程序,已发布。https://github.com/lzlabs/pg_dumpbinary/releases/
pgCenter 0.6.6,一个用于观察和排除 PostgreSQL 故障的命令行管理工具,已发布。https://github.com/lesovsky/pgcenter/releases/tag/v0.6.6
Planet PostgreSQL:http://planet.postgresql.org/
本周的 PostgreSQL 每周新闻由 David Fetter 为您带来
请在太平洋标准时间下午 3:00 之前(PST8PDT)将新闻和公告提交至 david@fetter.org。
David Rowley 推送
防止关系中过大和 NaN 行估计。给定一个具有足够连接的查询,查询计划器在将行估计值与连接选择性相乘后,估计的行数可能会超出双精度数据类型的限制并变为无穷大。为了指示需要多极端的案例才能命中这种情况,报告的特定示例案例需要 379 个连接到一个没有任何统计信息的表,这导致 1.0/DEFAULT_NUM_DISTINCT 用于连接选择性。这最终导致行估计变为无穷大,并导致 initial_cost_mergejoin() 中出现断言失败,其中无穷大行估计值乘以 0.0 的 outerstartsel,导致 NaN。失败的断言验证了 NaN <= Inf,这是错误的。为了解决这个问题,我们使用 clamp_row_est() 将行估计值上限为 1e100。这个值被认为足够低,由此产生的成本将保持在双精度类型可以表示的范围内。除了修复失败的断言之外,这也带来了一个额外的好处,即使得 add_path() 仍然可以接收正确的数值作为成本,这使得它可以在极端情况下(例如上面描述的情况)确定更便宜的路径时做出更明智的选择。此外,我们还摆脱了连接成本函数中的 isnan() 检查。最初触发添加这些检查的实际情况从未进入邮件列表。看起来添加到 clamp_row_est() 的新代码将导致那些检查变得冗余,因此只需删除它们。相当无害的断言失败问题也存在于 backbranch 中,但是,将在那里应用更精简的修复。报告人:Onder Kalaci 审核人:Tom Lane 讨论:https://postgr.es/m/DM6PR21MB1211FF360183BCA901B27F04D80B0@DM6PR21MB1211.namprd21.prod.outlook.com https://git.postgresql.org/pg/commitdiff/a90c950fc7fd8796daa8c7948e7046bceb272894
优化一些 list_delete_ptr 调用。在一些地方,我们调用 list_delete_ptr() 来从列表中删除一些元素。在许多这些地方,我们知道,或者只需付出很小的额外努力就可以知道我们需要删除的 ListCell 的索引。在这里,我们将所有这些地方都更改为使用以下之一:list_delete_nth_cell()、foreach_delete_current() 或 list_delete_last()。这些方法中的每一种都省去了遍历列表以通过其指针值搜索要删除的元素的过程。通过这样做可以获得一些小的性能提升,但在一般情况下,这些列表都不可能非常大,因此查找可能无论如何都不那么昂贵。但是,某些调用位于相当热的代码路径中,例如 process_equivalence()。因此,任何小的收益都是有用的。作者:Zhijie Hou 和 David Rowley 讨论:https://postgr.es/m/b3517353ec7c4f87aa560678fbb1034b@G08CNEXMBPEKD05.g08.fujitsu.local https://git.postgresql.org/pg/commitdiff/e7c2b95d37a2b9c01367f7ccc55703555b39c81c
修复函数头注释中不正确的参数名称。作者:Zhijie Hou 讨论:https://postgr.es/m/14cd74ea00204cc8a7ea5d738ac82cd1@G08CNEXMBPEKD05.g08.fujitsu.local 回溯到:12,引入错误的地方 https://git.postgresql.org/pg/commitdiff/e83c9f913c6197586af8ac53c1d3652db15a3c91
Michaël Paquier 推送
修复 pgcrypto 中潜在的内存泄漏。在分配 EVP 上下文时,可能会泄漏一些由 OpenSSL 直接分配的内存,如果分配上下文初始化失败,PostgreSQL 将会丢失对这些内存的跟踪。可以使用 EVP_MD_CTX_destroy() 完成清理。请注意,EVP API 自 OpenSSL 0.9.7 起就已存在,并且自 ce9b75d 起(代码在 10~ 时被 9b7cd59a 删除)我们在树中具有旧版本的等效实现。但是,在 9.5 和 9.6 中,当使用 OpenSSL 0.9.6 或更旧版本构建树时,现有代码使用 EVP_MD_CTX_destroy() 和 EVP_MD_CTX_create() 而没有等效的实现,这意味着自 e2838c5 引入以来,此代码实际上在使用此类版本时会损坏。由于我们没有收到任何关于此的投诉,因此在 9.5 和 9.6 中似乎没有必要为此烦恼,因此为了简单起见,我将其省略了。作者:Michael Paquier 讨论:https://postgr.es/m/20201015072212.GC2305@paquier.xyz 回溯到:9.5 https://git.postgresql.org/pg/commitdiff/ca2a12c935f75fb56c3b14527d6f2ff6f549ea85
审查 PerfectHash.pm 生成的代码格式。80f8eb7 已向规范化快速检查头添加了一些由 PerfectHash.pm 生成的代码,这些代码与此存储库的 gitattributes 设置不兼容,因为对于表中行的第一个元素,空格后跟一组制表符。与其向 gitattributes 添加新的异常,不如重新设计生成的格式,以便使用空格进行右填充而不是左填充。这使得生成的表格在列的集合中保持可读的形状,从而无需更新 gitattributes。报告人:Peter Eisentraut 作者:John Naylor 讨论:https://postgr.es/m/d601b3b5-a3c7-5457-2f84-3d6513d690fc@2ndquadrant.com https://git.postgresql.org/pg/commitdiff/19ae53c92d5f5bdfb971d560a562e84c5f65c8b0
提高后端中 Unicode {de,re}decomposition 的性能。这用两个完美的哈希函数替换了后端代码中用于组合和分解的现有二进制搜索,但代价是后端代码的二进制文件稍大(libpgcommon_srv.a 中为 35kB)。根据进行的测量,这使 NFC 和 NFKC 转换的重组和分解速度提高了 30~40 倍,而所有其他操作至少快了 40%。这不如 libicu 的性能“好”,但根据 Daniel Verite 的反馈,它大大缩小了差距。分解表保持不变,用于前端代码中的二进制搜索,我们在那里更关心诸如 libpq 之类的库的大小,而不是性能,因为它仅在与 SCRAM 身份验证相关的代码路径中涉及。因此,请注意,用于重组的完美哈希函数需要使用新的反向查找数组返回到现有的分解表。即使使用 --enable-debug,所有前端可交付文件的大小也保持不变,包括 libpq。作者:John Naylor 审核人:Michael Paquier、Tom Lane 讨论:https://postgr.es/m/CAFBsxsHUuMFCt6-pU+oG-F1==CmEp8wR+O+bRouXWu6i8kXuqA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/783f0cc64dcc05e3d112a06b1cd181e5a1ca9099
在 psql 中为 ALTER TABLE .. FORCE ROW LEVEL SECURITY 添加选项卡补全。这完成了 FORCE 和 NO FORCE 选项,NO INHERIT 需要进行一些小的调整。作者:Li Japin 讨论:https://postgr.es/m/15B10F9F-5847-4F5E-BD66-8E25AA473C95@hotmail.com https://git.postgresql.org/pg/commitdiff/0b46e82c06b0c4b0dc6a94a890d23945ebf720fd
修复 --enable-coverage 和新的 unicode {de,re}decomposition 代码的问题。genhtml 使用此新代码生成以下警告:警告:/path/src/common/unicode_norm.c:102 处的函数数据不匹配 HTML 覆盖率报告关心源文件中定义的函数的唯一性,忽略任何关于 CFLAGS 的假设。783f0cc 引入了 get_code_entry() 的重复定义,导致报告中出现警告和潜在的一些不正确的数据。这会重构代码,以便该代码只有一个函数声明,从而修复警告。在 783f0cc 中的疏忽。报告人:Tom Lane 作者:Michael Paquier 审核人:Tom Lane 讨论:https://postgr.es/m/207789.1603469272@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/2771fcee18be0b86d2e008add20f73d175e06e90
扩展 PageIsVerified() 以处理更多自定义选项。这对于检查关系页面而无需将页面加载到共享缓冲区中非常有用,并且有两种情况可以使用它:基本备份中的页面验证和在线的、锁定安全的版本。使用一个宏与过去的版本保持兼容,该宏使用与原始版本兼容的选项集调用新的扩展例程。从同一作者的较大补丁中提取。作者:Anastasia Lubennikova 审核人:Michael Paquier、Julien Rouhaud 讨论:https://postgr.es/m/608f3476-0598-2514-2c03-e05c7d2b0cbd@postgrespro.ru https://git.postgresql.org/pg/commitdiff/d401c5769ef6aeef0a28c147f3fb5afedcd59984
添加 CheckBuffer() 以在不加载共享缓冲区的情况下检查磁盘上的页面。CheckBuffer() 被设计为一个并发安全函数,能够在不将关系页面加载到共享缓冲区的情况下对关系页面运行健全性检查。该操作是使用对共享缓冲区映射哈希表中涉及的分区进行锁定,以及对缓冲区本身进行 I/O 锁定来完成的,从而避免了因任何并发活动而导致误报的风险。此函数的主要用途是检测关系页面的磁盘损坏。如果在共享缓冲区中找到页面,则会检查磁盘上的页面是否未脏(如果脏,后续的检查点无论如何都会刷新页面的有效版本),因为页面可能已经在共享缓冲区中存在很长时间,其磁盘版本已损坏。如果例如主机被拔掉,这种情况可能会导致集群损坏。如果未在共享缓冲区中找到页面,则会检查其磁盘状态。PageIsVerifiedExtended() 用于应用与页面加载到共享缓冲区时相同的健全性检查。此函数将由即将推出的补丁使用,该补丁能够使用 SQL 函数检查磁盘上关系页面的状态。作者:Julien Rouhaud、Michael Paquier 审核人:Masahiko Sawada 讨论:https://postgr.es/m/CAOBaU_aVvMjQn=ge5qPiJOPMmOj5=ii3st5Q0Y+WuLML5sR17w@mail.gmail.com https://git.postgresql.org/pg/commitdiff/c780a7a90a8e7b074405ea2007e34f94e227e695
添加 pg_relation_check_pages() 来检查关系(relation)的磁盘页面。它利用了 c780a7a 中引入的 CheckBuffer(),添加了一个 SQL 包装器,能够对关系的所有页面进行检查。默认情况下,会检查关系的所有 fork 类型,也可以只检查给定的关系 fork。请注意,如果输入的 relation 没有物理存储或为临时关系,则不会生成错误,从而可以在与简单的 pg_class 扫描结合使用时进行全数据库检查。这不仅限于启用数据校验和的集群,因为没有数据校验和的集群仍然可以使用页面头或对于充满零的页面进行检查。此函数返回一组元组,其中包括: - 检测到损坏页面的物理文件(不带段号,因为段号可能取决于访问方法(AM),对于堆表,可以从块号中推断出来)。使用相对于 PGPATH 的相对路径。- 损坏页面的块号。默认情况下,只有超级用户才能访问此函数,但可以向其他用户授予执行权限。此处引入的功能仍然是最低限度的,可以进行更多改进,例如: - 添加开始和结束块号以对一系列块运行检查,这仅在检查一种 fork 类型时适用。- 添加一些进度报告。
节流,在函数输入中配置参数,或可能使用一些基于成本的 GUC。在主回归测试套件中为积极案例添加了回归测试,并为涉及模拟页面损坏的情况添加了 TAP 测试。升级目录版本。作者:Julien Rouhaud, Michael Paquier 审核人:Masahiko Sawada, Justin Pryzby 讨论:https://postgr.es/m/CAOBaU_aVvMjQn=ge5qPiJOPMmOj5=ii3st5Q0Y+WuLML5sR17w@mail.gmail.com https://git.postgresql.org/pg/commitdiff/f2b883969557f4572cdfa87e1a40083d2b1272e7
在 pg_relation_check_pages() 中使用正确的 GetDatum()。UInt32GetDatum() 被使用了,但结果需要 Int64GetDatum()。这是 f2b8839 中的疏忽。根据 buildfarm 成员 florican 的报告。讨论:https://postgr.es/m/1226629.1603859189@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/ce7f772c5e6066e0bbafea5759e652c9757c8e6b
修复 pg_relation_check_pages() 中 pfree() 的错误放置。当多个页面被认为是损坏并在 SRF 中报告时,这会导致函数崩溃。由 Noriyoshi Shinoda 报告。讨论:https://postgr.es/m/TU4PR8401MB11523D42C315AAF822E74275EE170@TU4PR8401MB1152.NAMPRD84.PROD.OUTLOOK.COM https://git.postgresql.org/pg/commitdiff/60a51c6b32960822d3987ea7d2816c65bdbcb314
在 pgcrypto 中为加密失败添加错误代码。PXE_DECRYPT_FAILED 已经存在用于解密错误,而加密的等效错误代码不存在。对于 OpenSSL,有一个代码路径处理此类失败,但它使用了 PXE_ERR_GENERIC,这是不一致的。此更改将此代码路径切换为使用新的错误 PXE_ENCRYPT_FAILED,而不是 PXE_ERR_GENERIC,使加密使用的代码与解密更加一致。作者:Daniel Gustafsson 讨论:https://postgr.es/m/03049139-CB7A-436E-B71B-42696D3E2EF7@yesql.se https://git.postgresql.org/pg/commitdiff/aecaa04418f39c32adb3dbf91c4aa7f6e175f01c
在 REINDEX CONCURRENTLY 中保留 pg_statistic 中的索引数据。在运行 REINDEX CONCURRENTLY 后,与索引关联的统计信息丢失了,而非并发情况则正确地保留了这些信息。并发和非并发操作对于最终用户来说需要保持一致,而丢失的统计信息将强制等待新的 analyze 发生,这可能需要一些时间,具体取决于现有 autovacuum 工作程序的活动。此问题通过将与旧索引关联的 pg_statistic 中的任何现有条目复制到新索引来解决。请注意,此复制已经使用统计收集器中的索引数据完成。由 Fabrízio de Royes Mello 报告。作者:Michael Paquier, Fabrízio de Royes Mello 审核人:Justin Pryzby 讨论:https://postgr.es/m/CAFcNs+qpFPmiHd1oTXvcPdvAHicJDA9qBUSujgAhUMJyUMb+SA@mail.gmail.com 向后移植到:12 https://git.postgresql.org/pg/commitdiff/b17ff07aa3eb142d2cde2ea00e4a4e8f63686f96
Amit Kapila 推送
更改 Vacuum 的 PARALLEL 选项的文档。并行执行 vacuum 操作时选择并行工作程序的数量的规则没有明确指定。由 Peter Eisentraut 报告。作者:Amit Kapila 向后移植到:13,该功能是在 13 中引入的 讨论:https://postgr.es/m/36aa8aea-61b7-eb3c-263b-648e0cb117b7@2ndquadrant.com https://git.postgresql.org/pg/commitdiff/560d260d7852dc54a8c587c1b388843e8c433bc8
更改 pg_stat_replication_slots 视图中的属性名称。在 pg_stat_replication_slots 视图中将属性“name”更改为“slot_name”,使其更清晰,这样我们将与其他地方(例如 pg_stat_wal_receiver 视图)保持一致,在这些地方我们显示相同的属性。顺便一提,修复了相关代码中一个宏的拼写错误。升级 catversion,因为我们也修改了目录中的名称。由 Noriyoshi Shinoda 报告。作者:Noriyoshi Shinoda 审核人:Sawada Masahiko 和 Amit Kapila 讨论:https://postgr.es/m/CA+fd4k5_pPAYRTDrO2PbtTOe0eHQpBvuqmCr8ic39uTNmR49Eg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/03d51b776d88badbeb4452c1ab452feb78dce36a
更新 pg_stat_replication_slots 视图中溢出计数器的描述。这是为了使溢出计数器的描述更清晰。作者:Amit Kapila 审核人:Sawada Masahiko 讨论:https://postgr.es/m/CA+fd4k5_pPAYRTDrO2PbtTOe0eHQpBvuqmCr8ic39uTNmR49Eg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/2f0760c9ff827bb3d23ee327e6b46038000c7ef9
pg_stat_replication_slots 视图中溢出计数器描述的细微改进。根据 Justin Pryzby 的建议。讨论:https://postgr.es/m/CA+fd4k5_pPAYRTDrO2PbtTOe0eHQpBvuqmCr8ic39uTNmR49Eg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/9e0f87a4955ede0769d2f9a93171145b6ddab901
跟踪来自 ReorderBuffer 的更改流的统计信息。这添加了关于从 ReorderBuffer 流向解码输出插件的事务的统计信息。用户可以查询 pg_stat_replication_slots 视图来检查这些统计信息,并调用 pg_stat_reset_replication_slot 来重置特定槽的统计信息。用户可以在 pg_stat_reset_replication_slot 中传递 NULL 来重置所有槽的统计信息。提交 9868167500 添加了捕获槽统计信息的基本基础结构,此提交扩展了统计信息收集器以跟踪关于槽的额外信息。升级 catversion,因为我们在目录条目中添加了新列。作者:Ajin Cherian 和 Amit Kapila 审核人:Sawada Masahiko 和 Dilip Kumar 讨论:https://postgr.es/m/CAA4eK1+chpEomLzgSoky-D31qev19AmECNiEAietPQUGEFhtVA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8e90ec5580d5345fef31005d7cc2215ba2125070
Peter Eisentraut 推送
改进空白。SQL 文件不一致地使用了制表符和空格的混合。将所有内容转换为空格并相应地调整缩进。https://git.postgresql.org/pg/commitdiff/afa0d53d4de6d2f43fbc0a76c88dceb22ba65e86
避免 shm_mq 中的无效分配大小错误。在 shm_mq_receive() 中,由于增加缓冲区大小的方式,巨大的有效负载可能会触发不合理的“无效内存分配请求大小”错误。添加错误检查(记录上限)并通过将分配大小限制为 MaxAllocSize 来避免错误。作者:Markus Wanner markus.wanner@2ndquadrant.com 讨论:https://postgresql.ac.cn/message-id/flat/3bb363e7-ac04-0ac4-9fe8-db1148755bfa%402ndquadrant.com https://git.postgresql.org/pg/commitdiff/26ec6b5948a73d0e07ed9435ee4554594acdf34f
修复 Windows/MinGW 上的 -Wcast-function-type 警告。在 de8feb1f3a23465b5737e8a8c160e8ca62f61339 之后,仍然存在一些仅在使用 Windows 上的 GCC 时才可见的警告。也修复这些警告。请注意,ecpg 测试源文件不使用完整的 pg_config.h,因此我们不能在那里使用 pg_funcptr_t,而必须使用长方式。https://git.postgresql.org/pg/commitdiff/8a58347a3c10126ce9eb38872a46c55e91faa174
删除过时的 ifdefs。提交 8dace66e0735ca39b779922d02c24ea2686e6521 为许多 errno 符号添加了 #ifdef,因为它们在 Windows 上不存在。后来,提交 125ad539a275db5ab8f4647828b80a16d02eabd2 为其中一些符号添加了替换的 #define。因此,第一个提交中的某些更改被第二个提交变成了死代码,现在可以删除。讨论:https://postgresql.ac.cn/message-id/flat/6dee8574-b0ad-fc49-9c8c-2edc796f0033@2ndquadrant.com https://git.postgresql.org/pg/commitdiff/555eb1a4f0114e1c4017093fe840045dde1ed9ea
在适当的时候在 Perl 代码中使用 croak 而不是 die。https://git.postgresql.org/pg/commitdiff/f8721bd752790859df747905bc44fb5ad8dbf07d
doc: 修复列表中协议消息的顺序。AuthenticationGSSContinue 和 AuthenticationSSPI 的顺序被交换了,基于其他 Authentication* 协议消息按子代码顺序列出的情况。https://git.postgresql.org/pg/commitdiff/83d727e5b23c43f3fb7221963ddec24277c1126f
doc: 修复列表中协议消息的顺序。将 GSSENCRequest 移动到正确的字母顺序位置。https://git.postgresql.org/pg/commitdiff/8fed2eadb8558185d162cc7fd09192c2e10b915f
使过程 OUT 参数与 JDBC 一起工作。JDBC 驱动程序发送类型为 void 的 OUT 参数。当调用函数时,这很有意义,以便在 ParseFuncOrColumn() 中忽略这些参数。对于过程调用,我们希望将它们视为未知类型。审核人:Andrew Dunstan andrew [AT] dunslane.net 讨论:https://postgresql.ac.cn/message-id/flat/d7e49540-ea92-b4e2-5fff-42036102f968%402ndquadrant.com https://git.postgresql.org/pg/commitdiff/9213462c539e6412fe0498a7f8e20b662e15c4ec
修复枚举 errdetail 以提及字节,而不是字符。枚举标签长度以字节为单位,而不是字符。作者:Ian Lawrence Barwick barwick [AT] gmail.com 审核人:Julien Rouhaud rjuju123 [AT] gmail.com 讨论:https://postgresql.ac.cn/message-id/flat/CAB8KJ=itZEJ7C9BacTHSYgeUysH4xx8wDiOnyppnSLyn6-g+Bw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/0525572860335d050a1bea194a5278c8833304d1
添加 select_common_typmod() 函数。它与 select_common_type() 和 select_common_collation() 函数配套使用。之前,类型修饰符(Typmod)在多个地方都是使用手写代码逻辑进行组合的。select_common_typmod() 函数中的逻辑并没有什么特别之处,但它可以使一些位置的代码更加简洁易读,而且将来如果需要,我们还可以做更复杂的事情。作为一个小的增强,假设集聚合(hypothetical-set aggregates)的直接参数和聚合参数的类型统一现在也使用这个新函数统一类型修饰符,而不是简单地丢弃它。由 Heikki Linnakangas 审核,hlinnaka [AT] iki.fi 讨论:https://postgresql.ac.cn/message-id/flat/97df3af9-8b5e-fb7f-a029-3eb7e80d7af9@2ndquadrant.com https://git.postgresql.org/pg/commitdiff/f893e68d761adbee7f888109b1adf76151e3e17a
Heikki Linnakangas 提交
清理 nodeModifyTable.c 中用于解析“根目标关系”的代码。当在分区表或具有继承子表的表上执行 DDL 时,语句级触发器必须针对原始语句中给出的表触发。查找该表的代码有点混乱且重复。提交 501ed02cf6 添加了一个辅助函数 getASTriggerResultRelInfo()(后来重命名为 getTargetResultRelInfo())来处理这种情况,但由于某些原因,它仅在触发 AFTER STATEMENT 触发器时使用,而触发 BEFORE STATEMENT 触发器的代码重复了该逻辑。在 ExecInitModifyTable() 中确定目标关系,并始终将其设置在 ModifyTableState 中。之前调用 getTargetResultRelInfo() 的代码现在可以直接使用 ModifyTableState->rootResultRelInfo。讨论:https://postgresql.ac.cn/message-id/CA%2BHiwqFViT47Zbr_ASBejiK7iDG8%3DQ1swQ-tjM6caRPQ67pT%3Dw%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/f49b85d783f6781138f33bbe5f6e98da86907d84
修改子表到根表元组转换映射的管理方式。将用于将子表的元组转换为根表格式的元组转换映射存储在 ResultRelInfo 中的新字段 ri_ChildToRootMap 中。如果需要对 FOR STATEMENT 触发器进行转换元组捕获或在分区表上进行 INSERT 元组路由,则会初始化该字段。以前,ModifyTable 将映射存储在每个子计划的 ModifyTableState->mt_per_subplan_tupconv_maps 数组中,或者在使用元组路由时存储在 ResultRelInfo->ri_Partitioninfo->pi_PartitionToRootMap 中。新字段替换了这两个位置。现在,子表到根表元组转换映射始终在 ResultRelInfo 中可用(在需要时),移除 TransitionCaptureState.tcs_map 字段。Exec*Trigger() 函数的调用者不再需要设置或保存它,这减少了混乱,也减少了出现错误的可能。此外,作为未来的优化,这将允许我们延迟创建给定结果关系的映射,直到在执行期间实际处理该关系。作者:Amit Langote 讨论:https://postgresql.ac.cn/message-id/CA%2BHiwqHtCWLdK-LO%3DNEsvOdHx%2B7yv4mE_zYK0i3BH7dXb-wxog%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/6973533650c04653d9018f61c1ac99ecb11094bd
移除 PartitionRoutingInfo 结构体。通过其封闭的 ResultRelInfo 访问其成员所需的额外间接寻址似乎没有意义。将 PartitionRoutingInfo 中的所有字段移动到 ResultRelInfo 中。作者:Amit Langote 审核:Alvaro Herrera 讨论:https://postgresql.ac.cn/message-id/CA%2BHiwqFViT47Zbr_ASBejiK7iDG8%3DQ1swQ-tjM6caRPQ67pT%3Dw%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/fb5883da86154c3126264bfd97b0cd6f293bcebd
修复全文搜索距离运算符的文档。提交 028350f619 将其行为从“最多”更改为“正好”,但忘记更新文档。向后移植到 9.6。由 Justin Pryzby 根据 Yaroslav Schekin 的报告进行修补。讨论:https://postgresql.ac.cn/message-id/20201005191922.GE17626%40telsasoft.com https://git.postgresql.org/pg/commitdiff/1a64c7636f24096155f7aa15d7164eba3cdef075
修复文档中 tsquery 示例的输出。此查询的输出在提交 4e2477b7b8 中更改。像该提交一样向后移植到 9.6。由 Justin Pryzby 根据 Yaroslav Schekin 的报告进行修补。讨论:https://postgresql.ac.cn/message-id/20201005191922.GE17626%40telsasoft.com https://git.postgresql.org/pg/commitdiff/c0bc4c682ee2a84dee2b562db3d17d173a6abc06
修复 TRUNCATE 文档:ALTER SEQUENCE RESTART 现在是事务性的。ALTER SEQUENCE RESTART 在提交 3d79013b97 中变为事务性的。向后移植到引入该功能的 v10。由 Justin Pryzby 根据 Yaroslav Schekin 的报告进行修补。讨论:https://postgresql.ac.cn/message-id/20201005191922.GE17626%40telsasoft.com https://git.postgresql.org/pg/commitdiff/2a972e0165c9b34da4cff3001a2dad8e5a9a5a2b
其他文档修复。- 其他语法和标点符号修复。- 样式清理:在示例中的函数参数和 JSON 字段之间使用空格。例如 "foo(a,b)" -> "foo(a, b)"。在一些缺失分号的 PL/pgSQL 示例的最后一个 END 之后添加分号。- 通过避免以 ".." 结尾,使关于 "..." 和 ".." 运算符的句子更加清晰。这使其看起来与 "..." 相同 - 修复 HAVING 的语法描述:HAVING 条件不能重复。由 Justin Pryzby 根据 Yaroslav Schekin 的报告进行修补。向后移植到所有支持的版本,在修补程序容易应用的程度上。讨论:https://postgresql.ac.cn/message-id/20201005191922.GE17626%40telsasoft.com https://git.postgresql.org/pg/commitdiff/c5f42daa6077a4c309c5280a47d0e114c12dc572
修复 EvalPlanQualStart() 中 es_result_relations 的初始化。提交 1375422c782 中的错误。EvalPlanQualStart() 错误地重置了父 EState 的 es_result_relations,而它应该初始化刚刚创建的子 EPQ EState 中的字段。这显然是错误的,但它没有造成任何不良影响,因为 es_result_relations 目前在 ExecInit* 阶段之后没有使用。作者:Amit Langote 讨论:https://postgresql.ac.cn/message-id/CA%2BHiwqFEuq8AAAmxXsTDVZ1r38cHbfYuiPQx_%3DYyKe2DC-6q4A%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/22b73d3cb0b5bb4c141421f98dd67f091dda3c20
文档:删除对 8.2 之前 pg_dump 行为的引用。-t/--table 选项中的行为更改大约发生在 15 年前,保留它似乎没有意义。作者:Ian Barwick 讨论:https://postgresql.ac.cn/message-id/CAB8KJ%3Dh-XALik4M7gv-pX48%3D%2BSPWexfaYwa%2ByTnPwD3DxceXrg%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/902b57c9bf27b3ea2963ef832cddb38b1203130e
文档:删除有关与非常旧版本不兼容的说明。这些版本太旧了,它们只会给新的读者带来更多的困惑和干扰,而不能帮助任何人从非常旧的服务器升级。讨论:https://postgresql.ac.cn/message-id/fd93f1c5-7818-a02c-01e5-1075ac0d4def%40iki.fi https://git.postgresql.org/pg/commitdiff/fa42c2ecb0f6e89f74bc1cc37b56a1d43e45d513
修复新的 GiST 排序支持函数缺少验证的问题。因此,如果您尝试使用新的排序支持函数创建运算符族,则会收到错误:错误:访问方法 gist 的支持函数编号 11 无效。我们在提交 16fa9b2b30 中添加排序支持函数时遗漏了这一点,因为它只向内置运算符族添加了排序支持。作者:Andrey Borodin 讨论:https://postgresql.ac.cn/message-id/3520A18A-5C38-4697-A2E3-F3BDE3496CD5%40yandex-team.ru https://git.postgresql.org/pg/commitdiff/6f0bc5e1daf09686c526aa161da5336f7c94f4eb
Magnus Hagander 提交
Tom Lane 提交
修复破坏 SQL 函数结果强制转换的列表操作错误。自从提交 913bbd88d 以来,check_sql_fn_retval() 可以在生成 SQL 函数结果的查询中内联插入类型强制转换步骤,或者在就地修改查询的输出不安全时,生成新的顶层查询来执行强制转换。但是,似乎后一种情况从未真正起作用,因为代码尝试将新查询注入回传递给它的查询列表...当我们在“正常”执行 SQL 函数(不进行内联)时,这不是将用于后续处理的列表。因此,我们最终在运行时没有发生强制转换,从而导致错误的结果或崩溃,具体取决于涉及的数据类型。虽然回归测试看起来足以涵盖这个领域,但由于运气不好,所有执行单独查询路径的测试用例都在检查内联的情况(碰巧没有错误)或运行时是空操作的情况(例如,varchar 到 text),因此无法明显看出强制转换的失败。v13 之前根本不允许使用不起作用的案例这一事实可能也导致没有更早地注意到这个问题。要进行修复,请删除单独的 “平面” 查询节点列表,而是传递稍后将要使用的实际两级列表。我选择在 check_sql_fn_statements() 中进行相同的更改,尽管它没有实际的错误,只是这样我们就不再需要该数据结构了。这是一个 API 更改,正如 functions.c 之外的调用者所需的调整所证明的那样。这在发布的版本分支中进行有点可怕,但据我从快速搜索中得知,这些函数没有外部调用者(而且它们对我们 SQL 语言函数的语义足够具体,以至于不清楚为什么任何扩展都需要调用它们)。无论如何,与之前的分支相比,v13 已经更改了 check_sql_fn_retval() 的 API。根据 pinker 的报告。向后移植到此代码进入的 v13。讨论:https://postgr.es/m/1603050466566-0.post@n3.nabble.com https://git.postgresql.org/pg/commitdiff/c8ab9701791e22f7a8e1badf362654db179c9703
修复 src/bin/scripts/ 程序中的连接字符串处理。当被告知处理所有数据库时,clusterdb、reindexdb 和 vacuumdb 会通过将其 --maintenance-db 参数替换为目标数据库的名称来重新连接。如果该参数是连接字符串(长期以来一直允许,尽管我们在此补丁之前未能记录),我们将丢失它可能指定的任何其他选项,例如 SSL 或 GSS 参数,可能导致连接失败。因此,这与提交 a45bc8a4f 在 pg_dump 和 pg_restore 中修复的错误相同。我们可以用相同的方式修复它,即使用 libpq 处理多个“dbname”参数的规则来单独添加目标数据库名称。我选择应用与该补丁中相同的重构方法,使用一个结构来处理需要传递给 connectDatabase 的命令行参数。(也许有一天我们可以统一此处和 pg_dump/pg_restore 中非常相似的函数。)根据 Peter Eisentraut 在 bug #16604 上的评论。向所有受支持的分支进行反向移植。讨论:https://postgr.es/m/16604-933f4b8791227b15@postgresql.org https://git.postgresql.org/pg/commitdiff/8e5793ab60bba65ffaa0f2237b39c9580d8972c7
移除在 configure 之外构建 thread_test.c 的选项。理论上,人们可以进入 src/test/thread 并在那里构建/运行此程序。实际上,自从 96bf88d52 以来,它就无法工作了,并且可能在某些平台上(可能包括此测试可能感兴趣的过时遗留问题)更久。虽然修复此错误并不难,但两年没人注意到这一事实表明,维护此构建路径没有任何用处。让我们摆脱它,并声明 thread_test.c *只能*在 configure 中构建/使用。考虑到这个决定,将 thread_test.c 放在 config/ 下并完全摆脱 src/test/thread 是有道理的,所以我这样做了。顺便说一下,更新 src/test/README,它被一些不太新的子目录添加所忽略。讨论:https://postgr.es/m/227659.1603041612@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/8a2121185b26d7eb439860c7a96a08c0aa3c8508
修复 psql 中 \connect 命令的连接字符串处理。psql 的 \connect 声称能够重用之前的连接参数,但实际上它只重用数据库名称、用户名、主机名(以及可能的主机地址,取决于版本)和端口。这对于各种用例都是有问题的。值得注意的是,pg_dump[all] 发出 "\connect databasename" 命令,我们希望这些命令重用所有其他参数。如果这样一个脚本加载到最初带有 "-d connstring" 和一些非默认参数的 psql 运行中,那么这些其他参数将会丢失,可能导致连接失败。(因此,这与提交 a45bc8a4f 和 8e5793ab6 中解决的错误类型相同,尽管细节大不相同。)为了解决这个问题,重新设计 do_connect(),使其使用 PQconninfo() 提取旧 PGconn 的所有属性,然后在该数组中替换单个属性。如果我们不希望重用任何东西,则使用 PQconndefaults() 获取 libpq 的默认设置,并替换其中的条目,这样我们就无需为这两种情况使用不同的代码路径。这确实会导致另一种行为更改,即在原始连接参数允许多个主机的情况下,例如 "psql -h host1,host2",并且 \connect 请求允许重用主机设置。由于之前的编码依赖于 PQhost(),因此它仅允许重新连接到最初选择的同一主机。虽然人们可以想到这种情况是好事,但也有一些情况不是。此外,这种行为似乎不符合最少惊讶原则,也没有记录;甚至不清楚是否有意为之,因为这种编码早于 libpq 中多主机支持的添加。因此,此补丁满足于放弃它并按给定方式重用主机列表。根据 Peter Eisentraut 在 bug #16604 上的评论。向所有受支持的分支进行反向移植。讨论:https://postgr.es/m/16604-933f4b8791227b15@postgresql.org https://git.postgresql.org/pg/commitdiff/85c54287af56fe351b53913ea2b81e9d6145f964
清理 psql 的 \connect 命令中的一些令人不快的行为。检查是否应该抱怨没有旧连接来获取参数的检查严重过时:当我们发明连接字符串或发明 -reuse-previous 选项时,它都没有被重新考虑。将其替换为检查,如果 reuse-previous 处于活动状态并且我们没有要重用的旧连接,则抛出错误。虽然这在缓解服务器崩溃后重新连接方面没有多大进展,但至少它是一致的。如果用户指定了一个连接字符串加上额外的参数(根据文档,这是无效的),则额外的参数会被静默忽略。这似乎会让人非常困惑,所以让我们改为抛出语法错误。教导连接字符串代码路径在与旧式语法代码路径相同的案例中重用旧连接的密码,即如果我们正在重用参数并且用户名、主机/主机地址和端口的值没有被更改。记录此行为,因为它之前未提及。此外,稍微简化实现,从而产生两个新的有用属性:如果连接字符串中有“password=xxx”,我们将使用它而不是忽略它,并且默认情况下(即,除了使用 --no-password 外),如果重用的密码或连接字符串密码不起作用,我们将提示输入密码。如果重用的密码不起作用,则之前的代码会直接失败。考虑到对这些问题的投诉很少,我不认为它们会上升到需要反向移植的错误修复的级别,而且在任何情况下,它们都可能代表次要版本中不希望出现的行为更改。因此,不进行反向移植。讨论:https://postgr.es/m/235210.1603321144@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/94929f1cf6cb3ea070d0919d1303379b525a72a3
为 ECPG 字面查询中的引号添加文档和测试。ECPG 的 PREPARE ... FROM 和 EXECUTE IMMEDIATE 可以选择将目标查询作为简单的字面值,而不是更常见的字符串变量引用。之前文档将其描述为 C 字符串字面值,但在一个关键方面这是谎言:你不能在这样的字面值中将数据双引号写成 \"。这是因为词法分析器此时处于 SQL 模式,因此它会将双引号字符串解析为 SQL 标识符,其中反斜杠不是特殊的,因此 \" 会结束字面值。我研究了使其按照文档描述的方式工作,但让词法分析器在正确的时间点切换行为是非常困难甚至是不可能的。这真的不值得麻烦,因为这些情况几乎没有用处:如果你有一个要执行或准备的固定 SQL 语句,你最好将其写为直接的 EXEC SQL,从而避免将其转换为字符串字面值的麻烦,并获得编译时 SQL 语法检查的机会。相反,让我们只记录(并测试)在这种情况下将双引号写为八进制转义符 (\042) 的解决方法。这里没有代码行为更改,因此原则上可以进行反向移植,但这种情况太小众了,我怀疑它是否值得麻烦。根据 1250kv 的报告。讨论:https://postgr.es/m/673825.1603223178@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/c16a1bbcf498f0aa053a3e55008f57d7f67357dd
避免过早地删除 ECPG 字符串中的引号。如果你在 EXEC SQL 命令中编写字面值 'abc''def',那么它将输出为 'abc'def',从而在后端触发语法错误。同样,“abc”"def" 也会被缩减为 "abc"def",这对于带引号的标识符来说是错误的语法。原因是词法分析器认为它应该只输出一个引号,而它真正应该做的是保持字符串原样。也添加一些文档和测试用例。虽然这显然是一个错误,但我担心用户不会喜欢在次要版本中更改它。有些人很可能通过对受影响的引号应用额外的双倍来解决这个问题,例如 sql/dyntest.pgc 一直在做的那样。根据对 1250kv 的报告的调查,尽管这并不是他/她所关心的。讨论:https://postgr.es/m/673825.1603223178@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/3dfb1942d9b8748b93094a430289e2f7f3b3ae0d
将我们的时区库副本与 IANA 版本 tzcode2020d 同步。这里没有任何功能上的更改,但我很好奇这个更改是否成功地关闭了 Coverity 关于无用 strcmp() 的警告,该警告出现在上次更新中。讨论:http://mm.icann.org/pipermail/tz/2020-October/029370.html https://git.postgresql.org/pg/commitdiff/c5054da0d7ee59a93ca6d7f7fc669ef0210dbad3
将时区数据文件更新到 tzdata 版本 2020d。巴勒斯坦的 DST 法规发生变化,提前了惊人的 120 小时通知。还有一些巴勒斯坦的历史修正。https://git.postgresql.org/pg/commitdiff/7d6d6bce43c60bb7b77237e2cc6ab845646b911f
修复增量排序的 EXPLAIN 输出中损坏的 XML 格式。增量排序用法数据的 ExplainCloseGroup 参数与相应的 ExplainOpenGroup 不匹配。这仅对 XML 格式的输出很重要,这可能就是我们没有注意到的原因。Daniel Gustafsson,根据 Frits Jalvingh 的 bug #16683。讨论:https://postgr.es/m/16683-8005033324ad34e9@postgresql.org https://git.postgresql.org/pg/commitdiff/87a174c0e77eed0bec7d53ef6d470d60335f6444
修复新 amcheck 测试中的可移植性问题。由于没有注意字节序的考虑,提交 866e24d47 添加的测试在大端机器上失败。修复此问题。在此过程中,改进一些小的表面问题,例如通过 perltidy 运行它。Mark Dilger。讨论:https://postgr.es/m/30B8E99A-2D9C-48D4-A55C-741C9D5F1563@enterprisedb.com https://git.postgresql.org/pg/commitdiff/860593ec3bd15e8969effdfcb5cbd98c561dd722
允许 psql 在连接丢失后重用连接参数。与其立即 PQfinish() 一个死连接,不如将其保存起来,以便我们仍然可以提取其参数以进行 \connect 尝试。(这是可行的,因为 PQconninfo 不关心 PGconn 是否处于 CONNECTION_BAD 状态。)这允许开发人员在数据库崩溃并重新启动后仅使用 \c 重新连接。很想使用相同的方法而不是在失败的非交互式 \connect 命令后关闭旧连接。但是,这样做不是很安全:考虑一个包含 \c db1 user1 live_server \c db2 user2 dead_server \c db3 的脚本。该脚本期望连接到 dead_server 上的 db3,但如果我们重用第一个连接的参数,那么它可能会成功连接到 live_server 上的 db3。这将破坏不让脚本意外执行针对错误数据库的命令的目标。讨论:https://postgr.es/m/38464.1603394584@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/1b62d0fb3e50ede570d0d4e4a2be69d5645b48a7
修复了新 amcheck 代码中更多的可移植性问题。verify_heapam() 在使用元组行指针之前没有仔细地进行健全性检查,导致在对齐敏感的架构上出现 SIGBUS 错误。修复了此问题,并增加了一些测试覆盖率。Mark Dilger,我进行了一些调整。讨论:https://postgr.es/m/30B8E99A-2D9C-48D4-A55C-741C9D5F1563@enterprisedb.com https://git.postgresql.org/pg/commitdiff/321633e17b07968e68ca5341429e2c8bbf15c331
修复了 ecpg 中用于 Windows 的 pthread_once() 模拟的古老错误。我们必须在执行完初始化函数之后才能设置 “done” 标志。否则,其他线程可以在初始化真正完成之前通过初始解锁测试。已经发现这会导致 ecpg 的线程/描述符测试出现罕见的失败,并且可能在使用了 ecpg 的多线程应用程序中导致其他类型的错误行为,因为 ecpglib 在多个地方依赖 pthread_once()。由我诊断和修补,基于 Alexander Lakhin 的调查。反向移植到所有支持的分支(该错误可以追溯到 2007 年)。讨论:https://postgr.es/m/16685-d6cd241872c101d3@postgresql.org https://git.postgresql.org/pg/commitdiff/21d36747d4fafe16539a0c55ebb91a01e4053e3c
修复了返回 OLD 的 BEFORE ROW UPDATE 触发器的边缘情况。如果旧行有任何应该从关联的元组描述符中检索的“缺失”属性,则会发生错误,因为触发器结果直接被塞入一个缺少缺失属性数据的执行器槽中。值得注意的是,CHECK 约束验证会错误地将这些列视为 NULL,并且 RETURNING 列表的计算也会如此。通过在将元组传递给触发器函数之前强制展开元组来解决此问题。(我认为将缺失的属性数据放入元组约束中是一个根本性的设计错误,系统的很多部分都认为这是可选的。但我们现在可能已经陷入了这种困境,并且必须继续应用临时解决方案,因为我们会发现其他具有类似问题的地方。)反向移植到 v12。v11 也存在此问题,只是提交 920311ab1 已经应用了类似的临时解决方案。尽管如此,该解决方案在更多情况下强制展开,这似乎不是真正必要的,因此这不是一个直接等效的修复。Amit Langote,我做了一些表面上的修改。讨论:https://postgr.es/m/16644-5da7ef98a7ac4545@postgresql.org https://git.postgresql.org/pg/commitdiff/ba9f18abd3650e385e9a35df7145a7c38af17e92
在 INSERT/UPDATE 中,使用表的实际元组描述符作为目标。以前,ExecInitModifyTable 依赖于 ExecInitJunkFilter,然后依赖于 ExecCleanTypeFromTL,从查询 tlist 构建目标描述符。虽然我们刚刚检查过(在 ExecCheckPlanOutput 中),tlist 是否产生兼容的输出,但这并不能很好地替代从 relcache 获取的表实际元组描述符。一方面,删除的列不会被正确地标记为 attisdropped;我们已经这样使用了这么长时间,这有点令人惊讶。但是,真正需要关注的原因是,使用表的描述符意味着槽将具有正确的 attrmissing 数据,从而允许我们还原提交 ba9f18abd 的临时修复。(此提交撤消了该提交在 trigger.c 中的更改,但保留了新的测试用例。)因此,我们可以用更少的周期而不是更多周期来解决错误的触发器元组问题。不进行反向移植,因为这没有修复任何其他错误,并且它似乎比 ba9f18abd 的狭义修复更有可能产生不可预见的副作用。讨论:https://postgr.es/m/16644-5da7ef98a7ac4545@postgresql.org https://git.postgresql.org/pg/commitdiff/20d3fe9009ddbbbb3da3a2da298f922054b43f8c
文档:改进如何使用我们的代码覆盖率基础设施的解释。在子目录中运行“make coverage”的引用有点模糊,因此请澄清执行此操作时会发生什么。也做一些零星的复制编辑。根据 Peter Smith 的问题。讨论:https://postgr.es/m/CAHut+Pu0r3AjRSyu5E0v2-zRj8r24OSrkWs3fEBxOuaw1i8DKA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8d132b2850d4c95ed5666a09b295dea645bbc884
修复了在存在常量的情况下,外键选择性估计的问题。get_foreign_key_join_selectivity() 查找使 FK 约束两边相等的连接子句。但是,如果我们的查询类似于 “WHERE fktab.a = pktab.a and fktab.a = 1”,它将找不到任何此类连接子句,因为 equivclass.c 将给定的子句替换为 “fktab.a = 1 and pktab.a = 1”,这可以在扫描级别强制执行,而无需在连接级别对列 “a” 执行任何操作。我们可以轻松地修复该预期,但是随后会出现一个新问题:应用基于外键的选择性规则会产生行数低估,因为我们实际上是在重复计算 “fktab.a = 1” 子句的选择性。因此,我们必须从估计值中取消该选择性。为了解决此问题,重构 process_implied_equality(),以便它可以将新的 RestrictInfo 传递回 equivclass.c 中的调用者,从而允许将生成的 “fktab.a = 1” 子句保存在 EquivalenceClass 的 ec_derives 列表中。然后,当我们需要调整 FK 选择性估计时,提取相关的 RestrictInfo 就不会有太大的麻烦。(同时,我们还可以删除 initialize_mergeclause_eclasses() 的昂贵用法,以设置新 RestrictInfo 的 left_ec 和 right_ec 指针。equivclass.c 代码可以基本上免费设置这些指针。)这似乎显然是一个错误修复,但我犹豫是否要反向移植它,首先是因为扩展存在一些 API/ABI 风险,其次是因为我们通常不愿在稳定分支中破坏计划选择。根据 Sigrid Ehrenreich 的报告。讨论:https://postgr.es/m/1019549.1603770457@sss.pgh.pa.us 讨论:https://postgr.es/m/AM6PR02MB5287A0ADD936C1FA80973E72AB190@AM6PR02MB5287.eurprd02.prod.outlook.com https://git.postgresql.org/pg/commitdiff/ad1c36b0709e47cdb3cc4abd6c939fe64279b63f
不要在 pg_proc.dat 中使用自定义 OID 符号。我们已经为内置函数制定了完美的 OID 宏约定,因此创建自定义符号只会引入不必要的偏差。删除已悄悄潜入的一个示例,并在 genbki.pl 中添加一个错误检查以阻止将来出现此类情况。尽管这涉及到 pg_proc.dat,但由于实际的目录数据没有更改,因此无需进行 catversion 升级。John Naylor 讨论:https://postgr.es/m/CAFBsxsHpCbjfoddNGpnnnY5pHwckWfiYkMYSF74PmP1su0+ZOw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/36b93121436cbbf357974144068c23bac75154fa
在查询重写器中计算 extraUpdatedCols,而不是在解析器中计算。在解析时执行此操作是不安全的,因为向表中添加生成的列不会使包含对该表的 UPDATE 的存储规则失效...但是现在可能存在在创建规则时不存在的依赖的生成的列。这还修复了一个疏忽,即当转换可更新视图的 UPDATE 时,rewriteTargetView 未能更新 extraUpdatedCols。(由于新的计算是在该计算的下游,因此 rewriteTargetView 实际上不需要执行任何操作;但是以前,那里存在一个明显的错误。)在 v13 和 HEAD 中,这会导致容易看到的错误,因为(自从提交 c6679e4fc 以来)我们将不会重新计算未在 extraUpdatedCols 中列出的生成的列。在 v12 中,此位图主要用于触发器触发决策,因此仅当触发器关心生成的列是否已更新时,您才会注意到问题。我早在 5 月份就抱怨过这一点,但后来忘记了,直到 Michael Paul Killian 的错误 #16671 再次引发了这个问题。反向移植到 v12,在该版本中引入了此字段。如果现有存储的规则包含任何 extraUpdatedCols 值,则这些值将被忽略,因为重写器将覆盖它们,因此即使对于现有规则,该错误也将得到修复。(但请注意,如果有人更新到 13.1 或 12.5,存储一些对具有生成的列的表执行 UPDATE 的规则,然后降级到以前的次要版本,则他们可能会观察到类似于此补丁修复的问题。这似乎不太可能,不值得花费大量精力来修复。)讨论:https://postgr.es/m/10206.1588964727@sss.pgh.pa.us 讨论:https://postgr.es/m/16671-2fa55851859fb166@postgresql.org https://git.postgresql.org/pg/commitdiff/ad77039fad0f4128b0e4a05ddbf5dbc3ab5f3fa4
在 psql 的 evaluate_backtick() 中,对 popen() 使用模式 “r”。在几乎所有其他地方,我们在 popen() 调用中使用简单的 “r” 或 “w” 模式(例外情况是 COPY 数据)。这个被忽略了(可能是因为它被埋在一个 “.l” flex 文件中?),但它正在使用 PG_BINARY_R。Kensuke Okamura 在错误 #16688 中抱怨说,我们在从反引号结果字符串中删除尾随换行符时未能删除 \r。这是事实,但我们也无法干净地转换嵌入的 \r\n,这也似乎是不希望的。修复 popen() 模式似乎是解决此问题的最佳方法。这种情况已经存在很长时间了,因此请反向移植到所有受支持的分支。讨论:https://postgr.es/m/16688-c649c7b69cd7e6f8@postgresql.org https://git.postgresql.org/pg/commitdiff/66f8687a8ff867f656de81e367314604d29dbd59
文档:清理 verify_heapam() 文档。我最初只是想通过删除示例输出来抑制 PDF 构建警告,但最终做了更多:更正函数签名中的事实错误,将大量泛化的空谈移到“有效使用 amcheck”部分,这似乎更适合,并稍微改进了措辞和标记。讨论:https://postgr.es/m/732904.1603728748@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/4c49d8fc15eeb1dc69b0ddb2d986a1884a5d7f5f
文档:清理 pg_relation_check_pages() 文档。提交 f2b883969 没有收到有关内置函数文档的新表格格式样式的通知。我注意到是因为 PDF 构建警告中出现了一个超宽表。https://git.postgresql.org/pg/commitdiff/b787d4ce6d910080065025bcd5f968544997271f
也不要在 pg_type.dat 中使用自定义 OID 符号。与提交 36b931214 中的推理相同,禁止在 pg_type 以及 pg_proc 中使用自定义 oid_symbol 宏,以便我们始终依赖 genbki.pl 生成的可预测宏名称。我们继续授予 CASHOID 和 LSNOID 名称祖父状态,尽管这些名称现在被视为已弃用的别名,用于首选名称 MONEYOID 和 PG_LSNOID。这是因为可能有客户端代码在使用旧名称,并且这种整洁主义并不值得破坏客户端代码。可能也应该授予 EVTTRIGGEROID 祖父状态,因为外部维护的 PL 可能会引用该符号。但是将此类引用重命名为 EVENT_TRIGGEROID 似乎并不是特别繁重的工作 --- 我们在每个主要版本中都会对后端 API 进行更大的更改。目前我没有添加它,但是如果有反对意见,我们可以重新考虑。这里更改的其他名称似乎不太可能有任何外部用途。同样,如果有投诉,我们可以添加别名宏,但是现在我没有添加。与以前一样,无需进行 catversion 升级。John Naylor 讨论:https://postgr.es/m/CAFBsxsHpCbjfoddNGpnnnY5pHwckWfiYkMYSF74PmP1su0+ZOw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/f90149e6285aaae6b48559afce1bd638ee26c33e
在 DST 转换中稳定 timetz 测试。我在提交 a9632830b 中添加的 timetz 测试用例无意中对 PST8PDT 时区中是否激活 DST 敏感。因此,正如 Bernhard M. Wiedemann 在错误 #16689 中报告的那样,它们将在下周末开始失败。幸运的是,DST 感知对这些测试用例的目的并不重要,因此我们可以将它们全部强制为 PDT(DST 小时),以保持结果的稳定性。反向移植到 v10,就像之前的补丁一样。讨论:https://postgr.es/m/16689-57701daa23b377bf@postgresql.org https://git.postgresql.org/pg/commitdiff/4a071afbd056282746a5bc9362e87f579a56402d
文档:澄清 pg_constraint.convalidated 的描述。Jimmy Angelakos 讨论:https://postgr.es/m/CABgVKCW_zPnvFXn24FTF0299_yU6+1p6JRUc0xpiZFWEXH1_jg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/b401fa206d446f224ec4760f21e0a351816c97b3
修复 check_new_partition_bound() 中的断言失败。提交 6b2c4e59d 对 partition_range_bsearch() 不会产生负 cmpval 结果过于自信。调整代码以应对这种情况。由 Amul Sul 报告并提供补丁;我做了一些额外的修饰性更改。讨论:https://postgr.es/m/CAAJ_b97WCO=EyVA7fKzc86kKfojHXLU04_zs7-7+yVzm=-1QkQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/970c05057593c2f5919a69b43fd917c4fa86f51c
避免在错误结果缺少 SQLSTATE 时发生空指针解引用。尽管从后端收到的错误结果应该始终具有 SQLSTATE 字段,但 libpq 生成的错误结果不会有,这使得此代码容易在例如意外断开连接后崩溃。由 Coverity 指出。提交 403a3d91c 中的疏忽。回溯至 9.5 版本,因为那是该版本。 https://git.postgresql.org/pg/commitdiff/7f4235032f0d75ea1ad29b192d57fee3d8fe533e
Álvaro Herrera 推送了此项
讨论:https://postgr.es/m/20201016235925.GA29829@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/bbb927b4db9b3b449ccd0f76c1296de382a2f0c1
在 PostgresNode::backup() 中使用快速检查点。应该可以使测试速度更快一些 https://git.postgresql.org/pg/commitdiff/831611b11c34ed0066633864f42ff67a10286aee
接受 LOCK TABLE 中的任何类型的关系。仅表和视图可以通过 LOCK TABLE 锁定的限制是相当随意的,因为底层机制可以锁定任何关系类型。删除此限制,以便 pg_dump 等程序可以锁定它们感兴趣的所有关系,从而防止在花费大量精力后可能导致转储失败的模式更改。回溯至 9.5 版本。作者:Álvaro Herrera alvherre [AT] alvh.no-ip.org 审核人:Tom Lane tgl [AT] sss.pgh.pa.us 报告人:Wells Oliver wells.oliver [AT] gmail.com 讨论:https://postgr.es/m/20201021200659.GA32358@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/59ab4ac32460a6a93b665f4e487d7ff64979ba4d
pg_dump:锁定所有关系,而不仅仅是普通表。既然 LOCK TABLE 可以接受任何关系类型,则获取要转储的所有关系的锁定。这可以防止在花费大量精力后可能导致转储失败的模式更改或死锁错误。服务器经过测试具有此功能,如果服务器不具备此功能则会禁用该功能,这样,已打补丁的 pg_dump 连接到未打补丁的服务器时不会失败。回溯至 9.5 版本。作者:Álvaro Herrera alvherre [AT] alvh.no-ip.org 审核人:Tom Lane tgl [AT] sss.pgh.pa.us 报告人:Wells Oliver wells.oliver [AT] gmail.com 讨论:https://postgr.es/m/20201021200659.GA32358@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/403a3d91c841beabf3efd7bffddb47a2bce4481f
Robert Haas 推送了此项
扩展 amcheck 以检查堆页面。Mark Dilger,由 Peter Geoghegan、Andres Freund、Álvaro Herrera、Michael Paquier、Amul Sul 和我审核。我做了一些最后的修饰性修改。讨论:http://postgr.es/m/12ED3DA8-25F0-4B68-937D-D907CFBF08E7@enterprisedb.com https://git.postgresql.org/pg/commitdiff/866e24d47db1743dfcff5bd595b57e3a143f2cb1
尝试避免编译器关于使用未初始化的 fxid 的警告。Mark Dilger,我删除了一些多余的分号。讨论:http://postgr.es/m/2A7DA1A8-C4AA-43DF-A985-3CA52F4DC775@enterprisedb.com https://git.postgresql.org/pg/commitdiff/8bb0c9770e80fa79f15b27af8f3c3f2833225aa3
Bruce Momjian 推送了此项
文档:使 bloom 文档与实际情况相符。并行执行更改了 bloom 查询的执行方式,因此更新 EXPLAIN 输出,并重新组织文档以使其更清晰、更准确。报告人:Daniel Westermann 讨论:https://postgr.es/m/ZR0P278MB0122119FAE78721A694C30C8D2340@ZR0P278MB0122.CHEP278.PROD.OUTLOOK.COM 作者:Daniel Westermann 和我 回溯到:9.6 https://git.postgresql.org/pg/commitdiff/e9661f2b0f3310d8bacc3f0802b309f599300cfb
文档:简化函数错误影响的措辞。报告人:bob.henkel@gmail.com 讨论:https://postgr.es/m/160324449781.693.8298142858847611071@wrigleys.postgresql.org 回溯到:9.5 https://git.postgresql.org/pg/commitdiff/2f17fe431860fc434084d99d8b789e6ec7e6977b
文档:删除对 src/tools/thread 的引用。此目录和独立构建线程测试的能力已在提交 8a2121185b 中删除。报告人:e.indrupskaya@postgrespro.ru 讨论:https://postgr.es/m/160379609706.24746.7506163279454026608@wrigleys.postgresql.org 回溯到:9.5 https://git.postgresql.org/pg/commitdiff/4066b642909176aede03b6c64d29734ce2a34716
Makefile 注释:删除对 tools/thread/thread_test 的引用。您不能再单独编译 thread_test,并且其位置也已移动。报告人:Tom Lane 讨论:https://postgr.es/m/1062278.1603819969@sss.pgh.pa.us 回溯到:9.5 https://git.postgresql.org/pg/commitdiff/8e5d1aef8eed26977739b662cddcea2de5efe834
Andres Freund 推送了此项
集中确定临时表的地平线,修复了因倾斜导致的错误。这修复了一个边缘情况下的错误,对于临时表,heap_page_prune() 最终会得到与 heap_vacuum_rel() 不同的地平线。这可能会触发诸如“ERROR: cannot freeze committed xmax ...”之类的错误。该错误是由于 a7212be8b9e “在清理临时表时更积极地设置截止 xmin”与 dc7420c2c92 “快照可扩展性:在构建快照时不计算全局地平线”的相互作用而引入的。问题的原因是 lazy_scan_heap() 假设其 HeapTupleSatisfiesVacuum() 调用返回 HEAPTUPLE_DEAD 的唯一原因是元组是 HOT 元组,或者元组的插入事务自从 heap_page_prune() 调用后已中止。但在 a7212be8b9e 之后,在其他情况下对于临时表也是可能发生的,因为 heap_page_prune() 在 dc7420c2c92 之后使用了不同的可见性测试。修复方法非常简单:将临时表的特殊情况逻辑从 vacuum_set_xid_limits() 移到 dc7420c2c92 中引入的基础结构。这确保了用于修剪的地平线至少与 lazy_scan_heap() 使用的地平线一样积极。用于临时表的具体地平线与 dc7420c2c92 中的逻辑略有不同,但应始终与以前一样积极(请参阅注释)。集中 procarray.c 逻辑的一个显著好处是,现在对于临时表来说,更积极的地平线不仅适用于 VACUUM,还适用于 HOT 修剪和 nbtree killtuples 逻辑。由于 vacuum_set_xid_limits() 不再需要 isTopLevel,因此我撤消了 a7212be8b9e 中的相关更改。此提交还添加了一个隔离测试,以确保更积极的临时表清理和修剪能够正常工作。调试人:Amit Kapila amit.kapila16 [AT] gmail.com 调试人:Tom Lane tgl [AT] sss.pgh.pa.us 调试人:Ashutosh Sharma ashu.coek88 [AT] gmail.com 作者:Andres Freund andres [AT] anarazel.de 讨论:https://postgr.es/m/20201014203103.72oke6hqywcyhx7s@alap3.anarazel.de 讨论:https://postgr.es/m/20201015083735.derdzysdtqdvxshp@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/94bc27b57680b4e757577e3f5b65dc32f96d33c1
修复后端启动期间错误的数据表地平线计算。当在设置 MyDatabaseOid 之前调用 ComputeXidHorizons() 时(例如,因为在 InitPostgres() 期间在共享关系中遇到死行),普通表的地平线计算过于积极,忽略了连接到数据库的所有后端。在随后的数据表修剪中,仍然可能使用过于积极的地平线,可能导致删除仍然需要的元组。这不好。这是 dc7420c2c92 中的一个错误,如果在 force_parallel_mode 设置为 regress 的情况下运行,则在 94bc27b5768 中添加的测试使其可见。在这种情况下,该错误会被可靠地触发,因为 “pruning_query” 在并行工作进程中运行,并且该并行工作进程的启动很可能会在 pg_database 中遇到死行。修复方法很简单:如果 MyDatabaseId 尚不为人所知,则计算更悲观的数据表地平线。作者:Andres Freund 讨论:https://postgr.es/m/20201029040030.p4osrmaywhqaesd4@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/1c7675a7a4265064a2c8e1ed02b2c042c2521664
Noah Misch 推送了此项
在并行工作进程上重现 debug_query_string\=\=NULL。某些后台工作进程在 debug_query_string\=\=NULL 时启动并行查询,此时它们尝试 strlen(NULL) 并因 SIGSEGV 而终止。较旧的 debug_query_string 观察器允许 NULL,因此在新观察器中也这样做。回溯到 v11,其中提交 7de4a1bcc56f494acbd0d6e70781df877dc8ecb5 引入了第一个此类情况。讨论:https://postgr.es/m/20201014022636.GA1962668@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/f90e80b9138355a51d2d5b5b63e1f89c4ba53325
在 worker_spi 中设置 debug_query_string。这使得 elog.c 发出字符串,对于执行 SQL 字符串的后台工作进程来说,这是一个很好的做法。由 Tom Lane 审核。讨论:https://postgr.es/m/20201014022636.GA1962668@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/d2246cde825e4e1a85408390c66367b85b51a233
Peter Eisentraut 发送了一个补丁,以添加 default_result_formats GUC,它指定在扩展查询协议中返回的行(当 Bind 消息中未指定结果格式时)按数据类型的默认结果格式。
Álvaro Herrera 发送了 libpq 添加跟踪的另一个补丁修订版。
Julien Rouhaud 发送了两个用于处理 pg_trgm 中的 = 运算符的补丁修订版。
Álvaro Herrera 发送了 libpq 添加批处理和管道支持的另一个补丁修订版。
Craig Ringer 发送了一个报告 libpq 版本和配置的补丁。
Jakub Wartak 发送了两个补丁修订版,以向自动分析添加 “IO 读取时间” 日志消息。
Alexander Korotkov 和 Andrey Borodin 交换了补丁,以便在 GetMultiXactIdMembers 中使用共享锁(而不是独占控制锁)来获取偏移量和成员,使 MultiXact 本地缓存大小可配置,添加条件变量以等待角落情况下的下一个 MultXact 偏移量,并添加 GUC 以调整 MultiXact SLRUs。
Pavel Borisov 发送了另一个补丁修订版,通过允许对列进行重新排序来使 GROUP BY 更高效。
Peter Geoghegan 发送了另一个补丁修订版,以添加 sort_template.h 以创建快速排序函数,并向 nbtree 添加删除重复数据删除功能。
Michaël Paquier 发送了另一个补丁修订版,以修复基本备份中零页面页眉的校验和验证。
Ajin Cherian 和 Peter Smith 交换了补丁,以实现两阶段事务的逻辑解码。
Zhenghua Lyu 发送了一个补丁,以在 get_variable_numdistinct 中考虑 stanullfrac 为 1.0 的情况。
Konstantin Knizhnik 发送了另外五个补丁修订版,以在 libpq 中实现压缩。
Justin Pryzby 发送了一个补丁,以删除已弃用的 v8.2 包含运算符。
Peter Eisentraut 发送了另一个补丁修订版,以支持为 SQL 语言编写 CREATE FUNCTION 和 CREATE PROCEDURE 语句,其中函数体符合 SQL 标准,并且可移植到其他实现。
Ibrar Ahmed 发送了另一个补丁修订版,以实现时间 PK/FK 删除和更新。
Justin Pryzby 发送了另一个 pg_dump 的补丁修订版,如果子触发器的状态与其父触发器不匹配,则输出 DISABLE/ENABLE。
Arseny Sher 发送了一个补丁,以修复使用后释放的问题。
Amit Kapila 发送了一个补丁,以对 pg_stat_replication_slots 视图中溢出计数器的描述进行一些小的改进。
Dilip Kumar 发送了另外三个补丁修订版,以实现表自定义压缩方法和更改方法。
John Naylor 发送了两个补丁修订版,以使用内置函数 heap_tableam_handler() 的标准符号。
Michaël Paquier 发送了另一个补丁修订版,以在后端启用在线校验和验证。
Greg Nancarrow 发送了另外两个补丁修订版,以对“INSERT INTO ... SELECT ...”启用并行 SELECT(在安全的情况下),并对“INSERT INTO ... SELECT ...”启用并行 INSERT 和/或 SELECT(在安全的情况下)。
Masahiko Sawada 和 Bertrand Drouvot 交换了补丁,以记录备用恢复冲突等待。
Vigneshwaran C 发送了另一个补丁修订版,以并行化 COPY 的部分。
Daniel Gustafsson 发送了另外四个补丁修订版,以支持 NSS 作为 libpq TLS 后端。
Michaël Paquier、Fabrízio de Royes Mello 和 Nikolay Samokhvalov 交换了补丁,以在创建表达式索引后添加有关 ANALYZE 的重要信息。
Justin Pryzby 发送了一个补丁,以实现分区表的 CLUSTER,在集群分区索引的子项上保留 indisclustered,并在附加非集群索引时使 indisclustered 失效。
Justin Pryzby 发送了一个 WIP 补丁,以实现分区索引的 DROP INDEX CONCURRENTLY。
Hayato Kuroda 发送了一个补丁,修复了 pgbench 中的一个问题,即在建立连接之前就触发了查询,通过添加对 pthread_barrier_wait() 的调用来解决。
侯志杰发送了一个补丁,以增强 libpq,使其支持非热备用的多个主机。
Pavel Borisov 发送了一个补丁,修复了在 OSX 上运行 Valgrind 时的错误。
Amul Sul 发送了另一个补丁修订版,以实现 ALTER SYSTEM READ {ONLY|WRITE}。
Justin Pryzby 发送了另一个补丁修订版,以确保所有 pg_ls_* 函数都显示目录和共享文件集。
Tsutomu Yamada 发送了四个补丁修订版,以将扩展统计信息列表添加到 psql 的 \dX 和 \dX+。
Kirk Jamison 发送了另一个补丁修订版,以使用 dlist 更有效地删除关系缓冲区。
Bruce Momjian 发送了另外两个补丁修订版,以实现密钥管理系统。
Xiao Bai Yan 发送了另一个补丁修订版,以扩展共享元组存储并添加批处理存储模块,并在此过程中,在获取下一个读取页面时使用原子操作而不是 LWLock 进行共享元组存储,并使用此功能实现使用批处理哈希聚合的并行非重复联合聚合和分组集支持。
Amit Kapila 发送了另一个补丁修订版,以跟踪来自 ReorderBuffer 的更改流的统计信息。
John Naylor 发送了一个补丁,禁止自定义 pg 类型符号。
Heikki Linnakangas 和 Andres Freund 交换了补丁,以在规划器中删除重复的聚合和转换函数。
Amit Langote 发送了另一个补丁修订版,以在 nodeModifyTable.c 中重新排列分区路由分层。
Takamichi Osumi 使禁用 WAL 日志记录以加快数据加载成为可能。
John Naylor 发送了四个补丁修订版,以记录 pg_settings 视图不显示自定义选项的事实。
Bharath Rupireddy 发送了另外两个补丁修订版,添加了两个新函数:pg_terminate_backend(pid, wait, timeout),它终止并等待或超时给定的后端,以及 pg_wait_backend(pid, timeout),它检查具有给定 PID 的后端的存在,并等待或超时直到它消失。
Euler Taveira de Oliveira 发送了一个补丁,以控制崩溃后临时文件的删除。
Vigneshwaran C 发送了四个补丁修订版,以添加一个日志消息,其中包含 GSS 身份验证、加密和主体信息。
Noah Misch 发送了另一个补丁修订版,以防止过多的 SimpleLruTruncate() 删除,并在 SimpleLruTruncate() 中减少取消链接,以防范错误。
Takamichi Osumi 发送了另一个补丁修订版,以实现 CREATE OR REPLACE TRIGGER。
Justin Pryzby 发送了另一个补丁修订版,以实现 pg_dump:允许独立恢复子分区,即使父分区不存在,或者缺少/不兼容的列。
Justin Pryzby 发送了一个补丁,以废弃 pg_standby 和 pg_archivecleanup。
Masahiko Sawada 发送了一个 PoC 补丁,其中添加了一些 xx_vacuum GUC 参数来控制记录 TID 的方法。
Michaël Paquier 发送了另一个补丁修订版,以修复基本备份中的页面验证。
Masahiro Ikeda 发送了另一个补丁修订版,以将统计信息添加到 pg_stat_wal 视图。
Justin Pryzby 发送了另一个补丁修订版,允许 INSERT SELECT 使用 BulkInsertState,并使用相同的方法使 INSERT SELECT 使用 multi_insert。
Daniel Gustafsson 发送了另一个补丁修订版,以清理 contrib/sslinfo 和 OpenSSL 错误处理。
Amit Langote 发送了另一个补丁修订版,使继承树的更新/删除更好地扩展。
Tomáš Vondra 和 James Coleman 交换了补丁,以修复连接下易失性 expr 的 get_useful_pathkeys_for_relation,并添加注释说明哪些投影是不必要的。
Thomas Munro 发送了另外两个补丁修订版,以实现排序规则版本控制。
Amit Langote 发送了另一个补丁修订版,以从 ExecInitModifyTable 调用 BeginDirectModify,并延迟初始化结果关系信息。
Amit Langote 发送了另一个补丁修订版,以修复 UPDATE 移动元组时 RETURNING 的错误。
Ashutosh Bapat 发送了另外两个补丁修订版,以枚举逻辑复制消息操作。
Jimmy Angelakos 发送了一个补丁,以澄清 pg_constraint 中 convalidated 的措辞。
John Naylor 发送了一个补丁,记录了 REVOKE ROLE 上与标准的偏差。
Andrey Borodin 发送了另一个补丁修订版,为 gist_btree 类型的 GiST 构建添加排序支持。
Tomáš Vondra 发送了另一个补丁修订版,以扩展范围类型运算符以处理元素。
Heikki Linnakangas 发送了一个 WIP 补丁,以按块查找 COPY 中的所有行尾。
Jürgen Purtz、Erik Rijkers 和 Justin Pryzby 交换了补丁,以向教程添加新章节。
Tomáš Vondra 发送了另一个补丁修订版,以向 Nested Loop 的 explain 添加额外的统计信息。
Justin Pryzby 发送了另一个补丁修订版,以修复错别字。
Justin Pryzby 发送了另一个补丁修订版,允许在分区表上使用 CREATE INDEX CONCURRENTLY,为更多集成添加 SKIPVALID 标志,并使 eindexPartitions() 设置 indisvalid。
Andrey V. Lepikhov 发送了另一个补丁修订版,以删除不需要的自连接。
Ranier Vilela 发送了一个补丁,修复了 src/backend/storage/ipc/latch.c 中 NULL 检查之前的解引用。
Ranier Vilela 发送了一个补丁,修复了 src/backend/utils/adt/ruleutils.c 中的显式 NULL 解引用。
Justin Pryzby 发送了另一个补丁修订版,允许 CLUSTER、VACUUM FULL 和 REINDEX 动态更改表空间。
Tom Lane 发送了一个补丁,添加了一个新的 CoercionForm 变体 COERCE_SQL_SYNTAX。
Greg Sabino Mullane 发送了另一个补丁修订版,以帮助 psql 的 \df 通过它们的参数选择函数。
Tom Lane 发送了一个补丁,使 Gen_fmgrtab.pl 为所有 pg_proc 条目生成宏。
Tom Lane 发送了一个补丁,以去除 aggregate_dummy()。