PostgreSQL 每周新闻 - 2021 年 1 月 24 日

发布于 2021-01-25,作者 PWN
PWN

PostgreSQL 每周新闻 - 2021 年 1 月 24 日

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

PostgreSQL 产品新闻

sqlite_fdw 1.3.1 发布。https://github.com/pgspider/sqlite_fdw

InfluxDB fdw 0.3 发布。https://github.com/pgspider/influxdb_fdw

griddb_fdw 1.3 发布。https://github.com/pgspider/griddb_fdw

pg_activity 2.0.0 发布,这是一个类似 top 的 PostgreSQL 服务器活动监控应用程序。https://github.com/dalibo/pg_activity/releases/tag/v2.0.0

一月份的 PostgreSQL 工作

https://archives.postgresql.org/pgsql-jobs/2021-01/

PostgreSQL 新闻

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

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

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

已应用的补丁

Tomáš Vondra 推送了

Heikki Linnakangas 推送了

Michaël Paquier 推送了

  • 重构 CLUSTER、REINDEX 和 VACUUM 的选项处理。这延续了 b5913f6 中完成的工作。这些命令的所有选项都更改为使用十六进制值而不是枚举,以减少引入新选项时出现兼容性错误的风险。每个选项集都移动到一个新的结构中,该结构可以扩展为更多非布尔选项(VACUUM 已经是这种情况)。REINDEX 的代码经过了重组,因此手动 REINDEX 命令会像 VACUUM 一样通过 utility.c 中的单个例程,以便在命令需要通过多个事务时简化选项参数的分配处理。这可以用作将来与这些命令相关的补丁的基础架构,包括重新索引筛选和表空间支持。根据与下面提到的人员以及 Alvaro Herrera 和 Peter Eisentraut 的讨论。作者:Michael Paquier、Justin Pryzby 审阅人:Alexey Kondratov、Justin Pryzby 讨论:https://postgr.es/m/X8riynBLwxAD9uKk@paquier.xyz https://git.postgresql.org/pg/commitdiff/a3dc926009be833ea505eebd77ce4b72fe708b18

  • 修复带有重复对象的 ALTER DEFAULT PRIVILEGES。在此命令中指定重复的对象会导致 pg_default_acl 中出现唯一约束冲突或“元组已由自身更新”错误。与 GRANT/REVOKE 类似,在处理每个子命令后增加命令 ID,以允许这种情况透明地工作。通过调整 privileges.sql 的现有查询之一来强调这种情况,从而添加了回归测试。报告人:Andrus 作者:Michael Paquier 审阅人:Álvaro Herrera 讨论:https://postgr.es/m/ae2a7dc1-9d71-8cba-3bb9-e4cb7eb1f44e@hot.ee 回溯:9.5 https://git.postgresql.org/pg/commitdiff/21378e1fefedcaed3d855ae7aa772555295d05d6

  • 为带有默认 ACL 的 DROP OWNED BY 添加回归测试。当清除现有测试未涵盖的共享依赖项时,DROP OWNED BY 具有特定的代码路径来删除 pg_default_acl 中存储的 ACL。在深入研究 21378e1 修复的错误时发现了此问题。由于 ALTER DEFAULT PRIVILEGES 会影响在默认权限可见时创建的所有对象的 ACL,因此该测试使用事务回滚来隔离测试并避免与并行运行的其他会话产生任何影响。审阅人:Álvaro Herrera 讨论:https://postgr.es/m/YAbQ1OD+3ip4lRv8@paquier.xyz https://git.postgresql.org/pg/commitdiff/a36dc04d424a6bfa03ee2cf75c85a6b7f9697e70

  • 在 MSVC 脚本中,将 "cl /?" 替换为 "cl /help" 以进行平台检测。如果 "cl /?" 在真实驱动器或虚拟驱动器上运行(可以使用简单的 subst 命令设置),会产生不同的输出,如果是在虚拟驱动器上构建,会导致 MSVC 脚本出错,因为无法检测到要使用的平台。相反,如果 "cl /help" 在真实驱动器或虚拟驱动器上使用,会产生一致的输出。改为 "/help" 允许在虚拟驱动器上进行编译,只要代码仓库的顶部是驱动器的一部分,而不会影响在真实驱动器上的构建。报告人:Robert Grange 作者:Juan José Santamaría Flecha 讨论:https://postgr.es/m/16825-c4f104bcebc67034@postgresql.org https://git.postgresql.org/pg/commitdiff/733d670073efd2c3a9df07c225006668009ab793

  • 提前移动 SSL 信息回调以捕获更多信息。在连接大多设置好后,才会安装用于检索连接设置期间状态更改信息的回调,因此没有提供太多信息,并错过了与握手相关的所有细节。这也扩展了带有 SSL_state_string_long() 的回调,以打印更多关于处理的 SSL 对象内的状态更改信息。同时,修复了一些错误引用回调及其在 fe-secure.c 中先前位置的注释。作者:Daniel Gustafsson 讨论:https://postgr.es/m/232CF476-94E1-42F1-9408-719E2AEC5491@yesql.se https://git.postgresql.org/pg/commitdiff/af0e79c8f4f4c3c2306855045c0d02a6be6485f0

  • 在 cryptohash 基础设施中引入 SHA1 实现。通过此提交,当使用 OpenSSL 构建后端时,SHA1 会通过 OpenSSL 通过 EVP 提供的实现,并使用 KAME 作为回退实现,KAME 位于 pgcrypto 中,并且已经为与一组 init、update 和 final 例程集成而进行了调整。结构和例程已重命名,以使事情与 MD5 和 SHA2 的回退实现保持一致。uuid-ossp 长时间以来一直使用 pgcrypto 的快捷方式,以便在需要时获取 SHA1 的副本。这是根据 ./configure 中的构建选项构建的,因此这清理了一些代码并删除了 pgcrypto 和 uuid-ossp 之间的构建依赖关系。请注意,这将有助于 HMAC 的重构,因为 pgcrypto 提供了使用 MD5、SHA1 或 SHA2 的选项,因此只缺少第二个选项才能使之成为可能。作者:Michael Paquier 审核人:Heikki Linnakangas 讨论:https://postgr.es/m/X9HXKTgrvJvYO7Oh@paquier.xyz https://git.postgresql.org/pg/commitdiff/a8ed6bb8f4cf259b95c1bff5da09a8f4c79dca46

Fujii Masao 提交了

Peter Eisentraut 提交了

Magnus Hagander 提交了

Robert Haas 提交了

Tom Lane 提交了

Bruce Momjian 推送

Amit Kapila 推送

Thomas Munro 推送

待处理的补丁

Craig Ringer 发送了一个补丁,以交叉引用有关信号处理逻辑的注释。

Joel Jacobson 发送了一个补丁,以实现 catalog_oidjoins.pl,该补丁从 catalogs.sgml 中解析目录引用。

Bertrand Drouvot 提交了另一个补丁修订版,以在备用服务器上启用最小逻辑解码。

Justin Pryzby 提交了另一个 g_dump 补丁修订版:将 CLUSTER ON 作为单独的转储对象,因为它需要在任何子索引恢复并附加后恢复。

John Naylor 提交了另一个补丁修订版,以使在更广泛的时间间隔内截断时间戳成为可能。

Robert Haas 提交了一个删除 CheckpointLock 的补丁。

Craig Ringer 提交了一个添加 ProcessInterrupts_hook 的补丁。

Atsushi Torikoshi 提交了一个补丁,修复了列大小的 TOAST 条件错误的一个边缘情况。

Kyotaro HORIGUCHI 和 Noah Misch 交换了补丁,用于测试快照是否过旧以及 wal_level=minimal,避免使用 RelationNeedsWAL 来识别关系持久性,并在跳过 WAL 时保持页面 LSN 更新。

Heikki Linnakangas 提交了另外两个补丁修订版,用于移动一些 ResourceOwnerEnlarge() 调用以提高安全性和清晰度,使资源所有者更易于扩展,并使 hash_resource_elem 在有 64 位输入的情况下更好地工作。

Michail Nikolaev 提交了一个补丁,以在备用服务器上添加对 LP_DEAD 提示位的完整索引支持。

Vigneshwaran C 提交了另一个补丁修订版,以添加对 PUBLICATION 的架构级支持。

Masahiko Sawada 提交了另外两个补丁修订版,引入一个用于选择索引清理策略的 IndexAM API,基于此选择索引清理策略,如果索引不增长,则跳过 B 树批量删除。

Craig Ringer 提交了一个补丁,以添加更多关于在扩展代码中该(不)做什么的文档。

Atsushi Torikoshi 提交了另外两个补丁修订版,以将 waitstart 字段添加到 pg_lock_status 视图和支持函数中。

Heikki Linnakangas 和 Jürgen Purtz 交换了补丁,以在教程中添加一个关于架构的章节。

Justin Pryzby 和 Aleksey Kondratov 交换了补丁,以使 REINDEX、CLUSTER 和 VACUUM FULL 能够在运行时更改表空间。

Pavel Stěhule 提交了另外三个补丁修订版,以实现模式变量。

Peter Smith 提交了另外三个补丁修订版,以使多个后台工作进程可用于表同步。

Dilip Kumar 提交了另外三个补丁修订版,以使 pg_is_wal_replay_paused 返回恢复暂停状态。

Amit Langote 提交了五个补丁修订版,以使 get_partition_for_tuple() 可在更广泛的上下文中使用,并使用它来避免为某些引用完整性检查使用 SPI 接口。

Takamichi Osumi 提交了另一个补丁修订版,以加强对归档恢复的保护。

Bruce Momjian 提交了另一个补丁修订版,以添加密钥管理。

Buzhen (步真) 提交了一个补丁,将 FIFO 策略更改为 LRU 以扫描有效的缓存。

Kyotaro HORIGUCHI 提交了另一个补丁修订版,以使其可以指定 CRL(证书吊销列表)目录,使其与 X509_STORE_load_locations 的实现保持一致。

Mark G 提交了一个补丁,使 heapam.c 中的 gaps 数组变为静态。

Jie Zhang 提交了一个补丁,使 pg_dump -?/--help 的输出更易读。

Michaël Paquier 提交了一个补丁,在 ilist.h 和 bufpage.h 的内联函数中标记一些 PG_USED_FOR_ASSERTS_ONLY。

David Fetter 提交了另一个补丁修订版,将 popcount (count_set_bits) 公开到 SQL。

Greg Sabino Mullane 提交了另一个补丁修订版,通过提供输入参数类型来帮助 psql 的 \df 在可能的函数中进行选择。

Justin Pryzby 提交了另一个补丁修订版,以实现 CREATE TABLE (LIKE .. INCLUDING ACCESS METHOD)。

Li Japin 提交了一个补丁,使用布尔数组而不是字符指针来表示 SPI 中参数的 NULL 值。

Julien Rouhaud 提交了另一个补丁修订版,将 queryId 添加到 pg_catalog.pg_stat_activity 视图中。

Stephen Frost 提交了另外两个补丁修订版,将 checkpoint_completion_target 的默认值更改为 0.9。

Dilip Kumar 提交了另一个补丁修订版,以实现表的自定义压缩方法。

Stephen Frost 和 Craig Ringer 交换了补丁,为已弃用和重命名的函数和设置添加了一个文档部分。

Vigneshwaran C 提交了另一个补丁修订版,以使在 pg_print_callstack() 被调用的实例中,可以打印属于该实例的 postgres 进程的回溯信息。此功能受 GUC 保护。

Dmitry Dolgov、Pavel Stěhule 和 Dian M Fay 交换了补丁,以将通用类型下标基础设施用于 JSONB。

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

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

Tom Lane 提交了一个补丁,以修复对 OSX 的 pwritev 支持的检测。

Hou Zhijie 提交了另一个补丁修订版,为 eval_const_expressions 添加一个 nullif 情况。

Masahiro Ikeda 提交了一个补丁,重构全局统计消息的变量名称,以明确它们是消息。

Peter Smith 提交了另一个补丁修订版,以实现两阶段事务的逻辑解码。

Justin Pryzby 提交了另一个补丁修订版,使 INSERT SELECT 使用 BulkInsertState。

Alexander Korotkov 提交了另一个补丁修订版,以修复短语搜索和多词素标记之间的不协调之处。

Alexander Korotkov 提交了一个补丁,使 json ** 运算符之后的所有内容都使用严格模式,因为宽松模式会产生意外情况。

Nikita Glukhov 和 Erik Rijkers 交换了补丁,以按照标准实现 SQL/JSON 函数。

Anastasia Lubennikova 提交了另外两个补丁修订版,旨在修复一个由于非标准 ACL 导致 pg_upgrade 失败的错误,方法是添加一些额外的检查来覆盖这种情况。

David Rowley 提交了一个补丁,以使用 heap_setscanlimits() 正确计算出向后扫描的页面。

Nikita Glukhov 提交了另一个补丁修订版,以按照标准实现 JSON_TABLE。

Kyotaro HORIGUCHI 提交了另一个补丁修订版,以重构统计信息收集器,使其使用共享内存而不是文件进行临时存储。

Julien Rouhaud 提交了另一个补丁修订版,为 REINDEX 添加一个新的 COLLATION 选项。

David Rowley 提交了另一个补丁修订版,以使扫描 TID 的范围短于整个关系成为可能,就像顺序扫描一样。

Kyotaro HORIGUCHI 提交了另一个补丁修订版,以添加一个新的 pg_waitlsn() 函数。

Daniel Gustafsson 提交了一个补丁,将特定于库的 SSL 测试设置重构为一个单独的模块,以准备支持 OpenSSL 以外的 TLS 实现。

Masahiko Sawada 提交了一个补丁,在 lazy_tid_reaped() 中的 bsearch() 之前为编码的 itermpointer 添加边界检查,并内联 lazy_tid_reaped()。

Pavel Stěhule 提交了三个补丁修订版,为 CALL 添加一个计划缓存。

Amul Sul 提交了另一个补丁修订版,以实现 ALTER SYSTEM READ {ONLY,WRITE}。

Matthias van de Meent 提交了一个补丁,更新 postgres_fdw,以便在 IMPORT SCHEMA LIMIT TO 中命名时导入分区。

Vigneshwaran C 提交了一个补丁,用于在 CREATE/ALTER SUBSCRIPTION 期间识别发布者中缺少的发布。

Álvaro Herrera 提交了另一个补丁修订版,为 libpq 添加跟踪功能。

Peter Eisentraut 和 Tom Lane 交换了补丁,以向系统目录添加主键。

Denis Laxalde 提交了一个补丁,在 pg_upgrade 中的服务器启动期间禁用后台工作进程。

Greg Nancarrow 提交了另一个补丁修订版,以使并行执行 INSERT (INTO ... SELECT ...) 成为可能。

Álvaro Herrera 提交了另一个补丁修订版,为 libpq 添加批处理/管道支持。

Andrey Borodin 提交了另一个补丁修订版,以重新组织 pglz 压缩代码,使其更高效,速度提高了约 1.4 倍。

Yugo Nagata 提交了另一个补丁修订版,以实现物化视图的增量维护。

Tomáš Vondra 提交了另外两个补丁修订版,以实现表达式的扩展统计信息。

Heikki Linnakangas 提交了另一个 pg_rewind 补丁修订版,使其根据新大小获取小文件。

Tomáš Vondra 提交了另一个补丁修订版,以使在可用时可以将非易失性内存用于 WAL 缓冲区。

Heikki Linnakangas 提交了另一个补丁修订版,以重构 LogicalTapeSet/LogicalTape 接口,使所有磁带函数(如 LogicalTapeRead 和 LogicalTapeWrite)都将 LogicalTape 作为参数,而不是 LogicalTapeSet+磁带编号,用简单的平衡 k 路归并替换旧的多相归并算法,并修复磁带读取缓冲区的大小。

Tomáš Vondra 提交了另一个补丁修订版,以实现 BRIN 多范围索引。

Masahiro Ikeda 提交了另外两个补丁修订版,在 pg_stat_wal 视图中添加列以跟踪 WAL I/O 活动,并添加一个新的 GUC,track_wal_io_timing,以启用此项收集,因为开销可能很大。

Jim Finnerty 提交了另一个补丁修订版,通过添加一种具有 64 位 GUC 的方法,使用 XID_FMT 格式化 xid,并使用 ClogPageNumber 代替 int 来保证类型安全,从而为实现 64 位 xid 做准备。

Michaël Paquier 提交了另一个补丁修订版,将 HMAC 实现重构为 common/。

Amit Kapila 和 Bharath Rupireddy 交换了补丁,通过在 RelationSyncEntry 失效时初始化 pubactions 来修复 ALTER PUBLICATION...DROP TABLE 的行为。

Mark Rofail 提交了另外三个补丁修订版,以使其可以检查数组的每个元素是否与(通常)不同表中的主键匹配。

Thomas Munro 提交了另一个补丁修订版,在 pg_test_fsync 中使用 pg_pwrite()。

Tomáš Vondra 提交了一个补丁,用于测试 TOAST 可见性。

Andy Fan 提交了一个补丁,构建一些隐含的修剪限定符,以扩展规划时分区修剪和初始化分区修剪的用例。