pg_builder 和 pg_wrapper 2.3.0 版本發布,支援 Postgres 16 語法

發布於 2023-09-21,作者:Alexey Borzov
相關開源專案

我很榮幸地宣布 pg_builderpg_wrapper PHP 套件已更新,支援 Postgres 16 語法,以及 pg_gateway 的首次發布。

pg_builder 2.3.0

pg_builder 是一個 Postgres 的查詢建構器,以 PHP 部分重新實作 PostgreSQL 自己的 SQL 解析器為基礎。它幾乎支援 Postgres 16 中所有可用的 SELECT (和 VALUES)、INSERTUPDATEDELETEMERGE 查詢語法。

使用 pg_builder,可以從手動編寫的查詢開始,將其解析為抽象語法樹 (Abstract Syntax Tree),將查詢部分(以 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 原生類型或類別可用的類型,將使用它(text -> string,timestamp -> DateTimeImmutable,hstore -> 關聯陣列等等)。對於其他類型(幾何類型、範圍),該套件提供了自訂類別。

新版本增加了對 PostgreSQL 16 中新增功能的支援

  • 當連接到 Postgres 16+ 時,數字類型轉換器將接受非十進制整數文字和帶有底線作為數字分隔符的數字文字,允許將這些作為查詢參數值使用。

完整發布說明

可以從 Github 下載 該套件,或使用 Composer 安裝

$ composer require sad_spirit/pg_wrapper

pg_gateway 0.1.0

這是一個基於 pg_wrapper 和 pg_builder 套件構建的 Table Data Gateway 實作。它增加了以下功能

  • 閘道器知道表格元資料,並包含用於建立常見條件等的輔助方法,
  • 有辦法快取完整的查詢以跳過解析/建構迴圈,
  • 可以通過一個閘道器創建一個查詢,並將其連接到另一個閘道器建立的查詢。

與往常一樣,可以從 Github 下載 該套件,或使用 Composer 安裝

$ composer require sad_spirit/pg_gateway