pg_builder 和 pg_wrapper 2.3.0 发布,支持 Postgres 16 语法

由 Alexey Borzov 于 2023-09-21 发布
相关开源

我很高兴地宣布,pg_builderpg_wrapper PHP 包已更新以支持 Postgres 16 语法,同时 pg_gateway 也首次发布。

pg_builder 2.3.0

pg_builder 是一个用于 Postgres 的查询构建器,其底层是 PostgreSQL 自身 SQL 解析器的部分 PHP 重实现。它支持 Postgres 16 中几乎所有可用于 SELECT (和 VALUES)、INSERTUPDATEDELETEMERGE 查询的语法。

通过 pg_builder,可以从手动编写的查询开始,将其解析为抽象语法树,向该树添加查询部分(作为 Node 对象或字符串),或从中删除查询部分,最后将该树转换回 SQL 字符串。

新版本增加了对 PostgreSQL 16 中新增功能的支持

  • SQL/JSON 函数和表达式:IS JSON 谓词,聚合函数 json_arrayagg()json_objectagg(),构造函数 json_array()json_object()
  • 非十进制整数文字和数字文字中用作分隔符的下划线。
  • FROM 中子查询的可选别名,新增 SYSTEM_USER 服务器变量,XMLSERIALIZE() 表达式的 [NO] INDENT 选项。

完整发行说明

该软件包可以从 Github 下载或通过 Composer 安装

$ composer require sad_spirit/pg_builder

pg_wrapper 2.3.0

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

对于有相应的原生 PHP 类型或类可用的类型(文本 -> 字符串,时间戳 -> DateTimeImmutable,hstore -> 关联数组等),则使用该类型或类。对于其他类型(几何类型,范围),该软件包提供了自定义类。

新版本增加了对 PostgreSQL 16 中新增功能的支持

  • 连接到 Postgres 16+ 时,数字类型转换器将接受非十进制整数文字和带有下划线作为数字分隔符的数字文字,允许将它们用作查询参数值。

完整发行说明

该软件包可以从 Github 下载或通过 Composer 安装

$ composer require sad_spirit/pg_wrapper

pg_gateway 0.1.0

这是一个基于 pg_wrapper 和 pg_builder 包构建的 表数据网关 实现。它添加了以下功能

  • 网关知道表元数据并包含用于创建常见条件等的辅助方法,
  • 有缓存完整查询的方法,以跳过解析/构建循环,
  • 可以创建一个通过一个网关创建的查询,并将其连接到另一个网关构建的查询。

与往常一样,该软件包可以从 Github 下载或通过 Composer 安装

$ composer require sad_spirit/pg_gateway