Skip to content

v0.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Sep 12:13
Immutable release. Only release title and notes can be modified.

0.5.0 (2026-09-08)

Features

  • add EXPLAIN (FORMAT JSON)-based MERGE side-nullability detection (Stage 2) (a34d2e3)
  • add prosqlbody-based nullability probe alongside CREATE VIEW, prove parity (Stage 1) (bdd11e4)
  • resolve @property provenance from the PostgreSQL node tree (462b039)
  • route DML/CTE/MERGE nullability through prosqlbody in production (59a9b45)
  • route plain SELECT through prosqlbody and sweep dead DML-conversion code (5de7a61)

Bug Fixes

  • analyze nullability for MERGE fed by a CTE source (f32a8d6)
  • analyze view expressions instead of trusting source column names (fcb25bf), closes #256
  • apply any-nullable-source-wins reduction to view nullability by name (bef131e)
  • ask KotlinPoet whether a @property name needs backticks (bd42334)
  • attribute a MERGE's join by locating its own ModifyTable node, not the first join found (18c09f0)
  • bail conservatively on a Unicode-escape identifier in referencesAnyName (51fce48)
  • bail instead of clamping when a lexical scan's bracket depth goes negative (845720f)
  • bound-check truncated \u escapes in JsonValue parser (1aad12f)
  • correct SUBLINK_TYPE_ALL's enum value and prove ALL_SUBLINK non-null (3c62130)
  • correctly decode quoted identifiers in referencesAnyName's sibling-name scan (c3b92df)
  • deps: update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.1 (69e44fb)
  • deps: update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.10.2 (9259edf)
  • deps: update dependency com.squareup:kotlinpoet to v2.4.0 (34e12af)
  • deps: update dependency io.micronaut.data:micronaut-data-processor to v5.1.3 (8fdc2a7)
  • deps: update dependency io.micronaut.sql:micronaut-jdbc-hikari to v7.1.2 (187e75d)
  • deps: update dependency org.commonmark:commonmark to v0.30.0 (1bdb28b)
  • deps: update kotlin monorepo to v2.4.20 (465b61a)
  • deps: update micronaut to v5.1.13 (d43c6e9)
  • derive JSON constructor nullability from its arguments (c83f2f5)
  • drop the per-assignment parameter-trust gate for the whole-statement one (513af56)
  • fail safe on an unanalyzable branch or a non-converged pass limit in the recursive-CTE fixpoint (c00e20c)
  • flip PgNodeTreeParser's CONST/FUNCEXPR field defaults to the safe direction (7158f96)
  • generate compilable CRUD SQL for quoted column names (57b01b7)
  • guard parseSelectItems against a shifted item-to-column mapping (8e435bd)
  • handle comments and whitespace after the alias in a RETURNING WITH (OLD AS ...) prologue (b250c33)
  • iterate recursive CTE nullability to a fixpoint instead of one pass (69f66f7)
  • make extractFieldExpression depth-one-aware, closing a wrong-subquery hazard in nested CASE/JSONEXPR parsing (6ce3856)
  • make prosqlbody's parameter-trust gate per-assignment, not per-statement (1e91900)
  • order Flyway migrations globally across schemas entries, not per-directory (e30ad16)
  • prove ANY_SUBLINK non-null only under three-valued-logic-safe conditions (e679d19), closes #239
  • read a domain's UUID base type through the class-hinted getObject overload (138aeb6)
  • recover column comments lost to folding and IS DISTINCT FROM (935c22c)
  • recover GROUPING SETS columns PostgreSQL never nulls (6fa1f7c), closes #240
  • recurse into JsonExpr's children in containsVarOutsideRelation (444f26b)
  • render KDoc that survives Markdown and KotlinPoet escaping (3e1e96c)
  • replace evaluateJsonExpr's JsonBehaviorType deny-list with a verified allow-list (8f69da7)
  • report nullable, not NOT NULL, when the unconvertible-DML probe can't prove a column (de988db)
  • resolve JDBC types for every domain base type resolveBaseType accepts (e4fc6d3)
  • resolve PostgreSQL 18 GROUP RTE vars to their group expressions (8dbc7da)
  • resolve sublink subselects against derived tables and enclosing CTEs (9d5fe1b), closes #257
  • restore original comments in the four frozen embed scenarios (4a0cdff)
  • separate the nullability probe's function body from its terminator with a newline (8d4fd24)
  • source resolveCteOutputExpression's reserved-word set from the live server, not a hardcoded snapshot (c0983fc)
  • spell out abbreviated JDBC/expression identifiers introduced by this branch (c60a441)
  • stop aliasing a mutable task list for IDE-sync dependency wiring (2b6b61d)
  • stop inferring JSON_VALUE/JSON_QUERY non-null from ON EMPTY/ON ERROR codes alone (c86b06d)
  • strip the PG18 RETURNING WITH (OLD/NEW alias) prologue before parsing output items (110bfdc)
  • truncate identifiers to PostgreSQL's 63-byte limit (cc0e1f7), closes #245