Lanzamiento de pg_builder y pg_wrapper 3.0 con soporte para sintaxis en Postgres 17
Me complace anunciar el lanzamiento de los paquetes PHP de pg_builder y pg_wrapper actualizados para sintaxis de Postgres 17.
pg_builder 3.0
pg_builder es un generador de consultas para Postgres respaldado por una reimplementación parcial en PHP del propio analizador SQL de PostgreSQL. Soporta casi toda la sintaxis disponible en Postgres 17 para consultas SELECT
(y VALUES), INSERT
, UPDATE
, DELETE
y MERGE
.
Con pg_builder es posible empezar con una consulta escrita manualmente, convertirla en un Árbol de Sintaxis Abstracta, añadir partes de la consulta (ya sea como objetos Node o como cadenas) al árbol o eliminarlas, y finalmente convertir nuevamente el árbol en una cadena SQL.
Lo más destacado:
- Soporte para la nueva sintaxis de Postgres 17
- Sentencia
MERGE
mejorada: Posibilidad de utilizar la cláusulaRETURNING
y la acciónWHEN NOT MATCHED BY SOURCE
enWITH
; - Nuevas construcciones SQL/JSON:
json()
,json_scalar()
,json_serialize()
,json_exists()
,json_query()
,json_value()
,json_table()
.
- Sentencia
- Manual del paquete reescrito y publicado en pg-builder.readthedocs.io
- Ahora requiere PHP 8.2 o superior y Postgres 12 o superior, probado en PHP 8.4 y Postgres 17.
Es posible descargar el paquete de GitHub o instalarlo con Composer:
$ composer require sad_spirit/pg_builder
pg_wrapper 3.0
pg_wrapper proporciona convertidores para los tipos de datos de PostgreSQL y un conector orientado a objetos para la extensión nativa pgsql de PHP que utiliza estos convertidores. La conversión de campos de resultados de una consulta se realiza automáticamente mediante los metadatos de la base de datos. Los parámetros de la consulta pueden requerir la especificación del tipo.
Para aquellos tipos que cuenten con un tipo o clase nativa de PHP correspondiente, se utilizará ese tipo (text
-> string
, timestamp
-> DateTimeImmutable
, hstore
-> array asociativo, etc.). Para los demás tipos (tipos geométricos, rangos) el paquete proporciona clases personalizadas. Si los tipos de la base pueden ser convertidos, entonces los tipos compuestos, los arrays, los rangos que los utilizan también podrán ser manejados.
Lo más destacado:
- Nuevos métodos iteradores para resultados de consultas;
- Posibilidad de registrar las consultas ejecutadas mediante el registrador PSR-3;
- Conversión entre tipos
ENUM
de Postgres y enums respaldados por cadenas de PHP; - Manual del paquete reescrito y publicado en pg-wrapper.readthedocs.io;
- Ahora requiere PHP 8.2 o superior y Postgres 12 o superior, probado en PHP 8.4 y Postgres 17.
Es posible descargar el paquete de GitHub o instalarlo con Composer:
$ composer require sad_spirit/pg_wrapper