From e6cf5254d08485b1437896c96f43bdfd53de1bef Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Fri, 23 Oct 2026 09:52:12 +0100 Subject: [PATCH] docs: add recent features to the feature comparison --- .../skills/sqlbuild/references/docs/feature-comparison.md | 6 +++++- website/src/content/docs/docs/feature-comparison.mdx | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/sqlbuild/.agents/skills/sqlbuild/references/docs/feature-comparison.md b/src/sqlbuild/.agents/skills/sqlbuild/references/docs/feature-comparison.md index 531bc87382..575b324148 100644 --- a/src/sqlbuild/.agents/skills/sqlbuild/references/docs/feature-comparison.md +++ b/src/sqlbuild/.agents/skills/sqlbuild/references/docs/feature-comparison.md @@ -28,6 +28,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr | Macro / UDF / table function tests | `TEST(mode macro)`, `TEST(mode udf)`, or `TEST(mode table_fn)` | No | No | | Zero-row assertions | `__assert__` CTEs in tests and scenarios | No | No | | Failure diagnostics | Bounded, redacted unexpected and missing row samples in text and JSON | Adapter/tool dependent | Row diffs | +| Change-aware tests | `--since ` runs only the unit tests and scenarios a change affects, with the reason for each | `state:modified` selection against a saved manifest | `plan` detects changed models and backfills those affected | ### Audits @@ -52,6 +53,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr | Compiler-integrated Rules | Native and custom rules over compiler-owned SQL, models, dependencies, contracts, tests, and project paths | Project conventions through packages and external tooling | Built-in audits and external linting | | SQL transpilation | For local E2E replay into DuckDB | No | For cross-dialect model execution | | Python macros | `@py.name()` syntax | No (Jinja only) | SQLMesh macro syntax | +| SQL macros | Typed `@sql.name()` macros, each call checked against the caller's column types at compile time | Jinja macros | Typed Python macros (type hints check and convert arguments) | | Compiler-enforced declaration scopes | Project, descendant-public, exact-owner-private, and model-private tiers with offline `sqb scope` inspection | No lexical declaration scopes | No lexical declaration scopes | | Jinja support | No (Python macros instead) | Yes (core templating) | Yes | @@ -78,6 +80,8 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr |---------|----------|-----|---------| | Data diffs | Full row-level data comparison across targets | No | Table diff | | Zero-copy cloning | `sqb clone` | No | No | +| Safe refactoring | `sqb rename` and `sqb mv` rewrite references and Python imports, verify the result compiles, and keep old-name views | VS Code extension (Fusion) updates `ref()` calls on rename | No | +| Stale object cleanup | `sqb janitor` archives relations no longer in the project, shows which are still in use, and deletes archives after retention | No | `janitor` removes expired environments and snapshots | ### Models @@ -128,7 +132,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr | Tool | Best for | |------|----------| -| **SQLBuild** | Rigor-first SQL pipelines: compile-time verification, pre-promotion audit gating, multi-model tests, and local E2E replay by default. Opt into change-aware builds and warehouse-native state when full rebuilds get expensive, plus ingestion and Python nodes as the project grows. | +| **SQLBuild** | Rigor-first SQL pipelines: compile-time verification, pre-promotion audit gating, multi-model tests, change-aware testing, safe refactoring, and local E2E replay by default. Opt into change-aware builds and warehouse-native state when full rebuilds get expensive, plus ingestion and Python nodes as the project grows. | | **dbt** | The most widely adopted SQL transformation framework with the largest adapter and community ecosystem. | | **SQLMesh** | State-managed pipelines with interval tracking and cross-dialect transpilation. | diff --git a/website/src/content/docs/docs/feature-comparison.mdx b/website/src/content/docs/docs/feature-comparison.mdx index c8becf208a..e17b1606e5 100644 --- a/website/src/content/docs/docs/feature-comparison.mdx +++ b/website/src/content/docs/docs/feature-comparison.mdx @@ -19,6 +19,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr | Macro / UDF / table function tests | `TEST(mode macro)`, `TEST(mode udf)`, or `TEST(mode table_fn)` | No | No | | Zero-row assertions | `__assert__` CTEs in tests and scenarios | No | No | | Failure diagnostics | Bounded, redacted unexpected and missing row samples in text and JSON | Adapter/tool dependent | Row diffs | +| Change-aware tests | `--since ` runs only the unit tests and scenarios a change affects, with the reason for each | `state:modified` selection against a saved manifest | `plan` detects changed models and backfills those affected | ### Audits @@ -43,6 +44,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr | Compiler-integrated Rules | Native and custom rules over compiler-owned SQL, models, dependencies, contracts, tests, and project paths | Project conventions through packages and external tooling | Built-in audits and external linting | | SQL transpilation | For local E2E replay into DuckDB | No | For cross-dialect model execution | | Python macros | `@py.name()` syntax | No (Jinja only) | SQLMesh macro syntax | +| SQL macros | Typed `@sql.name()` macros, each call checked against the caller's column types at compile time | Jinja macros | Typed Python macros (type hints check and convert arguments) | | Compiler-enforced declaration scopes | Project, descendant-public, exact-owner-private, and model-private tiers with offline `sqb scope` inspection | No lexical declaration scopes | No lexical declaration scopes | | Jinja support | No (Python macros instead) | Yes (core templating) | Yes | @@ -69,6 +71,8 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr |---------|----------|-----|---------| | Data diffs | Full row-level data comparison across targets | No | Table diff | | Zero-copy cloning | `sqb clone` | No | No | +| Safe refactoring | `sqb rename` and `sqb mv` rewrite references and Python imports, verify the result compiles, and keep old-name views | VS Code extension (Fusion) updates `ref()` calls on rename | No | +| Stale object cleanup | `sqb janitor` archives relations no longer in the project, shows which are still in use, and deletes archives after retention | No | `janitor` removes expired environments and snapshots | ### Models @@ -119,7 +123,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr | Tool | Best for | |------|----------| -| **SQLBuild** | Rigor-first SQL pipelines: compile-time verification, pre-promotion audit gating, multi-model tests, and local E2E replay by default. Opt into change-aware builds and warehouse-native state when full rebuilds get expensive, plus ingestion and Python nodes as the project grows. | +| **SQLBuild** | Rigor-first SQL pipelines: compile-time verification, pre-promotion audit gating, multi-model tests, change-aware testing, safe refactoring, and local E2E replay by default. Opt into change-aware builds and warehouse-native state when full rebuilds get expensive, plus ingestion and Python nodes as the project grows. | | **dbt** | The most widely adopted SQL transformation framework with the largest adapter and community ecosystem. | | **SQLMesh** | State-managed pipelines with interval tracking and cross-dialect transpilation. |