PgPedia周刊
每周更新,列出值得关注的提交、PostgreSQL 的其他有趣更改,以及 PgPedia 的笔记和勘误。
理论上每周日发布,但由于个人事务有时会延迟。
PostgreSQL 提交的值得关注的变更
- bae868ca (2023-09-23):
不信任未经验证的 xl_tot_len。
向后移植约12个版本 - e59fcbd7 (2023-09-22):
简化 信息模式 检查约束的解析
- 48e2b234 (2023-09-21):
修复子事务存在时 COMMIT/ROLLBACK AND CHAIN。
向后移植约12个版本 - cca97ce6 (2023-09-21):
允许在 pg_basebackup/pg_receivewal 的 连接字符串 中指定 dbname
- 5cfba1ad (2023-09-21):
修复 vacuumdb 在 analyze-only 模式下传递 buffer-usage-limit
向后移植约16个版本 - 559bc173 (2023-09-19):
移除 pg_dump_sort.c 中的硬编码二进制堆。
- 9bfd44bb (2023-09-19):
将 pg_restore 的 ready_list 转换为优先队列。
- c103d073 (2023-09-18):
添加用于在二进制堆中移除任意节点的功能。
- 5af0263a (2023-09-18):
使二进制堆可供前端代码使用。
- a0a5e0fe (2023-09-18):
修复 信息模式 中已编目的非空约束
- 9d17e5f1 (2023-09-18):
将 Unicode 数据更新到 Unicode 15.1.0
请注意,提交按其在提交日志中的出现顺序显示,这可能不反映单个提交的创建日期。
请参阅 PostgreSQL GIT 提交日志 查看完整的提交列表。
本周的重头戏是 PostgreSQL 16 的发布 - 有关文章的有用概述请参见 此处。除此之外,提交日志方面非常平静,主要是小的修复。
PostgreSQL 提交的值得关注的变更
- 5a3423ad (2023-09-08)
添加 JIT deform_counter
- 04a09ee9 (2023-09-08):
使 WaitEventSetWait() 能够报告 Windows 上的多个事件。
- 3af72179 (2023-09-07):
更新 information_schema 中非空约束的定义
- e1c6db63 (2023-09-07):
pg_basebackup: 在 PQbackendPID() 下生成有效的临时槽名称
向后移植约11个版本 - 0da096d7 (2023-09-07):
修复恢复冲突 SIGUSR1 处理。
- 8c16ad3b (2023-09-06):
允许在前端工具中使用 syncfs()。
- cccc6cde (2023-09-06):
为前端支持函数添加 syncfs() 支持。
- 3ed19567 (2023-09-06):
使同步方法 (sync methods) 的枚举可供前端代码使用。
- 59cbf60c (2023-09-06):
移除 wait_event_names.txt 中等待事件名称的列
- 414f6c0f (2023-09-06):
使用更一致的等待事件对象和类型名称
- f691f5b8 (2023-09-05):
移除 "快照太旧" 功能。
- 2b8e5273 (2023-09-04):
修复与已删除数据库共享统计数据的处理
向后移植约15个版本
请注意,提交按其在提交日志中的出现顺序显示,这可能不反映单个提交的创建日期。
请参阅 PostgreSQL GIT 提交日志 查看完整的提交列表。
PostgreSQL 16 文章
- 使用 PostgreSQL 中的源过滤实现双向复制 作者:Vignesh C / Fujitsu
PostgreSQL 17 文章
- 等待 PostgreSQL 17 – 为 log_connections 下的“trust”连接生成新日志 - 2023 年 9 月 depesz 的博客文章
- 等待 PostgreSQL 17 – 添加 to_bin() 和 to_oct()。 - 2023 年 9 月 depesz 的博客文章
PostgreSQL 17 变更
log_connections
log_connections
现在会明确记录没有 authn ID 的连接,例如 trust 连接(提交 e48b19c5)。
在 PostgreSQL 16 及更早版本中,trust 连接的日志记录方式如下:
[2023-08-30 08:37:17 JST] [unknown] [unknown] [unknown] LOG: 00000: connection received: host=127.0.0.1 port=35392 [2023-08-30 08:37:17 JST] [unknown] postgres postgres LOG: 00000: connection authorized: user=postgres database=postgres application_name=psql
在 PostgreSQL 17 及更高版本中
[2023-08-30 08:39:29 JST] [unknown] postgres postgres LOG: 00000: connection authenticated: user="postgres" method=trust (/var/lib/pgsql/data/pg_hba.conf:5) [2023-08-30 08:39:29 JST] [unknown] postgres postgres LOG: 00000: connection authorized: user=postgres database=postgres application_name=psql
提醒您,即将到来的 PostgreSQL 16 版本日期 已公布
- 2023-08-31 为 PostgreSQL 16
rc1
(待定项目的截止日期为 2023-08-26 12:00 UTC) - 2023-09-14 为公开发布 (GA)(暂定)
rc1
已打上标签(提交 d94dadcc),但在撰写本文时尚未标记。
PostgreSQL 16 文章
- Postgres v16: 14 个很酷的新功能 (Laurenze Albe / CyberTec)
PostgreSQL 17 功能
命名的 NOT NULL 约束
一个有趣的新增功能,刚从提交列表中出现,是 b0e96f31 “ 编目非空约束
”,经过漫长的开发过程和几次试错,终于添加了命名的 NOT NULL
约束。实际上,这意味着在 PostgreSQL 16 及更早版本中定义的表,如下所示:
postgres=# CREATE TABLE foo (id INT NOT NULL); CREATE TABLE postgres=# \d+ foo Table "public.foo" Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description --------+---------+-----------+----------+---------+---------+-------------+--------------+------------- id | integer | | not null | | plain | | | Access method: heap
在 PostgreSQL 17 中变成
postgres=# CREATE TABLE foo (id INT NOT NULL); CREATE TABLE postgres=# \d+ foo Table "public.foo" Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description --------+---------+-----------+----------+---------+---------+-------------+--------------+------------- id | integer | | not null | | plain | | | Not-null constraints: "foo_id_not_null" NOT NULL "id" Access method: heap
NOT NULL
约束也可以显式定义
postgres=# CREATE TABLE foo ( id INT, CONSTRAINT foo_id_is_not_null NOT NULL id ); CREATE TABLE postgres=# \d+ foo Table "public.foo" Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description --------+---------+-----------+----------+---------+---------+-------------+--------------+------------- id | integer | | not null | | plain | | | Not-null constraints: "foo_id_is_not_null" NOT NULL "id" Access method: heap
即将到来的 PostgreSQL 16 版本日期 已公布
- 2023-08-31 为 PostgreSQL 16
rc1
(待定项目截止日期:2023-08-26 12:00 UTC) - 2023-09-14 为公开发布 (GA)(暂定)
PostgreSQL 17 新增了一个看起来很有用的系统目录视图 pg_wait_events
。
又一个平静的夏季 PostgreSQL 周,仅有季度小版本更新的发布和 PostgreSQL 16 beta3
。
对于 PostgreSQL 来说,这是一个平静的周,在 CommitFest 43 结束后。下周将迎来常规的季度小版本发布,很可能还有 PostgreSQL 17 的 beta3
版本。