PgPedia周刊
每周更新,列出值得关注的提交、PostgreSQL 的其他有趣更改,以及 PgPedia 的笔记和勘误。
理论上每周日发布,但由于个人事务有时会延迟。
又是一周安静的PostgreSQL开发期,处于CommitFest之后、Beta版本发布之前。pgsql-hackers邮件列表上的一些讨论仍在继续,新添加的功能可能会有更多的修订或回滚。
PostgreSQL 17更新
首个Beta版本预计发布于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: use "an SQL" instead of "a SQL")是一个有用的提醒,即“官方”立场是它发音为“Ess-Cue-Ell”,而不是“Sequel”,正如在2021年的提交04539e73中确立的那样。这是我愿意坚持的原则,毕竟没有人说“PostgreSequel”(或者他们说了吗?)。
本周的条目被故意推迟,以应对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_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()函数
API
libpq:- 添加了
PQsetChunkedRowsMode()函数 - 添加了
PQsocketPoll()函数
- 添加了
内部
- 提供用于流式传输关系数据的API。
- 在惰性Vacuum期间,使用TidStore存储死元组TID。
- 引入非递归JSON解析器
- 引入增量内存分配器
- 测试模块
injection_points:添加了injection_points_set_local()函数
CommitFest 47号,这是PostgreSQL 17发布周期中的最后一个,正进入最后阶段。本周又添加了一系列用户可见的功能(见下文),以及一些不那么可见的内部变更,还有一些bug修复。
本周添加的 PostgreSQL 17 变更
过去七天添加的用户可见功能和变更
- 支持为分区表指定访问方法已添加
- 添加了
MERGE ... WHEN NOT MATCHED BY SOURCE支持 pg_replication_slots新增了一个inactive_since字段- 添加了
random()函数变体,用于在指定范围内生成随机数 - 用于提取域基类型的
pg_basetype()函数 - 用于禁用
ALTER SYSTEM的allow_alter_systemGUC - 将物理备机转换为新的逻辑备机的核心实用程序
pg_createsubscriber reindexdb选项--jobs可与--index选项结合使用- 将
pgbench选项-d(--debug的简写)替换为-d/--database选项
CommitFest 47号仍在如火如荼地进行,新增了许多用户可见的功能(见下文),以及更多不那么可见的内部变更,还有一些bug修复。
本周添加的 PostgreSQL 17 变更
- 添加了对临时外键约束的支持。
- 这些SQL标准的
JSON查询函数已添加,此前在PostgreSQL 15发布周期中曾被添加后又回滚:JSON_EXISTS()JSON_QUERY()JSON_VALUE()
- 添加了以下系统函数
pg_replication_slots现在有一个invalidation_reason列(并且之前将conflicting列更改为conflict_reason的更改已被回滚)。- contrib模块
ltree提供了对哈希索引的支持。
CommitFest 47号,这是PostgreSQL 17发布周期的第五次也是最后一次CommitFest,现已到达中点。即将发布的版本的功能冻结已宣布为4月8日,因此,与往年一样,目前的CommitFest可能会实际延长到那时。
其他新闻方面,pgPedia已荣幸地被postgresql.org的教程和其他资源页面链接,非常感谢!

本周添加的 PostgreSQL 17 变更
MERGE的RETURNING支持- 添加了
MAINTAIN特权和pg_maintain预定义角色(在PostgreSQL 16发布周期中添加后又回滚) - ALTER STATISTICS中的
SET STATISTICS子句现在接受DEFAULT(代替-1),以恢复使用default_statistics_target - 新增函数
pg_column_toast_chunk_id() - 实用程序
clusterdb、reindexdb和vacuumdb现在允许--all选项与更多其他选项组合使用 - 添加了“
builtin”排序提供程序 - 向
libpq添加了一些非阻塞查询取消函数
