Skip to content

Coming from another tool

llms.txtlists every page for an agent

For a team whose database another migration tool manages today: the concepts mapped, then the database adopted with init --from.

Works

  • Each concept of a numbered-files migration tool mapped to its SQL Yodeler counterpart
  • The database adopted as it is, with the old tool's history table left out
  • Rollback with yodel revert, planned from the recorded schema, behind the same approval
  • A migration that fails part way resumes where it stopped; one out of order is refused

Differs

By database

  • A project owns ClickHouse databases (yodel create <dir> --clickhouse --database <name>).
  • A rebuild keeps the old table until yodel cleanup drops it, and lint flags mutations and rebuilds (ch-mutation, ch-rebuild).

By forge

  • The writer's secrets are secrets of a GitHub environment limited to main.
  • The plan comment and the drift issue use the job's own token.

First step

Terminal window
YODEL_CREDENTIALS=writer npx yodel init --from <env> --force

Coming from another migration tool

Proof

Each claim runs what this room relies on against a real server, once plain (it passes) and once with the behaviour broken (the claim catches it). Claims status lists every claim.

ClaimWhat it saysPlain, broken
adoptyodel init --from adopts a live database without touching it, and yodel plan then shows no change; on Postgres its policies, row-level security and grants too, on ClickHouse its dictionaries, functions, roles, users, row policies and grants; yodel init --baseline records the baseline, behind the gate, in a second environment that holds the same schema, and refuses one that differsClickHouse: pass, caughtPostgres: pass, caught
resumean interrupted apply resumes where it stopped: a backfill step written as yodel's form (table, key, batch size, SQL) from its receipts, running each batch once, and a failed statement at that statement, never resending one that ranClickHouse: pass, caughtPostgres: pass, caught
out-of-ordera migration merged late, before one already applied, is refused unless --allow-out-of-order, and never skippedClickHouse: pass, caughtPostgres: pass, caught

Then read

Tasks
Coming from another migration toolCutting CI overSetting up each forge
Background
MigrationsData migrations
Reference
The commandsGlossary

SQL Yodeler