Changelog
All notable changes to pg_pure are recorded here. The format follows Keep a Changelog; versions are semantic.
[0.1.1] - 2026-10-28
Fixed
- META.json carried an invalid PGXN tag (
pl/pure;/is not allowed by the PGXN Meta Spec), which PGXN rejected, so 0.1.0 never published to PGXN. The tag is nowplpure. The extension code is identical to the 0.1.0 tree; this is a metadata-only fix so the distribution can be released. - The release workflow treated a PGXN
409as “already published” and skipped, which masked the rejected 0.1.0 upload as a success. It now distinguishes an already-published 409 from a real rejection by the response body, and verifies the release is indexed on api.pgxn.org before reporting success.
[0.1.0] - 2026-10-28 (not published to PGXN)
Added
- Initial extension. One shared library (
pg_pure.so) backs two SQL languages:pg_pure(trusted) andpg_pureu(untrusted, superuser-only), following the PL/Perlplperl/plperlumodel. - Scalar functions in Pure over int2, int4, int8, float4, float8, numeric, bool, text and varchar, with exact numeric (bigint and rational) in and out and range-checked conversions.
- SQL NULL as the Pure symbol
sql::null. - Database access from Pure:
sql::query,sql::exec,sql::notice,sql::warning. A SQL error raised in a query reaches Pure assql::error "SQLSTATE" "message"(each query runs in an internal subtransaction), so Pure code can catch it by SQLSTATE and continue the transaction, or let it propagate to re-raise the original error. - DO blocks (
DO LANGUAGE pg_pureu). - The validator compiles a function at CREATE time.
- Leading
using MODULE;lines in a body load Pure modules. - Cooperative cancel (
statement_timeout,pg_terminate_backend) and stack overflow (stack_fault) via libpure’s host hooks: neither crashes the backend. - Optional preload (
shared_preload_libraries = 'pg_pure') builds and warms the interpreter in the postmaster so backends inherit it by fork; thepg_pure.usingGUC lists the modules to load (defaultmath). pg_pure(trusted) is installable but its handler refuses to run until libpure gains a sandbox (DESIGN.md section 9).- Regression suite passes on PostgreSQL 17, 18 and 19 with zero backend crashes.