Skip to content

[refine](expr) Migrate old VExpr execute interface to new execute_column (Part 2)#61946

Closed
Mryange wants to merge 1 commit into
apache:masterfrom
Mryange:expr-api-ref-part-2
Closed

[refine](expr) Migrate old VExpr execute interface to new execute_column (Part 2)#61946
Mryange wants to merge 1 commit into
apache:masterfrom
Mryange:expr-api-ref-part-2

Conversation

@Mryange
Copy link
Copy Markdown
Contributor

@Mryange Mryange commented Mar 31, 2026

What problem does this PR solve?

Continue the migration from old VExprContext::execute(Block*, int*) API to the new VExprContext::execute(const Block*, ColumnPtr&) API, following up on #61912 (Part 1).

The old API inserts the result column into the Block and returns a column index, which mutates the Block and causes unnecessary column lifetime coupling. The new API returns the result column directly without modifying the Block.

Changes

  • vectorized_agg_fn: Use new execute API with a calc-then-reset pattern — _calc_argument_columns() populates holders, and _reset_input_columns() clears them after each aggregation call to avoid inflating VSlotRef shared column reference counts.
  • hashjoin_probe_operator: Change _do_evaluate / _extract_join_column / _need_probe_null_map to work with vector<ColumnPtr> instead of vector<int>. All column references stored in _key_columns_holder to keep raw pointers alive.
  • distinct_streaming_aggregation_operator: Replace result_idxs with Columns key_column_ptrs. Simplify the streaming swap path to std::move + in_block->clear().
  • set_probe_sink_operator: Use _probe_column_holders to hold ColumnPtrs. Remove dead _probe_column_inserted_id field.
  • scanner: Replace execute + shuffle_columns with execute(ColumnWithTypeAndName) overload + direct Block c

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@Thearas
Copy link
Copy Markdown
Contributor

Thearas commented Mar 31, 2026

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Mar 31, 2026

run buildall

@doris-robot
Copy link
Copy Markdown

TPC-H: Total hot run time: 26668 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 9eb0e3994c72fc08c9511d33ac01cbf096b70732, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17593	4526	4315	4315
q2	q3	10658	784	534	534
q4	4672	366	256	256
q5	7563	1214	1027	1027
q6	175	175	148	148
q7	779	842	703	703
q8	9325	1507	1376	1376
q9	4931	4665	4707	4665
q10	6234	1916	1704	1704
q11	476	262	249	249
q12	714	574	466	466
q13	18015	2792	1955	1955
q14	224	232	207	207
q15	q16	729	735	674	674
q17	728	878	423	423
q18	6065	5458	5168	5168
q19	1223	985	651	651
q20	557	501	383	383
q21	4644	1870	1432	1432
q22	424	488	332	332
Total cold run time: 95729 ms
Total hot run time: 26668 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4839	4709	4616	4616
q2	q3	3913	4421	3853	3853
q4	895	1219	776	776
q5	4072	4423	4385	4385
q6	196	182	148	148
q7	1794	1662	1532	1532
q8	2494	2696	2627	2627
q9	7693	7606	7443	7443
q10	3825	4013	3692	3692
q11	513	425	420	420
q12	474	577	454	454
q13	2541	2919	2087	2087
q14	293	287	280	280
q15	q16	781	807	768	768
q17	1177	1382	1349	1349
q18	7246	6955	6883	6883
q19	924	919	942	919
q20	2107	2167	2027	2027
q21	4027	3577	3377	3377
q22	488	550	387	387
Total cold run time: 50292 ms
Total hot run time: 48023 ms

@doris-robot
Copy link
Copy Markdown

TPC-DS: Total hot run time: 170044 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 9eb0e3994c72fc08c9511d33ac01cbf096b70732, data reload: false

query5	4344	666	526	526
query6	335	246	206	206
query7	4229	498	262	262
query8	349	244	225	225
query9	8710	2772	2732	2732
query10	511	410	336	336
query11	7038	5135	4928	4928
query12	194	130	122	122
query13	1300	496	353	353
query14	5772	3787	3562	3562
query14_1	2867	2922	2896	2896
query15	208	197	176	176
query16	1004	471	443	443
query17	1121	747	631	631
query18	2474	458	361	361
query19	225	219	198	198
query20	136	125	130	125
query21	216	134	116	116
query22	13282	14177	14694	14177
query23	16776	16302	16187	16187
query23_1	16011	15694	15621	15621
query24	7126	1656	1231	1231
query24_1	1228	1228	1230	1228
query25	540	467	428	428
query26	1233	265	153	153
query27	2748	487	297	297
query28	4451	1842	1836	1836
query29	833	568	486	486
query30	298	229	193	193
query31	1018	952	883	883
query32	80	73	73	73
query33	515	337	288	288
query34	888	879	522	522
query35	653	674	605	605
query36	1065	1119	972	972
query37	136	95	87	87
query38	2969	2928	2925	2925
query39	844	842	828	828
query39_1	798	789	798	789
query40	236	156	178	156
query41	64	58	59	58
query42	260	261	257	257
query43	259	255	241	241
query44	
query45	202	192	182	182
query46	885	994	613	613
query47	2094	2124	2049	2049
query48	309	324	228	228
query49	629	469	391	391
query50	705	281	207	207
query51	4071	4062	4019	4019
query52	263	272	256	256
query53	291	338	289	289
query54	313	276	264	264
query55	93	92	85	85
query56	324	323	320	320
query57	1824	1840	1768	1768
query58	286	277	269	269
query59	2781	3003	2791	2791
query60	353	332	333	332
query61	151	154	155	154
query62	643	599	543	543
query63	311	280	278	278
query64	5010	1276	1022	1022
query65	
query66	1472	462	370	370
query67	24377	24295	24278	24278
query68	
query69	406	323	294	294
query70	976	962	968	962
query71	360	317	306	306
query72	2873	2751	2445	2445
query73	556	565	319	319
query74	9670	9559	9390	9390
query75	2879	2758	2484	2484
query76	2284	1032	674	674
query77	358	395	315	315
query78	11067	11184	10553	10553
query79	1146	766	575	575
query80	1341	639	565	565
query81	532	272	229	229
query82	1304	158	117	117
query83	339	270	246	246
query84	250	115	102	102
query85	922	499	462	462
query86	421	311	295	295
query87	3129	3126	2995	2995
query88	3634	2699	2698	2698
query89	431	379	351	351
query90	2044	188	190	188
query91	176	164	144	144
query92	84	79	74	74
query93	920	861	519	519
query94	644	327	294	294
query95	594	412	330	330
query96	656	518	235	235
query97	2462	2480	2437	2437
query98	237	227	228	227
query99	1008	1003	917	917
Total cold run time: 250864 ms
Total hot run time: 170044 ms

@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Mar 31, 2026

run nonConcurrent

@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Mar 31, 2026

run p0

@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Mar 31, 2026

run beut

@doris-robot
Copy link
Copy Markdown

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.93% (19990/37768)
Line Coverage 36.46% (187582/514435)
Region Coverage 32.69% (145308/444494)
Branch Coverage 33.90% (63799/188219)

@hello-stephen
Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.59% (27218/36986)
Line Coverage 57.21% (293408/512890)
Region Coverage 54.46% (244329/448611)
Branch Coverage 56.22% (106137/188785)

@zclllyybb zclllyybb requested a review from Copilot April 1, 2026 06:36
@zclllyybb
Copy link
Copy Markdown
Contributor

/review

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 finding:

  • be/src/exec/operator/distinct_streaming_aggregation_operator.cpp: the new in_block->clear() calls in the streaming pass-through path drop the reusable child block schema. StatefulOperatorX::get_block() reuses local_state._child_block across iterations and only calls clear_column_data(num_materialized_slots()) before the next child get_block_after_projects(). The previous swap-back logic preserved the block layout; this refactor can hand a structurally empty block to the child on the next iteration.

Critical checkpoint conclusions:

  • Goal of the task: migrate callers to the new VExprContext::execute(..., ColumnPtr&) / ColumnWithTypeAndName APIs and reduce block mutation. Conclusion: mostly achieved, but the distinct streaming agg change is not safe yet. No test was added for this path.
  • Small / clear / focused: yes, the PR is narrowly focused on API migration.
  • Concurrency: I did not find new thread, lock, or atomic-ordering issues in the touched code.
  • Lifecycle / static initialization: no static-init issue found. Lifecycle management is the main risk area in this PR; hash join and set probe now keep holders for raw pointers correctly, but distinct streaming agg breaks the reusable Block lifecycle described above.
  • Configuration changes: none.
  • Compatibility / rolling upgrade / storage format: none.
  • Parallel code paths: the migrated hash join / scanner / agg paths are generally consistent with the new API; the distinct streaming agg streaming branch is the outlier.
  • Special conditional checks: the _stop_emplace_flag && _distinct_row.empty() branch now relies on clear(), but that branch still needs to preserve the input block structure for the next reuse.
  • Test coverage: no regression or unit test was added for this lifetime-sensitive refactor path.
  • Observability: no new observability requirement identified.
  • Transaction / persistence: not applicable.
  • Data writes / modifications: not applicable.
  • FE-BE variable passing: not applicable.
  • Performance: the API migration should reduce unnecessary block mutation overall; I did not find a separate performance bug beyond the reusable-block regression above.
  • Other issues: none confirmed beyond the finding above.

out_block->replace_by_position(i, std::move(key_column_ptrs[i]));
}
// Release VSlotRef shared column references from in_block
in_block->clear();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

push() here is operating on the reusable _child_block owned by StatefulOperatorX. Replacing the old swap-back logic with in_block->clear() changes more than reference counts: it drops the block schema entirely. On the next iteration, StatefulOperatorX::get_block() only does clear_column_data(num_materialized_slots()) before reusing the same block, so this path can hand a structurally empty block back to the child.

The previous code kept the block layout intact by swapping the original output columns back into in_block; this branch still needs to preserve that reusable-block contract (same issue for the other new in_block->clear() below).`

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR continues the BE-side refactor to migrate expression evaluation from the legacy VExprContext::execute(Block*, int*) API (mutating Block + returning a column index) to the newer VExprContext::execute(const Block*, ColumnPtr&) / execute(const Block*, ColumnWithTypeAndName&) APIs that return columns directly and avoid Block mutation/lifetime coupling.

Changes:

  • Refactor aggregation evaluators and multiple operators to hold ColumnPtr results (and raw-pointer views) instead of tracking result_column_id indices in Block.
  • Update hash-join probe and set-probe code paths to operate on std::vector<ColumnPtr> and add holder vectors to keep raw pointers valid.
  • Update scanner intermediate projections to use the ColumnWithTypeAndName execute overload and rebuild the intermediate Block directly from returned columns.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
be/src/exprs/vectorized_agg_fn.h Switch agg argument evaluation to const-Block execute API; add input-column holders + reset hook.
be/src/exprs/vectorized_agg_fn.cpp Use ColumnPtr holders and pass raw pointers to agg functions; clear holders after each call.
be/src/exec/scan/scanner.cpp Replace execute + shuffle_columns with execute(ColumnWithTypeAndName) and rebuild the intermediate block.
be/src/exec/operator/set_probe_sink_operator.h Replace probe “inserted id” tracking with ColumnPtr holder storage.
be/src/exec/operator/set_probe_sink_operator.cpp Extract probe columns via new execute API; keep ColumnPtr holders to back raw pointers.
be/src/exec/operator/hashjoin_probe_operator.h Update helper signatures to accept std::vector<ColumnPtr> instead of column ids.
be/src/exec/operator/hashjoin_probe_operator.cpp Evaluate probe expressions into ColumnPtr results and hold them to keep key pointers valid.
be/src/exec/operator/distinct_streaming_aggregation_operator.cpp Replace result_idxs with Columns holders; streamline streaming path using move + input block clearing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 375 to +389
AggFnEvaluator::AggFnEvaluator(AggFnEvaluator& evaluator, RuntimeState* state)
: _fn(evaluator._fn),
_is_merge(evaluator._is_merge),
_without_key(evaluator._without_key),
_is_window_function(evaluator._is_window_function),
_argument_types_with_sort(evaluator._argument_types_with_sort),
_real_argument_types(evaluator._real_argument_types),
_intermediate_slot_desc(evaluator._intermediate_slot_desc),
_output_slot_desc(evaluator._output_slot_desc),
_sort_description(evaluator._sort_description),
_data_type(evaluator._data_type),
_function(evaluator._function),
_expr_name(evaluator._expr_name),
_agg_columns(evaluator._agg_columns) {
_agg_input_columns(evaluator._agg_input_columns),
_agg_raw_input_columns(evaluator._agg_raw_input_columns) {
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AggFnEvaluator clone copy-ctor is copying _agg_input_columns (ColumnPtr holders) and _agg_raw_input_columns from the source evaluator. These vectors are per-execution temporaries; copying them can unintentionally keep previous Block columns alive (extra ref-counts) and undermines the goal of decoupling column lifetimes. Consider initializing these vectors empty in the clone (or clearing them in the copy-ctor) so each evaluator only holds columns produced by its own _calc_argument_columns() call.

Copilot uses AI. Check for mistakes.
Comment on lines +201 to +202
// Release VSlotRef shared column references from in_block
in_block->clear();
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the streaming/mem_reuse fast path, in_block->clear() drops the entire Block structure (schema), which disables upstream block memory reuse and can force repeated column re-allocation/re-insertion on subsequent pulls. If the intent is only to release shared column references (without mutating the moved columns now owned by out_block), consider replacing the referenced columns in in_block with fresh empty columns (e.g., clone_empty() equivalents) or swapping with an empty block that preserves structure, instead of clearing the container.

Suggested change
// Release VSlotRef shared column references from in_block
in_block->clear();
// Release VSlotRef shared column references from in_block but preserve its schema
in_block->clear_column_data();

Copilot uses AI. Check for mistakes.
@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Apr 1, 2026

run buildall

@doris-robot
Copy link
Copy Markdown

TPC-H: Total hot run time: 29130 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 294434ae62e0a529c9403b3e5d14a1d73e40be1e, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17752	3790	3777	3777
q2	q3	10677	885	623	623
q4	4680	461	356	356
q5	7457	1351	1142	1142
q6	179	163	136	136
q7	916	954	788	788
q8	9326	1440	1373	1373
q9	5600	5391	5318	5318
q10	6237	2043	1781	1781
q11	477	280	285	280
q12	849	699	512	512
q13	18066	2802	2156	2156
q14	289	285	257	257
q15	q16	438	408	333	333
q17	991	1113	759	759
q18	6528	5672	5582	5582
q19	1138	1163	1079	1079
q20	628	558	404	404
q21	4688	2586	2115	2115
q22	476	394	359	359
Total cold run time: 97392 ms
Total hot run time: 29130 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4582	4700	4622	4622
q2	q3	4653	4747	4115	4115
q4	2036	2106	1337	1337
q5	4890	5239	5504	5239
q6	223	192	160	160
q7	2044	1739	1617	1617
q8	3270	3049	3044	3044
q9	8431	8212	8295	8212
q10	4510	4584	4211	4211
q11	617	425	379	379
q12	655	704	507	507
q13	2658	3050	2264	2264
q14	311	296	263	263
q15	q16	337	411	294	294
q17	1254	1325	1212	1212
q18	7955	7041	7009	7009
q19	1207	1181	1146	1146
q20	2197	2194	1927	1927
q21	6066	5666	4848	4848
q22	534	480	402	402
Total cold run time: 58430 ms
Total hot run time: 52808 ms

@doris-robot
Copy link
Copy Markdown

TPC-DS: Total hot run time: 174237 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 294434ae62e0a529c9403b3e5d14a1d73e40be1e, data reload: false

query5	4374	651	511	511
query6	330	247	203	203
query7	4260	570	338	338
query8	328	234	223	223
query9	8716	3960	3954	3954
query10	507	387	347	347
query11	6683	5496	5113	5113
query12	191	136	128	128
query13	1322	619	460	460
query14	5685	5204	4766	4766
query14_1	4134	4132	4128	4128
query15	216	210	185	185
query16	1046	475	456	456
query17	1156	779	671	671
query18	2615	510	386	386
query19	251	230	208	208
query20	139	134	131	131
query21	235	144	120	120
query22	13927	14806	14389	14389
query23	18469	17209	16677	16677
query23_1	16825	16639	16575	16575
query24	7529	1730	1347	1347
query24_1	1329	1333	1330	1330
query25	624	519	454	454
query26	1269	326	180	180
query27	2660	640	369	369
query28	4471	1893	1868	1868
query29	939	688	553	553
query30	292	237	195	195
query31	1096	1035	936	936
query32	96	69	69	69
query33	543	335	299	299
query34	1192	1152	677	677
query35	741	790	681	681
query36	1240	1252	1116	1116
query37	147	93	83	83
query38	1931	1923	1846	1846
query39	915	892	859	859
query39_1	838	849	833	833
query40	238	156	139	139
query41	61	59	59	59
query42	277	271	273	271
query43	317	319	275	275
query44	
query45	203	197	194	194
query46	1141	1226	822	822
query47	2354	2333	2209	2209
query48	445	428	310	310
query49	638	561	428	428
query50	708	270	213	213
query51	4295	4178	4229	4178
query52	281	283	267	267
query53	322	336	269	269
query54	326	286	271	271
query55	101	97	92	92
query56	328	334	320	320
query57	1675	1618	1647	1618
query58	306	273	273	273
query59	2915	2957	2722	2722
query60	336	347	332	332
query61	155	154	147	147
query62	670	619	551	551
query63	311	271	267	267
query64	5381	1442	1098	1098
query65	
query66	1418	468	375	375
query67	24366	24238	24106	24106
query68	
query69	442	353	298	298
query70	1033	1029	997	997
query71	384	337	313	313
query72	3268	2939	2606	2606
query73	808	805	417	417
query74	9850	9695	9606	9606
query75	2878	2686	2311	2311
query76	2330	1106	761	761
query77	396	414	329	329
query78	11247	11393	10758	10758
query79	1502	1081	786	786
query80	821	765	669	669
query81	453	282	236	236
query82	1359	161	121	121
query83	371	293	255	255
query84	257	144	119	119
query85	887	504	445	445
query86	375	330	348	330
query87	1728	1684	1578	1578
query88	3553	2674	2684	2674
query89	483	405	372	372
query90	2000	184	181	181
query91	178	171	140	140
query92	85	75	70	70
query93	899	880	513	513
query94	535	361	292	292
query95	652	467	331	331
query96	1040	774	328	328
query97	486	507	423	423
query98	255	246	238	238
query99	1078	1059	952	952
Total cold run time: 253654 ms
Total hot run time: 174237 ms

@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Apr 1, 2026

run buildall

@doris-robot
Copy link
Copy Markdown

TPC-H: Total hot run time: 29073 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 294434ae62e0a529c9403b3e5d14a1d73e40be1e, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17794	3855	3875	3855
q2	q3	10684	875	618	618
q4	4685	468	365	365
q5	7455	1338	1149	1149
q6	196	179	146	146
q7	928	975	770	770
q8	9328	1439	1359	1359
q9	5622	5340	5262	5262
q10	6249	2081	1759	1759
q11	478	280	292	280
q12	858	705	527	527
q13	18057	2803	2182	2182
q14	289	283	267	267
q15	q16	413	397	351	351
q17	1070	1131	772	772
q18	6558	5688	5541	5541
q19	1151	1211	1056	1056
q20	614	545	419	419
q21	4223	2542	2038	2038
q22	528	406	357	357
Total cold run time: 97180 ms
Total hot run time: 29073 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4823	4673	4995	4673
q2	q3	4627	4729	4169	4169
q4	2022	2112	1347	1347
q5	4896	5004	5167	5004
q6	207	184	135	135
q7	1994	1817	1633	1633
q8	3526	3021	3059	3021
q9	8265	8313	8229	8229
q10	4467	4453	4351	4351
q11	624	426	403	403
q12	712	728	486	486
q13	2717	3072	2403	2403
q14	309	297	280	280
q15	q16	374	382	313	313
q17	1315	1349	1298	1298
q18	8062	7068	7118	7068
q19	1155	1212	1090	1090
q20	2364	2268	2003	2003
q21	6134	5713	4955	4955
q22	552	512	433	433
Total cold run time: 59145 ms
Total hot run time: 53294 ms

@doris-robot
Copy link
Copy Markdown

TPC-DS: Total hot run time: 174977 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 294434ae62e0a529c9403b3e5d14a1d73e40be1e, data reload: false

query5	4343	661	517	517
query6	366	254	211	211
query7	4393	599	341	341
query8	333	276	233	233
query9	8720	3948	3896	3896
query10	502	406	354	354
query11	6661	5518	5140	5140
query12	189	137	133	133
query13	1284	610	458	458
query14	5714	5211	4794	4794
query14_1	4155	4158	4119	4119
query15	208	203	186	186
query16	990	435	420	420
query17	925	752	646	646
query18	2435	518	374	374
query19	255	229	185	185
query20	138	132	129	129
query21	222	149	122	122
query22	14106	14903	14803	14803
query23	17943	17234	16664	16664
query23_1	16946	16932	16649	16649
query24	7523	1717	1324	1324
query24_1	1348	1342	1360	1342
query25	637	496	426	426
query26	1248	328	187	187
query27	2698	650	385	385
query28	4508	1894	1877	1877
query29	976	662	558	558
query30	299	234	195	195
query31	1095	1038	935	935
query32	88	75	71	71
query33	529	361	304	304
query34	1198	1186	680	680
query35	763	793	673	673
query36	1241	1235	1055	1055
query37	152	95	81	81
query38	1945	1908	1818	1818
query39	916	888	859	859
query39_1	830	845	827	827
query40	234	202	138	138
query41	63	61	59	59
query42	281	274	270	270
query43	323	321	282	282
query44	
query45	203	199	186	186
query46	1118	1270	828	828
query47	2337	2306	2244	2244
query48	407	421	305	305
query49	643	538	420	420
query50	733	307	227	227
query51	4349	4298	4231	4231
query52	283	293	272	272
query53	330	370	291	291
query54	333	296	284	284
query55	102	95	94	94
query56	327	324	328	324
query57	1629	1823	1572	1572
query58	311	283	270	270
query59	2903	2989	2770	2770
query60	334	344	331	331
query61	152	152	155	152
query62	681	627	566	566
query63	341	305	284	284
query64	5370	1442	1140	1140
query65	
query66	1495	500	389	389
query67	24303	24347	24193	24193
query68	
query69	454	349	318	318
query70	1064	1018	988	988
query71	364	341	318	318
query72	3004	2734	2432	2432
query73	856	834	491	491
query74	9862	9768	9536	9536
query75	2908	2704	2322	2322
query76	2284	1140	766	766
query77	406	452	351	351
query78	11347	11215	10758	10758
query79	1356	1062	858	858
query80	827	758	674	674
query81	446	283	240	240
query82	243	162	122	122
query83	290	292	268	268
query84	284	149	116	116
query85	843	505	466	466
query86	350	332	301	301
query87	1688	1676	1544	1544
query88	3609	2690	2678	2678
query89	456	423	399	399
query90	2150	189	190	189
query91	184	169	139	139
query92	77	76	69	69
query93	902	897	536	536
query94	521	327	307	307
query95	663	375	429	375
query96	978	793	343	343
query97	494	522	429	429
query98	248	237	233	233
query99	1094	1074	933	933
Total cold run time: 251855 ms
Total hot run time: 174977 ms

@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Apr 1, 2026

run cloud_p0

@Mryange Mryange force-pushed the expr-api-ref-part-2 branch from 294434a to 61cbca2 Compare April 1, 2026 12:19
@Mryange
Copy link
Copy Markdown
Contributor Author

Mryange commented Apr 1, 2026

run buildall

@doris-robot
Copy link
Copy Markdown

TPC-H: Total hot run time: 29330 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 61cbca23264cd31e8c97da45a2e2e66d2f2f762d, data reload: false

------ Round 1 ----------------------------------
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17670	3783	3731	3731
q2	q3	10715	875	603	603
q4	4685	479	371	371
q5	7468	1328	1146	1146
q6	197	170	137	137
q7	921	934	784	784
q8	9317	1401	1313	1313
q9	5790	5348	5261	5261
q10	6298	2062	1779	1779
q11	489	289	280	280
q12	874	691	513	513
q13	18053	2794	2166	2166
q14	281	287	258	258
q15	q16	889	853	779	779
q17	1048	1080	819	819
q18	6460	5734	5599	5599
q19	1377	1289	1065	1065
q20	608	533	409	409
q21	4892	2477	2003	2003
q22	439	377	314	314
Total cold run time: 98471 ms
Total hot run time: 29330 ms

----- Round 2, with runtime_filter_mode=off -----
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	4793	4451	4332	4332
q2	q3	4612	4766	4201	4201
q4	2124	2207	1414	1414
q5	4926	5015	5161	5015
q6	202	169	135	135
q7	2013	1764	1610	1610
q8	3284	3224	3242	3224
q9	8215	8254	8361	8254
q10	4473	4672	4221	4221
q11	750	509	459	459
q12	719	789	514	514
q13	2810	3068	2381	2381
q14	301	299	274	274
q15	q16	788	784	678	678
q17	1305	1384	1239	1239
q18	8049	7073	7003	7003
q19	1142	1147	1141	1141
q20	2241	2207	1923	1923
q21	6064	5302	4996	4996
q22	551	568	442	442
Total cold run time: 59362 ms
Total hot run time: 53456 ms

@doris-robot
Copy link
Copy Markdown

TPC-DS: Total hot run time: 180853 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 61cbca23264cd31e8c97da45a2e2e66d2f2f762d, data reload: false

query5	4388	672	530	530
query6	348	234	214	214
query7	4273	584	328	328
query8	339	245	236	236
query9	8734	3944	3986	3944
query10	503	387	367	367
query11	6675	5504	5144	5144
query12	180	134	131	131
query13	1293	629	439	439
query14	5672	5190	4777	4777
query14_1	4116	4131	4147	4131
query15	208	202	185	185
query16	1062	429	428	428
query17	1125	771	638	638
query18	2468	504	389	389
query19	254	236	198	198
query20	148	136	136	136
query21	235	149	126	126
query22	13903	14667	14746	14667
query23	18047	17178	16833	16833
query23_1	16889	16705	17156	16705
query24	7924	1840	1408	1408
query24_1	1442	1407	1390	1390
query25	607	492	458	458
query26	1246	333	182	182
query27	2707	607	390	390
query28	4468	1880	1882	1880
query29	983	675	571	571
query30	302	233	205	205
query31	1097	1051	936	936
query32	91	74	69	69
query33	540	364	287	287
query34	1189	1172	672	672
query35	775	780	690	690
query36	1210	1220	1053	1053
query37	155	99	85	85
query38	3097	3035	3030	3030
query39	926	909	850	850
query39_1	860	838	828	828
query40	239	157	138	138
query41	64	61	59	59
query42	278	276	279	276
query43	319	318	283	283
query44	
query45	208	201	191	191
query46	1169	1287	779	779
query47	2319	2329	2219	2219
query48	410	428	304	304
query49	659	563	458	458
query50	746	308	226	226
query51	4377	4270	4233	4233
query52	287	288	269	269
query53	331	358	303	303
query54	364	301	321	301
query55	104	94	93	93
query56	350	355	338	338
query57	1681	1712	1612	1612
query58	320	292	293	292
query59	2898	3007	2749	2749
query60	353	356	345	345
query61	184	180	177	177
query62	696	625	584	584
query63	324	287	280	280
query64	5437	1557	1222	1222
query65	
query66	1476	480	380	380
query67	24261	24394	24206	24206
query68	
query69	442	344	310	310
query70	1037	1002	1000	1000
query71	374	329	317	317
query72	3009	2784	2436	2436
query73	789	767	444	444
query74	9890	9765	9601	9601
query75	3293	3041	2692	2692
query76	2317	1121	775	775
query77	408	417	342	342
query78	11252	11482	10811	10811
query79	1699	1014	856	856
query80	1374	755	678	678
query81	526	282	239	239
query82	948	157	121	121
query83	339	292	263	263
query84	261	147	120	120
query85	932	507	460	460
query86	451	334	306	306
query87	3301	3231	3131	3131
query88	3704	2702	2701	2701
query89	492	434	404	404
query90	1894	206	182	182
query91	179	173	147	147
query92	78	78	69	69
query93	1227	912	506	506
query94	713	338	307	307
query95	657	448	344	344
query96	1059	755	352	352
query97	2681	2665	2591	2591
query98	241	239	229	229
query99	1065	1057	936	936
Total cold run time: 260768 ms
Total hot run time: 180853 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.89% (20029/37869)
Line Coverage 36.48% (187969/515224)
Region Coverage 32.69% (145689/445617)
Branch Coverage 33.89% (63868/188458)

@hello-stephen
Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100% (0/0) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 71.89% (26661/37088)
Line Coverage 54.83% (281635/513675)
Region Coverage 51.92% (233522/449730)
Branch Coverage 53.37% (100878/189024)

@Mryange Mryange closed this May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants