Skip to content

Commit e6cf525

Browse files
committed
docs: add recent features to the feature comparison
1 parent 19ba294 commit e6cf525

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

‎src/sqlbuild/.agents/skills/sqlbuild/references/docs/feature-comparison.md‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
2828
| Macro / UDF / table function tests | `TEST(mode macro)`, `TEST(mode udf)`, or `TEST(mode table_fn)` | No | No |
2929
| Zero-row assertions | `__assert__` CTEs in tests and scenarios | No | No |
3030
| Failure diagnostics | Bounded, redacted unexpected and missing row samples in text and JSON | Adapter/tool dependent | Row diffs |
31+
| Change-aware tests | `--since <ref>` 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 |
3132

3233
### Audits
3334

@@ -52,6 +53,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
5253
| 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 |
5354
| SQL transpilation | For local E2E replay into DuckDB | No | For cross-dialect model execution |
5455
| Python macros | `@py.name()` syntax | No (Jinja only) | SQLMesh macro syntax |
56+
| 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) |
5557
| 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 |
5658
| Jinja support | No (Python macros instead) | Yes (core templating) | Yes |
5759

@@ -78,6 +80,8 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
7880
|---------|----------|-----|---------|
7981
| Data diffs | Full row-level data comparison across targets | No | Table diff |
8082
| Zero-copy cloning | `sqb clone` | No | No |
83+
| 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 |
84+
| 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 |
8185

8286
### Models
8387

@@ -128,7 +132,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
128132

129133
| Tool | Best for |
130134
|------|----------|
131-
| **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. |
135+
| **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. |
132136
| **dbt** | The most widely adopted SQL transformation framework with the largest adapter and community ecosystem. |
133137
| **SQLMesh** | State-managed pipelines with interval tracking and cross-dialect transpilation. |
134138

‎website/src/content/docs/docs/feature-comparison.mdx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
1919
| Macro / UDF / table function tests | `TEST(mode macro)`, `TEST(mode udf)`, or `TEST(mode table_fn)` | No | No |
2020
| Zero-row assertions | `__assert__` CTEs in tests and scenarios | No | No |
2121
| Failure diagnostics | Bounded, redacted unexpected and missing row samples in text and JSON | Adapter/tool dependent | Row diffs |
22+
| Change-aware tests | `--since <ref>` 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 |
2223

2324
### Audits
2425

@@ -43,6 +44,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
4344
| 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 |
4445
| SQL transpilation | For local E2E replay into DuckDB | No | For cross-dialect model execution |
4546
| Python macros | `@py.name()` syntax | No (Jinja only) | SQLMesh macro syntax |
47+
| 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) |
4648
| 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 |
4749
| Jinja support | No (Python macros instead) | Yes (core templating) | Yes |
4850

@@ -69,6 +71,8 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
6971
|---------|----------|-----|---------|
7072
| Data diffs | Full row-level data comparison across targets | No | Table diff |
7173
| Zero-copy cloning | `sqb clone` | No | No |
74+
| 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 |
75+
| 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 |
7276

7377
### Models
7478

@@ -119,7 +123,7 @@ SQLBuild, dbt, and SQLMesh are all SQL pipeline frameworks. They share common gr
119123

120124
| Tool | Best for |
121125
|------|----------|
122-
| **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. |
126+
| **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. |
123127
| **dbt** | The most widely adopted SQL transformation framework with the largest adapter and community ecosystem. |
124128
| **SQLMesh** | State-managed pipelines with interval tracking and cross-dialect transpilation. |
125129

0 commit comments

Comments
 (0)