Lanzamiento de pg_builder y pg_wrapper 2.3.0 con soporte para sintaxis de Postgres 16
Me complace anunciar el lanzamiento de los paquetes PHP de pg_builder y pg_wrapper actualizados para sintaxis de Postgres 16, así como el lanzamiento inicial de pg_gateway.
pg_builder 2.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 16 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.
La nueva versión añade soporte para características añadidas en PostgreSQL 16:
- Funciones y expresiones SQL/JSON: Predicado
IS JSON
, funciones de agregadojson_arrayagg()
yjson_objectagg()
, funciones de construcciónjson_array()
yjson_object()
. - Literales enteros no decimales y guiones bajos como separadores en literales numéricos.
- Alias opcionales para subconsultas en
FROM
, variable de servidorSYSTEM_USER
añadida, opción[NO] INDENT
para la expresiónXMLSERIALIZE()
.
El paquete puede descargarse de Github o instalarse con Composer:
$ composer require sad_spirit/pg_builder
pg_wrapper 2.3.0
pg_wrapper proporciona convertidores para los tipos de datos de PostgreSQL y un wrapper OO alrededor de la extensión nativa de PHP pgsql que utiliza estos convertidores. La conversión de los campos de los resultados de la 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 -> associative array, etc.). Para los demás tipos (tipos geométricos, rangos) el paquete proporciona clases personalizadas.
La nueva versión añade soporte para características añadidas en PostgreSQL 16:
- Al conectarse a Postgres 16 (o a una versión superior), los convertidores de tipo numérico aceptarán literales enteros no decimales y literales numéricos con guiones bajos como separadores de dígitos. Esto permitirá utilizarlos como valores de parámetros de consulta..
El paquete puede descargarse de Github o instalarse con Composer:
$ composer require sad_spirit/pg_wrapper
pg_gateway 0.1.0
Se trata de una implementación de Table Data Gateway basada en los paquetes pg_wrapper y pg_builder. Incluye las siguientes características
- Los gateways toman en cuenta los metadatos de una tabla y contienen métodos complementarios para crear condiciones comunes y similares
- Es posible almacenar en caché una consulta completa para omitir el ciclo de análisis y compilación
- Es posible crear una consulta a través de un gateway y unirla a la consulta creada por otro.
Como siempre, es posible descargar el paquete de Github o instalarlo con Composer:
$ composer require sad_spirit/pg_gateway