2025年9月25日: PostgreSQL 18 发布!

pg_builder 3.2 和 pg_wrapper 3.3 发布,支持 Postgres 18

发布于 2025-10-12,作者 Alexey Borzov
相关开源项目

我很高兴地宣布,PHP 的 pg_builderpg_wrapper 包已更新以支持 Postgres 18。

pg_builder 3.2

pg_builder 是一个 Postgres 的查询构建器,它部分 PHP 重实现了 PostgreSQL 自己的 SQL 解析器。它支持 Postgres 18 中几乎所有可用的 `SELECT`(及 `VALUES`)、`INSERT`、`UPDATE`、`DELETE` 和 `MERGE` 查询语法。

使用 pg_builder,您可以从手动编写的查询开始,将其解析为抽象语法树(AST),然后向该树添加查询部分(可以是 Node 对象或字符串)或移除它们,最后将树转换回 SQL 字符串。

发行亮点

  • 支持 PostgreSQL 18 的新语法:DML 语句的 `RETURNING` 子句中 `OLD` 和 `NEW` 的别名。
  • Node 对象使用 `WeakReference` 来保持对其父节点的链接,这可以防止循环引用并允许 AST 片段的垃圾回收。

完整发行说明

您可以从 GitHub 下载该包,或使用 Composer 进行安装

$ composer require sad_spirit/pg_builder

pg_wrapper 3.3

pg_wrapper 提供了 PostgreSQL 数据类型的转换器,以及一个使用这些转换器的 PHP 原生 pgsql 扩展的面向对象封装。查询结果字段的转换是使用数据库元数据自动完成的,查询参数可能需要指定类型。

对于存在对应原生 PHP 类型或类的类型(`text` -> `string`,`timestamp` -> `DateTimeImmutable`,`hstore` -> 关联数组等),将使用它们。对于其他类型(几何类型、范围类型),该包提供了自定义类。如果基础类型可以被转换,那么使用它的复合类型、数组、范围也可以被自动处理。

发行亮点

  • 来自 PostgreSQL 18 的新错误代码。

完整发行说明

您可以从 GitHub 下载该包,或使用 Composer 进行安装

$ composer require sad_spirit/pg_wrapper