PgPedia 周报,2024-04-08

本周的条目有意延迟发布,以应对在 PostgreSQL 17 功能冻结 之前最后一刻涌入的大量提交。这就是 PostgreSQL 17 功能的全部内容,但在 计划于 9 月发布 之前,还需要进行大量测试。一如既往,这些事情不会自行测试,因此即使(或尤其是在)您不是贡献者,现在也是您大展身手的时候了。查看 pgsql-hackers 上的“冻结后损害控制”主题,以获取一些可能的起点。

在网站新闻方面,定期阅读的读者可能已经注意到网站顶部有一个文本广告横幅。这是由 EthicalAdsRead the Docs 的一个部门)的友好人士提供的,旨在 为第二艘远洋游艇提供资金 在一定程度上支付服务器成本。

PostgreSQL 17 本周变更

用户可见的变更

SQL

  • ALTER TABLE ... MERGE PARTITIONS ... 语法添加
  • ALTER TABLE ... SPLIT PARTITION ... 语法添加
  • COPY: 添加 LOG_VERBOSITY 选项
  • EXPLAIN: 添加 SERIALIZE 选项
  • JSON_TABLE() 构造函数添加

系统目录

系统函数

GUCs

实用程序

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 套接字写入中进行不必要的大的 memcpy
  • 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 使用正确的重新检查标志
  • 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 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): 使用最大堆改进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): 回退“表AM的自定义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 条目

以下新条目已添加

最后...

如果缺少任何内容,或者您有一些(建设性的)想法,请留下一些 反馈 和/或 请我喝杯咖啡