PostgreSQL 产品新闻

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

应 用 补 丁

  • 01 Michaël Paquier pushed

pageinspect:针对 32kB 的页面改进 page_header()。

ld_upper、ld_lower、pd_special 和页面大小一直使用 smallint 作为返回类型,这可能导致这些字段在某些情况下返回负值,用于页面大小为 32kB 的构建配置。
将 pageinspect 提高到 1.10。page_header() 能够在使用旧版本扩展时在运行时处理这些字段的正确返回类型,并添加了一些测试来覆盖这一点。
Author: Quan Zongliang

Reviewed-by: Michael Paquier, Bharath Rupireddy

Discussion: https://postgr.es/m/8b8ec36e-61fe-14f9-005d-07bc85aa4eed@yeah.net

https://git.postgresql.org/pg/commitdiff/127404fbe28455d6e8183fa58f3b7aefeba8f909

修复 Windows 的 stat() 问题,用于待删除的文件。
Alexander Lakhin 在自定义 TAP 中证明,bed9075 引入的用于增强 Windows 上大于 4GB 的文件大小的 stat() 实现的代码无法使用其基于NtQueryInformationFile() 或 GetFileInformationByHandleEx() 的方法正确检测待删除的文件他自己的测试。

当 ERROR_ACCESS_DENIED (EACCES) 失败时,用于实现 open() 休眠和循环的方法显示出更高的稳定性,因此切换到此方法。

如果权限问题持续的时间比使用的 1 秒超时时间长得多,这仍然可能导致问题,但是(希望)在性能关键路径中永远不会发生这种情况。

当然,为了处理重负载的机器,增加超时可能是有意义的。

请注意,WIN32 的 open() 现在使用 microsoft_native_stat(),因为它在解决并发文件删除问题时应该类似于 stat()。

我花了一些时间用 pgbench 结合 genfile.c 中的 SQL 函数来测试这个补丁,以及运行 MSVC 构建的线程上提供的 TAP 测试,这看起来比以前的方法稳定得多。

Author: Alexander Lakhin Reviewed-by: Tom Lane, Michael Paquier, Justin Pryzby
Discussion: https://postgr.es/m/c3427edf-d7c0-ff57-90f6-b5de3bb62709@gmail.com
Backpatch-through: 14
https://git.postgresql.org/pg/commitdiff/54fb8c7ddf152629021cab3ac3596354217b7d81

恢复“修复 Windows 的 stat() 的问题,以处理待删除的文件”。

这将恢复提交 54fb8c7,根据fairywren 报告的问题,因为那里缺少 microsoft_native_stat() 。
仅对 MSVC 使用 stat() 不足以解决待删除文件的并发问题。
可能可以在代码中绘制一些MINGW64以在此构建上下文中切换到 stat() 的不同实现,但我不确定是否依赖 MinGW 中的 stat() 实现来解决我们的问题正在尝试修复是否足够。所以这需要更多的研究。
Discussion: https://postgr.es/m/YOvOlfRrIO0yGtgw@paquier.xyz
Backpatch-through: 14
https://git.postgresql.org/pg/commitdiff/2c9b46c090e76c62f24563b9be2c34e6b92e9329

正确安装 fe-auth-sasl.h。

SASL 的前端回调的内部结构在 libpq-int.h 中可见,但没有安装标头。这将导致使用 libpq 内部结构的应用程序编译失败。9fd8557 中引入的问题。

Author: Mikhail Kulagin Reviewed-by: Jacob Champion
Discussion: https://postgr.es/m/05ce01d777cb40f31d6040f31d6040f31d60c2d95820$@postgrespro.ru
https://git.postgresql.org/pg/commitdiff/6c9c2831668345122fd0f92280b30f3bbe2dd4e6

删除 postmaster.c 中不必要的断言。
代码路径断言归档程序已死,但检查使这不可能发生。
Author: Bharath Rupireddy
Discussion: https://postgr.es/m/CALj2ACW=CYE1ars+2XyPTEPq0wQvru4c0dPZ=Nrn3EqNBkksvQ@mail.gmail.com
Backpatch-throgh: 14
https://git.postgresql.org/pg/commitdiff/dc2db1eac365b97c9129393acfe11102859f9e23

为 pg_receivewal 添加 ZLIB 压缩的 TAP 测试。

在 pg_receivewal 中有大量处理 ZLIB 压缩的代码,包括格式名称、开始流媒体位置的计算以及压缩本身等基础知识,但没有自动覆盖。此提交引入了一组条件测试(如果构建支持 ZLIB),以涵盖 ZLIB 压缩 WAL 段的创建、部分压缩 WAL 段的处理以及压缩操作本身。
请注意,通过直接使用由 pg_receivewal 的 Makefile 传递的 gzip 命令,有一个额外的阶段检查生成的文件的有效性。如果找不到命令,则跳过此部分,除非在测试环境中设置了变量 GZIP_PROGRAM,否则使用 MSVC 在 Windows 上可能会发生一些事情。
这组测试对于即将到来的补丁会变得很方便,这些补丁为 pg_receivewal 使用的压缩方法添加了更多选项,如 LZ4,以确保没有现有的设施被破坏。
Author: Georgios Kokolatos Reviewed-by: Gilles Darold, Michael Paquier
Discussion: https://postgr.es/m/07BK3Mk5aEOsTwGaY77qBVyf9GjoEzn8TMgHLyPGfEFPIpTEmoQuP2P4c7teesjSg-LPeUafsp1flnPeQYINMSMB_UpggJDoduB5EDYBqaQ=@protonmail.com
https://git.postgresql.org/pg/commitdiff/ffc9ddaea33f6dfd3dfa95828a0970fbb617bf8a

在 pg_receivewal 的 TAP 测试中使用 gzip 修复可移植性问题。

gzip 的 OpenBSD 实现仅考虑以“Z”、“gz”、“z”、“tgz”或“taz”为后缀的文件作为有效目标,丢弃任何其他内容并使用 --test 退出命令,错误代码为如果发现任何无效内容,则为 512。
ffc9dda 中引入的测试测试了一个后缀为 .gz.partial 的 WAL 段,足以让测试失败。就覆盖率而言,仅测试完整段就足够了,因此通过在此检查中丢弃 .gz.partial 段来简化代码。
这应该足以使 OpenBSD 环境的测试通过。根据 curculio 的报告。
Discussion: https://postgr.es/m/YPAdf9r5aJbDoHoq@paquier.xyz
https://git.postgresql.org/pg/commitdiff/0da3c1bc3f7261d5157f5b86ade88e8b379f8686

在 Windows 上为 pg_receivewal 禁用涉及 ZLIB 的测试。

正如 buildfarm 成员 bowerbird 所报告的那样,这些测试在 Windows 上是不稳定的。那里产生的失败表明 gzflush() 存在问题,无法同步刚打开的文件,而 gzFile 正确打开。
在用 MSVC 自己测试时,我遇到了一个不同的错误,文件根本无法打开,所以这让我相当怀疑,如果以随机并发失败结束,在 Windows 上测试这个区域是一个好主意。
这需要更多的调查,从长远来看,让这个 buildfarm 成员保持红色并不是一件好事,所以现在这只是在 Windows 上禁用这组测试。
Discussion: https://postgr.es/m/YPDLz2x3o1aX2wRh@paquier.xyz
https://git.postgresql.org/pg/commitdiff/6cea447e6a10cd7ef511470e809a894a013e6a18

  • 02 Heikki Linnakangas pushed

删除局部变量的无效赋值。

这应该在提交 7e30c186da 中删除,它将循环分成两个。只有第一个循环使用 ‘from’ 变量;在第二个循环中更新它是假的。
它在第一个循环之后从未被读取,所以这是无害的,并且肯定会被编译器优化掉,但让我们保持整洁。Backpatch 到所有支持的版本。
Author: Ranier Vilela
Discussion:https://www.postgresql.org/message-id/CAEudQAoWq%2BAL3BnELHu7gms2GN07k-np6yLbukGaxJ1vY-zeiQ%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/4c64b51dc51f8ff7e3e51eebfe8d10469a577df1

在 psql \copy from 中,将数据以更大的块发送到服务器。

以前,我们会将每一行作为单独的 CopyData 消息发送。如果表很窄,那是非常浪费的,因为每个 CopyData 消息都有 5 个字节的开销。
为了提高效率,将 8 kB 的输入数据缓冲并打包到每个 CopyData 消息中。服务器还在 COPY TO STDOUT 中将每一行作为单独的 CopyData 消息发送,这同样是浪费。但这在 FE/BE 协议描述中有所记录,因此更改它会破坏有线协议。
Reviewed-by: Aleksander Alekseev
Discussion:https://www.postgresql.org/message-id/40b2cec0-d0fb-3191-2ae1-9a3fe16a7e48%40iki.fi
https://git.postgresql.org/pg/commitdiff/eec57115e4c866f26bdc8bcbe3e2e7be4c6d0450

  • 03 Peter Eisentraut pushed

doc:修复函数原型中的错字。

https://git.postgresql.org/pg/commitdiff/5b60cf35f566697030a2895dfe27dde2e34dd370

修复缺乏消息多元化的问题。

https://git.postgresql.org/pg/commitdiff/55b2a2340758da8ff11357d719d169f264ac7112

修复语法文件中的一些非标准 C 代码缩进。

https://git.postgresql.org/pg/commitdiff/9aa8268faa0ec2904f55e85be5ec7b365c98edd1

doc:拼写检查。

https://git.postgresql.org/pg/commitdiff/46111fb7b57876a87eb0630ec12ad30950e38a39

**

  • 04 Tom Lane pushed

**

用 RelationGetSmgr() 替换 RelationOpenSmgr()。

这个补丁背后的想法是设计出像提交 9d523119f 修复的那样的错误。以前,一旦执行了 RelationOpenSmgr(rel),就可以直接访问 rel->rd_smgr 一些不太明确的时间间隔。
但是由于该指针将被 relcache 刷新清除,因此我们会因过度依赖先前的 RelationOpenSmgr 调用而导致错误仍然有效。
现在,很少有代码除了 rel.h 和 relcache.c 应该直接接触 rd_smgr 字段。
正常的编码规则是使用 RelationGetSmgr(rel) 并且不期望结果的有效时间超过一个 smgr 函数调用。有几个地方每次都使用该函数似乎有点矫枉过正,但现在它们带有大量警告注释。Amul Sul,这是我的主意。
Discussion: https://postgr.es/m/CANiYTQsU7yMFpQYnv=BrcRVqK_3U3mtAzAsJCaqtzsDHfsUbdQ@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/f10f0ae420ee62400876ab34dca2c09c20dcd030

以更 macOS 友好的方式探测 preadv/pwritev。

Apple 处理仅在某些 OS 版本中可用的函数的机制混淆了 AC_CHECK_FUNCS,因此混淆了 AC_REPLACE_FUNCS。
我们可以改用 AC_CHECK_DECLS,只要我们启用 -Werror=unguarded-availability-new。
这允许为 macOS 编译的人通过设置 MACOSX_DEPLOYMENT_TARGET 来控制是否使用 preadv/pwritev,而不是提供 back-rev SDK。(当然,后者仍然有效。)
James Hilliard
Discussion: https://postgr.es/m/20210122193230.25295-1-james.hilliard1@gmail.com
https://git.postgresql.org/pg/commitdiff/f014b1b9bb8eda4e82c1805969dbae2b07b7d54d

将debug_invalidate_system_caches_always 重命名为 debug_discard_caches。
提交 4656e3d66 引入的名称被认为是不合理的长。要匹配此更改,请将 initdb 最近添加的 --clobber-cache 选项重命名为 --discard-caches。
Discussion: https://postgr.es/m/1374320.1625430433@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/d68a00391214be2020e49be4b55f761d47a5c229

用 Const 替换 Param 时复制它的位置字段。

这允许 Param 替换产生与从字面上写入常量值相同的结果。虽然就当前的核心代码而言,这几乎无关紧要,但扩展可能对节点位置字段更感兴趣。
Julien Rouhaud
Discussion: https://postgr.es/m/20170311220932.GJ15188@nol.local
https://git.postgresql.org/pg/commitdiff/be850f1822e4b54d1d570eefa8a7242788011634

确保 MSVC 构建中的 HAVE_DECL_XXX 宏与 Unix 中的宏相匹配。

Autoconf 的 AC_CHECK_DECLS() 总是将 HAVE_DECL_whatever 定义为 1 或 0,但 msvc/Solution.pm 中的某些条目显示诸如“undef”而不是 0 之类的符号。修复它以保持一致性。
当前使用 AFAICS 中没有实时错误,但是如果添加更复杂的 #if 测试,不难想象会出现一个错误。回溯到 v13,早在 Solution.pm 就包含此数据。
老分支手动填写的pg_config_ext.h.win32文件中仍然存在不一致;但只要问题只是潜在的,那么清理那里的东西似乎不值得。
Discussion: https://postgr.es/m/3185430.1626133592@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/e529b2dc37ac80ccebd76cdbb14966d3b40819c9

用 OID 范围测试替换 pg_depend 中的显式 PIN 条目。

从 v14 开始,pg_depend 包含近 7000 个“pin”条目,记录了内置对象的 OID。这对于每个数据库来说都是相当大的膨胀,并且它增加了 pg_depend 查找以及 initdb 的时间。
我们可以去掉所有这些条目以支持 OID 范围检查,即“锁定 FirstUnpinnedObjectId 以下的 OID”。(template1 和公共模式是例外。这些例外现在被连接到 IsPinnedObject() 而不是用于填充 pg_depend 的 initdb 代码,但无论哪种方式都是相同的数量。) pg_shdepend 的内容也被同样修改。
Discussion: https://postgr.es/m/3737988.1618451008@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/a49d081235997c67e8aab7a523b17e8d1cb93184

Doc:记录当前事务模式 GUC。

我们有 default_transaction_isolation 等人的文档,但由于某种原因没有 transaction_isolation 等人的文档。
AFAICS 这只是一个古老的疏忽,所以修复。根据来自 Yanliang Lei 的错误 #17077。
Discussion: https://postgr.es/m/17077-ade8e166a01e1374@postgresql.org
https://git.postgresql.org/pg/commitdiff/665c5855e5820531f500dad50f29f377af537ecc

  • 05 Thomas Munro pushed

为 psql 的 \watch 命令添加 PSQL_WATCH_PAGER。

允许 \watch 命令使用寻呼机。这有效,但对“less”等传统寻呼机不是很有用,因此请使用不同的环境变量。
如果您设置 PSQL_WATCH_PAGER=“pspg --stream”,流行的开源工具“pspg”(也是 Pavel 开发的)知道如何显示输出。
为了使 \watch 在用户退出寻呼机或按下 ^C 时快速做出反应,并提高其计时的准确性并降低无用的上下文切换率,请将 \watch 命令的主循环更改为使用 sigwait() 而不是而不是 Unix 上的睡眠/轮询循环。
目前仅在 Unix 上受支持(如 pspg)。
Author: Pavel Stehule pavel.stehule@gmail.com
Author: Thomas Munro thomas.munro@gmail.com
Discussion:https://postgr.es/m/CAFj8pRBfzUUPz-3gN5oAzto9SDuRSq-TQPfXU_P6h0L7hO%2BEhg%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/7c09d2797ecdf779e5dc3289497be85675f3d134

sigwait 的可移植性修复。

构建运行古老 HPUX 和 Solaris 的农场动物具有来自 POSIX 草案版本的非标准 sigwait(),因此他们不喜欢提交 7c09d279。
为了避免一般的问题,只有在 <signal.h> 声明并匹配预期声明时才尝试使用 sigwait()。
要在 Solaris 上选择现代声明(即使在非线程程序中),请将 -D_POSIX_PTHREAD_SEMANTICS 移动到正确的位置以影响所有翻译单元。
还要修复错误检查。现代 sigwait() 没有设置 errno。感谢 Tom Lane 对此的帮助。
Discussion: https://postgr.es/m/3187588.1626136248%40sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/5865e064abfbbe11ebfc09881be009c0f69b4dc2

**

  • 06 David Rowley pushed

**

修复元组排序中的理论错误。

这修复了 tuplesort.c 中的一个理论错误,如果有界排序与 byval 基准排序 (tuplesort_begin_datum) 结合使用,当在 make_bounded_heap() 中将排序切换到有界堆时,我们将调用 free_sort_tuple()。
问题是,在对 byval 类型的 Datum 进行排序时,元组为 NULL,而不管它如何,free_sort_tuple() 都会为其释放内存。
这会导致崩溃。在这里,我们通过在尝试分离和释放属于它的任何内存之前添加一个检查来查看元组是否为 NULL 来解决这个问题。
这个错误只是理论上的原因是当前代码库中没有任何地方在执行 Datum 排序时执行 tuplesort_set_bound()。但是,让我们对此进行回溯修复,就好像任何扩展都以这种方式使用代码一样可能会导致问题。
Author: Ronan Dunklau
Discussion: https://postgr.es/m/CAApHDvpdoqNC5FjDb3KUTSMs5dg6f+XxH4Bg_dVcLi8UYAG3EQ@mail.gmail.com
Backpatch-through: 9.6, oldest supported version
https://git.postgresql.org/pg/commitdiff/41469253e970b539a4ae75226dd4f226b7b2bc8c

加强 tuplesort 的 free_sort_tuple 函数。

41469253e 通过在释放元组之前检查元组是否为 NULL 来解决从 free_sort_tuple 中删除理论错误的麻烦。
让我们通过将元组设置为 NULL 来使它更健壮一点,这样我们应该再次被调用,我们最终不会在已经 pfree 的元组上执行 pfree。
Per advice from Tom Lane.
Discussion: https://postgr.es/m/3188192.1626136953@sss.pgh.pa.us
Backpatch-through: 9.6, same as 41469253e
https://git.postgresql.org/pg/commitdiff/5bd38d2f2846c7e387d04a16c4372da0de7b1221

删除对 INT8 序列的无用范围检查。

检查 INT8 序列是否具有 seqmin 和 seqmax 值在 int64 类型的最小值和最大值的范围之外是没有意义的。
它们都使用相同的底层类型,因此 INT8 肯定不能超出 int64 支持的最小值和最大值。
这段代码是相当无害的,而且似乎大多数编译器无论如何都会优化它,尽管如此,让我们删除了它,用一个小注释替换并且说明为什么不需要检查。
Author: Greg Nancarrow, with the comment revised by David Rowley
Discussion:https://postgr.es/m/CAJcOf-c9KBUZ8ow_6e%3DWSfbbEyTKfqV%3DVwoFuODQVYMySHtusw%40mail.gmail.com
https://git.postgresql.org/pg/commitdiff/e0271d5f1e871dd61efc26bda8a0b556c7935901

将 Result Cache 节点的名称更改为 Memoize。

“结果缓存”从来都不是这个节点的好名字,但没有人设法想出另一个让任何人都喜欢的名字。
直到大卫约翰斯顿提到“节点记忆”,汤姆莱恩将其修改为“记忆”。人们似乎喜欢“记忆”,所以让我们重命名。
Reviewed-by: Justin Pryzby
Discussion: https://postgr.es/m/20210708165145.GG1176@momjian.us
Backpatch-through: 14, where Result Cache was introduced
https://git.postgresql.org/pg/commitdiff/83f4fcc65503c5d4e5d5eefc8e7a70d3c9a6496f

  • 07 Amit Kapila pushed

向内置逻辑复制添加对准备好的事务的支持。

要将准备时对流事务的支持添加到内置逻辑复制中,我们需要执行以下操作: *通过利用扩展复制协议,修改输出插件 (pgoutput) 以实现新的两阶段 API 回调。 *修改复制应用工作者,通过在准备时重放它们来正确处理两阶段事务。
*添加新的订阅选项“two_phase”以允许用户启用两阶段事务。一旦初始数据同步结束,我们就启用 two_phase。
然而,我们必须在复制槽创建期间明确禁用两阶段事务的复制,即使插件支持它。
我们不需要复制在此阶段积累的更改,而且,我们没有打开复制连接,因此我们不知道将数据发送到哪里。
这个新的 two_phase 选项不允许使用流选项。这可以作为一个单独的补丁来完成。我们不允许切换订阅的 two_phase 选项,因为它会导致不一致的副本。
出于同样的原因,我们不 除非 copy_data 选项为 false,否则不允许在为订阅启用 two_phase 后刷新发布。
Author: Peter Smith, Ajin Cherian and Amit Kapila based on previous work by Nikhil Sontakke and Stas Kelvich
Reviewed-by: Amit Kapila, Sawada Masahiko, Vignesh C, Dilip Kumar, Takamichi Osumi, Greg Nancarrow Tested-By: Haiying Tang

Discussion: https://postgr.es/m/02DA5F5E-CECE-4D9C-8B4B-418077E2C010@postgrespro.ru
Discussion: https://postgr.es/m/CAA4eK1+opiV4aFTmWWUF9h_32=HfPOW9vZASHarT0UA5oBrtGw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/a8fd13cab0ba815e9925dc9676e6309f699b5f72

  • 08 Magnus Hagander pushed

阐明 pg_stat_statements 列的描述。

Reported-By: Peter Eisentraut
Backpatch-through: 14
Discussion: https://postgr.es/m/8f5e63b8-e8ed-0f80-d8c4-68222624c200@enterprisedb.com
https://git.postgresql.org/pg/commitdiff/b4deefc39b933b9808645667117f2d8208092794

  • 09 John Naylor pushed

删除 get_qual_from_partbound 中未使用的函数参数。

提交 0563a3a8b 更改了分区约束的生成方式,因此该函数不再计算父 attnos 到子 attnos 的映射。
这是扩展可以使用的外部函数,因此这可能是一个重大更改。但是,不知道外部调用者,这将使将来编写此类调用者变得更简单。
Author: Hou Zhijie Reviewed-by: David Rowley, Michael Paquier, Soumyadeep Chakraborty
Discussion:https://www.postgresql.org/message-id/flat/OS0PR01MB5716A75A45BE46101A1B489894379@OS0PR01MB5716.jpnprd01.prod.outlook.com
https://git.postgresql.org/pg/commitdiff/c203dcddf997180000bc574a60313f3437e35af9

  • 10 Dean Rasheed pushed

改进“冲突或冗余选项”错误的报告。

当报告“冲突或冗余选项”错误时,尽量确保使用了 errposition(),以帮助用户识别有问题的选项。以前,在不到 60% 的情况下调用 errposition()。
此补丁将其提高到 90% 以上,但仍有一些地方无法使用 ParseState。
在这种情况下,使用 errdetail() 可能会改善错误,但这留给以后的任务。此外,由于此错误是从代码库中的 100 多个位置抛出的,因此引入一个专用函数来抛出它,从而减少代码重复。摘自 Vignesh C 的一个稍大的补丁。
Reviewed by Bharath Rupireddy, Alvaro Herrera, Dilip Kumar, Hou Zhijie, Peter Smith, Daniel Gustafsson, Julien Rouhaud and me.
Discussion: https://postgr.es/m/CALDaNm33FFSS5tVyvmkoK2cCMuDVxcui=gFrjti9ROfynqSAGA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/2bfb50b3df11399ed80347dd03bfaf8cd5acf962

改进 CREATE COLLATION 选项的错误检查。

检查冲突或冗余选项,就像我们对大多数其他命令所做的一样。多次指定任何选项充其量是多余的,并且很可能表明用户代码中存在错误。
同时,通过添加详细文本(与 CREATE DATABASE 相同)来改善冲突区域设置选项的错误。
Bharath Rupireddy, reviewed by Vignesh C. Some additional hacking by me.
Discussion: https://postgr.es/m/CALj2ACWtL6fTLdyF4R_YkPtf1YEDb6FUoD5DGAki3rpD+sWqiA@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/ba620760c4c8ca90ff83ecf7e4d46f5ec4dabd7b

  • 11 Alexander Korotkov pushed

修复多范围运算符的目录定义中的小不一致。

此提交修复了几个多范围运算符和另一个多范围运算符的 oprjoin 的描述。oprjoin 的变化更加美观,因为旧函数和新函数都返回相同的常量。
这些外观变化不值得 14beta2 和 14beta3 之间的目录不兼容。所以,catversion 不会被bumped。
Discussion:https://postgr.es/m/CAPpHfdv9OZEuZDqOQoUKpXhq%3Dmc-qa4gKCPmcgG5Vvesu7%3Ds1w%40mail.gmail.com
Backpatch-throgh: 14
https://git.postgresql.org/pg/commitdiff/768ea9bcf98120eef01a6deea9c5c6997b153ab1

支持 unnest(多范围)。

已经发现多范围缺乏将它们分解成单个范围的能力。订阅和适当的扩展对象表示需要大量工作,而 v14 为时已晚。
这个提交提供了 unnest(multirange) 的实现,这是非常简单的。
unnest(multirange) 被定义为一个多态过程。Catversion is bumped. Reported-by: Jonathan S. Katz
Author: Alexander Korotkov
Reviewed-by: Justin Pryzby, Jonathan S. Katz, Zhihong Yu, Tom Lane
Reviewed-by: Alvaro Herrera

Discussion: https://postgr.es/m/flat/60258efe-bd7e-4886-82e1-196e0cac5433%40postgresql.org
https://git.postgresql.org/pg/commitdiff/9e3c217bd98da803709872a8612577d88a39329a

忘记了9e3c217bd9的catversion bump。

https://git.postgresql.org/pg/commitdiff/f157db862225a7bfe041ca3f7b73e913e2a8d8d6

  • 12 Daniel Gustafsson pushed

文档:修复标记和大小写不一致的问题。

确保使用 正确标记文本中的函数参数,避免将 用于不是首字母缩略词的术语,并在值列表中正确放置“, and”。
首字母缩略词删除是提交 fb72a7b8c3 的后续行动,后者将其删除为 minmax-multi。顺便说一下,还要修正一个大小写不正确的单词。
Author: Ekaterina Kiryanova e.kiryanova@postgrespro.ru
Reviewed-by: Laurenz Albe laurenz.albe@cybertec.at

Discussion: https://postgr.es/m/c050ecbc-80b2-b360-3c1d-9fe6a6a11bb5@postgrespro.ru
Backpatch-through: v14
https://git.postgresql.org/pg/commitdiff/830ef61bd8d0ac4c89c21a895047c1b3a6b202f3

  • 13 Álvaro Herrera pushed

槽失效后正确推进旧段水平。

当某些时隙由于 max_slot_wal_keep_size 限制而失效时,旧的段水平线应向前移动以保持在限制内。但是,在提交 c6550776394e 中,我们忘记再次调用 KeepLogSeg 以在使复制槽无效后重新计算地平线。
在其他时隙保留的情况下,最终会出于其他原因重新计算限制,但如果所有时隙都无效,则此后限制根本不会移动。修理。Backpatch 到 13,其中引入了该功能。
Author: Kyotaro Horiguchi horikyota.ntt@gmail.com
Reported-by: Marcin Krupowicz mk@071.ovh
Discussion: https://postgr.es/m/17103-004130e8f27782c9@postgresql.org
https://git.postgresql.org/pg/commitdiff/ead9e51e82363a0e492d56aee83ed11b3759a615

当克隆行触发到分区时保留触发状态。

当触发器从分区表克隆到它们的分区时,‘tgenabled’ 标志(origin/replica/always/disable)没有传播。使分区触发器上的标志最初设置为与分区表上相同的值。
添加一个测试用例来验证行为。Backpatch 到 11,这出现在提交 86f575948c77 中。
Author: Álvaro Herrera alvherre@alvh.no-ip.org
Reported-by: Justin Pryzby pryzby@telsasoft.com
Discussion: https://postgr.es/m/20200930223450.GA14848@telsasoft.com
https://git.postgresql.org/pg/commitdiff/df80fa2ee50478391445cef03e42c1b3d64fccca

修复 pg_dump 以禁用分区表上的触发器。

pg_dump 未能为从各自父级更改的分区保留 ‘enabled’ 标志(不仅可以禁用,还可以 REPLICA 或 ALWAYS)。
尝试通过在转储中包含此类触发器的定义来处理该问题,但将标准 CREATE TRIGGER 行替换为 ALTER TRIGGER 行。
Backpatch 到 11,这些触发器可以存在。在分支 11 和 12 中,从提交 b9b408c48724 中选取一些测试行来验证 pg_upgrade 是否符合这些安排。
Co-authored-by: Justin Pryzby pryzby@telsasoft.com
Co-authored-by: Álvaro Herrera alvherre@alvh.no-ip.org
Discussion: https://postgr.es/m/20200930223450.GA14848@telsasoft.com
https://git.postgresql.org/pg/commitdiff/f0e21f2f61675f4e56ae53d32ea54d587a7c2257

使新的复制槽测试代码不那么活泼。

在 ead9e51e8236 中添加的新测试代码很活泼——它取决于共享内存状态,在记录警告消息之前会发生变化。反过来说,Backpatch to 13。
Author: Álvaro Herrera alvherre@alvh.no-ip.org
Discussion: https://postgr.es/m/202107161809.zclasccpfcg3@alvherre.pgsql
https://git.postgresql.org/pg/commitdiff/8589299e03fff012e0bbb9716693750a0d68eef7

待 定 补 丁

David Rowley 发送了另一个补丁修订版,以跟踪添加到 RelOptInfo 结构的 Bitmapset 中未修剪的分区,并允许在更多情况下进行有序分区扫描。

Hayato Kuroda 发送了另一个补丁修订版以修复 ECPG 中的 DEALLOCATE 和 DESCRIBE。

David Rowley 发送了另一个补丁修订版,以在事务中访问许多关系后加快事务完成速度。

Hou Zhijie又发了一个补丁,让写东西的并行操作成为可能。

Rahila Syed 又发送了两个补丁修订版,以便可以按列过滤逻辑复制。

Álvaro Herrera 发送了一个补丁,旨在修复一个错误,该错误表现为插入分区时未更新分区检查。

Jeevan Ladhe 发送了补丁的两个修订版,以在错误消息中指定哪些 DB 在 pg_upgrade 中有错误。

Magnus Hagander 发送了另一个补丁修订版,以添加对 PROXY 协议的支持。

Bharath Rupereddy 发送了一个补丁来使用 WaitLatch 来进行 {pre, post}_auth_delay 而不是 pg_usleep。

Vigneshwaran C 又发送了三个补丁修订版,以将模式级别的粒度添加到 PUBLICATION。

John Naylor 又发送了四个补丁修订版,以加快验证 UTF-8 的速度。

David Rowley 又发送了四个补丁修订版,以添加对 ORDER BY / DISTINCT 聚合的适当规划器支持。

Ronan Dunklau、David Rowley 和 Ranier Vilela 交换了补丁以在 ExecSort 中使用优化的单数据元组排序。

Masahiro Ikeda 发送了两个修订版的补丁来修复 heap_prune_chain() 中的一些错误注释。

Alexander Lakhin 发送了另一个补丁修订版,旨在修复一个错误,该错误表现为在 Win32 上花费更多时间“删除挂起”。

Tom Lane 发送了另一个补丁修订版,以减少未决 inval 消息的内存消耗。

Peter Smith 发送了一个补丁来避免对 PGserverVersion 的不必要调用。

Craig Ringer 发送了一个补丁来教 pgflex.pl 和 pgbision.pl 读取 buildenv.pl 以获取工具名称,并支持 config.pl 中的额外预处理器定义。

Maxim Orlov 发送了另一个补丁修订版,以修复并行工作程序失败的断言和核心转储。

Tom Lane 发送了另一个补丁修订版,旨在修复一个错误,该错误表现为在 postgres_fdw 后面具有不同 DB 排序规则的表上的合并连接失败。

Peter Smith 和 Euler Taveira de Oliveira 交换了补丁来为逻辑复制添加行过滤。

Ian Barwick 发送了一个补丁来记录 pg_encoding_to_char() 和 pg_char_to_encoding()。

Fabien COELHO 将补丁的另一个修订版发送到 psql 以分解回声代码。

Heikki Linnakangas 发送了补丁的另一个修订版,以不再需要知道将创建多少磁带的方式重构

LogicalTapeSet/LogicalTape 接口,并用简单的平衡 k-way 合并替换多相合并算法。

Heikki Linnakangas 发送了另一个补丁修订版,以移动一些 ResourceOwnerEnlarge() 调用以确保安全性和清晰度,使转售者更容易扩展,并优化其中使用的哈希函数。

Daniil Zakhlystov 发送了另一个补丁修订版,以添加 zlib 和 zstd 流压缩,然后使用此基础结构将它们添加到 libpq。

Zhihong Yu发送了补丁的两个修订版,以 pfree() 一个 palloc() ed 字符串。

Ajin Cherian 发送了另一个补丁修订版,以跳过用于逻辑复制的空事务。

Kyotaro HORIGUCHI 发送了另一个补丁修订版,以严格检查命令行上的数字参数、环境变量,并记录这些更改对 PGCTLTIMEOUT 的影响。

Hou Zhijie发了一个补丁,避免重复调用pg_dump中的PQfnumber。

Gilles Darold 发送了另外两个补丁修订版,以允许在任何命令开始时通过 xact 注册回调执行用户定义的代码。

Peter Smith 发送了另一个补丁修订版,以添加对流式事务的准备 API 支持。

Huailing Liu 发送了一个补丁来删除一个令人困惑的 SI inval。

Kyotaro HORIGUCHI 发送了另一个补丁修订版,以从 XLogReadRecord 中删除 read_page 回调。

Heikki Linnakangas 发送了另一个补丁修订版,为 GIN 添加 amcheck。

enis Hirn 发送了另一个补丁修订版,以允许在公共表表达式中进行多个线性递归自引用。

Haiying Tang 发送了一个补丁来收紧 psql tab-completes 的帮助输出。

Vigneshwaran C 发送了另一个补丁修订版,以识别在 CREATE/ALTER SUBSCRIPTION 期间出版商丢失的出版物。

Arne Roland 发送了另一个补丁修订版,以递归方式重命名分区表上的触发器。

Andrey V. Lepikhov 发送了补丁的另一个修订版,教优化器考虑非分区表与分区表的每个分区的分区连接,并禁止非对称机制连接两个分区(或附加)关系,因为它可能会导致巨大的消耗

在 NestLoop 路径的重新参数化期间 CPU 和内存。

Bharath Rupireddy 发送了另一个补丁修订版,以消除使用“非否定”的错误消息的歧义。

Magnus Hagander 发送了一个补丁,用他们的 git 修订版来标记 tarball。

Andrey V. Lepikhov 发送了补丁的另一个修订版,以删除与其自身关系的内部连接,前提是可

以证明可以用扫描替换连接。

Ryohei Takahashi 发送了两个修订版的补丁来加速 COMMIT PREPARED。

Mark Dilger 发送了一个补丁来停止忽略文件关闭失败。

Justin Pryzby 又发送了两个补丁修订版,以添加新的元命令 \dn+ 以显示每个模式的大小,以及用于 AM 的 \dA+。

Aleksander Alekseev 发送了另一个补丁修订版来重构 procarray。

Yugo Nagata 发送了另一个补丁修订版,以修复表现为 pgbench 错误和序列化/死锁重试的错误。

Justin Pryzby 发送了补丁的另一个修订版以支持 ALTER TABLE … ACCESS METHOD 并允许指定由分区继承的分区表的访问方法。

Dilip Kumar 添加了一个缺失的 bbsink_forward_end_archive(sink) 到 src/backend/replication/basebackup_gzip.c。

Kyotaro HORIGUCHI 发送了一个补丁来修复字符映射表中的一些重复拼写错误。

Bertrand Drouvot 发送了另一个补丁修订版,以在备用机上实现最少的逻辑解码。

Li Japin 和 Amit Kapila 交换补丁以禁止将复制槽名称设置为空字符串。

Ranier Vilela 发送了一个补丁来消除一些变量的阴影,并减少来自现代编译器的一些 -Wsign-compare 警告。

Vigneshwaran C 发送了另一个补丁修订版,以包含逻辑复制消息描述中使用的实际数据类型。

James Coleman 发送了补丁的另一个修订版,以允许具有 LIMIT/OFFSET 的并行 LATERAL 子查询。

Dinesh Chemuduru 发送了一个补丁来向 PL/pgsql 添加新的诊断、

PG_PARSE_SQL_STATEMENT 和 PG_PARSE_SQL_STATEMENT_POSITION。

Andrew Dunstan 又发送了三个补丁修订版来清理 PostgresNode.pm。

Álvaro Herrera 和 Ranier Vilela 交换补丁以从 slot.c 中删除毫无意义的 strlen。

Kyotaro HORIGUCHI 又发送了两个补丁修订版,以使 FPI_FOR_HINT 遵循标准的 FPI 发射策略。

Yugo Nagata 发送了一个补丁,旨在修复一个错误,该错误表现为在脚本开始而不是第一次执行命令时准备命令。

Soumyadeep Chakraborty 发送了另一个补丁修订版,通过使用 pgprocno 引用目标进程来使

ProcSendSignal() 更高效,以避免扫描 ProcArray 并跟踪启动过程。

Yugo Nagata 和 Ranier Vilela 交换了补丁,旨在修复一个从未报告过的 WAL 页头损坏的错误。

Atsushi Torikoshi 发送了一个补丁来记录超级用户权限执行 pg_import_system_collations() 的必要性。

Peter Smith 发送了一个补丁来防止在使用 strcpy 来 gid 缓冲区时潜在的缓冲区溢出。

Atsushi Torikoshi 发送了另一个补丁修订版,以添加一个函数来记录完整的查询字符串及其当前在后端运行的具有指定进程 ID 的查询的计划。

更多信息,请关注 中国 PostgreSQL考试认证中心 获取

PostgreSQL一周快报(2021-7-18)相关推荐

  1. 2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2021.04.18】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[题目下载.2013年(第4届)~2020年(第11届)] CSDN 蓝桥杯 专栏 2013年 第04届 蓝桥杯 Java B组 省赛真题详解及小结 ...

  2. 崩坏3抽奖模拟html5,崩坏3崩坏周周练5月18日答案大全 夜隐重霞崩坏周周练答案汇总...

    崩坏3 大小: 角色养成 崩坏3崩坏周周练5月18日答案是什么?崩坏3在今天更新了崩坏周周练的题库,本期题目都围绕这"夜隐重霞"这个角色,对她不了解的玩家估计很难获得高分.下面就是 ...

  3. 实战:怎样把间隔的几个commit整理成1个?-2021.11.18

    实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文章目录 实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文档来源 实验环境 实验软件(无) 1 ...

  4. ElasticSearch搜索引擎-2_学习笔记2021.4.18)

    ElasticSearch搜索引擎-2_学习笔记(2021.4.18) 前言: RESTful 介绍 , 我们通过RESTful来操作ElasticSearch (所有请求都是通过Postman ) ...

  5. 最代码5月第3周回顾(5.12-5.18@2014)

    最代码5月第3周回顾(5.12-5.18@2014) url: http://user.qzone.qq.com/1758317551/blog/1400513736 最代码每周精选 网站总结 内容管 ...

  6. 【Doris Weekly FAQ】2021.07.05~2021.07.18

    观众朋友们: 晚上好! 欢迎收看[ Doris 近日要闻]~本次为您带来的是 2021年07月15日 - 2021年07月18日 的双周总结. Doris 社区周报每期会包含 FAQ 环节.我们会在社 ...

  7. 2021.11.18 简单计算阶乘(多种方法)及 求阶乘的和

    运用各种方法计算阶乘及阶乘之和 三种方法计算阶乘 一.利用for循环法 二.利用导入库法计算阶乘 三.利用函数递归法 在原有基础上计算阶乘之和 学习方向: 三种方法计算阶乘 一.利用for循环法 &q ...

  8. Go 1.18特性快速了解 | Gopher Daily (2021.12.18) ʕ◔ϖ◔ʔ

    每日一谚:感觉Go是谷歌这些年来唯一真正仁慈的产品之一.它没有任何地方看起来对谷歌"行了方便".我没有感觉到别有用心的动机.没有跟踪或锁定.它只是真正的帮助大家,对世界有用且免费. ...

  9. 【总结】2021.01.18期末考总结

    2021.01.23期末考总结 友链 前言 D a y Day Day - 10 10 10(体育) D a y Day Day - 3 3 3(英语口语) D a y Day Day 0 0 0 D ...

最新文章

  1. CodeForces 416B
  2. 1.使用适配器模式设计一个仿生机器人:要求机器人可以模拟各种动物行为,在机器人中定义了一系列方法,如机器人发声方法talk(),机器人移动方法move()等。如果希望在不改变已有Bird类代码的基础上
  3. 使用showMessageDialog显示消息框
  4. 前端路由的原生代码实现?前端如何监听路由变化?
  5. 震惊!!!这才是代码!!
  6. 上周热点回顾(4.14-4.20)
  7. Kotlin 势必取代 Java?
  8. influxdb 配置
  9. Golang 大杀器之性能剖析 PProf
  10. MFC实战项目——超市管理系统
  11. Android开发之局域网聊天软件
  12. 计算机纸牌游戏攻略,Windows纸牌游戏怎么玩 玩法技巧攻略详解
  13. 扩展spring之ext-spring-cache
  14. ubantu18-ROS环境下配置IMU(STIM300),含驱动下载安装与硬件配置。
  15. STM32 学习笔记 expected a type specifier
  16. 魔方自动还原程序3D版本和2D 修正版
  17. linux删除pdf密码
  18. JVM调优的在线网站
  19. 学渣之路:一个月拯救我英语四级
  20. 纸板表的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 线性代数的本质(七)——叉积
  2. php设置下载名,php文件下载并重命名
  3. quot;CoolReaperquot; --酷派手机后门
  4. knockout+html绑定,Knockout.Js官网学习(style绑定、attr绑定)
  5. vs code返回上一步
  6. GLONASS天线市场深度研究分析报告
  7. 2017北大计算机考研参考书目,2017年北京大学考研参考书目:社会学
  8. pythoon网页爬取小说源代码(~~~明月小说网~~~)
  9. [VC]关闭笔记本显示器
  10. 训练实录 | 2021牛客暑期多校训练营4