PgPedia 周报,2024-12-15
查看推荐日志,很高兴地发现 pgPedia 在 Postgres Weekly 的“2023 年读者互动排行榜前 5 名链接”中排名第四!

非常感谢您的支持,我们非常感激!
关于网站的其他新闻,这个博客实际上有一个 RSS feed,只是之前被巧妙地隐藏了。
本周 PostgreSQL 18 的更改
备受期待的 UUID
v7 支持终于实现,添加了新函数 uuidv7()
(另外,uuidv4()
被用作现有 gen_random_uuid()
函数的更具体的别名)。
本周另一个用户可见的更改是,EXPLAIN ANALYZE
现在默认开启 BUFFERS
。
最后,可以使用唯一索引检测冗余的 GROUP BY
列,这类似于 PostgreSQL 9.6 中添加的功能,该功能使用主键执行了相同的操作。以下表定义的一个基本示例
postgres=# CREATE TABLE t1 (a INT NOT NULL, b INT, UNIQUE(a)); CREATE TABLE
在 PostgreSQL 17 及更早版本中,一个对列 a
和 b
进行分组的查询将在计划的分组键中包含两者。
postgres=# EXPLAIN (costs off) SELECT a, b FROM t1 GROUP BY a, b; QUERY PLAN ---------------------- HashAggregate Group Key: a, b -> Seq Scan on t1 (3 rows)
从 PostgreSQL 18 开始,计划的分组键将仅包含列 a
。
postgres=# EXPLAIN (costs off) SELECT a, b FROM t1 GROUP BY a, b; QUERY PLAN ---------------------- HashAggregate Group Key: a -> Seq Scan on t1 (3 rows)
PostgreSQL 提交的值得关注的变更
- bf9165bb (2024-12-15):
将几个变量声明在 PG_TRY 块内部,而不是外部。
- 530f89e6 (2024-12-15):
pgbench:修复某些嵌套 \if 构造的错误处理。
回溯到 ~ 13 - 969bbd0f (2024-12-14):
contrib/earthdistance:使用 SQL 标准函数体。
- 62b7a9a7 (2024-12-14):
重构一些 SQL/JSON 错误消息。
- 48c142f7 (2024-12-14):
从 md.c 中移除 EXTENSION_DONT_CHECK_SIZE。
- 7b8cb9cd (2024-12-13):
修复 pg_dump 使用身份序列时可能发生的崩溃。
- fd41ba93 (2024-12-13):
正确转储继承列上的 NOT NULL 约束。
- a0ff56e2 (2024-12-12):
撤销“启动包中不截断数据库和用户名。”
回溯到 ~ 17 - bd10ec52 (2024-12-12):
使用 UNIQUE 索引检测冗余的 GROUP BY 列。
- 430a5952 (2024-12-12):
将 remove_useless_groupby_columns() 的工作推迟到 query_planner()。
- 78c5e141 (2024-12-11):
添加 UUID version 7 生成函数。
- e8d59294 (2024-12-11):
在 pgstatfuncs.c 中使用 pg_memory_is_all_zeros()。
- 398d3e3b (2024-12-11):
取消标记 gen_random_uuid() 函数的 leakproof 属性。
- 0e033f5b (2024-12-11):
修复转储具有 TRANSFORMs 的函数中的内存泄漏。
- c2a4078e (2024-12-11):
默认启用 EXPLAIN ANALYZE 的 BUFFERS。
- 0f573820 (2024-12-11):
在 GROUP BY 和 SubPlans 中使用 ExprStates 进行哈希处理。
- a4356748 (2024-12-10):
对 pg_restore_relation_stats() 使用就地更新。
- 50416cc4 (2024-12-11):
通过 ExprState 哈希的专用函数加速 Hash Joins。
- 8b9cbf49 (2024-12-10):
修复 PostmasterMain() 之前或刚 fork() 之后的 elog(FATAL) 错误。
回溯到 ~ 13 - 74edabce (2024-12-10):
支持 get_equal_strategy_number() 中的 GiST。
- 13544e79 (2024-12-10):
使 IsIndexUsableForReplicaIdentityFull() 中的条件更明确。
- a2a475b0 (2024-12-10):
将 get_equal_strategy_number_for_am() 替换为 get_equal_strategy_number()。
- 321c2873 (2024-12-10):
改进内部逻辑复制关于缺失相等策略的错误。
- 724890ff (2024-12-09):
在 radixtree.h 中包含必要的头文件。
回溯到 ~ 17 - 73a392d2 (2024-12-09):
修复 GUC 检查中的一些小内存泄漏。
回溯到 ~ 16 - 0a27c3d0 (2024-12-09):
修复日期和时间戳函数中的各种溢出风险。
- 3eea7a0c (2024-12-09):
简化执行器确定是否使用并行性的逻辑。
回溯到 ~ 13 - 4d827504 (2024-12-09):
移除“快照太旧”的残留。
- f64ec81a (2024-12-09):
避免对 Vars 和 PHVs 进行不必要的包装。
- 5668a857 (2024-12-09):
修复 HashJoin 重扫描中的右半连接。
- f0c569d7 (2024-12-09):
修复 pgoutput 中发布列表缓存的内存泄漏。
- da99fedf (2024-12-09):
修复本地 pgstats 引用在条目重新初始化时的失效。
回溯到 ~ 15
请注意,提交按其在提交日志中的出现顺序显示,这可能不反映单个提交的创建日期。
请参阅 PostgreSQL GIT 提交日志 查看完整的提交列表。
新 PgPedia 条目
已添加以下新条目
更新
以下文章已更新,增加了额外信息或更正
earthdistance
- 注意到 PostgreSQL 14 中 受信任扩展 状态的撤销。
hstore_plperl
- 注意到 PostgreSQL 14 中 受信任扩展 状态的撤销。
最后...
如果有什么遗漏,或者您有任何(建设性)意见,请留下您的反馈,并/或请我喝杯咖啡。