Skip to content

0.9.0

Latest

Choose a tag to compare

@lex00 lex00 released this 12 Oct 04:28
· 81 commits to main since this release
24247a0

SQL Yodeler 0.9.0 adds your own column rules and typed columns, on chant 0.124.13.

Added

  • Your own column rules (#227). A check in chant.config.ts lint.policies reads the parsed schema (for example, every table has created_at timestamptz NOT NULL, or no Nullable column in a ClickHouse sort key). yodel lint reports a finding in the migration that first breaks it, -- yodel:allow silences it, and lint.rules sets its level. See docs/lint.md, "Your own column rules".
  • Typed columns (#228). A table declared with its name as a type argument, table<"app.events">, gets typed columns from a generated src/sql-types.d.ts (npx chant sql types). A misspelled column then fails tsc, and RowOf<"app.events"> is the row type. Both templates and both examples now commit the file. See docs/schema.md, "Typed columns".
  • Docs: what yodel is for, and the ops a schema change implies (ClickHouse rebuilds, Postgres safe renames, backfills), each run once inside its migration. A "Why plain SQL" section in docs/schema.md.

Changed

  • chant 0.124.13. The templates and examples pin chant and the sql lexicon at 0.124.13, which typed table tags need.
  • A clause chant's parser does not know is kept as written, with a warning naming it, where it used to fail the build (chant#3872). The catalog check and the server decide, and a change to such a clause is planned as one a person reviews.
  • The pull request lint job runs chant sql types --check when the project commits sql-types.d.ts, so a stale file fails the PR. Run yodel ci to pick up the step.

Upgrading

  • Move @intentius/sql-yodeler to ^0.9.0, and @intentius/chant and @intentius/chant-lexicon-sql to 0.124.13.
  • Run yodel ci to re-render the pipelines.
  • Typed columns are opt-in: add the type argument to a table and run npx chant sql types. A project without sql-types.d.ts gets no new step.

Internal

  • The scenario claims are 7 in place of 9 (51 parts in place of 88). They now prove only yodel's own behaviour; the shared review-and-apply layer is chant's and chant proves it.
  • CI runs lint, two test shards and the templates as parallel jobs: about 1.5 minutes per pull request in place of 3.7.
  • The CI image installs chant at the lockfile's versions.