Skip to content

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 20 May 11:18
d09bcf1

Added

  • Saga-style compensating steps: CreateStreamTable and DropStreamTable write a
    compensating action to aqueduct.ddl_log before executing DDL, enabling crash
    recovery via --resume.
  • --force-retry <step-index> and --force-skip <step-index> flags on
    aqueduct apply to advance past ambiguous steps (require --yes).
  • CatalogSchema newtype validating catalog schema names at parse time, rejecting SQL
    injection markers, non-identifier characters, leading digits, and reserved system
    schema names (pg_catalog, information_schema, all pg_* prefixed names).
  • ExecutionContext enum with Apply, Rollback, Promote, and DryRun variants
    replacing the optional builder pattern; named constructors for_apply(),
    for_rollback(), and for_promote().
  • StartBlueGreenDeployment plan step inserting a row into
    aqueduct.blue_green_deployments with status = 'active' as the first post-lock
    step.
  • All SwapConsumerViews steps wrapped in a single BEGIN ... COMMIT block for an
    all-or-nothing consumer view swap.
  • Real RLS policy capture via pg_policies / pg_class.relrowsecurity before
    DropStreamTable; RecreatePolicy step restores policies after table recreation;
    failures are non-fatal and logged to aqueduct.ddl_log.
  • rebuild-may-affect-rls lint warning when a FULL-mode table has RLS enabled.
  • Batch convergence polling: WaitForConvergence issues a single
    SELECT ... WHERE table_name = ANY($2) per poll interval instead of one query per
    node.
  • convergence_poll_interval_ms (default 500 ms) and convergence_timeout_secs
    (default 300 s) options in BuildPlanOptions.
  • validate_migration_files_diagnostic and validate_dag_diagnostic public functions
    returning structured DiagnosticSet entries with file paths, error codes, and
    severity levels.
  • aqueduct validate --format json output matching the lint JSON schema.
  • Catalog schema v7: aqueduct.ddl_log gains migration_id bigint and
    compensating_sql text; aqueduct.blue_green_deployments gains
    rolled_back_at timestamptz and an updated bg_status_check constraint accepting
    'rolled_back'.

Changed

  • Executor writes status = 'swapped' after the atomic consumer view swap and
    status = 'retired' after RetireBlueSchema.
  • Integration tests now target postgres:18-alpine exclusively (PostgreSQL 18+
    required by pg_trickle).