Skip to content

Commit 79611b7

Browse files
committed
perf(compile): omit unused SQL-test execution plans from artifact responses
1 parent 4fc2314 commit 79611b7

8 files changed

Lines changed: 53 additions & 24 deletions

File tree

‎Makefile‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ E2E_DUCKDB_BUILD_INCREMENTAL_PATHS := \
9595
tests/e2e/src/sqlbuild/cli/commands/main/build/test_microbatch_replay_backfill_lifecycle.py \
9696
tests/e2e/src/sqlbuild/cli/commands/main/build/test_mixed_timestamp_grain_replay.py \
9797
tests/e2e/src/sqlbuild/cli/commands/main/build/test_model_backed_cursor_build.py \
98+
tests/e2e/src/sqlbuild/cli/commands/main/build/test_replay_on_change_full_build.py \
9899
tests/e2e/src/sqlbuild/cli/commands/main/build/test_seed_watermark_build.py \
99100
tests/e2e/src/sqlbuild/cli/commands/main/build/test_snapshot_build.py
100101

‎crates/sqlbuild-rules-native/src/compiler/_helpers/sql_tests/planning.rs‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ struct PlanBatchRequest {
5353
workers: usize,
5454
#[serde(default = "default_true")]
5555
render_sql: bool,
56+
#[serde(default = "default_true")]
57+
include_plan: bool,
5658
}
5759

5860
#[derive(Debug, Deserialize)]
@@ -549,6 +551,7 @@ pub(crate) fn plan_and_render_json(request_json: &str) -> Result<String, String>
549551
let request: PlanBatchRequest =
550552
serde_json::from_str(request_json).map_err(|error| error.to_string())?;
551553
let render_sql = request.render_sql;
554+
let include_plan = request.include_plan;
552555
let render_dialect = Arc::new(render_dialect(request.sql_analysis_dialect.as_deref()));
553556
let context = ProjectContext {
554557
models: request
@@ -592,11 +595,15 @@ pub(crate) fn plan_and_render_json(request_json: &str) -> Result<String, String>
592595
.into_par_iter()
593596
.map(|test| {
594597
let planning_start = Instant::now();
595-
let planned = plan_test(test, &context)?;
598+
let mut planned = plan_test(test, &context)?;
596599
let planning_ns = planning_start.elapsed().as_nanos();
597600
let rendering_start = Instant::now();
598601
let sql = render_sql
599602
.then(|| render_comparison_sql(&planned.request, &context.render_dialect));
603+
if !include_plan {
604+
planned.request.chain.clear();
605+
planned.request.assertions.clear();
606+
}
600607
let response = PlanResponse {
601608
sql,
602609
chain: planned.request.chain,

‎crates/sqlbuild-rules-native/src/compiler/tests/helpers.rs‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,23 @@ pub(crate) fn upstream_fallback_resolves() -> bool {
665665
assert!(!sql.contains("__ref(\""));
666666
assert!(sql.contains("identity_value((order_id))"), "{sql}");
667667
assert!(sql.contains("__ref__stg_orders"));
668+
let mut artifact_request = request;
669+
artifact_request["includePlan"] = json!(false);
670+
let compact: Value = serde_json::from_str(
671+
&crate::compiler::main::sql_test_planning::plan_and_render_json(
672+
&artifact_request.to_string(),
673+
)
674+
.expect("artifact planning succeeds"),
675+
)
676+
.expect("valid artifact JSON");
677+
assert_eq!(compact["artifacts"][0]["sql"], artifact["sql"]);
678+
assert_eq!(
679+
compact["artifacts"][0]["modelNames"],
680+
artifact["modelNames"]
681+
);
682+
assert_eq!(compact["artifacts"][0]["warnings"], artifact["warnings"]);
683+
assert_eq!(compact["artifacts"][0]["chain"], json!([]));
684+
assert_eq!(compact["artifacts"][0]["assertions"], json!([]));
668685
true
669686
}
670687

‎src/sqlbuild/compiler/planner/_helpers/sql_tests/native_planning.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def plan_and_render_sql_test_artifacts(
5454
adapter=adapter,
5555
sql_analysis_enabled=sql_analysis_enabled,
5656
render_sql=True,
57+
include_plan=False,
5758
):
5859
if plan.sql is None:
5960
raise NativeSqlTestPlanningError("native SQL-test planning omitted rendered SQL")
@@ -84,6 +85,7 @@ def plan_sql_tests_natively(
8485
adapter: BaseAdapter,
8586
sql_analysis_enabled: bool,
8687
render_sql: bool,
88+
include_plan: bool = True,
8789
) -> tuple[NativeSqlTestPlan, ...]:
8890
"""Plan SQL-test chains and assertions in one native batch, optionally rendering SQL."""
8991

@@ -100,6 +102,7 @@ def plan_sql_tests_natively(
100102
"requiresDerivedTableAliases": adapter.requires_derived_table_aliases(),
101103
"workers": _NATIVE_WORKERS,
102104
"renderSql": render_sql,
105+
"includePlan": include_plan,
103106
}
104107
try:
105108
native_response: str = cast(

‎tests/e2e/src/sqlbuild/cli/commands/main/compile/test_dense_compile_performance.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,28 @@
4040
1000,
4141
14.0,
4242
3 * _GIB // 2,
43-
"24d355f005d1e4c027ad06bc80678e6dede7c3d6a55e5e9bcae3ba4cfc1de922",
43+
"99f2f5c698cca3c7f0d5a2defbd31935d98813843c899286a23a8e7d4441a736",
4444
),
4545
DenseCompileGuardTestCase(
4646
"dense_models_3000_all_rules",
4747
3000,
4848
34.0,
4949
11 * _GIB // 4,
50-
"554dbb7e4aa130abc1e8801482aff123a746d382ed1f5b70d5c0d80fe2559edb",
50+
"1243f3de95857de4e7d1d8563ae6766aa9d2a192cf7525cec8ef5562b12704dc",
5151
),
5252
DenseCompileGuardTestCase(
5353
"dense_models_5000_all_rules",
5454
5000,
5555
55.0,
5656
13 * _GIB // 4,
57-
"79013b434bc8efdc0a6ebbcc6e23af24ba4b459a6f2ca99fcdd75fd9f5042e85",
57+
"956135597584ec369d37c23ab91b01bc6bf2df9ba78dce602311e152d451fa90",
5858
),
5959
DenseCompileGuardTestCase(
6060
"dense_models_10000_all_rules",
6161
10000,
6262
145.0,
6363
4 * _GIB,
64-
"8125ddde6d3ae172bb15878f95048d66398453c516bbd837b1fd83c04c5982b5",
64+
"92bf43fc45084c67de0eab3d4f32160e8303f99e1b951f6a7a1da5660f0eb66b",
6565
),
6666
),
6767
ids=lambda case: case.description,

‎tests/e2e/src/sqlbuild/cli/commands/main/compile/test_fresh_process_compile_cache_performance.py‎

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,16 @@
5151
expected_max_rss_bytes=2 * _GIB,
5252
expected_max_cache_bytes=96 * _MIB,
5353
expected_cold_fingerprint=(
54-
"36e2274af2bd6840f41d88ee1140a91034505a50f7fa27b61e2e47aa06765314"
54+
"3a955baeac3aaef85d1bcfe25eddce899abf8e542ad168510faa8c6cb53b9a30"
5555
),
5656
expected_leaf_edit_fingerprint=(
57-
"f6cfcbb21bf7e011b76f08f5d8e61b2095316b6845d987090e79b1718ed54175"
57+
"37171d29e89f3ed9db9b29b21d9af810a7c9bf3555cc497159c2d4ef87ae8f9d"
5858
),
5959
expected_macro_edit_fingerprint=(
60-
"ae102976a43c0fd6a68e5e55a7feeb9fac5f49ffc56bd3cdfcd389e199582081"
60+
"e37d388dc19e21da66fcb2f6fad2c3ef8db288724e7ab65031a75180e1535949"
6161
),
6262
expected_project_config_fingerprint=(
63-
"96e996a556119f452e966096747b35219941bf7bd324624242aadf6375ba1a31"
63+
"cbbe850cd2288979fd7682180176dfa9cda00bb48968ddb3b6c16ecd5728a389"
6464
),
6565
macro_call_interval=6,
6666
scoped_macros=True,
@@ -83,16 +83,16 @@
8383
expected_max_rss_bytes=2 * _GIB,
8484
expected_max_cache_bytes=160 * _MIB,
8585
expected_cold_fingerprint=(
86-
"686664bcadbbb0e339205d71b8fb3ab2d3f1226ca888eb4b2e6a5aa97ade1efb"
86+
"b39d33782ca1bc09235a6b6190dbc6a35cec43a161ef29d459aafd3f6be90166"
8787
),
8888
expected_leaf_edit_fingerprint=(
89-
"43fa1db2d5db12c5031aef8f6fb2a0e4af89c51ece58b1f1772db0a9ea4d43a0"
89+
"1bbf19080469c9716003c718fad5f8c196619778d20a44a4464a0af1c9f291d6"
9090
),
9191
expected_macro_edit_fingerprint=(
92-
"fd0cc80586b11d8d79a904d1daa6da4d559d22d6b4ebea02139a7d12626b770f"
92+
"394e5ee7d30c4cccbf608ea9d0b0e3a37d81b3948804d83a867244eccd9f3135"
9393
),
9494
expected_project_config_fingerprint=(
95-
"44a292e9ada77cc7038036fb593d9d8d8cd4883062a07254d963963ed0b4bb45"
95+
"4e2e86138b95fab8d4e45f97a990984f5057ad4686c4e05f0ba1de2de2ebe280"
9696
),
9797
macro_call_interval=6,
9898
scoped_macros=True,
@@ -115,16 +115,16 @@
115115
expected_max_rss_bytes=2 * _GIB,
116116
expected_max_cache_bytes=320 * _MIB,
117117
expected_cold_fingerprint=(
118-
"c1364cae404ee768c4443c3b964c42370e33268fbf83b101890b13558290e3e0"
118+
"1e3a63aab6d47bd1425c23d6f03c084d5207086caad6ce0da7564be0ce048158"
119119
),
120120
expected_leaf_edit_fingerprint=(
121-
"fe35feb1b239a17ed0e7b22bca20c2af06e0f25335fe5f9fae212491a693911b"
121+
"a853c671586612047923ffd1b8f0a5ef9d9a7c2d6edb634ad731432e5b641b16"
122122
),
123123
expected_macro_edit_fingerprint=(
124-
"bec17e83316ca926b76f450fa8a035e83f19c061e14a11b8effe04b7fa2e26fd"
124+
"25793047e0ae59c5c9d3a67ace435990de502e0d2c2be9d25ba2b5589ecf778d"
125125
),
126126
expected_project_config_fingerprint=(
127-
"780e26aa973459fbc803dd8d64315d445aab8bc57e90b0ad1ecb94f074b22474"
127+
"1cd1b9d836d9f5dd27c632cc8d9ab68464855dc22457c68ed44ad7efa7eb44af"
128128
),
129129
macro_call_interval=6,
130130
scoped_macros=True,
@@ -174,6 +174,7 @@ def test_given_semantic_project_when_compiling_across_processes_then_cache_is_in
174174
measurement.semantic_fingerprint,
175175
fresh_process_compile_cache_metrics(measurement),
176176
)
177+
for measurement in measurements.values():
177178
assert_successful_compile_cache_payload(measurement=measurement, test_case=test_case)
178179
assert measurement.peak_rss_bytes < test_case.expected_max_rss_bytes
179180

‎tests/e2e/src/sqlbuild/cli/commands/main/compile/test_fresh_process_compile_performance.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
expected_max_wall_seconds=11.0,
4040
expected_max_rss_bytes=int(1.5 * _GIB),
4141
expected_semantic_fingerprint=(
42-
"6841a94fc2d3a740cb0db14fe6cee46bfe32171b9580949134cd40379a31bf94"
42+
"e31803bd257d02a76188a9e6d3bf3b08feb50395c48f01f5535120041c58c875"
4343
),
4444
),
4545
FreshProcessCompilePerformanceGuardTestCase(
@@ -54,7 +54,7 @@
5454
expected_max_wall_seconds=15.5,
5555
expected_max_rss_bytes=int(1.75 * _GIB),
5656
expected_semantic_fingerprint=(
57-
"32dac15ee9c15a2aea2e4783e888231e402f15a8fe83270ef55af1aa75924b6c"
57+
"144f480668acba715d02ecca6712397150b5f35280a963a099b7f0cc814dbe0f"
5858
),
5959
),
6060
FreshProcessCompilePerformanceGuardTestCase(
@@ -69,7 +69,7 @@
6969
expected_max_wall_seconds=29.5,
7070
expected_max_rss_bytes=2 * _GIB,
7171
expected_semantic_fingerprint=(
72-
"7e1410c35f6026c7520711224aea2a95d8fe46515a2d2d370a3ee21180a36fdc"
72+
"89fea6392fbd130552781d84f8b982037a56edef6b98e4345c9769e57c7e56a7"
7373
),
7474
),
7575
],

‎tests/e2e/src/sqlbuild/cli/commands/main/compile/test_varied_compile_cache_performance.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@
4444
150,
4545
250,
4646
(
47-
"1c107624785e798ad43bc271ce90f60ed62ed703fe01a240687dec54b8080e15",
48-
"525245fb8374d566c8ff7a111fb0635abdc29f6ae25faba2a0f8b93beeeef8cc",
49-
"2e27ca67a51cbb0672794518ab611ab21a1730b294d7a0252e72d6ca6322fe5b",
50-
"be3f058013b62f2b0d54d6a1d52f7232d12c5c36641d801003ad8fda0b46e11f",
47+
"de60ac45bddfc86fc9726e49514315d3a2945df949b2be9e8fc4cd835bc34200",
48+
"c8cda76a18f96c345fbcbe22f05982c61f5837d4577fd7f2b45559b115756494",
49+
"a107585c3754afc00d7119196a1421168d39d0336df64a41c89f400453591c3a",
50+
"80d33bb0d3c0710e761658e344bfa895a5c351991eb4c8e94f1f7df7e85b4650",
5151
),
5252
),
5353
),

0 commit comments

Comments
 (0)