PgPedia 周刊
每周更新,列出感兴趣的提交、PostgreSQL 的其他有趣更改,以及 PgPedia 的说明和勘误。
理论上每周星期日发布,但个人承诺意味着有时会延迟。
本周主要是许多较小的更新,正朝着第一个 PostgreSQL 17 测试版发布迈进。
在 PostgreSQL 17 开发中,CommitFest 之后,测试版发布之前,又是一个平静的一周。
值得注意的更改
- PostgreSQL 17 发行说明 现在正式进入工作阶段
- 提交 d3d55ce5 中添加的“自连接消除 (SJE) 功能”不幸被撤回,等待在 PostgreSQL 18 发布周期中重新引入
PostgreSQL 开发的另一个平静的 CommitFest 后、测试版发布前的一周。在 pgsql-hackers 上的一些讨论仍在继续,并且可能会有更多新添加的功能的修改或回滚。
PostgreSQL 17 更新
第一个测试版发布计划于 2024年5月23日
本周一个值得注意的更改
backtrace_on_internal_error
等待进一步考虑,已撤回
本周非常平静,提交日志主要由即将发布的 PostgreSQL 17 版本的修复组成。
开发方面本周比较平静,提交日志主要由大量后续修复和改进(以及一次回滚)组成,这些是在最终的 PostgreSQL 17 CommitFest 之后完成的。
说到 PostgreSQL 17,beta1 版本发布日期已定为 2024年5月23日:PostgreSQL 17 Beta 1 版本发布日期。
随着 CommitFest 47 的结束,PostgreSQL 17 功能冻结 现已牢固建立,目前的重点是测试并确保一切正常。新功能的提案应提交到 PostgreSQL 18,不过在创建 REL_17_STABLE 分支和 PostgreSQL 18 正式成为一个版本之前,还需要几个月的时间。
PostgreSQL 17 本周的更改
如上周所述,在 CommitFest 47 结束时,提交数量相当多——Peter Eisentraut 做了一些统计:PostgreSQL 17 commitfest 总结,提交数量确实创下了历史新高。一些已提交的功能已被回滚 在 pgsql-hackers 上讨论后,具体如下:
在不那么严肃的方面
提交 b1b13d2b (Doc: 使用“an SQL”而不是“a SQL”
) 是一个有用的提醒,即“官方”立场是它发音为“Ess-Cue-Ell”,而不是“Sequel”,如之前在 2021 年的提交 04539e73 中所确立的那样。我愿意为这一点而战,毕竟没有人说“PostgreSequel”(或者他们会这么说吗?)。
本周的条目故意延迟发布,以应对在 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_stat_progress_vacuum
:列已重命名
系统函数
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 存储死元组的 TIDs。
- 引入一个非递归的 JSON 解析器
- 引入一个 bump 内存分配器
injection_points
测试模块:添加了函数injection_points_set_local()
CommitFest 第 47 号,PostgreSQL 17 发布周期中的最后一个,正在进入最后阶段。本周添加了一系列用户可见的功能(见下文),以及一些不太明显的内部更改和一些错误修复。
PostgreSQL 17 本周添加的更改
过去七天添加的用户可见功能和更改
- 添加了对为分区表指定访问方法的支持
- 添加了
MERGE ... WHEN NOT MATCHED BY SOURCE
支持 pg_replication_slots
获得了一个inactive_since
字段- 添加了
random()
函数变体,用于生成指定范围内的随机数 - 用于提取 域 的基本类型的
pg_basetype()
函数 - 用于禁用
ALTER SYSTEM
的allow_alter_system
GUC - 用于将物理备机转换为新的逻辑备机的
pg_createsubscriber
核心实用程序 reindexdb
选项--jobs
可以与--index
选项一起使用pgbench
选项-d
作为--debug
的简写形式已替换为-d
/--database
选项