You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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).