Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
203 commits
Select commit Hold shift + click to select a range
4fad955
chore(deps): bump sqlquack to a9dde6a0
kvlonge Nov 8, 2026
2cd06dc
feat(analysis): give native dialects a parse and type contract
kvlonge Nov 8, 2026
b320f8e
feat(analysis): analyse native dialect queries with sqlquack-semantics
kvlonge Nov 8, 2026
eed3343
fix(types): take a fallback type's family from its top-level type
kvlonge Nov 8, 2026
73af347
fix(analysis): compare ClickHouse nullability without a type, and kee…
kvlonge Nov 8, 2026
6e514a2
fix(analysis): skip the Polyglot pivot proof for natively analysed di…
kvlonge Nov 8, 2026
b2d0fee
Revert "fix(analysis): skip the Polyglot pivot proof for natively ana…
kvlonge Nov 8, 2026
583e3ea
refactor(analysis): shape the native analysis route as fensu's Rust r…
kvlonge Nov 8, 2026
cb84e52
Merge main into the sqlquack bump
kvlonge Nov 8, 2026
fea889c
chore(deps): bump sqlquack to 19c51fa2
kvlonge Nov 8, 2026
359a372
Merge the sqlquack 19c51fa2 bump into the native analysis route
kvlonge Nov 8, 2026
80039dc
chore(deps): pin sqlquack-semantics to 19c51fa2 with the other sqlqua…
kvlonge Nov 8, 2026
ffdc043
feat(analysis): analyse Snowflake and DuckDB natively with SQLQuack
kvlonge Nov 8, 2026
02d2101
test(differential): keep the seed opt-out model unreadable to the nat…
kvlonge Nov 8, 2026
a003a5c
fix(analysis): let a native route's parser decide syntax, after the r…
kvlonge Nov 8, 2026
5b1e3a7
Merge remote-tracking branch 'origin/feat/analysis-route-native' into…
kvlonge Nov 8, 2026
6472385
fix(analysis): native type spellings take Polyglot's other dialects' …
kvlonge Nov 8, 2026
382d3cf
feat(analysis): analyse models on a native route with the dialect's o…
kvlonge Nov 8, 2026
1837342
fix(analysis): find a native route's stubs with the dialect's own quo…
kvlonge Nov 8, 2026
aac5217
fix(analysis): keep the analysis cache on a native route
kvlonge Nov 8, 2026
06bad7a
fix(lineage): build fast lineage natively for models without facts
kvlonge Nov 8, 2026
f07c13a
test(types): re-record the generated type golden for nested timestamps
kvlonge Nov 8, 2026
a6f1efd
test(lineage): trace fast lineage after a warm restore
kvlonge Nov 8, 2026
5bb708f
fix(analysis): gate a native route on a model's named hooks too
kvlonge Nov 8, 2026
7cf9e47
fix(analysis): know the adapter's declared functions on a native route
kvlonge Nov 8, 2026
9c886dd
refactor(analysis): shape the native route's model and lineage entrie…
kvlonge Nov 8, 2026
8fdd54a
feat(analysis): analyse SQLite natively with SQLQuack
kvlonge Nov 8, 2026
5001bbb
Merge branch 'feat/analysis-route-native' of https://github.com/sqlst…
kvlonge Nov 8, 2026
bd5a916
build(analysis): pin SQLQuack at the DuckDB window, PIVOT and arity p…
kvlonge Nov 8, 2026
ad355f4
test(analysis): re-record the unsupported-cast golden at the statemen…
kvlonge Nov 8, 2026
71a7e3c
WIP (not shipping): Databricks' arm on the NativeDialect trait, on a …
kvlonge Nov 8, 2026
50b4ee0
WIP (not shipping): drop the fensu exception Databricks' arm resolves
kvlonge Nov 8, 2026
d9a9e16
fix(analysis): revalidate type recovery with the native analysis on n…
kvlonge Nov 8, 2026
db4420d
fix(analysis): keep marker lineage and SQLBuild's text checks on nati…
kvlonge Nov 8, 2026
fb5e0f4
Merge branch 'feat/analysis-route-native' of https://github.com/sqlst…
kvlonge Nov 8, 2026
3151511
test(analysis): re-record native-route goldens and pin SQLQuack at th…
kvlonge Nov 8, 2026
b266012
test(lineage): an unterminated DuckDB query reports where the native …
kvlonge Nov 8, 2026
5813dd1
fix(sqltext): read T-SQL bracket names and ClickHouse quoting in dial…
kvlonge Nov 8, 2026
1eaa0f1
fix(analysis): read repeated markers as one relation and keep unreada…
kvlonge Nov 8, 2026
3366391
Merge branch 'feat/analysis-route-native' of https://github.com/sqlst…
kvlonge Nov 8, 2026
b5a20e7
feat(analysis): read SQL Server models with SQLQuack's T-SQL parser
kvlonge Nov 8, 2026
a1c4a5d
test(analysis): state the T-SQL parse and type cases as named test cases
kvlonge Nov 8, 2026
1ebf4ca
chore(deps): pin SQLQuack to the main commit carrying the SQL Server …
kvlonge Nov 8, 2026
a8d1dc7
test(analysis): keep T-SQL cursor stubs after bracket names holding q…
kvlonge Nov 8, 2026
2eb605e
Route ClickHouse analysis to SQLQuack's ClickHouse parser and profile
kvlonge Nov 8, 2026
398a3b1
test(analysis): re-record native spellings and the DuckDB union guard
kvlonge Nov 8, 2026
78241c3
test(analysis): re-record type notes in the engine's own spellings
kvlonge Nov 8, 2026
80b232e
WIP (not shipping): merge feat/analysis-route-native at 1eaa0f1de int…
kvlonge Nov 8, 2026
195fa99
fix(analysis): name the hook and the model file line in P026
kvlonge Nov 8, 2026
4409f42
feat(analysis): let a native dialect respell session column types
kvlonge Nov 8, 2026
bfa1b30
WIP (not shipping): BigQuery's arm on the NativeDialect trait, pinned…
kvlonge Nov 8, 2026
eb9eba3
build(analysis): pin SQLQuack at main 38be86ba
kvlonge Nov 8, 2026
c0de58f
Merge branch 'feat/analysis-route-native' of https://github.com/sqlst…
kvlonge Nov 8, 2026
07d40d6
WIP (not shipping): align the BigQuery arm's tests with the native di…
kvlonge Nov 8, 2026
9a38e05
WIP (not shipping): read session types BigQuery cannot spell by their…
kvlonge Nov 8, 2026
9cfc753
WIP (not shipping): let BigQuery casts name RANGE types
kvlonge Nov 8, 2026
09194f8
WIP (not shipping): re-record the BigQuery entries of the generated c…
kvlonge Nov 8, 2026
bb1d291
test(analysis): re-record P026 messages and fast-lineage golden for n…
kvlonge Nov 8, 2026
b87d99c
WIP (not shipping): route Postgres analysis to SQLQuack's PostgreSQL …
kvlonge Nov 8, 2026
57d6861
WIP (not shipping): shape the Databricks arm's type test and constant…
kvlonge Nov 8, 2026
a1e552a
test(analysis): cover a root star over an opted-out model in fast lin…
kvlonge Nov 8, 2026
bff6ed2
WIP (not shipping): compare Postgres types as PostgreSQL names them
kvlonge Nov 8, 2026
7f07e82
WIP (not shipping): type Databricks spellings through Databricks' own…
kvlonge Nov 8, 2026
888fd5c
WIP (not shipping): re-record the Databricks entries of the generated…
kvlonge Nov 8, 2026
e60342d
WIP (not shipping): match the Databricks type probe's parse failures …
kvlonge Nov 8, 2026
2e36db4
test(analysis): re-record native-arm spellings, a B231 position and a…
kvlonge Nov 8, 2026
ed4220d
WIP (not shipping): merge feat/analysis-route-native at 4409f42f into…
kvlonge Nov 8, 2026
926616d
WIP (not shipping): Databricks reads session types it cannot spell by…
kvlonge Nov 8, 2026
3a3dacd
WIP (not shipping): validation pin of every sqlquack crate to 02bd392d
kvlonge Nov 8, 2026
b7b6cd6
fix(analysis): give native routes the session's functions, quoting an…
kvlonge Nov 8, 2026
99785e6
fix(analysis): quote an unknown quoted column as written
kvlonge Nov 8, 2026
afe1a70
Merge branch 'feat/analysis-route-native' of https://github.com/sqlst…
kvlonge Nov 8, 2026
0280245
Merge branch 'feat/analysis-route-native' of https://github.com/sqlst…
kvlonge Nov 8, 2026
0a34c56
Merge remote-tracking branch 'origin/feat/analysis-route-native' into…
kvlonge Nov 8, 2026
e64c6b5
feat(analysis): fold quoted Snowflake names under QUOTED_IDENTIFIERS_…
kvlonge Nov 8, 2026
03e62ff
test(analysis): re-record CREATE TABLE AS and INSERT ... SELECT colum…
kvlonge Nov 8, 2026
9e9d911
test(analysis): expect the native refusal to complete without a sessi…
kvlonge Nov 8, 2026
d905e8a
Merge commit '9e9d911b7' into wip/native-arms
kvlonge Nov 8, 2026
d0a0af2
test(analysis): capture each generated semantics project under its ow…
kvlonge Nov 8, 2026
a445943
Merge commit 'd0a0af2d4' into wip/native-arms
kvlonge Nov 8, 2026
0614108
WIP (not shipping): merge feat/analysis-route-native at 9e9d911b into…
kvlonge Nov 8, 2026
f4e7595
WIP (not shipping): pin every sqlquack crate to SQLQuack main 3b497dfa
kvlonge Nov 8, 2026
3879482
test(analysis): re-record the native digest goldens and pin the open …
kvlonge Nov 8, 2026
e72abee
test(analysis): expect a native wave to analyse each equal model query
kvlonge Nov 8, 2026
fc816af
fix(analysis): type a native route's reads of declared but open relat…
kvlonge Nov 8, 2026
56a9e4b
Merge remote-tracking branch 'origin/wip/native-arms' into wip/native…
kvlonge Nov 8, 2026
7ead128
Merge remote-tracking branch 'origin/wip/analysis-route-postgres' int…
kvlonge Nov 8, 2026
2a80513
WIP (not shipping): bind the Databricks timestamp's zone flag in one arm
kvlonge Nov 8, 2026
5bc05d2
WIP (not shipping): merge feat/analysis-route-native at fc816af1 into…
kvlonge Nov 8, 2026
6c0ecad
Merge remote-tracking branch 'origin/wip/analysis-route-clickhouse-1e…
kvlonge Nov 8, 2026
2ea0df3
Merge remote-tracking branch 'origin/wip/analysis-route-bigquery-on-1…
kvlonge Nov 8, 2026
f314b91
Merge remote-tracking branch 'origin/wip/analysis-route-tsql-native-v…
kvlonge Nov 8, 2026
c2fc54c
fix(rules): read relation markers as tables in custom-rule syntax trees
kvlonge Nov 8, 2026
1bba96c
feat(sql-macros): parse SQL macros and SQL-test planning with the nat…
kvlonge Nov 8, 2026
b00d657
refactor(sql-tests): read planning relation markers through the share…
kvlonge Nov 8, 2026
f400f93
test(sql-macros): name the tracked list-typing work in the list-body …
kvlonge Nov 8, 2026
c83c069
test(sql-macros): expect the unavailable error for adapters without a…
kvlonge Nov 8, 2026
ebfb386
docs(sql-macros): say macros and SQL tests need a native parser, and …
kvlonge Nov 8, 2026
52cea3a
test(sql-macros): describe the list-typing work in the list-body xfai…
kvlonge Nov 8, 2026
eb57350
build(analysis): pin sqlquack to c2e78ffb
kvlonge Nov 8, 2026
6627ba6
Merge commit 'fc816af1' into wip/native-arms
kvlonge Nov 8, 2026
6dd992e
test(analysis): re-record the native goldens for declared open column…
kvlonge Nov 8, 2026
098499d
fix(deps): resolve tempfile against the workspace's windows-sys again
kvlonge Nov 8, 2026
2794101
chore(analysis): pin every native arm to one SQLQuack train and share…
kvlonge Nov 8, 2026
f40010a
Merge remote-tracking branch 'origin/feat/analysis-route-native' into…
kvlonge Nov 8, 2026
3027351
Merge remote-tracking branch 'origin/wip/analysis-route-databricks-on…
kvlonge Nov 8, 2026
f0fdce7
Merge remote-tracking branch 'origin/wip/native-arms' into wip/native…
kvlonge Nov 8, 2026
405b4b3
chore(analysis): lock the Databricks syntax crate at the shared SQLQu…
kvlonge Nov 8, 2026
4d3daba
test(sql-macros): run every macro case through its adapter's native arm
kvlonge Nov 8, 2026
94ff7df
refactor(analysis): group the native route's helpers into analysis an…
kvlonge Nov 8, 2026
cac2035
feat(analysis): leave a dialect no native module reads unanalysed
kvlonge Nov 8, 2026
f8d10d0
test: expect every shipped dialect's native arm
kvlonge Nov 8, 2026
8b53a97
Merge remote-tracking branch 'origin/main' into wip/native-cutover
kvlonge Nov 8, 2026
c4daee9
test(analysis): xfail PostgreSQL's invalid-literal comparison until S…
kvlonge Nov 8, 2026
1f2ebae
test(analysis): compile each generated project under its profile's ow…
kvlonge Nov 8, 2026
d433c19
fix(analysis): route PostgreSQL's assembly dialect name to its native…
kvlonge Nov 8, 2026
fb51e92
test(analysis): re-record PostgreSQL goldens under its native session
kvlonge Nov 8, 2026
e0794c0
fix(analysis): route every analysis alias to its native module
kvlonge Nov 8, 2026
33455a1
test(analysis): prove each shipped adapter's session analyses natively
kvlonge Nov 8, 2026
17dd306
fix(analysis): read no resource SQL where no native parser reads the …
kvlonge Nov 8, 2026
b917b93
test(differential): record SQL test mocks in the model's reference order
kvlonge Nov 8, 2026
cadc205
test(semantic): re-record unknown-dialect metadata checks without res…
kvlonge Nov 8, 2026
a6232bc
build: pin SQLQuack to main 395ced6d
kvlonge Nov 8, 2026
6f300c6
docs(analysis): keep the resource SQL summary to one line
kvlonge Nov 8, 2026
ddd81a4
test(analysis): build test compile contexts with the adapter's analys…
kvlonge Nov 8, 2026
081f692
test(analysis): expect native-route behaviour where tests expected Po…
kvlonge Nov 8, 2026
41e1acb
test(sql-macros): expect native-route results in the macro e2e cases
kvlonge Nov 8, 2026
1693262
fix(sql-macros): name the BigQuery NUMERIC limit for types its parser…
kvlonge Nov 8, 2026
9b978e3
docs(skill): regenerate the docs skill references for SQL macros and …
kvlonge Nov 9, 2026
79ec44a
wip: keep recorded fingerprints of unchanged definitions across finge…
kvlonge Nov 9, 2026
09bd6fc
test: pin SQLite and MotherDuck query fingerprints before the SQLClea…
kvlonge Nov 9, 2026
f41fb84
fix(executor): treat SQLite columns without type evidence as compatible
kvlonge Nov 9, 2026
48b0ace
fix(analysis): know project functions by their bare names on native r…
kvlonge Nov 9, 2026
130af72
fix(lineage): trace fast lineage and review impact in the adapter's d…
kvlonge Nov 9, 2026
fcc06cf
fix(analysis): place native type findings that carry no span
kvlonge Nov 9, 2026
f45fa0a
fix(compile): report SQL syntax errors as P001 on native routes
kvlonge Nov 9, 2026
aee3885
refactor(sql-macros): share one statement parse for macro bodies and …
kvlonge Nov 9, 2026
0bd1d15
fix(contracts): compare declared types as each engine stores them
kvlonge Nov 9, 2026
b913e36
test(e2e): expect the native route's explained results
kvlonge Nov 9, 2026
6747f0c
wip: re-pin SQLClean 0.6.0 and fingerprint every dialect through SQLQ…
kvlonge Nov 9, 2026
b7a2b76
test: keep recorded hashes of unchanged models after a fingerprint sc…
kvlonge Nov 9, 2026
c1b350b
Merge remote-tracking branch 'origin/wip/sqlclean-060-on-cutover' int…
kvlonge Nov 9, 2026
c9a14ad
fix(rules): wrap Snowflake table functions in TABLE( ) before parsing
kvlonge Nov 8, 2026
b988331
fix(rules): read Snowflake table function markers inside TABLE( ) in …
kvlonge Nov 8, 2026
db5954f
fix(rules): keep columns after a wrapped table function in rule trees
kvlonge Nov 8, 2026
362044f
fix(rules): keep a table function's argument columns when its call en…
kvlonge Nov 9, 2026
8a10a46
fix(rules): keep a Snowflake table function call whole when linting a…
kvlonge Nov 9, 2026
02a68d1
test: expect a Snowflake bare VALUES CTE to be a syntax error as a st…
kvlonge Nov 9, 2026
5a817e3
test: keep the recorded-fingerprint and SQLite schema-change tests in…
kvlonge Nov 9, 2026
21d1f7b
fix(test): accept a typed null fixture's own column order under a SEL…
kvlonge Nov 9, 2026
dd42b2e
fix: lint and format scalar function bodies and quoted hook arguments
kvlonge Nov 9, 2026
979f204
refactor: bring the native analysis code and tests into the project l…
kvlonge Nov 9, 2026
d95bf5c
refactor: read adapter dialects and project settings without Python c…
kvlonge Nov 9, 2026
963a8da
fix(rules): keep a Snowflake table function's arguments after LATERAL
kvlonge Nov 9, 2026
be7bc40
test: check outside the xfail that a Snowflake syntax error still fai…
kvlonge Nov 9, 2026
94755d2
fix: frame only scalar function bodies as expressions in lint and format
kvlonge Nov 9, 2026
1403f6d
test(duckshop): read the edge-case table function after LATERAL
kvlonge Nov 9, 2026
98628de
test: list the Snowflake syntax-error case beside each test that read…
kvlonge Nov 9, 2026
9421940
fix(analysis): drop LATERAL before a table function's stub relation
kvlonge Nov 9, 2026
d971f46
test(duckshop): unit-test the LATERAL table-function edge model
kvlonge Nov 9, 2026
6d7657e
deps: pin SQLQuack 804864d2 and SQLClean 0.6.1
kvlonge Nov 9, 2026
2610bfb
Merge origin/main into wip/native-cutover
kvlonge Nov 9, 2026
24e6c41
fix(sql-tests): drop LATERAL before a mocked table function
kvlonge Nov 9, 2026
496a69e
test(semantics): expect PostgreSQL's B218 on a text literal compared …
kvlonge Nov 9, 2026
4bcfc03
test(assembly): expect P001 where the parser rejects model and hook SQL
kvlonge Nov 9, 2026
ec3fb3e
test(analysis): write each generated project in its profile's dialect
kvlonge Nov 9, 2026
c7943ed
test: re-record the python-oracle goldens on the merged native route
kvlonge Nov 9, 2026
75056a4
test(compile): write the header-contract pivot in DuckDB's PIVOT ON form
kvlonge Nov 9, 2026
c9646ae
test(compile): write DuckDB-valid hook SQL and expect P001 for reject…
kvlonge Nov 9, 2026
d2cc870
fix(analysis): spell ClickHouse's BINARY(n) as FixedString(n) on the …
kvlonge Nov 9, 2026
22d403b
Merge remote-tracking branch 'origin/main' into wip/cutover-main-merge
kvlonge Nov 9, 2026
e44f270
test(analysis): key dialect spellings by template and accept an unnam…
kvlonge Nov 9, 2026
18363c0
chore: settle fensu on the merged head
kvlonge Nov 9, 2026
4eaa3ee
test(compile): write hook SQL the project's engine reads
kvlonge Nov 9, 2026
fdd5665
fix(format): leave Databricks models as written with a format-unavail…
kvlonge Nov 9, 2026
6b0907b
test: expect the re-pinned engines' behaviour and the native route's …
kvlonge Nov 9, 2026
818a774
chore: settle fensu on the format-unavailable warning and the known f…
kvlonge Nov 9, 2026
c4a74cd
Merge remote-tracking branch 'origin/main' into wip/cutover-main-merge
kvlonge Nov 9, 2026
b5eb2d4
build: pin SQLClean 0.6.2
kvlonge Nov 9, 2026
de0d93c
perf(compile): parse native gap checks on the compile pool
kvlonge Nov 9, 2026
8d92ed0
perf(compile): keep native read-whole verdicts in the compile cache
kvlonge Nov 9, 2026
2193bd4
test(perf): record the native route's fresh-process compile fingerprints
kvlonge Nov 9, 2026
ba64892
Merge remote-tracking branch 'origin/main' into wip/cutover-main-merge
kvlonge Nov 9, 2026
1ae62ed
perf(contracts): compare each native type pair once per project
kvlonge Nov 9, 2026
e7d7e52
perf(sql-tests): read bounded planning templates from tokens again
kvlonge Nov 9, 2026
b827e88
Merge remote-tracking branch 'origin/main' into wip/cutover-main-merge
kvlonge Nov 9, 2026
ed9d525
ci(perf): allow the native-analysis cold compile ratios until CHI-1177
kvlonge Nov 9, 2026
f6beab7
chore: word the ratio allowances neutrally and restore main's JSON-wa…
kvlonge Nov 9, 2026
fc445af
refactor: share the compile caches' debug logger and shape the templa…
kvlonge Nov 9, 2026
6b809de
build(deps): pin SQLQuack f9e4ae6e, after its layout refactor
kvlonge Nov 9, 2026
b80a1cb
build(deps): pin SQLClean v0.6.4
kvlonge Nov 9, 2026
db457a5
chore: drop the native parse store's unused PyAnyMethods import
kvlonge Nov 9, 2026
b8c64e9
Merge remote-tracking branch 'origin/main' into wip/native-cutover
kvlonge Nov 9, 2026
fe36711
test(differential): re-record the syntax and unsupported-cast goldens…
kvlonge Nov 9, 2026
9d2f2c1
test(perf): allow the native-analysis cold wall budgets
kvlonge Nov 9, 2026
c35b8b6
test(perf): record the native route's varied compile cache fingerprints
kvlonge Nov 9, 2026
badadd9
test(format): expect Databricks files to be formatted
kvlonge Nov 10, 2026
01e5a37
build(deps): pin SQLQuack 56c7c15e and SQLClean v0.8.0
kvlonge Nov 10, 2026
70ae4d9
Merge remote-tracking branch 'origin/main' into wip/cutover-main-merge
kvlonge Nov 10, 2026
2111f98
perf(analysis): share one native analysis between models of the same …
kvlonge Nov 10, 2026
3875168
fix(analysis): keep glued and underscore-led references out of shared…
kvlonge Nov 10, 2026
a9e1c7b
refactor(analysis): check shared reference names with the core identi…
kvlonge Nov 10, 2026
6f25453
refactor(analysis): place native sharing behind one analysis-route entry
kvlonge Nov 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 17 additions & 1 deletion .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -845,10 +845,20 @@ jobs:
include:
- kind: dense
max_ratio: "1.10"
# Temporary native-analysis allowance on the cold compile only; restore 1.10 when the
# native analysis cold path is optimised. Measured 1.326/1.347 wall and 1.642/1.677 CPU
# over main, plus 10%.
cold_max_ratio: "1.49"
cold_max_cpu_ratio: "1.85"
edit_max_ratio: "1.20"
edit_max_cpu_ratio: "1.75"
- kind: fresh
max_ratio: "1.10"
# Temporary native-analysis allowance on the cold compile only; restore 1.10 when the
# native analysis cold path is optimised. Measured 1.285/1.153 wall and 1.551/1.404 CPU
# over main, plus 10%.
cold_max_ratio: "1.42"
cold_max_cpu_ratio: "1.71"
- kind: dense
label: contracts CPU vs base
gate_phase: contracts_cpu_ms
Expand All @@ -857,7 +867,9 @@ jobs:
label: model analysis CPU vs base
gate_phase: model_analysis_cpu_ms
compile_args: --compile-arg=--select=*
max_ratio: "1.10"
# Temporary native-analysis allowance; restore 1.10 when the native analysis path is
# optimised. Measured 2.660/2.554 over main, plus 10%.
max_ratio: "2.93"
- kind: dense
label: custom rules CPU vs base
gate_phase: custom_rules_cpu_ms
Expand Down Expand Up @@ -922,12 +934,16 @@ jobs:
env:
KIND: ${{ matrix.kind }}
MAX_RATIO: ${{ matrix.max_ratio }}
COLD_MAX_RATIO: ${{ matrix.cold_max_ratio }}
COLD_MAX_CPU_RATIO: ${{ matrix.cold_max_cpu_ratio }}
EDIT_MAX_RATIO: ${{ matrix.edit_max_ratio }}
EDIT_MAX_CPU_RATIO: ${{ matrix.edit_max_cpu_ratio }}
run: |
uv run python -m scripts.compare_compile_performance \
--kind "${KIND}" \
--modes cold warm edit \
${COLD_MAX_RATIO:+--cold-max-ratio "$COLD_MAX_RATIO"} \
${COLD_MAX_CPU_RATIO:+--cold-max-cpu-ratio "$COLD_MAX_CPU_RATIO"} \
${EDIT_MAX_RATIO:+--edit-max-ratio "$EDIT_MAX_RATIO"} \
${EDIT_MAX_CPU_RATIO:+--edit-max-cpu-ratio "$EDIT_MAX_CPU_RATIO"} \
--max-ratio "${MAX_RATIO}" \
Expand Down
181 changes: 162 additions & 19 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 16 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -174,11 +174,22 @@ sqlbuild-scopes = { path = "crates/sqlbuild-scopes" }
sqlbuild-sqltext = { path = "crates/sqlbuild-sqltext" }
sqlbuild-state = { path = "crates/sqlbuild-state" }
# SQL lint Rules, quality Rules and the formatter.
sqlclean = { git = "https://github.com/sqlstack-io/sqlclean.git", rev = "cf79656d247277a30bc81ef39b6dee420e721221" }
# SQLQuack's lossless tokenizer behind query fingerprints and its parsers for warehouse types.
sqlquack-syntax = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "edfa30b26a0bab86661f96490b86a4f24b92db0a" }
sqlquack-syntax-bigquery = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "edfa30b26a0bab86661f96490b86a4f24b92db0a" }
sqlquack-syntax-postgres = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "edfa30b26a0bab86661f96490b86a4f24b92db0a" }
sqlclean = { git = "https://github.com/sqlstack-io/sqlclean.git", rev = "a4a006bd9e5849af6bf477814646ce921299a8a1" }
# SQL change fingerprints over SQLQuack's tokenizers.
sqlquack-fingerprint = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da", features = ["bigquery", "databricks", "duckdb", "postgres", "snowflake", "sqlite", "sqlserver"] }
# Scopes, name resolution, types and lineage for the native analysis route.
sqlquack-semantics = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da", features = ["bigquery", "clickhouse", "databricks", "duckdb", "postgres", "snowflake", "sqlite", "sqlserver"] }
# SQLQuack's Snowflake-family parser and tokenizer, reached as SQLQuack exposes them.
sqlquack-parse = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
# SQLQuack's syntax tree and lossless tokens.
sqlquack-syntax = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
sqlquack-syntax-bigquery = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
sqlquack-syntax-clickhouse = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
sqlquack-syntax-databricks = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
sqlquack-syntax-duckdb = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
sqlquack-syntax-postgres = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
sqlquack-syntax-sqlite = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
sqlquack-syntax-sqlserver = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" }
stacker = "0.1"
syn = { version = "2", features = ["full", "visit", "extra-traits"] }
subtle = "2"
Expand Down
6 changes: 3 additions & 3 deletions benchmarks/duckshop/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ project and does not change it:
`edge_running_peaks`, that a pre-hook of `int_edge_basket_running_peaks` creates
(`models/intermediate/edge_cases/_sqlbuild/_hooks/sql/`) and SQLBuild does not declare.

It has 160 models (13 staging, 133 intermediate, 14 marts), 5 Python functions, a SQL table
function, a hook-created JavaScript function, 185 unit tests and 4 scenarios, in nine groups:
It has 161 models (13 staging, 134 intermediate, 14 marts), 5 Python functions, a SQL table
function, a hook-created JavaScript function, 186 unit tests and 4 scenarios, in nine groups:

| Group | Covers |
|-------|--------|
Expand All @@ -137,7 +137,7 @@ function, a hook-created JavaScript function, 185 unit tests and 4 scenarios, in
| Lineage and analysis | clauses whose columns decide rows without being output (`WHERE`, `QUALIFY`, `GROUP BY` by position and `ALL`, `ORDER BY` under `LIMIT`, `EXISTS`, a `FLATTEN` input, `ROLLUP` by position, `EXCEPT` under `LIMIT`); `RIGHT JOIN ... USING`, `NATURAL JOIN`, a `USING` key under a later outer join, and unmatched `ASOF JOIN` rows; `CONNECT BY` beside a column named `level`; a recursive CTE without `RECURSIVE` whose columns shift per iteration; `LAST_DAY` with a date part; positional columns and the names Snowflake gives unaliased expressions; `TEXT(5)` and widened `COUNT` contracts |
| Python functions | volatile tokens and numbers from a column, a constant and no argument, and `DIV0` of a volatile call beside look-alike names, checked by assertions that hold for any values; a handler answering NULL input without `STRICT`; Python `None` as JSON null, and datetimes, Decimals and integers past 2^53 handed to `VARIANT` and `FLOAT` results |
| Scenarios and lifecycle | typed values across model boundaries; `VARIANT` expected output; a star under a lower-case contract and a quoted camelCase export; a snapshot keyed and compared on quoted camelCase columns; a cursor-window incremental model over far-apart fixture loads; a change log merged across two loads, checked against a full rebuild |
| Translation refusals | one model per construct that translation tools refuse or guard, most putting a construct refused only under strict checking before one refused by default, so a model shows both: `FLOAT` values through sums, averages, running totals, arrays, objects, `HASH`, `TO_CHAR` and `::NUMBER(38, 10)`; `VARIANT` dates, decimals and XML; `ARRAY_AGG` without `WITHIN GROUP`, sparse arrays and `ARRAY(NUMBER)` casts; `REDUCE`, `FILTER` and `TRANSFORM` lambdas; patterns and `REGEXP_REPLACE` replacements built from columns, and lazy patterns; `TRY_TO_DATE` with a format from a column; zoned literals, `CONVERT_TIMEZONE` from `CURRENT_TIMESTAMP`, `SEQ8`, `GENERATOR` with an expression `ROWCOUNT`; `PIVOT`, `ANY_VALUE`, `IGNORE NULLS` around `IFF`, unaliased columns read by Snowflake's name, `UNION` branches whose column is always NULL; `TO_NUMBER`, `TO_DECIMAL` and `TRY_BASE64_DECODE_BINARY`; an open (uncontracted) source `edge__supplier_notes`, the table function and the hook-created function. `rpt_edge_case_model_keys` and `rpt_edge_case_array_model_keys` read every model in the group, so a refusal there also refuses a downstream model |
| Translation refusals | one model per construct that translation tools refuse or guard, most putting a construct refused only under strict checking before one refused by default, so a model shows both: `FLOAT` values through sums, averages, running totals, arrays, objects, `HASH`, `TO_CHAR` and `::NUMBER(38, 10)`; `VARIANT` dates, decimals and XML; `ARRAY_AGG` without `WITHIN GROUP`, sparse arrays and `ARRAY(NUMBER)` casts; `REDUCE`, `FILTER` and `TRANSFORM` lambdas; patterns and `REGEXP_REPLACE` replacements built from columns, and lazy patterns; `TRY_TO_DATE` with a format from a column; zoned literals, `CONVERT_TIMEZONE` from `CURRENT_TIMESTAMP`, `SEQ8`, `GENERATOR` with an expression `ROWCOUNT`; `PIVOT`, `ANY_VALUE`, `IGNORE NULLS` around `IFF`, unaliased columns read by Snowflake's name, `UNION` branches whose column is always NULL; `TO_NUMBER`, `TO_DECIMAL` and `TRY_BASE64_DECODE_BINARY`; an open (uncontracted) source `edge__supplier_notes`, the table function, read for one basket and after `LATERAL` for every basket, and the hook-created function. `rpt_edge_case_model_keys` and `rpt_edge_case_array_model_keys` read every model in the group, so a refusal there also refuses a downstream model |

Unit-test expectations in the edge-case area are captured on Snowflake under the `edge` target's
pinned session, rather than derived by hand; scenario expectations, and the assertions in tests
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ FUNCTION (
returns INTEGER,
);

-- One more than the quantity it is given.
quantity + 1
Loading
Loading