PgPedia 周报,2024-12-15

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

Postgres Weekly, 2024-12-18

非常感谢您的支持,我们非常感激!

关于网站的其他新闻,这个博客实际上有一个 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 及更早版本中,一个对列 ab 进行分组的查询将在计划的分组键中包含两者。

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 条目

已添加以下新条目

更新

以下文章已更新,增加了额外信息或更正

最后...

如果有什么遗漏,或者您有任何(建设性)意见,请留下您的反馈,并/或请我喝杯咖啡