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