PgPedia 周报,2024-04-08
本周的条目故意延迟发布,以应对在PostgreSQL 17 功能冻结之前最后一刻提交的大量代码。PostgreSQL 17 的功能到此为止,但在计划于 9 月份发布之前,还需要进行大量的测试。一如既往,这些事情不会自己测试,所以即使(或者尤其是)你不是贡献者,现在也是你闪耀的机会。在 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()
函数
APIs
libpq
:- 添加
PQsetChunkedRowsMode()
函数 - 添加
PQsocketPoll()
函数
- 添加
内部
- 提供用于流式传输关系数据的 API。
- 在延迟 vacuum 期间使用 TidStore 存储死元组 TID。
- 引入非递归 JSON 解析器
- 引入 bump 内存分配器
injection_points
测试模块:添加injection_points_set_local()
函数
值得关注的 PostgreSQL 提交
- 9bd99f4c (2024-04-08):
表 AM 的自定义 reloptions
- 8a1b31e6 (2024-04-07):
使用 bump 上下文存储 vacuum 存储的 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):
支持在没有 SSLRequest 协商的情况下直接进行 TLS 握手
- 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):
使用 bump 内存上下文进行 tuplesorts
- f3ff7bf8 (2024-04-07):
添加 XLogCtl->logInsertResult
- 29f6a959 (2024-04-08):
引入 bump 内存分配器
- 0ba8b75e (2024-04-07):
扩大 MemoryContextMethodID 的位空间
- c4ab7da6 (2024-04-07):
避免在 libpq 套接字写入中进行不必要的 large 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):
重新实现 psql 的 FETCH_COUNT 功能,位于 libpq 的分块模式之上。
- 4643a2b2 (2024-04-06):
支持使用 libpq 分块检索结果。
- 92641d8d (2024-04-07):
更改 BitmapAdjustPrefetchIterator 以接受 BlockNumber
- 1fdb0ce9 (2024-04-07):
BitmapHeapScan:为 skip_fetch 使用正确的重新检查标志
- 04e72ed6 (2024-04-07):
BitmapHeapScan:将 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 标量数组运算符的执行。
- 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 限制固定计数。
- 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):
允许使用克隆/copy_file_range 复制文件
- fe8eaa54 (2024-03-20):
文档:将关于内置索引访问方法的单独章节合并为一个。
- 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):
使用最大堆改进 ReorderBuffer 中的驱逐算法,适用于多个子事务。
- b8405086 (2024-04-03):
向二叉堆添加函数,用于高效地删除和更新键。
- bcb14f4a (2024-04-03):
使二叉堆可扩展。
- 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 存储死元组的 TIDs。
- 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_limit
io_combine_limit
jsonb_populate_record()
json_strip_nulls()
jsonb_strip_nulls()
or_to_any_transform_limit
pg_wal_replay_wait()
synchronize_seqscans
trace_connection_negotiation
xmlbinary
最后...
如果缺少任何内容,或者您有一些(建设性的)想法,请留下一些 反馈 和/或 买杯咖啡。