PgPedia 周报,2024-04-08
本周的条目故意推迟发布,以应对 PostgreSQL 17 功能冻结 前最后时刻大量提交(详情见下文摘要)。PostgreSQL 17 的功能就此结束,但在 计划于九月发布的版本 之前,还需要进行大量测试。与往常一样,这些测试不会自动完成,所以即使(或者尤其是)您不是贡献者,现在也是您大放异彩的机会。请查看 pgsql-hackers 上的“冻结后的损害控制”讨论串,其中包含一些可能的起点。
网站新闻方面,长期读者可能已经注意到网站顶部有一个广告横幅。这是由 EthicalAds(Read the Docs 的一个部门)的友好人士提供的,旨在 资助第二艘远洋游艇 部分地弥补服务器成本。
PostgreSQL 17 本周的变更
用户可见的变更
SQL
- 添加了
ALTER TABLE ... MERGE PARTITIONS ...语法 - 添加了
ALTER TABLE ... SPLIT PARTITION ...语法 COPY:添加了LOG_VERBOSITY选项EXPLAIN:添加了SERIALIZE选项- 添加了
JSON_TABLE()构造函数
系统目录
系统函数
- 添加了存储过程
pg_wal_replay_wait()
GUCs
- 添加了
io_combine_limit - 添加了
or_to_any_transform_limit - 添加了
trace_connection_negotiation vacuum_buffer_usage_limit:默认值已更改为2MB
实用程序
pg_restore:添加了--transaction-size选项pg_combinebackup:添加了--clone/--copy-file-range选项pg_buffercache:添加了函数pg_buffercache_evict()
API
libpq:- 添加了函数
PQsetChunkedRowsMode() - 添加了函数
PQsocketPoll()
- 添加了函数
内部
- 提供用于流式传输关系数据的 API。
- 在懒惰 vacuum 期间,使用 TidStore 存储死元组的 TID。
- 引入非递归 JSON 解析器
- 引入增量内存分配器
injection_points测试模块:添加了函数injection_points_set_local()
PostgreSQL 提交的值得关注的变更
- 9bd99f4c (2024-04-08):
表的 AM 的自定义 reloptions - 8a1b31e6 (2024-04-07):
真空存储的 TID 位图使用增量上下文 - bb766cde (2024-04-08):
JSON_TABLE:添加对 NESTED 路径和列的支持 - f6a25299 (2024-04-08):
修复 JsonExpr 的反编译,以正确发出 QUOTES 和 WRAPPER - 561b74dd (2024-04-08):
修复在 JSON_QUERY() 中指定 KEEP QUOTES 的限制 - 13453eed (2024-04-07):
添加 pg_buffercache_evict() 函数用于测试。 - 91044ae4 (2024-04-08):
在 TLS 握手中发送 ALPN,并在直接 SSL 连接中要求它 - d39a49c1 (2024-04-08):
支持直接 TLS 握手,无需 SSLRequest 协商 - 05fd30c0 (2024-04-08):
重构 libpq 状态机以协商加密 - f587338d (2024-04-08):
injection_points:引入运行时条件 - 705843d2 (2024-04-08):
通过新的 GUC 增强 libpq 加密协商测试 - 20f9b61c (2024-04-08):
当 gssencmode='require' 时,在连接前检查凭证缓存 - 705ec056 (2024-04-08):
修复 bump.c 中不正确的 KeeperBlock 宏 - 72bd38cc (2024-04-08):
将 OR 子句转换为 ANY 表达式 - a0e0fb1b (2024-04-07):
使用条件变量等待下一个 MultiXact 偏移量 - 473411fc (2024-04-07):
避免 nbtree 数组不等式产生不必要的查找。 - b7b0f3f2 (2024-04-08):
在顺序扫描中使用流式 I/O。 - 6ed83d5f (2024-04-08):
为元组排序使用增量内存上下文 - f3ff7bf8 (2024-04-07):
添加 XLogCtl->logInsertResult - 29f6a959 (2024-04-08):
引入增量内存分配器 - 0ba8b75e (2024-04-07):
扩大 MemoryContextMethodID 的位空间 - c4ab7da6 (2024-04-07):
避免 libpq 套接字写入中不必要的超大 memcpys - a97bbe1f (2024-04-06):
减少 heapgetpage() 中每个元组循环的分支 - 41c51f0c (2024-04-06):
使用 AVX-512 指令优化 visibilitymap_count()。 - 792752af (2024-04-06):
使用 AVX-512 指令优化 pg_popcount()。 - 90f51782 (2024-04-06):
在 libpq 的分块模式之上重新实现 psql 的 FETCH_COUNT 功能。 - 4643a2b2 (2024-04-06):
使用 libpq 支持分块检索结果。 - 92641d8d (2024-04-07):
将 BitmapAdjustPrefetchIterator 更改为接受 BlockNumber - 1fdb0ce9 (2024-04-07):
BitmapHeapScan:为 skip_fetch 使用正确的 recheck 标志 - 04e72ed6 (2024-04-07):
将 skip_fetch 优化推入表 AM - 87c21bb9 (2024-04-07):
实现 ALTER TABLE ... SPLIT PARTITION ... 命令 - 1adf16b8 (2024-04-07):
实现 ALTER TABLE ... MERGE PARTITIONS ... 命令 - fe1431e3 (2024-04-06):
BitmapHeapScan:推迟设置 can_skip_fetch - 74eaf66f (2024-04-07):
在 AbortTransaction() 中调用 WaitLSNCleanup() - ee799284 (2024-04-07):
阐明 WaitLSNLock 受到的保护内容 - 25f42429 (2024-04-07):
在 waitlsn.c 中使用 LWLock 而非自旋锁 - 1577081e (2024-04-06):
BitmapHeapScan:在位图创建后开始扫描 - 06558f49 (2024-04-06):
将 IPC::Run 优化移植到 src/test/perl。 - 5bf748b8 (2024-04-06):
增强 nbtree ScalarArrayOp 的执行。 - a365d9e2 (2024-04-06):
加速哈希对齐 C 字符串时的尾部处理,第二次 - 0c25fee3 (2024-04-06):
让 fasthash_accum 为字节加载使用平台字节序 - 98f320eb (2024-04-06):
将 vacuum_buffer_usage_limit 的默认值增加到 2MB。 - 3bd8439e (2024-04-06):
允许 BufferAccessStrategy 限制 pin 计数。 - f956ecd0 (2024-04-06):
将 hash_string_pointer 的使用转换为 fasthash 等效项 - db17594a (2024-04-06):
添加宏以禁用地址安全插桩 - aa1e8c20 (2024-04-06):
改进 read_stream.c 的快速路径。 - 55a5ee30 (2024-04-05):
修复 BlockRefTableEntryGetBlocks 中的不正确计算。 - 079d94ab (2024-04-05):
在调用 copy_file_range 前检查 HAVE_COPY_FILE_RANGE - ac811015 (2024-04-05):
允许在 write_reconstructed_file 中使用 copy_file_range - b8b37e41 (2024-04-05):
使 libpqsrv_cancel 的返回值成为 const char*,而不是 char* - 8e392595 (2024-04-05):
删除 checksum_file() 中未使用的变量 - f8ce4ed7 (2024-04-05):
允许使用 clone/copy_file_range 复制文件 - fe8eaa54 (2024-03-20):
文档:将内置索引 AM 的独立章节合并为一个。 - 10e3226b (2024-04-05):
将增量备份的块对齐到 BLCKSZ - ee1cbe80 (2024-04-05):
使用原子操作处理 XLogCtl->log{Write,Flush}Result - 6f132ed6 (2024-04-05):
允许同步槽具有 inactive_since。 - 096a761d (2024-04-04):
修复 ecpg 检测语法中不支持情况的机制。已向后移植到 ~ 12 - de360045 (2024-04-04):
添加基本的 JSON_TABLE() 功能 - 222e11a1 (2024-03-11):
使用增量解析备份清单 - ea7b4e9a (2024-03-10):
添加对增量解析备份清单的支持 - 3311ea86 (2024-03-10):
引入非递归 JSON 解析器 - 3a4a3537 (2024-04-04):
堆扫描函数的二次重构 - 2a217c37 (2024-04-04):
协调 emit_log_hook 和所有日志目标以共享同一 timeval - 44086b09 (2024-04-04):
堆扫描函数初步重构 - 71b66171 (2024-04-03):
CREATE INDEX:二进制升级期间不更新统计信息。 - 06286709 (2024-04-03):
为 EXPLAIN 发明 SERIALIZE 选项。 - 97ce821e (2024-04-03):
修复 TableAmRoutine.relation_copy_f 的参数顺序已向后移植到 ~ 12 - c9920a90 (2024-04-03):
将 XLogCtl->LogwrtResult 分割为独立的结构成员 - deb1486c (2024-04-03):
内联 pg_popcount() 用于小缓冲区。 - 6dbb4902 (2024-04-03):
在 VACUUM 中合并冻结和修剪步骤 - 26d138f6 (2024-04-03):
重构 heap_prune_chain() 如何更新 prunable_xid - be2f0731 (2024-04-03):
修复在没有 SLRU 银行锁的情况下清零 pg_serial 页面 - bf1e6508 (2024-04-03):
使用配对堆而不是扁平数组进行 LSN 重放 - 2ec005b4 (2024-04-03):
确保同步槽在提升后达到一致状态而不丢失数据。 - 226261f3 (2024-04-03):
为某些 PANIC/FATAL 错误报告添加错误代码 - c627d944 (2024-04-02):
为归档回调添加内置 ERROR 处理。 - 5bec1d6b (2024-04-03):
使用 max-heap 改进 ReorderBuffer 中的驱逐算法,以处理大量子事务。 - b8405086 (2024-04-03):
为 binaryheap 添加高效的键删除和更新函数。 - bcb14f4a (2024-04-03):
使 binaryheap 可扩展。 - 06c418e1 (2024-04-02):
实现 pg_wal_replay_wait() 存储过程 - 6faca9ae (2024-04-02):
避免在孤立临时表移除期间发生死锁。 - cafe1056 (2024-04-02):
允许 SIGINT 取消 psql 数据库的重新连接。 - f5e4dedf (2024-04-02):
通过 libpq 暴露 PQsocketPoll - 3a352df0 (2024-04-03):
在 pg_prewarm 中使用流式 I/O。 - b5a9b18c (2024-04-03):
提供用于流式传输关系数据的 API。 - 210622c6 (2024-04-03):
提供 ReadBuffer() 的向量化变体。 - 867cc7b6 (2024-04-02):
撤销“表的自定义 reloptions” - 667e65aa (2024-04-02):
在懒惰 vacuum 期间,使用 TidStore 存储死元组的 TID。 - d5d2205c (2024-04-02):
修复计划具有 CTE 的 setop 子查询时的断言失败 - 3d0f730b (2024-04-02):
为 heap_page_prune() 引入 'options' 参数 - 959b38d7 (2024-04-01):
为 pg_restore 发明 --transaction-size 选项。 - a45c78e3 (2024-04-01):
为提高效率,重新安排 pg_dump 对大型对象的处理。 - 5eac8cef (2024-04-01):
避免 PLy_trigger_build_args 中可能出现的 longjmp 引起的逻辑错误。 - 6f47f688 (2024-04-01):
在 heap_prune_chain() 之外处理非链元组 - 7aa00f13 (2024-04-01):
重构 heap_prune_chain() - 9917e79d (2024-04-01):
heap_page_prune 中的小型重构 - f5a22789 (2024-04-01):
添加新的 COPY 选项 LOG_VERBOSITY。
请注意,提交按其在提交日志中的出现顺序显示,这可能不反映单个提交的创建日期。
请参阅 PostgreSQL GIT 提交日志 查看完整的提交列表。
新 PgPedia 条目
已添加以下新条目
gin_fuzzy_search_limitio_combine_limitjsonb_populate_record()json_strip_nulls()jsonb_strip_nulls()or_to_any_transform_limitpg_wal_replay_wait()synchronize_seqscanstrace_connection_negotiationxmlbinary
最后...
如果有什么遗漏,或者您有任何(建设性的)想法,请留下您的反馈,并且/或者请我喝杯咖啡。
