← All Releases

v0.2.10

2026-06-12

RETRACT, PROPERLY

dvt retract grows up: dialect-correct drops on every engine, relations resolved exactly where the loader put them, bucket objects actually deleted, a --target override — and output that finally reads like dvt run.

ADDED

  • Object-store targets are retracted for real: the file the loader wrote (model.parquet, model.csv, …) is deleted from S3, GCS, Azure, or the local filesystem — same fsspec drivers dvt sync installs for your profile, object_base-aware.
  • dvt retract --target: resolve default-target models against any output, exactly like dvt run --target — retract what you ran, wherever you ran it.

CHANGED

  • dvt retract speaks dbt: numbered START / OK / WARN / ERROR lines with per-relation timings and a Done summary — the same rhythm as dvt run, in reverse.
  • Drops resolve relations the way the loader landed them: on database-equals-schema engines (MySQL, MariaDB, Oracle, SQLite, ClickHouse) the relation lives in the connection's own database or user schema, and retract now drops it there instead of chasing a schema that never existed.

FIXED

  • Identifiers render unquoted, letting each engine apply native case resolution — quoted "schema"."name" drops were rejected outright by Databricks, MySQL/MariaDB, and Oracle.
  • Oracle gets its own DDL: no IF EXISTS pre-23c, and an ORA-00942 from every attempt counts as already-gone — retract is idempotent, not noisy.

Get it: pip install dvt-core==0.2.10 · wheels on PyPI for macOS (arm64 + x86_64) and Linux, Python 3.10–3.12.