Skip to content

[feature](search) support MATCH projection as virtual column for inverted index evaluation#61092

Open
airborne12 wants to merge 9 commits intoapache:masterfrom
airborne12:feature/match-projection-inverted-index
Open

[feature](search) support MATCH projection as virtual column for inverted index evaluation#61092
airborne12 wants to merge 9 commits intoapache:masterfrom
airborne12:feature/match-projection-inverted-index

Conversation

@airborne12
Copy link
Member

What problem does this PR solve?

Issue Number: close #xxx

Problem Summary:

In FULL OUTER JOIN queries, MATCH expressions in the SELECT list cannot be pushed down as filters (this would violate join semantics by incorrectly filtering rows). This means the inverted index cannot be used for MATCH evaluation, resulting in slow-path expression evaluation.

This PR enables MATCH expressions used as projections to be pushed down as virtual columns on OlapScan, allowing the BE to evaluate them via inverted index using the existing fast_execute() caching mechanism.

Example:

-- Before: MATCH evaluated via slow path (no index)
SELECT A.k1, A.content MATCH_ANY 'hello' as match_result
FROM A FULL OUTER JOIN B ON A.k1 = B.k1;

-- After: MATCH pushed as virtual column, evaluated via inverted index

FE changes:

  • Match.java: Add PreferPushDownProject interface so PushDownProject rule moves MATCH from join output into scan projections
  • PushDownMatchProjectionAsVirtualColumn.java: New rewrite rule converting MATCH projections to virtual columns on OlapScan
  • RuleType.java + Rewriter.java: Rule registration

BE changes (segment_iterator.cpp):

  • _construct_compound_expr_context(): Set shared IndexExecContext on virtual column exprs
  • _apply_index_expr(): Evaluate inverted index for virtual column MATCH (bitmap only, no row filtering)
  • _output_index_result_column_for_expr(): Convert bitmap to UInt8 column for all index contexts (common exprs + virtual column exprs)

The bitmap result is cached in IndexExecContext, and when _materialization_of_virtual_column() calls VirtualSlotRef::execute_column() → MATCH's fast_execute(), it returns the pre-computed column directly.

Release note

Support MATCH expressions as projections pushed down to OlapScan as virtual columns, enabling inverted index evaluation for MATCH in contexts where it cannot be pushed as a filter (e.g., FULL OUTER JOIN).

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
      • Deployed locally, verified with EXPLAIN VERBOSE showing virtualColumn=id MATCH_ANY 'hello'
      • Tested 7 query scenarios: simple projection, FULL OUTER JOIN, multiple MATCH projections, projection with filter, MATCH_PHRASE, filter regression, INNER JOIN filter
    • No need to test or manual test.
  • Behavior changed:

    • No.
  • Does this need documentation?

    • No.

Check List (For Reviewer who merge this PR)

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

airborne12 and others added 4 commits March 5, 2026 21:28
…verted index

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…column projections

Wire up virtual column MATCH expressions with inverted index evaluation
in segment_iterator so that MATCH projections (pushed down via
PreferPushDownProject) can leverage the fast index path instead of
slow-path expression evaluation.

Changes:
- Match.java: add PreferPushDownProject interface
- segment_iterator.cpp: set IndexExecContext on virtual column exprs,
  evaluate inverted index for virtual column MATCH, and convert
  result bitmaps to UInt8 columns for fast_execute() cache

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests MATCH expressions as projections (not filters) pushed down as
virtual columns on OlapScan, evaluated via inverted index. Covers:
- Simple MATCH projection
- MATCH projection with FULL OUTER JOIN
- Multiple MATCH projections
- MATCH projection with additional filter
- MATCH_PHRASE projection
- Regression check that MATCH filter still works
- MATCH filter with INNER JOIN
- EXPLAIN output verification

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Thearas
Copy link
Contributor

Thearas commented Mar 6, 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?

@airborne12
Copy link
Member Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17661	4540	4282	4282
q2	q3	10653	780	501	501
q4	4672	367	259	259
q5	7562	1205	1018	1018
q6	171	173	149	149
q7	775	833	664	664
q8	9286	1459	1338	1338
q9	4745	4715	4714	4714
q10	6332	1897	1644	1644
q11	473	268	251	251
q12	746	579	472	472
q13	18038	2991	2215	2215
q14	236	226	213	213
q15	953	805	819	805
q16	770	719	718	718
q17	706	880	390	390
q18	6345	5381	5210	5210
q19	1171	987	633	633
q20	508	511	401	401
q21	4557	2236	1497	1497
q22	388	314	261	261
Total cold run time: 96748 ms
Total hot run time: 27635 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4750	4657	4596	4596
q2	q3	3865	4323	3845	3845
q4	889	1195	801	801
q5	4072	4387	4353	4353
q6	199	183	146	146
q7	1782	1679	1561	1561
q8	2505	2688	2566	2566
q9	7469	7388	7286	7286
q10	3790	3983	3574	3574
q11	518	429	408	408
q12	488	612	471	471
q13	2809	3362	2405	2405
q14	287	304	282	282
q15	830	812	846	812
q16	761	798	734	734
q17	1142	1411	1341	1341
q18	7194	6894	6704	6704
q19	929	921	944	921
q20	2080	2151	2084	2084
q21	4131	4033	3546	3546
q22	469	435	378	378
Total cold run time: 50959 ms
Total hot run time: 48814 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 153480 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 38f8e7eafab1f5ce97cabae75862d32e986abb75, data reload: false

query5	4331	656	531	531
query6	337	231	206	206
query7	4213	468	282	282
query8	340	239	233	233
query9	8727	2779	2739	2739
query10	512	386	342	342
query11	7251	5926	5565	5565
query12	183	128	127	127
query13	1263	463	352	352
query14	5714	3840	3638	3638
query14_1	2826	2837	2840	2837
query15	208	197	178	178
query16	991	471	440	440
query17	906	728	631	631
query18	2442	472	342	342
query19	211	205	176	176
query20	140	130	128	128
query21	216	152	118	118
query22	4952	4941	4735	4735
query23	16633	16119	15812	15812
query23_1	15676	15746	15792	15746
query24	8773	1690	1297	1297
query24_1	1310	1313	1301	1301
query25	572	496	394	394
query26	1240	265	147	147
query27	2783	468	279	279
query28	4511	1878	1878	1878
query29	856	637	480	480
query30	313	253	213	213
query31	1360	1292	1230	1230
query32	75	71	73	71
query33	503	337	275	275
query34	918	923	567	567
query35	637	663	596	596
query36	1045	1125	985	985
query37	134	97	82	82
query38	2971	2954	2897	2897
query39	889	905	849	849
query39_1	843	852	832	832
query40	231	152	135	135
query41	62	59	58	58
query42	296	302	299	299
query43	260	254	228	228
query44	
query45	194	195	179	179
query46	884	1010	609	609
query47	2106	2134	2029	2029
query48	316	317	228	228
query49	627	452	379	379
query50	687	286	221	221
query51	4183	4116	4099	4099
query52	289	295	282	282
query53	294	336	283	283
query54	310	274	264	264
query55	90	85	84	84
query56	317	327	305	305
query57	1358	1336	1252	1252
query58	284	281	303	281
query59	1395	1423	1240	1240
query60	340	333	320	320
query61	151	147	146	146
query62	613	600	553	553
query63	319	276	275	275
query64	5081	1285	1003	1003
query65	
query66	1460	455	355	355
query67	16376	16428	16261	16261
query68	
query69	387	312	278	278
query70	998	992	947	947
query71	344	310	311	310
query72	2800	2796	2645	2645
query73	560	581	327	327
query74	10008	9887	9787	9787
query75	2868	2776	2500	2500
query76	2286	1059	700	700
query77	373	390	324	324
query78	11241	11316	10707	10707
query79	3076	781	622	622
query80	1759	672	574	574
query81	561	285	253	253
query82	1019	154	121	121
query83	348	266	251	251
query84	299	127	102	102
query85	968	566	436	436
query86	415	307	290	290
query87	3145	3101	2982	2982
query88	3602	2684	2671	2671
query89	430	372	362	362
query90	2017	187	185	185
query91	165	163	134	134
query92	76	77	68	68
query93	1204	849	517	517
query94	644	315	271	271
query95	598	338	310	310
query96	638	515	234	234
query97	2466	2534	2438	2438
query98	241	220	218	218
query99	1017	1008	926	926
Total cold run time: 236539 ms
Total hot run time: 153480 ms

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 43.18% (19/44) 🎉
Increment coverage report
Complete coverage report

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 3.33% (1/30) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.57% (19651/37381)
Line Coverage 36.21% (183613/507013)
Region Coverage 32.52% (142503/438134)
Branch Coverage 33.44% (61753/184678)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 26.67% (8/30) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 63.08% (23090/36603)
Line Coverage 46.44% (234733/505460)
Region Coverage 43.42% (192014/442271)
Branch Coverage 44.50% (82438/185242)

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 88.64% (39/44) 🎉
Increment coverage report
Complete coverage report

airborne12 and others added 2 commits March 6, 2026 13:23
…n projections

The critical bug: bitmap→column conversion in _output_index_result_column
was only called from _process_common_expr, gated by _is_need_expr_eval.
In FULL OUTER JOIN + projection-only (no WHERE), _is_need_expr_eval is
false, so conversion never ran and fast_execute() fell back to slow path.

Fix: refactor _output_index_result_column_for_expr into a generic
_output_index_result_column(vector<VExprContext*>, ...) and call it in
step5 of _next_batch_internal for virtual column exprs, before
_materialization_of_virtual_column, independent of _is_need_expr_eval.

Also:
- FE: add Project→Filter→OlapScan pattern to the rewrite rule
- FE: add unit tests for PushDownMatchProjectionAsVirtualColumn
- Regression: enhance tests with no-index, MOW UNIQUE, compound MATCH,
  and direct filter edge cases (13 total test cases)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@airborne12
Copy link
Member Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17617	4527	4333	4333
q2	q3	10712	800	516	516
q4	4714	372	256	256
q5	7952	1197	1011	1011
q6	208	179	146	146
q7	834	836	669	669
q8	10434	1476	1354	1354
q9	6225	4748	4770	4748
q10	6336	1945	1669	1669
q11	460	262	241	241
q12	740	571	459	459
q13	18071	2978	2177	2177
q14	237	240	218	218
q15	929	794	835	794
q16	750	710	680	680
q17	722	862	398	398
q18	6006	5447	5345	5345
q19	1390	980	623	623
q20	502	488	387	387
q21	4734	1965	1481	1481
q22	351	299	261	261
Total cold run time: 99924 ms
Total hot run time: 27766 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4764	4566	4549	4549
q2	q3	3870	4343	3818	3818
q4	901	1189	782	782
q5	4031	4308	4361	4308
q6	188	182	150	150
q7	1754	1652	1549	1549
q8	2499	2926	2643	2643
q9	7527	7421	7498	7421
q10	3727	3944	3647	3647
q11	554	455	419	419
q12	504	598	442	442
q13	2943	3206	2314	2314
q14	279	301	282	282
q15	887	815	842	815
q16	742	767	736	736
q17	1210	1527	1367	1367
q18	7498	6950	6750	6750
q19	892	856	886	856
q20	2083	2170	2026	2026
q21	3979	3544	3347	3347
q22	446	418	383	383
Total cold run time: 51278 ms
Total hot run time: 48604 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 152928 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 7e080109cd0041f25964f822855d5004701951ee, data reload: false

query5	4336	649	537	537
query6	337	212	205	205
query7	4205	447	268	268
query8	368	235	227	227
query9	8683	2726	2694	2694
query10	505	384	328	328
query11	7318	5874	5570	5570
query12	182	129	125	125
query13	1269	452	350	350
query14	5774	3799	3596	3596
query14_1	2804	2801	2790	2790
query15	203	194	177	177
query16	1003	490	481	481
query17	901	741	584	584
query18	2422	440	345	345
query19	204	205	171	171
query20	132	122	126	122
query21	221	142	121	121
query22	4867	5010	4966	4966
query23	15901	15604	15368	15368
query23_1	15603	15882	15831	15831
query24	7297	1689	1282	1282
query24_1	1247	1290	1239	1239
query25	599	498	426	426
query26	1507	267	159	159
query27	3415	500	313	313
query28	4926	1952	1974	1952
query29	865	587	514	514
query30	350	259	237	237
query31	1438	1375	1297	1297
query32	81	73	90	73
query33	568	390	290	290
query34	1652	948	576	576
query35	667	718	630	630
query36	1235	1243	1010	1010
query37	130	94	82	82
query38	2956	2933	2896	2896
query39	998	874	853	853
query39_1	834	804	829	804
query40	234	151	135	135
query41	61	60	60	60
query42	303	289	292	289
query43	248	257	222	222
query44	
query45	193	194	184	184
query46	904	968	597	597
query47	2080	2126	2049	2049
query48	308	311	228	228
query49	639	455	377	377
query50	670	278	213	213
query51	4078	4092	4044	4044
query52	285	289	272	272
query53	290	345	279	279
query54	288	263	253	253
query55	90	88	83	83
query56	306	307	299	299
query57	1411	1334	1276	1276
query58	281	269	258	258
query59	1314	1427	1288	1288
query60	337	340	325	325
query61	149	145	151	145
query62	629	583	547	547
query63	307	267	270	267
query64	5054	1270	989	989
query65	
query66	1453	456	372	372
query67	16296	16337	16348	16337
query68	
query69	393	301	272	272
query70	969	977	955	955
query71	344	304	301	301
query72	2802	2805	2573	2573
query73	538	538	315	315
query74	10018	9894	9781	9781
query75	2864	2771	2519	2519
query76	2280	1039	660	660
query77	379	375	315	315
query78	11207	11308	10650	10650
query79	1142	799	594	594
query80	1317	636	558	558
query81	552	278	254	254
query82	995	156	118	118
query83	339	266	249	249
query84	305	130	102	102
query85	1035	489	436	436
query86	413	332	296	296
query87	3126	3108	2944	2944
query88	3512	2638	2621	2621
query89	427	384	351	351
query90	1998	171	174	171
query91	161	159	132	132
query92	75	75	71	71
query93	910	845	504	504
query94	643	322	277	277
query95	571	388	316	316
query96	632	511	222	222
query97	2463	2448	2428	2428
query98	227	218	207	207
query99	1043	967	860	860
Total cold run time: 234432 ms
Total hot run time: 152928 ms

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 90.00% (45/50) 🎉
Increment coverage report
Complete coverage report

@hello-stephen
Copy link
Contributor

BE UT Coverage Report

Increment line coverage 4.65% (2/43) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.55% (19647/37384)
Line Coverage 36.18% (183425/507003)
Region Coverage 32.48% (142305/438123)
Branch Coverage 33.43% (61732/184666)

Copy link
Contributor

@zhiqiang-hhhh zhiqiang-hhhh left a comment

Choose a reason for hiding this comment

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

/**
 * MATCH expressions in FULL OUTER JOIN projections optimization:
 * 
 * Before optimization (brute-force approach):
 * - Execute FULL OUTER JOIN ON A.k1 = B.k1 first
 *   └── Get complete join result set (all rows)
 * - Perform projections on each row of join result:
 *   ├── Projection 1: A.k1 (simple column read)
 *   └── Projection 2: A.content MATCH_ANY 'hello' (complex expression)
 *       └── Evaluate MATCH for every row (no index, brute-force computation)
 * 
 * After optimization (virtual column approach):
 * - Pre-compute MATCH at OlapScan layer as virtual column
 *   └── Leverage inverted index for fast evaluation
 *   └── Cache result in IndexExecContext
 * - Execute FULL OUTER JOIN ON A.k1 = B.k1
 *   └── A side already has pre-computed virtual column result
 * - Perform projections
 *   ├── Projection 1: A.k1
 *   └── Projection 2: Read cached virtual column result directly
 * 
 * Key insight: JOIN semantics forbid filtering, but don't prevent
 * pre-computing with index and caching results for downstream use.
 */

@github-actions
Copy link
Contributor

github-actions bot commented Mar 6, 2026

PR approved by anyone and no changes requested.

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 4.65% (2/43) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 56.10% (20535/36606)
Line Coverage 39.39% (199127/505464)
Region Coverage 35.65% (157665/442271)
Branch Coverage 36.43% (67487/185242)

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 90.00% (45/50) 🎉
Increment coverage report
Complete coverage report

@airborne12
Copy link
Member Author

run buildall

@hello-stephen
Copy link
Contributor

BE UT Coverage Report

Increment line coverage 24.72% (22/89) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.58% (19658/37386)
Line Coverage 36.24% (183741/507056)
Region Coverage 32.52% (142483/438077)
Branch Coverage 33.50% (61807/184482)

@airborne12 airborne12 force-pushed the feature/match-projection-inverted-index branch from 1824aa5 to b3db5dc Compare March 7, 2026 02:47
@airborne12
Copy link
Member Author

run buildall

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 23.91% (22/92) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.57% (19653/37386)
Line Coverage 36.20% (183550/507059)
Region Coverage 32.49% (142351/438084)
Branch Coverage 33.49% (61775/184485)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 75.00% (69/92) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 71.51% (26178/36608)
Line Coverage 54.27% (274358/505520)
Region Coverage 51.42% (227385/442232)
Branch Coverage 52.85% (97796/185061)

airborne12 and others added 2 commits March 7, 2026 18:42
…rojection

1. Add null check for getTableProperty() to prevent NPE when
   table property is not set.
2. Remove the SlotReference child check — Match expressions can
   have non-SlotReference children and should still be pushed down.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ite rules

1. BE: Clone virtual column exprs before set_index_context() to avoid
   cross-segment context corruption. IndexExecContext holds segment-specific
   index iterator references that would be overwritten on shared VExprContext.

2. FE: Add appendVirtualColumns/appendVirtualColumnsAndTopN to LogicalOlapScan.
   Multiple rewrite rules (CSE, MATCH, Score, Vector) can now coexist by
   appending virtual columns instead of replacing. Remove virtualColumns.isEmpty()
   guard from PushDownMatchProjectionAsVirtualColumn.

3. Tests: Strengthen PushDownMatchProjectionAsVirtualColumnTest (3→6 tests)
   with fine-grained assertions: alias name preservation, slot replacement
   correctness, duplicate MATCH dedup, and append-to-existing verification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@airborne12 airborne12 force-pushed the feature/match-projection-inverted-index branch from b3db5dc to eb6f1f8 Compare March 7, 2026 10:42
@airborne12
Copy link
Member Author

run buildall

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 4.35% (2/46) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.57% (19654/37386)
Line Coverage 36.20% (183558/507049)
Region Coverage 32.53% (142522/438088)
Branch Coverage 33.49% (61778/184485)

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17652	4586	4286	4286
q2	q3	10641	809	520	520
q4	4685	359	251	251
q5	7572	1192	1020	1020
q6	179	179	146	146
q7	784	843	678	678
q8	9292	1474	1322	1322
q9	4970	4764	4684	4684
q10	6289	1895	1674	1674
q11	475	267	251	251
q12	747	573	483	483
q13	18064	2949	2185	2185
q14	234	231	214	214
q15	938	804	804	804
q16	763	734	697	697
q17	733	870	406	406
q18	6017	5354	5182	5182
q19	1115	995	607	607
q20	513	499	405	405
q21	4430	2108	1538	1538
q22	367	329	286	286
Total cold run time: 96460 ms
Total hot run time: 27639 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4662	4680	4654	4654
q2	q3	3892	4333	3835	3835
q4	866	1213	774	774
q5	4067	4408	4349	4349
q6	178	176	146	146
q7	1753	1685	1524	1524
q8	2533	2689	2548	2548
q9	7522	7442	7442	7442
q10	3861	4024	3683	3683
q11	513	480	413	413
q12	499	584	451	451
q13	2852	3197	2341	2341
q14	275	297	283	283
q15	901	823	825	823
q16	730	751	723	723
q17	1240	1397	1475	1397
q18	7350	6703	6707	6703
q19	888	871	867	867
q20	2109	2146	2046	2046
q21	4040	3653	3528	3528
q22	516	440	403	403
Total cold run time: 51247 ms
Total hot run time: 48933 ms

score() pushed by PushDownScoreTopNIntoOlapScan has no children but
reaches evaluate_inverted_index(). Replace DCHECK_GE with graceful
early return to avoid crash.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@airborne12
Copy link
Member Author

run buildall

@doris-robot
Copy link

TPC-DS: Total hot run time: 153786 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 eb6f1f85c990cccee27ff8d9a0c159aa3058d181, data reload: false

query5	4343	651	515	515
query6	324	229	207	207
query7	4216	462	289	289
query8	341	236	222	222
query9	8729	2763	2688	2688
query10	506	386	346	346
query11	7367	5808	5540	5540
query12	201	130	127	127
query13	1251	456	347	347
query14	5771	3843	3636	3636
query14_1	2854	2819	2788	2788
query15	209	192	172	172
query16	957	470	436	436
query17	1073	709	594	594
query18	2431	444	348	348
query19	212	208	180	180
query20	132	129	131	129
query21	225	144	122	122
query22	4930	5020	4910	4910
query23	16831	16150	15731	15731
query23_1	15839	16012	15749	15749
query24	7740	1749	1429	1429
query24_1	1293	1267	1307	1267
query25	613	546	497	497
query26	1284	283	161	161
query27	4051	494	299	299
query28	4760	2033	1882	1882
query29	865	560	474	474
query30	314	247	210	210
query31	1380	1291	1215	1215
query32	79	72	73	72
query33	508	327	271	271
query34	932	915	556	556
query35	644	673	622	622
query36	1072	1104	975	975
query37	132	96	86	86
query38	2959	2944	2854	2854
query39	884	866	845	845
query39_1	835	820	818	818
query40	227	152	136	136
query41	63	59	58	58
query42	313	301	301	301
query43	246	256	221	221
query44	
query45	201	193	183	183
query46	888	996	613	613
query47	2118	2133	2060	2060
query48	320	322	236	236
query49	622	459	372	372
query50	691	287	221	221
query51	4166	4059	4045	4045
query52	292	290	284	284
query53	330	340	285	285
query54	308	275	279	275
query55	92	91	84	84
query56	317	359	315	315
query57	1351	1364	1281	1281
query58	293	291	277	277
query59	1346	1459	1293	1293
query60	351	337	332	332
query61	152	146	144	144
query62	632	604	553	553
query63	311	281	288	281
query64	5197	1260	1004	1004
query65	
query66	1475	460	354	354
query67	16337	16387	16322	16322
query68	
query69	396	310	302	302
query70	1022	986	965	965
query71	355	328	314	314
query72	2791	2848	2642	2642
query73	557	573	330	330
query74	10024	9959	9792	9792
query75	2891	2783	2512	2512
query76	2297	1048	701	701
query77	382	404	322	322
query78	11236	11348	10680	10680
query79	2639	828	618	618
query80	1755	654	599	599
query81	567	286	251	251
query82	1020	156	119	119
query83	371	266	246	246
query84	255	112	94	94
query85	898	483	452	452
query86	426	314	304	304
query87	3147	3091	3074	3074
query88	3631	2673	2647	2647
query89	433	384	350	350
query90	2006	183	166	166
query91	169	159	135	135
query92	83	79	72	72
query93	1145	871	514	514
query94	651	281	305	281
query95	588	398	319	319
query96	661	540	229	229
query97	2481	2500	2426	2426
query98	235	219	217	217
query99	1018	1010	917	917
Total cold run time: 238524 ms
Total hot run time: 153786 ms

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
============================================
q1	17648	4505	4301	4301
q2	q3	10648	797	514	514
q4	4682	354	257	257
q5	7586	1195	1014	1014
q6	173	190	145	145
q7	778	847	679	679
q8	9292	1449	1300	1300
q9	4814	4719	4718	4718
q10	6254	1911	1654	1654
q11	445	257	236	236
q12	714	584	470	470
q13	18031	2983	2170	2170
q14	225	226	217	217
q15	902	786	804	786
q16	749	708	696	696
q17	715	846	411	411
q18	6060	5426	5275	5275
q19	1144	980	590	590
q20	514	484	384	384
q21	4467	1992	1488	1488
q22	340	324	266	266
Total cold run time: 96181 ms
Total hot run time: 27571 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4719	4659	4523	4523
q2	q3	3849	4325	3789	3789
q4	882	1210	787	787
q5	4067	4317	4352	4317
q6	176	177	140	140
q7	1766	1668	1527	1527
q8	2445	2688	3154	2688
q9	7446	7192	7306	7192
q10	3693	3979	3570	3570
q11	520	445	422	422
q12	500	609	451	451
q13	2902	3165	2337	2337
q14	281	299	272	272
q15	857	835	867	835
q16	730	800	730	730
q17	1155	1480	1375	1375
q18	7199	6874	6720	6720
q19	925	896	878	878
q20	2068	2146	1993	1993
q21	4074	3497	3402	3402
q22	460	423	382	382
Total cold run time: 50714 ms
Total hot run time: 48330 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 152968 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 8b1f10791cbff1f7492da52e96cac1f4711c8a48, data reload: false

query5	4341	642	501	501
query6	330	223	210	210
query7	4211	468	271	271
query8	367	258	236	236
query9	8711	2740	2754	2740
query10	511	371	352	352
query11	7335	5774	5570	5570
query12	191	127	125	125
query13	1273	469	352	352
query14	5695	3808	3583	3583
query14_1	2820	2804	2796	2796
query15	200	193	171	171
query16	994	476	440	440
query17	1109	720	618	618
query18	2534	445	347	347
query19	217	212	184	184
query20	135	133	130	130
query21	230	145	140	140
query22	4911	5015	4776	4776
query23	16626	16064	15794	15794
query23_1	15811	15805	15750	15750
query24	7418	1685	1271	1271
query24_1	1274	1265	1248	1248
query25	556	483	466	466
query26	1249	251	143	143
query27	2810	465	280	280
query28	4544	1884	1893	1884
query29	838	555	471	471
query30	311	238	207	207
query31	1342	1279	1232	1232
query32	75	71	75	71
query33	496	311	277	277
query34	942	910	568	568
query35	634	673	600	600
query36	1059	1142	989	989
query37	130	93	82	82
query38	2949	2907	2861	2861
query39	1008	868	833	833
query39_1	839	826	812	812
query40	227	158	139	139
query41	62	62	58	58
query42	303	300	294	294
query43	243	252	229	229
query44	
query45	237	187	186	186
query46	871	995	598	598
query47	2128	2133	2079	2079
query48	306	314	224	224
query49	633	443	377	377
query50	674	281	217	217
query51	4132	4177	4037	4037
query52	287	293	278	278
query53	294	335	278	278
query54	301	278	259	259
query55	95	87	84	84
query56	321	327	300	300
query57	1369	1350	1262	1262
query58	283	276	272	272
query59	1333	1455	1298	1298
query60	342	335	319	319
query61	153	144	151	144
query62	624	583	539	539
query63	310	278	277	277
query64	5029	1269	1015	1015
query65	
query66	1434	466	347	347
query67	16476	16430	16326	16326
query68	
query69	384	319	278	278
query70	977	973	917	917
query71	338	308	288	288
query72	2771	2663	2467	2467
query73	522	549	315	315
query74	9966	9953	9775	9775
query75	2852	2768	2460	2460
query76	2287	1026	700	700
query77	355	395	316	316
query78	11144	11410	10656	10656
query79	1504	762	595	595
query80	1386	626	553	553
query81	587	285	242	242
query82	1000	145	115	115
query83	351	262	247	247
query84	253	111	98	98
query85	1041	486	449	449
query86	405	317	289	289
query87	3171	3096	3024	3024
query88	3514	2641	2627	2627
query89	424	376	341	341
query90	1961	174	173	173
query91	172	158	137	137
query92	74	73	66	66
query93	1067	839	502	502
query94	626	316	296	296
query95	580	406	315	315
query96	647	508	235	235
query97	2459	2476	2468	2468
query98	237	222	219	219
query99	1021	1005	928	928
Total cold run time: 234400 ms
Total hot run time: 152968 ms

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 4.08% (2/49) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.57% (19653/37386)
Line Coverage 36.20% (183558/507052)
Region Coverage 32.50% (142392/438083)
Branch Coverage 33.49% (61787/184485)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants