FOSDEM PGDay 2021 将于 2021 年 2 月 6-7 日在线举行。https://fosdem.org/2021/
行为准则委员会欢迎新成员 Michael Goldberg https://postgresql.ac.cn/about/policies/coc_committee/
本周人物:https://postgresql.life/post/keith_fiske/
PoWA 4.1,PostgreSQL 性能工具,已发布。https://github.com/powa-team/powa-archivist/releases/tag/REL_4_1_0
Database .NET v31.5,一款多数据库管理工具,现已支持 PostgreSQL,已发布。https://fishcodelib.com/Database.htm
pgAdmin4 4.29,一款用于 PostgreSQL 的 Web 和本地 GUI 控制中心,已发布。https://www.pgadmin.org/docs/pgadmin4/dev/release_notes_4_29.html
http://archives.postgresql.org/pgsql-jobs/2020-12/
Planet PostgreSQL:http://planet.postgresql.org/
本周的 PostgreSQL 每周新闻由 David Fetter 为您带来
请在太平洋标准时间下午 3:00 前的星期日将新闻和公告提交至 david@fetter.org。
Michaël Paquier 推送
在 ps 显示中添加一些检查点/重启点状态。这针对恢复结束和关闭检查点/重启点(不存在恢复结束重启点)而非所有类型的检查点,在无法依赖 pg_stat_activity 获取来自启动或检查点进程的状态的情况下。例如,在崩溃恢复结束时,这有助于了解检查点是否在启动进程中运行,而以前 ps 显示可能只显示一些关于“恢复”的信息,这在检查点运行时可能会令人困惑。作者:Justin Pryzby 审阅者:Nathan Bossart、Kirk Jamison、Fujii Masao、Michael Paquier 讨论:https://postgr.es/m/20200818225238.GP17022@telsasoft.com https://git.postgresql.org/pg/commitdiff/df9274adf3096feafbbde2562311c8ab80405267
改进一些围绕加密哈希函数的代码。这调整了一些与最近加密哈希函数更改相关的代码:- 在 md5.h 中添加一个变量以跟踪计算结果的大小,从 pgcrypto 移动。请注意,pg_md5_hash() 已经假设了此大小的结果。- 在释放回退实现的上下文时,对哈希数据调用 explicit_bzero()。特别是对于 MD5,保留一些非零数据会很烦人。
清理一些与最近 uuid-ossp 更改相关的代码。 .gitignore 仍然包含 md5.c,并且注释不正确。 讨论:https://postgr.es/m/X9HXKTgrvJvYO7Oh@paquier.xyz https://git.postgresql.org/pg/commitdiff/9b584953e7bf91e342af87ef44606acd6206cd1c
文档:修复与 pg_shmem_allocations 相关的解释。 仅匿名分配才将偏移量显示为 NULL。 作者:Benoit Lobréau 审阅者:Kyotaro Horiguchi 讨论:https://postgr.es/m/CAPE8EZ5Lnoyqoz7aZpvQM0E8sW+hw+k6G2NULe+m4arFRrA1aA@mail.gmail.com 向后移植:13 https://git.postgresql.org/pg/commitdiff/bce641a2af7199f07ec2b0a84f8fec0f26b2adc0
Jeff Davis 推送
Tom Lane 推送
改进 hash_create() 的 API 以提高一些健壮性。 发明一个新的标志位 HASH_STRINGS 来指定 C 字符串哈希,这以前是默认的;并添加断言,坚持设置 HASH_STRINGS、HASH_BLOBS 和 HASH_FUNCTION 中的一个位。 这希望能防止重复出现提交 a1b8aa1e4 中修复的那种疏忽(即,错误地省略 HASH_BLOBS)。 此外,当指定 HASH_STRINGS 时,坚持键大小大于 8 个字节。 这是一个启发式方法,但它应该能捕获到意外使用 HASH_STRINGS 来进行整数或指针键的情况。 (几乎所有现有的用例都将键大小设置为 NAMEDATALEN 或更大,因此几乎没有理由认为此限制会有问题。) 调整 hash_create() 以坚持设置 HASH_ELEM 标志,并删除其键大小和 entrysize 的默认值。 由于这些默认值没有记录并且基本上无用,因此没有任何调用者省略 HASH_ELEM。 此外,从那些具有 HASHCTL 参数结构的调用者中删除 memset 的归零。 这从来都不是真正必要的,虽然这不是一个糟糕的编码约定,但有些调用者执行它而有些没有,这令人困惑。 我们不妨通过标准化为“不”来节省一些周期。 此外,改进 hash_create() 的文档。 顺便说一下,通过将键存储为二进制 Oid 而不是字符串来改进 reinit.c 对哈希表的使用;并且,由于这是一个临时的哈希表,请在 CurrentMemoryContext 中分配它以保持整洁。 讨论:https://postgr.es/m/590625.1607878171@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/b3817f5f774663d55931dd4fab9c5a94a15ae7ab
修复 varchar_2.out 以匹配 cs_CZ 区域设置中的实际情况。 似乎是 c06d6aa4c 中的复制粘贴。 根据构建农场。 https://git.postgresql.org/pg/commitdiff/88e014c149cc396fb218b08eda17c47d5b33e94f
在 relmapper 初始化期间避免使用相同的源和目标进行 memcpy()。 C 标准的狭义解读认为 memcpy(x,x,n) 是未定义的,尽管很难想象会真正发生错误的实现。 但是,valgrind 等分析工具可能会对此发出警告; 因此,让我们修补 relmapper.c 以避免这种情况。 另请参见 5b630501e、d3f4e8a8a、ad7b48ea0 和其他类似的修复。 显然,那些人都没有尝试对 initdb 进行 valgrinding? 这种情况已经存在很长时间了,我很惊讶以前没有报告过。 进行向后移植,以防万一有人想在抱怨此问题的平台上使用向后分支; 我们也向后移植了那些早期的修复。 讨论:https://postgr.es/m/161790.1608310142@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/53d4f5fef04653fc495ae385a9c2f78c77e5c7d9
添加一些遗漏的 .gitignore 条目。 任何忽略 /output_iso/ 的子目录也应忽略 /tmp_check_iso/,这可能会由失败的 pg_isolation_regress_check 运行留下。 我认为这些条目已经错误了一段时间,但是在向后分支中修复似乎并不重要。 https://git.postgresql.org/pg/commitdiff/8afca702ecbf0730b6175afda0cecbbf0a1967e7
删除 src/test/Makefile 中现在无用的 ALWAYS_SUBDIRS 条目。 提交 257836a75 将“locale”子目录添加到 SUBDIRS,但忽略将其从 ALWAYS_SUBDIRS 中删除。 这种疏忽没有功能影响,因为 filter-out 函数无论如何都会将其删除。 尽管如此,在两个地方都列出一个子目录对于读者来说令人困惑,尤其因为它使相关的注释成为一个部分谎言。 https://git.postgresql.org/pg/commitdiff/08b01d4dd982b491a2f9641804b368185b8f4c53
在 pgstat_recv_replslot 中避免使用相同的源和目标进行 memcpy()。 与提交 53d4f5fef 和早期修复中相同类型的问题; 也通过明显比构建农场更挑剔的 valgrind 测试发现。 这一个是提交 986816750 中的疏忽。 由于这在 HEAD 中是新的,因此无需进行向后移植。 https://git.postgresql.org/pg/commitdiff/ed6329cfa975a13c58c44676464585cda5d317b3
文档:改进 pgbench 脚本权重的描述。 指出如果要编写包含“@”的脚本文件名时要使用的解决方法。 对文本进行一些清理。 Fabien Coelho,由我添加了一些措辞 讨论:https://postgr.es/m/1c4e81550d214741827a03292222db8d@G08CNEXMBPEKD06.g08.fujitsu.local https://git.postgresql.org/pg/commitdiff/1990ce186ee64f24dcff885a87cea04e3dfd8166
Peter Eisentraut 推送
SELECT '' AS two, i.* FROM INT2_TBL
的风格编写的,其中第一列表示预期的结果行数。 随着测试数据夹具的扩展,这越来越过时,因此其中很多都是错误的并且具有误导性。 此外,这种风格并不是真正必要的,因为 psql 输出已经显示了结果行数。 为了清理这一点,请删除所有那些额外的列。 讨论:https://postgresql.ac.cn/message-id/flat/1a25312b-2686-380d-3c67-7a69094a999f%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/c06d6aa4c35177655e0fd4acaca888a73c3f9845Tomáš Vondra 推送
Álvaro Herrera 推送
Peter Geoghegan 推送
Bruce Momjian 推送
Fujii Masao 推送
还原“消除用于向启动进程发出信号的专用锁存器”。 还原 ac22929a26 以及后续修复 113d3591b8。 因为它打破了启动进程等待缓冲区引脚上的恢复冲突应仅由缓冲区取消固定或 ResolveRecoveryConflictWithBufferPin() 中启用的超时唤醒的假设。 例如,它导致 SIGHUP 信号处理程序或 walreceiver 进程不必要地频繁唤醒该启动进程。 此外,添加了关于不应删除被还原补丁试图消除的专用锁存器的原因的注释。 感谢 Kyotaro Horiguchi 的讨论。 作者:Fujii Masao 讨论:https://postgr.es/m/d8c0c608-021b-3c73-fffd-3240829ee986@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/00f690a239932e477f25120d19b08aacdc30deb7
pg_stat_statements:跟踪所有统计信息上次重置的时间。此提交在 pg_stat_statements_info 视图中添加了 "stats_reset" 列。此列指示 pg_stat_statements 视图中所有统计信息上次重置的时间。根据讨论,此提交还更改了 pg_stat_statements_info 代码,以便 "dealloc" 列与 "stats_reset" 列在同一时间重置,即,每当删除所有 pg_stat_statements 条目时,都为了保持一致性。之前,"dealloc" 仅在调用 pg_stat_statements_reset(0, 0, 0) 时重置,并且当使用非零值参数调用 pg_stat_statements_reset() 丢弃所有条目时,不会重置。这令人困惑。作者:Naoki Nakamichi,Yuki Seino 审核者:Yuki Seino,Kyotaro Horiguchi,Li Japin,Fujii Masao 讨论:https://postgr.es/m/c102cf3180d0ee73c1c5a0f7f8558322@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/2e0fedf0362cc964c4dae42258455b6391051e70
Amit Kapila 推送了
Alexander Korotkov 推送了
多范围数据类型。多范围基本上是排序的、不重叠的范围数组,并在其上定义了集合论操作。自 v14 起,每个范围类型都会自动获得一个对应的多范围数据类型。命名多范围类型既有手动机制也有自动机制。可以使用 CREATE TYPE 中的 multirange_type_name 属性指定多范围类型名称。否则,会自动生成多范围类型名称。如果范围类型名称包含“range”,则我们会将其更改为“multirange”。否则,我们会将“_multirange”添加到末尾。多范围的实现采用节省空间的内部表示格式,该格式避免了额外的填充和 oid 的重复存储。总而言之,此格式允许以 O(n) 复杂度通过索引获取特定范围。实现了多范围的统计信息收集和选择性估计。为此,将存储的多范围近似为没有间隙的并集范围。此字段将来可能需要改进。Catversion 已更新。讨论:https://postgr.es/m/CALNJ-vSUpQ_Y%3DjXvTxt1VYFztaBSsWVXeF1y6gTYQ4bOiWDLgQ%40mail.gmail.com 讨论:https://postgr.es/m/a0b8026459d1e6167933be2104a6174e7d40d0ab.camel%40j-davis.com#fe7218c83b08068bfffb0c5293eceda0 作者:Paul Jungwirth,由我修订 审核者:David Fetter,Corey Huinker,Jeff Davis,Pavel Stehule 审核者:Alvaro Herrera,Tom Lane,Isaac Morland,David G. Johnston 审核者:Zhihong Yu,Alexander Korotkov https://git.postgresql.org/pg/commitdiff/6df7a9698bb036610c1e8c6d375e1be38cb26d5f
修复 pg_dump.c 中有关多范围的问题。此提交修复了两个错误的版本号检查和一个错误的空值检查。https://git.postgresql.org/pg/commitdiff/8344d72cccae699e13884a5705b91dc1c4747c03
修复 6df7a9698b 中引入的编译器警告。https://git.postgresql.org/pg/commitdiff/11072e86939d2f5ca0a97c709b46f29ea8b57590
Michaël Paquier 发送了另一个引入 SHA1 加密哈希基础结构的补丁的修订版。
Andrey Borodin 发送了另一个补丁的修订版,以在 GetMultiXactIdMembers 中对偏移量和成员使用共享锁,使 MultiXact 本地缓存大小可配置,在极端情况下添加一个条件变量来等待下一个 MultXact 偏移量,并添加 GUC 来调整 MultiXact SLRUs。
Kyotaro HORIGUCHI 发送了一个补丁,以确保仅在适当的情况下(即,仅在非备用节点上)取消无效页面标头错误消息。
Andrey V. Lepikhov 发送了另一个补丁的修订版,以将多插入决策逻辑移至执行器中,并使用相同的逻辑以及三个新的方法到 FDW API:BeginForeignCopy、ExecForeignCopy 和 EndForeignCopy,以加快 COPY FROM 在应用于具有远程分区的表时的速度。
Fujii Masao 发送了另一个补丁的两个修订版,以添加一个 log_recovery_conflict_waits GUC,该 GUC 按标签上的说明执行操作。
Tom Lane 发送了补丁的两个修订版,以修复 PL/pgsql 执行赋值的方式。
Bharath Rupireddy 和 Hou Zhijie 交换了补丁,以使在 CTAS 中可以使用并行 INSERT。
Nathan Bossart 和 Kyotaro HORIGUCHI 交换了补丁,旨在修复一个错误,该错误表现为可能会过早创建归档状态 ".ready" 文件。
Kirk Jamison 发送了另一个补丁的修订版,以使用 dlist 使删除关系缓冲区更有效率。
Amit Kapila 发送了另一个补丁的三个修订版,以实现两阶段事务的逻辑解码。
Yuzuko Hosoya 发送了另一个补丁的修订版,以使 autoanalyze 在分区表上更好地工作。
Atsushi Torikoshi 发送了一个补丁,以将 wait_start 列添加到 pg_locks 视图。
Iwata Aya 发送了另一个补丁的修订版,以向 libpq 添加跟踪功能。
Laurenz Albe 发送了另一个补丁的两个修订版,以将会话统计信息添加到 pg_stat_database。
Peter Eisentraut 发送了另一个补丁的修订版,以将 EXTRACT 的返回类型更改为 numeric。
Fabrízio de Royes Mello 发送了另一个补丁的修订版,以在备用服务器上实现最小逻辑解码。
Justin Pryzby 发送了另一个补丁的两个修订版,以允许 CLUSTER、VACUUM FULL 和 REINDEX 在运行时更改表空间。
Jeff Davis 发送了一个补丁,以强制执行 ASCII 还原点名称。
Bharath Rupireddy 发送了一个补丁,旨在修复一个错误,该错误表现为 - 如果通过移动关闭所有无效连接的位置到 pgfdw_xact_callback(),则会从 postgres_fdw 泄漏缓存的连接,如果关联的用户映射被删除。
Peter Smith 发送了另一个补丁的两个修订版,以使可以在 tablesync 上使用多个工作线程。
Bruce Momjian 和 Neil Chen 交换了补丁,以实现密钥管理。
Tomáš Vondra 发送了另一个补丁的修订版,以考虑 generate_useful_gather_paths 中的未排序路径,检查 generate_useful_gather_paths 中的并行安全性,在考虑 Gather Merge 下方的排序时禁止 SRF,避免在 find_em_expr_usable_for_sorting_rel 中搜索易失性表达式,并通过阐明 find_em_expr_usable_for_sorting_rel 和 prepare_sort_from_pathkeys 之间的关系(即,这两个地方需要共享哪些限制)来改进 find_em_expr_usable_for_sorting_rel 注释。
Laurenz Albe 发送了另一个补丁的修订版,以修复 psql 的 \e 系列函数中 POLA 的重大违规行为,即,如果在进行任何更改之前退出了编辑器,则会执行之前的查询。解决方法是清除查询缓冲区。
Heikki Linnakangas 发送了另一个补丁的修订版,通过使用单个数组和哈希而不是每种对象类型一个数组和哈希来使 resowner 更容易扩展。
Justin Pryzby 发送了另一个 pg_upgrade/test.sh 补丁的修订版,该补丁进行了一些允许从 v11 进行升级测试所需的更改。
Heikki Linnakangas 发送了一个补丁,以在较大的块中进行 COPY FROM 编码转换/验证。
Fujii Masao 发送了另一个补丁的三个修订版,旨在修复一个错误,该错误表现为未能检测到后端和恢复之间的死锁,方法是添加对这种情况的检查。
Michaël Paquier 发送了另一个补丁的两个修订版,以重构 HMAC 实现。
Konstantin Knizhnik 发送了另一个补丁的两个修订版,以添加一种在登录时触发触发器的方法。
David Fetter 发送了一个补丁,以实现 \gsetenv,类似于 \gset,仅用于 psql 中的环境变量。
Önder Kalacı 发送了另一个补丁的修订版,以实现逻辑复制的行筛选。
Denis Smirnov 和 Konstantin Knizhnik 交换了补丁,以实现 libpq 的压缩。
Peter Eisentraut 发送了一个补丁,以将 make_*()
函数的秒参数更改为 numeric。
Fujii Masao 发送了一个补丁,旨在修复一个错误,该错误表现为 STANDBY_LOCK_TIMEOUT 可能不会中断 ProcWaitForSignal(),方法是确保 StandbyLockTimeoutHandler() 设置一个闩锁。
Bharath Rupireddy 发送了另一个补丁的修订版,如果关系已存在,则在 CTAS/CMV 中快速失败。
Gilles Darold 发送了另一个补丁的修订版,以修复 DDL 中的争用条件,其中函数的命名空间可能会在函数保留原位时消失。
Michaël Paquier 发送了一个补丁,以删除 ASCII 性的重复检查,并使剩下的一个检查更有效率。
Justin Pryzby 发送了另一个补丁的两个修订版,以允许 psql 的 \dti+ 查看 pg_toast.*
。
David CARLIER 发送了一个补丁,以在 ARM 上实现 SPIN_LOCK。
Michaël Paquier 和 Heikki Linnakangas 交换了补丁,旨在修复一个错误,该错误表现为使用 OpenSSL 的加密哈希函数的错误分配处理。
Tom Lane 和 Alexander Lakhin 交换了补丁,以显示使用 Valgrind 进行 TAP 测试的示例。
Craig Ringer 发送了一个补丁,通过修复一个伪造的跟踪点来在跟踪点中标识 LWLocks,其中一个 lwlock__acquire 事件将从 LWLockWaitForVar 触发,尽管该函数从未真正获取该锁,为每次跟踪命中添加 tranche id 和锁指针,为所有锁获取和释放添加一个单路径跟踪点,并为未来的读者添加一些关于 LWLock tranche 的注释以澄清问题。
Konstantin Knizhnik 发送了一个补丁,以重新实现 BufferAlloc,从而在此过程中删除双重锁定。
Pavel Stěhule 发送了另一个补丁的修订版,以实现架构变量。
Tom Lane 发送了一个补丁,以修复 jsonb_concat() 中的极端情况错误。
Thomas Munro 发送了一个补丁的两个修订版,以添加 pg_preadv() 和 pg_pwritev(),它们提供同步的散布/收集 I/O 例程,然后使用相同的方法来使用向量 I/O 将 WAL 段归零。
Tomáš Vondra 发送了另一个补丁的修订版,以实现 BRIN 多范围索引。