Skip to content

[fix](be) Preserve agg hash shuffle after non-hash exchange#63766

Open
BiteTheDDDDt wants to merge 4 commits into
apache:masterfrom
BiteTheDDDDt:fix-agg-local-exchange-nlj
Open

[fix](be) Preserve agg hash shuffle after non-hash exchange#63766
BiteTheDDDDt wants to merge 4 commits into
apache:masterfrom
BiteTheDDDDt:fix-agg-local-exchange-nlj

Conversation

@BiteTheDDDDt
Copy link
Copy Markdown
Contributor

@BiteTheDDDDt BiteTheDDDDt commented May 27, 2026

What problem does this PR solve?

Issue Number: None

Related PR: #63529, #62438

Problem Summary: enable_local_exchange_before_agg=false allows first-phase aggregation to skip the local hash exchange before agg for performance. This is only correct when the input still preserves local key distribution.

After #62438, nested loop join and other operators may introduce non-hash local exchanges such as ADAPTIVE_PASSTHROUGH. Those exchanges can split rows with the same group/distinct key across local pipeline tasks. If agg still skips the hash local exchange, partial aggregation states for the same key are built in different tasks and later COUNT(DISTINCT ...) can over-count. The reproduced query in output/ddl.txt returned wrong counts such as 18/20 instead of 10.

This PR preserves correctness while keeping the knob usable:

  • Aggregation operators now skip local exchange with enable_local_exchange_before_agg=false only when the child preserves local key distribution.
  • The shared child-distribution check is reused by AggSinkOperatorX, StreamingAggOperatorX, and DistinctStreamingAggOperatorX.
  • Pipeline::need_to_local_exchange() also handles the case where the current pipeline source is a non-hash LocalExchangeSource but the downstream target requires hash distribution, so inherited hash-ish pipeline state cannot incorrectly suppress the required local exchange.
  • Regression coverage is added for the nested-loop-join + distinct aggregation wrong-result case, and unit tests cover the agg distribution decisions.

Release note

Fix wrong results for aggregation after non-hash local exchange when enable_local_exchange_before_agg is disabled.

Check List (For Author)

  • Test: Regression test / Unit Test / Manual test
    • build-support/clang-format.sh --quiet && build-support/check-format.sh --quiet
    • ./run-be-ut.sh --run --filter=StreamingAggOperatorTest.require_hash_shuffle_after_non_hash_local_exchange:DistinctStreamingAggOperatorTest.require_hash_shuffle_after_non_hash_local_exchange:AggOperatorRequiredDistributionTest.*
    • ./build.sh --be
    • mysql -h127.0.0.1 -P9333 -uroot -D regression_test --batch --raw --skip-column-names < output/ddl.txt returned 10 5070261
    • ./run-regression-test.sh --run -d query_p0/join -s test_agg_after_nested_loop_join_local_exchange
    • build-support/run-clang-tidy.sh attempted; remaining failures are existing/toolchain noise from jni-util.h static assertions, old header warnings, test include resolution, and pre-existing operator complexity/redundant-init diagnostics.
  • Behavior changed: Yes. Aggregation keeps local hash shuffle when its input may break local key distribution, even if enable_local_exchange_before_agg=false.
  • Does this need documentation: No

### What problem does this PR solve?

Issue Number: None

Related PR: apache#63529, apache#62438

Problem Summary: PR apache#63529 preserved local hash shuffle for serial merge aggregation, but the condition only covered serial children. A non-finalize merge aggregation can also receive input from a child that requires a non-hash local exchange, such as the adaptive passthrough exchange used by nested loop join after apache#62438. In that case identical group keys can be split across local aggregation instances and later count distinct aggregation may count duplicate partial groups. This change preserves local hash shuffle for merge aggregation when the child breaks local key distribution through either serial execution or a non-hash local exchange.

### Release note

Fix wrong results for merge aggregation after non-hash local exchange.

### Check List (For Author)

- Test: Unit Test
    - ./run-be-ut.sh --run --filter=AggOperatorRequiredDistributionTest.*
- Behavior changed: Yes. Merge aggregation now keeps local hash shuffle when its child requires a non-hash local exchange.
- Does this need documentation: No

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings May 27, 2026 14:06
@hello-stephen
Copy link
Copy Markdown
Contributor

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?

@BiteTheDDDDt
Copy link
Copy Markdown
Contributor Author

run buildall

@BiteTheDDDDt
Copy link
Copy Markdown
Contributor Author

/review

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 fixes a correctness edge case in BE pipeline local-exchange planning: when a non-finalize merge aggregation follows a child operator that requires a non-hash local exchange (e.g. ADAPTIVE_PASSTHROUGH from nested loop join), the local key distribution can be broken and identical group keys may be split across local agg instances, causing wrong results (notably for later DISTINCT-related aggregation stages).

Changes:

  • Extend the “don’t skip local hash shuffle” condition for merge aggregations from “serial child” to “child that breaks local key distribution” (serial or requires a non-hash local exchange).
  • Add a helper to detect whether a child’s required distribution implies a non-hash local exchange that would break key distribution.
  • Add a BE unit test covering the ADAPTIVE_PASSTHROUGH child case to ensure HASH_SHUFFLE is required.

Reviewed changes

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

File Description
be/src/exec/operator/aggregation_sink_operator.h Refines merge-agg distribution requirement logic to preserve hash shuffle when a child requires non-hash local exchange (or is serial).
be/test/exec/operator/agg_operator_test.cpp Adds a unit test validating merge-agg requires HASH_SHUFFLE after a child with ADAPTIVE_PASSTHROUGH distribution.

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

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.

Review result: no blocking issues found in the changed code.

Critical checkpoint conclusions:

  • Goal/test: The PR preserves aggregation hash shuffle when a merge aggregation follows a child that requires a non-hash local exchange. The added unit test covers the new ADAPTIVE_PASSTHROUGH case at the required_data_distribution level.
  • Scope: The change is small and focused on AggSinkOperatorX distribution selection plus one targeted unit test.
  • Concurrency/lifecycle: No new shared mutable state, threads, dependencies, or non-trivial lifecycle management are introduced.
  • Configuration/compatibility: No new configuration, storage format, protocol, or rolling-upgrade compatibility concerns found.
  • Parallel paths: The modified path is the relevant non-streaming aggregation sink distribution path; no distinct parallel BE path appeared to require the same exact change in this PR.
  • Conditional logic: The new condition preserves the existing serial-child behavior and extends it to child-required non-hash local exchanges; this matches the local-exchange planning flow inspected.
  • Test coverage: Coverage is targeted but limited to BE unit validation of distribution selection, not a full SQL regression. This is a residual coverage limitation, not a blocking defect from the reviewed diff.
  • Observability/transactions/data writes: Not applicable; no new transaction, persistence, data-write, or observability-sensitive path is introduced.
  • Performance: The added child distribution check is lightweight and only occurs during pipeline distribution planning; no hot-path performance issue found.

User focus response: no additional user-provided review focus was present.

Verification: Attempted ./run-be-ut.sh --run --filter=AggOperatorRequiredDistributionTest.*, but the command timed out after 120s while initializing/building third-party submodules, before the targeted test could complete.

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-H: Total hot run time: 31690 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 00f9e27ab019737d869a3696042b0961068aae49, 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	17646	4011	4019	4011
q2	q3	10802	1408	821	821
q4	4688	475	345	345
q5	7580	2296	2138	2138
q6	265	183	145	145
q7	982	797	667	667
q8	9408	1721	1720	1720
q9	6590	5013	4914	4914
q10	6448	2250	1895	1895
q11	456	280	249	249
q12	697	439	295	295
q13	18188	3390	2774	2774
q14	271	266	239	239
q15	q16	824	773	713	713
q17	1006	920	1005	920
q18	6992	5745	5493	5493
q19	1196	1449	1154	1154
q20	515	414	297	297
q21	5921	2753	2581	2581
q22	480	374	319	319
Total cold run time: 100955 ms
Total hot run time: 31690 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	4789	4715	4874	4715
q2	q3	4873	5268	4678	4678
q4	2093	2188	1379	1379
q5	4895	4724	4680	4680
q6	238	184	133	133
q7	1885	1794	1561	1561
q8	2279	1941	1939	1939
q9	7417	7421	7426	7421
q10	4755	4662	4224	4224
q11	529	388	357	357
q12	726	735	523	523
q13	3038	3353	2800	2800
q14	283	286	256	256
q15	q16	688	717	622	622
q17	1273	1239	1242	1239
q18	7244	6865	6801	6801
q19	1129	1085	1121	1085
q20	2218	2223	1929	1929
q21	5240	4553	4331	4331
q22	522	456	409	409
Total cold run time: 56114 ms
Total hot run time: 51082 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-DS: Total hot run time: 171410 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 00f9e27ab019737d869a3696042b0961068aae49, data reload: false

query5	4325	638	538	538
query6	345	214	197	197
query7	4232	565	309	309
query8	331	236	217	217
query9	8783	3995	4019	3995
query10	455	382	292	292
query11	5759	2403	2256	2256
query12	198	126	135	126
query13	1383	605	452	452
query14	6102	5479	5141	5141
query14_1	4492	4486	4468	4468
query15	215	203	184	184
query16	989	461	441	441
query17	1156	769	611	611
query18	2587	483	347	347
query19	213	204	164	164
query20	136	135	125	125
query21	211	135	115	115
query22	13547	13479	13264	13264
query23	17275	16507	16142	16142
query23_1	16285	16336	16356	16336
query24	7618	1766	1300	1300
query24_1	1307	1302	1316	1302
query25	544	484	404	404
query26	1318	332	172	172
query27	2738	556	339	339
query28	4430	1994	1981	1981
query29	958	625	496	496
query30	309	241	196	196
query31	1130	1082	976	976
query32	87	73	73	73
query33	542	344	303	303
query34	1202	1137	650	650
query35	776	809	701	701
query36	1422	1446	1286	1286
query37	150	110	93	93
query38	3217	3144	3182	3144
query39	941	944	953	944
query39_1	922	914	925	914
query40	230	146	128	128
query41	72	62	62	62
query42	109	110	111	110
query43	333	336	306	306
query44	
query45	212	203	202	202
query46	1161	1251	738	738
query47	2366	2381	2306	2306
query48	409	427	297	297
query49	627	497	388	388
query50	998	351	250	250
query51	4366	4306	4261	4261
query52	105	105	92	92
query53	261	266	194	194
query54	325	269	250	250
query55	92	89	84	84
query56	302	301	320	301
query57	1441	1412	1321	1321
query58	304	273	259	259
query59	1590	1674	1439	1439
query60	311	320	304	304
query61	156	161	146	146
query62	705	651	586	586
query63	255	200	204	200
query64	2407	794	605	605
query65	
query66	1699	469	358	358
query67	29036	29594	29407	29407
query68	
query69	452	335	301	301
query70	1054	1017	962	962
query71	295	314	265	265
query72	2901	2646	2329	2329
query73	821	782	420	420
query74	5089	4980	4747	4747
query75	2690	2615	2244	2244
query76	2298	1160	770	770
query77	413	411	330	330
query78	12429	12348	11852	11852
query79	1350	1017	739	739
query80	584	543	460	460
query81	449	280	236	236
query82	398	160	121	121
query83	359	280	249	249
query84	253	172	115	115
query85	887	555	454	454
query86	399	370	313	313
query87	3469	3384	3245	3245
query88	3621	2736	2727	2727
query89	433	399	342	342
query90	1833	180	179	179
query91	182	165	140	140
query92	78	76	73	73
query93	1438	1319	845	845
query94	546	334	273	273
query95	686	391	342	342
query96	1112	819	317	317
query97	2746	2725	2592	2592
query98	235	228	225	225
query99	1173	1164	1043	1043
Total cold run time: 252016 ms
Total hot run time: 171410 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 6.25% (1/16) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 53.92% (20953/38856)
Line Coverage 37.51% (198722/529741)
Region Coverage 33.79% (155684/460745)
Branch Coverage 34.79% (67789/194877)

@hello-stephen
Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 6.25% (1/16) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 63.74% (24256/38055)
Line Coverage 47.46% (250774/528384)
Region Coverage 44.53% (207151/465166)
Branch Coverage 45.64% (89276/195603)

1 similar comment
@hello-stephen
Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 6.25% (1/16) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 63.74% (24256/38055)
Line Coverage 47.46% (250774/528384)
Region Coverage 44.53% (207151/465166)
Branch Coverage 45.64% (89276/195603)

Copilot AI added 2 commits May 28, 2026 13:22
### What problem does this PR solve?

Issue Number: None

Related PR: apache#63529, apache#62438

Problem Summary: A hash-distributed aggregation can receive input after a non-hash local exchange, such as the adaptive passthrough exchanges planned around nested loop joins. The downstream aggregation still relies on key distribution for distinct aggregation, but the non-hash local exchange can split identical keys across local aggregation instances. This caused wrong count distinct results. This change lets local exchange sources expose their actual exchange distribution and lets aggregations force a new local hash shuffle when their child breaks local key distribution.

### Release note

Fix wrong results for distinct aggregation after non-hash local exchange.

### Check List (For Author)

- Test: Regression test / Unit Test / Manual test
    - ./run-be-ut.sh --run --filter=AggOperatorRequiredDistributionTest.*
    - ./run-regression-test.sh --run -d query_p0/join -s test_agg_after_nested_loop_join_local_exchange
    - Manual reproduction from output/ddl.txt returned 10 5070261
- Behavior changed: Yes. Aggregation now preserves required hash distribution when its child local exchange uses a non-hash distribution.
- Does this need documentation: No

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@BiteTheDDDDt
Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-H: Total hot run time: 31608 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit be423fddee9c5f912a1adb344137d4f4bec05ede, 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	17777	4032	4033	4032
q2	q3	10826	1434	836	836
q4	4681	484	342	342
q5	7638	2277	2123	2123
q6	237	179	136	136
q7	960	776	644	644
q8	9367	1632	1525	1525
q9	5120	4992	4949	4949
q10	6418	2220	1920	1920
q11	430	272	242	242
q12	625	420	299	299
q13	18136	3444	2773	2773
q14	264	258	235	235
q15	q16	823	773	707	707
q17	1008	904	1033	904
q18	6898	5734	5635	5635
q19	1335	1214	1094	1094
q20	692	465	294	294
q21	6193	2913	2605	2605
q22	448	488	313	313
Total cold run time: 99876 ms
Total hot run time: 31608 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	4881	4925	4694	4694
q2	q3	4890	5226	4625	4625
q4	2102	2213	1406	1406
q5	5054	4750	4615	4615
q6	229	174	127	127
q7	1976	1756	1572	1572
q8	2435	2105	2066	2066
q9	8021	7410	7462	7410
q10	4739	4698	4191	4191
q11	534	378	354	354
q12	740	740	523	523
q13	3019	3341	2798	2798
q14	279	283	250	250
q15	q16	681	699	612	612
q17	1273	1251	1248	1248
q18	7346	6639	6777	6639
q19	1105	1087	1106	1087
q20	2204	2223	1934	1934
q21	5292	4568	4433	4433
q22	526	468	421	421
Total cold run time: 57326 ms
Total hot run time: 51005 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

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

query5	4315	648	522	522
query6	329	214	200	200
query7	4217	562	332	332
query8	332	246	233	233
query9	8780	4034	4006	4006
query10	456	347	304	304
query11	5786	2582	2275	2275
query12	188	131	124	124
query13	1328	591	439	439
query14	6170	5469	5152	5152
query14_1	4465	4479	4467	4467
query15	216	207	183	183
query16	1005	470	441	441
query17	1186	718	594	594
query18	2776	481	350	350
query19	224	200	157	157
query20	140	140	133	133
query21	215	140	115	115
query22	13571	13636	13406	13406
query23	17249	16612	16366	16366
query23_1	16296	16256	16414	16256
query24	7392	1780	1275	1275
query24_1	1315	1327	1372	1327
query25	550	480	412	412
query26	1303	312	174	174
query27	2689	558	341	341
query28	4423	1982	1994	1982
query29	991	616	504	504
query30	302	238	202	202
query31	1136	1073	947	947
query32	87	77	71	71
query33	541	359	296	296
query34	1199	1123	661	661
query35	773	817	717	717
query36	1435	1434	1222	1222
query37	153	100	93	93
query38	3217	3173	3068	3068
query39	927	949	885	885
query39_1	879	900	885	885
query40	225	144	125	125
query41	67	66	62	62
query42	114	111	109	109
query43	334	332	288	288
query44	
query45	214	201	200	200
query46	1079	1210	744	744
query47	2360	2350	2309	2309
query48	389	393	292	292
query49	641	502	390	390
query50	1072	354	256	256
query51	4330	4291	4324	4291
query52	104	103	94	94
query53	249	289	198	198
query54	319	277	253	253
query55	90	90	87	87
query56	302	309	311	309
query57	1446	1425	1365	1365
query58	305	267	267	267
query59	1573	1630	1447	1447
query60	342	331	307	307
query61	164	160	161	160
query62	715	657	595	595
query63	251	203	205	203
query64	2366	785	628	628
query65	
query66	1674	483	365	365
query67	29736	29695	29481	29481
query68	
query69	461	348	312	312
query70	1059	1001	946	946
query71	307	275	274	274
query72	3223	2855	2405	2405
query73	833	757	442	442
query74	5087	5020	4766	4766
query75	2745	2618	2265	2265
query76	2283	1138	771	771
query77	397	411	346	346
query78	12567	12543	11882	11882
query79	1326	1098	736	736
query80	615	541	445	445
query81	456	286	243	243
query82	449	160	121	121
query83	365	281	249	249
query84	263	143	118	118
query85	890	546	464	464
query86	402	330	332	330
query87	3426	3410	3256	3256
query88	3588	2723	2703	2703
query89	435	395	351	351
query90	1952	174	181	174
query91	185	171	139	139
query92	80	78	75	75
query93	1567	1445	858	858
query94	533	374	320	320
query95	693	476	355	355
query96	1049	802	382	382
query97	2758	2738	2628	2628
query98	249	248	260	248
query99	1170	1154	999	999
Total cold run time: 253417 ms
Total hot run time: 171113 ms

@BiteTheDDDDt
Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-H: Total hot run time: 32261 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 196f72ca8bd95186f2ab6fb7328514aae426bc23, 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	17710	4113	4145	4113
q2	q3	10801	1447	861	861
q4	4684	497	360	360
q5	7572	2303	2069	2069
q6	247	183	144	144
q7	945	780	642	642
q8	9366	1762	1650	1650
q9	5199	5009	5138	5009
q10	6374	2210	1908	1908
q11	430	271	250	250
q12	630	425	290	290
q13	18119	3445	2819	2819
q14	267	262	237	237
q15	q16	824	788	711	711
q17	1015	857	1005	857
q18	6905	5914	5683	5683
q19	1294	1279	1276	1276
q20	566	472	305	305
q21	6342	2824	2768	2768
q22	444	389	309	309
Total cold run time: 99734 ms
Total hot run time: 32261 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	4846	4698	4768	4698
q2	q3	4919	5285	4649	4649
q4	2118	2180	1400	1400
q5	4994	4673	4716	4673
q6	252	178	139	139
q7	1937	1771	1593	1593
q8	2426	2181	2117	2117
q9	7885	7487	7446	7446
q10	4778	4702	4212	4212
q11	531	390	396	390
q12	727	741	533	533
q13	3034	3395	2801	2801
q14	287	280	271	271
q15	q16	691	701	607	607
q17	1299	1292	1272	1272
q18	7279	6869	6742	6742
q19	1128	1113	1121	1113
q20	2236	2204	1941	1941
q21	5354	4643	4586	4586
q22	528	466	416	416
Total cold run time: 57249 ms
Total hot run time: 51599 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-DS: Total hot run time: 173240 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 196f72ca8bd95186f2ab6fb7328514aae426bc23, data reload: false

query5	4324	677	509	509
query6	336	236	214	214
query7	4280	600	307	307
query8	337	236	232	232
query9	8802	4117	4073	4073
query10	465	360	311	311
query11	5762	2425	2246	2246
query12	186	134	126	126
query13	1314	617	428	428
query14	6063	5459	5195	5195
query14_1	4537	4520	4500	4500
query15	212	208	192	192
query16	1019	467	436	436
query17	951	723	601	601
query18	2438	489	360	360
query19	213	203	161	161
query20	138	131	126	126
query21	216	141	118	118
query22	13709	13704	13428	13428
query23	17201	16616	16584	16584
query23_1	16373	16368	16496	16368
query24	7455	1787	1329	1329
query24_1	1314	1306	1320	1306
query25	563	488	423	423
query26	1288	318	169	169
query27	2772	599	355	355
query28	4419	2056	2017	2017
query29	998	645	510	510
query30	311	240	204	204
query31	1142	1095	956	956
query32	86	82	76	76
query33	539	350	325	325
query34	1163	1180	653	653
query35	770	802	684	684
query36	1379	1436	1335	1335
query37	165	106	91	91
query38	3235	3117	3091	3091
query39	939	940	927	927
query39_1	885	882	902	882
query40	239	153	132	132
query41	72	70	69	69
query42	116	114	110	110
query43	333	337	299	299
query44	
query45	218	212	195	195
query46	1099	1195	755	755
query47	2399	2417	2252	2252
query48	412	434	300	300
query49	664	526	419	419
query50	956	363	269	269
query51	4379	4345	4318	4318
query52	106	106	96	96
query53	265	281	209	209
query54	331	301	269	269
query55	99	95	90	90
query56	325	319	325	319
query57	1450	1407	1329	1329
query58	320	292	291	291
query59	1597	1683	1489	1489
query60	328	342	326	326
query61	188	180	189	180
query62	702	655	594	594
query63	246	208	209	208
query64	2497	877	727	727
query65	
query66	1717	482	377	377
query67	29910	29729	29519	29519
query68	
query69	483	349	311	311
query70	1059	1035	1032	1032
query71	310	277	269	269
query72	3076	2893	2435	2435
query73	892	740	455	455
query74	5128	4966	4807	4807
query75	2704	2620	2318	2318
query76	2315	1181	771	771
query77	398	410	339	339
query78	12590	12451	11788	11788
query79	1495	1022	748	748
query80	944	558	467	467
query81	504	281	241	241
query82	1375	166	126	126
query83	365	275	250	250
query84	309	138	116	116
query85	970	552	461	461
query86	441	330	334	330
query87	3480	3396	3254	3254
query88	3680	2797	2778	2778
query89	465	387	342	342
query90	1791	187	190	187
query91	185	171	145	145
query92	79	88	78	78
query93	1465	1428	883	883
query94	603	371	314	314
query95	695	393	368	368
query96	1106	814	345	345
query97	2730	2739	2592	2592
query98	233	229	225	225
query99	1155	1190	1034	1034
Total cold run time: 254995 ms
Total hot run time: 173240 ms

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.

4 participants