原文:https://www.postgresql.org/about/news/pgfmt-21-in-place-formatting-and-pg_dump-compatible-output-3321/ 发布日期:2026-06-18 作者:Gavin M. Roy
pgfmt 2.1 带来了两个最醒目的新能力,同时借助 libpgfmt 持续扩展了格式化覆盖面。现在它也可以直接通过 Homebrew tap 安装。
brew tap gmr/pgfmt && brew install pgfmt
除了 Homebrew 方式之外,安装脚本、cargo install pgfmt 以及预编译发布二进制 仍然可用。
--inplace / -i 可以把格式化后的结果直接写回源文件,而不是输出到标准输出,同时保留原始文件权限。它支持一次处理多个文件:
pgfmt -i query1.sql query2.sql
pgfmt --style pg_dump(别名 pgdump、postgres)会复现 PostgreSQL ruleutils.c 反解析器的布局,也就是 pg_get_viewdef 与 pg_get_functiondef 产生的那种输出格式。对于真正的反解析输出,它能做到字节级幂等:把目录导出的定义再次格式化,得到的仍是完全相同的字节序列。这对于比较迁移脚本与 PostgreSQL 实际存储的定义差异很有帮助。
2.1.x 这一系列还扩展了 SQL 与 PL/pgSQL 的格式化覆盖范围,并修复了多项正确性问题,其中包括此前会被错误丢弃的类型化字符串字面量 (INTERVAL '2 days')。过去无法正确处理的 catalog dump 视图和函数,现在也可以被干净地格式化。
完整变更列表请参阅发布说明。