Skip to content

[fix](be) Clean linear histogram decimal boundaries#63430

Draft
mrhhsg wants to merge 1 commit into
apache:masterfrom
mrhhsg:fix/linear-histogram-json-boundaries
Draft

[fix](be) Clean linear histogram decimal boundaries#63430
mrhhsg wants to merge 1 commit into
apache:masterfrom
mrhhsg:fix/linear-histogram-json-boundaries

Conversation

@mrhhsg
Copy link
Copy Markdown
Member

@mrhhsg mrhhsg commented May 20, 2026

What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: LINEAR_HISTOGRAM used raw floating-point arithmetic when assigning values to bucket indexes and when emitting bucket boundaries. Decimal intervals such as 0.1 could therefore place a value exactly on a decimal boundary into the previous bucket and expose artifacts such as 0.30000000000000004 in the JSON result. This patch rounds emitted boundaries only when the interval and offset have an exactly inferable bounded decimal scale. For near-decimal intervals such as 0.10000000000000002, it keeps raw bucket boundaries so decimal-boundary snapping cannot move a value across a true raw boundary that is greater than the input value.

Release note

Fix LINEAR_HISTOGRAM JSON output for decimal bucket boundaries.

Check List (For Author)

  • Test:
    • Build: ./build.sh --be --fe through doris-local-regression build
    • Unit Test: ./run-be-ut.sh --run --filter=AggLinearHistogramTest.*
    • Regression test: ./run-regression-test.sh --conf output/local-regression/regression-conf-46001.groovy --run -d feature_review_repro/agg_function -s AGG-HIST-001
    • Format check: build-support/clang-format.sh, build-support/check-format.sh, git diff --check
    • Static analysis: build-support/run-clang-tidy.sh --build-dir be/ut_build_ASAN attempted, but clang-tidy could not analyze the changed files in this local environment because the toolchain reported missing stddef.h and a pre-existing unmatched NOLINTEND in be/src/core/types.h.
  • Behavior changed: Yes. Decimal bucket boundaries no longer expose floating-point artifacts, exact decimal boundary values are assigned to the expected bucket, and near-decimal intervals keep raw bucket semantics instead of snapping values across true raw boundaries.
  • Does this need documentation: No

@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?

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 20, 2026

/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.

I found blocking correctness issues in the new floating-point rounding logic for linear_histogram. The change fixes the 0.1/0.3 presentation case covered by the new tests, but the tolerance is also applied to bucket assignment and scale inference in ways that change valid query results.

Critical checkpoint conclusions:

  • Goal/test: The PR aims to avoid floating-point artifacts in linear_histogram; the added BE and regression tests cover the basic 0.1 interval case, but not large near-boundary inputs or very small intervals.
  • Scope: The PR is small and focused, but the helper logic changes bucket assignment semantics, not only JSON boundary formatting.
  • Concurrency/lifecycle/config/compatibility/persistence: No new concurrency, lifecycle, configuration, protocol, storage-format, transaction, or persistence concerns found.
  • Parallel paths: FE signatures are unchanged and BE registration remains unchanged; no other function path appears to need updates for this PR.
  • Error handling/data correctness: Data correctness is affected because some valid values are assigned to the wrong bucket, and some valid interval boundaries are serialized incorrectly.
  • Tests: Current tests are insufficient for these edge cases. Existing prior review context was empty, and there were no additional user focus points to address.

Please fix the rounding rules so they preserve mathematical bucket assignment and do not round small nonzero intervals to integer-scale boundaries.


private:
double bucket_key(double value) const {
double key = (value - offset) / interval;
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.

This tolerance changes bucket assignment for valid values that are close to, but still below, a boundary. For example, with interval = 1, offset = 0, and value = 999999999.999999, the mathematical bucket is floor(999999999.999999) = 999999999, but the tolerance is about 1.8e-6, so this branch rounds it to 1000000000. Near the configured upper key limit it can also turn a valid last-bucket value such as 2147483646.999999 into 2147483647 and throw exceeds the bucket range limit. The fix should avoid using an absolute key-space tolerance that can move real input values across bucket boundaries; restrict correction to the specific floating artifact being addressed or keep exact floor semantics for bucket selection.

int32_t decimal_scale(double value) const {
double multiplier = 1;
for (int32_t scale = 0; scale <= MAX_BOUNDARY_SCALE; ++scale, multiplier *= 10) {
double scaled_value = value * multiplier;
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.

decimal_scale() treats very small nonzero values as scale 0 because the scale-0 tolerance is around 1.8e-15. For interval = 1e-16 and offset = 0, this returns boundary scale 0, so bucket_boundary() rounds boundaries like 1e-16 and 2e-16 to 0, serializing buckets with identical/wrong lower and upper values. That regresses valid positive intervals compared with the previous direct double boundary output. Please make scale inference reject values that round to zero unless the original value is actually zero, or otherwise avoid applying decimal rounding when it would erase nonzero boundaries.

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 20, 2026

/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.

The PR is small and focused, but I cannot approve it because the existing inline threads identify blocking data-correctness regressions in the new floating-point rounding logic. I did not find any additional distinct issues beyond those already raised, so I am not duplicating inline comments.

Critical checkpoint conclusions:

  • Goal/test: The PR aims to fix linear_histogram decimal bucket assignment/output artifacts. The added BE unit test and regression case cover the simple 0.1 boundary case, but they do not prove correctness for near-boundary large values or very small positive intervals already called out in the existing threads.
  • Scope: The change is small and focused, but the new helpers affect bucket assignment semantics as well as JSON boundary formatting.
  • Concurrency/lifecycle/config/compatibility/persistence: No new concurrency, lifecycle, configuration, protocol, storage-format, transaction, or persistence concerns were found.
  • Parallel paths: BE registration and FE signatures are unchanged; no missing parallel implementation path was found.
  • Error handling/data correctness: Data correctness remains blocked by the known cases where valid values can move to the wrong bucket and very small nonzero boundaries can serialize incorrectly.
  • Tests/results: The new results match the covered case and appear deterministic, but coverage is insufficient for the edge cases described in the existing inline review.
  • Observability/performance: No new observability requirement or material performance issue was found for this localized aggregate-function fix.
  • User focus: No additional user-provided review focus was specified.

Please address the two existing inline comments before this can be approved.

@mrhhsg mrhhsg force-pushed the fix/linear-histogram-json-boundaries branch from 915f6cc to 3f6892d Compare May 20, 2026 07:22
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 20, 2026

/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.

I completed the PR review against the actual GitHub PR diff. I did not add duplicate inline comments because the existing review threads already cover the blocking issues I still see in aggregate_function_linear_histogram.h: bucket assignment can still move valid near-boundary values across bucket boundaries, and decimal scale inference can still round very small nonzero boundaries to zero.

Critical checkpoint conclusions:

  • Goal and tests: The PR aims to clean decimal boundary output for linear_histogram and adds BE unit/regression coverage for normal decimal boundaries. The current implementation is not fully correct for edge decimal/floating cases already called out in existing threads.
  • Scope/focus: The code is focused on histogram boundary normalization, but the correction changes bucket assignment semantics in edge cases.
  • Concurrency/lifecycle: No new concurrency or special lifecycle concerns found.
  • Configuration/compatibility: No config change. Aggregate state serialization format is unchanged; no new compatibility issue found.
  • Parallel paths: The BE unit and regression paths were checked; no additional parallel implementation was found for this aggregate.
  • Tests: Added tests cover common decimal cases and some near-boundary cases, but they do not cover the existing blocking small-nonzero interval case and the remaining boundary-crossing risk.
  • Observability/transactions/data writes: Not applicable.
  • Performance: The added per-row scale inference is cached per parameter set; no additional performance blocker found.

User focus response: No additional user-provided review focus was supplied.

Please address the existing inline review threads before this can be approved.

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 20, 2026

run buildall

@mrhhsg mrhhsg force-pushed the fix/linear-histogram-json-boundaries branch from 3f6892d to 6b816ed Compare May 20, 2026 08:13
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 20, 2026

/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.

I found one remaining correctness issue in the updated boundary snapping logic. The existing review focus file had no additional focus points; I reviewed the full PR and paid particular attention to the already-raised histogram boundary/scale concerns without duplicating them.

Critical checkpoint conclusions:

  • Goal/test coverage: the PR addresses decimal boundary artifacts in LINEAR_HISTOGRAM and adds BE unit plus regression coverage, but the implementation still mis-buckets valid near-decimal interval values.
  • Scope/clarity: the change is focused on histogram bucket assignment/output formatting.
  • Concurrency/lifecycle/config/transaction/storage compatibility: no new concurrency, lifecycle, config, transaction, or storage-format concerns were identified. Aggregate state serialization remains unchanged.
  • Parallel paths: FE/BE function metadata paths are not changed; the affected BE aggregation path is covered.
  • Tests/results: tests cover the previous key-space tolerance and tiny interval issues, but they do not cover intervals that are close to, but not exactly, the inferred decimal scale.
  • Observability/performance: no additional observability requirement or material performance issue found for this small arithmetic path.
  • User focus: no additional user-provided review focus was specified.

Please fix the remaining bucket-assignment regression before merging.

if (boundary_decimal_scale != NO_BOUNDARY_SCALE) {
double raw_boundary = rounded_key * interval + offset;
double boundary = normalize_boundary(raw_boundary, boundary_decimal_scale);
if (value == boundary) {
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.

This can still move valid values across the true bucket boundary when decimal_scale() classifies an interval that is only near a decimal value. For example, with interval = 0.10000000000000002 and offset = 0, decimal_scale(interval) returns scale 1 because interval * 10 is within the epsilon tolerance of 1. Then bucket_key(0.1) normalizes the rounded raw boundary back to 0.1, this equality succeeds, and the value is assigned to key 1, even though (0.1 - 0) / 0.10000000000000002 is below 1 and should floor to bucket 0. This is distinct from the already-raised key-space tolerance issue because the current code removed that tolerance but still gets the same kind of mis-bucketing through tolerant scale inference plus normalized-boundary equality. Please only enable decimal boundary snapping when the interval/offset are exactly represented by the inferred scale, or otherwise ensure snapping cannot cross a raw boundary that is greater than the input value.

### What problem does this PR solve?

Issue Number: None

Related PR: None

Problem Summary: LINEAR_HISTOGRAM used raw floating-point arithmetic both when assigning values to bucket indexes and when emitting bucket boundaries. Decimal intervals such as 0.1 could therefore place a value exactly on a decimal boundary into the previous bucket and expose artifacts such as 0.30000000000000004 in the JSON result. This patch rounds emitted boundaries only when the interval and offset have an exactly inferable bounded decimal scale. It keeps raw boundaries for near-decimal intervals such as 0.10000000000000002, so decimal-boundary snapping cannot move a value across a raw bucket boundary that is greater than the input value.

### Release note

Fix LINEAR_HISTOGRAM JSON output for decimal bucket boundaries.

### Check List (For Author)

- Test:
    - Unit Test: ./run-be-ut.sh --run --filter=AggLinearHistogramTest.*
    - Regression test: doris-local-regression start/run with offset 46001 and ./run-regression-test.sh --conf output/local-regression/regression-conf-46001.groovy --run -d feature_review_repro/agg_function -s AGG-HIST-001
    - Format check: build-support/clang-format.sh; build-support/check-format.sh; git diff --check
- Behavior changed: Yes. Decimal bucket boundaries no longer expose floating-point artifacts, and near-decimal intervals keep raw bucket semantics instead of snapping values across true raw boundaries.
- Does this need documentation: No
@mrhhsg mrhhsg force-pushed the fix/linear-histogram-json-boundaries branch from 6b816ed to f6bfc5f Compare May 20, 2026 09:14
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 20, 2026

/review

@hello-stephen
Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 86.21% (50/58) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 53.56% (20750/38739)
Line Coverage 37.20% (196288/527701)
Region Coverage 33.48% (153651/458883)
Branch Coverage 34.54% (67034/194070)

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 additional blocking issues found in the current diff.\n\nCritical checkpoint conclusions:\n- Goal/test coverage: The change targets LINEAR_HISTOGRAM decimal boundary assignment/output artifacts, and the added BE unit tests plus regression case cover decimal boundaries, near-boundary values, near-decimal intervals, large bucket keys, and tiny nonzero intervals.\n- Scope/focus: The implementation is localized to linear_histogram boundary/key handling with focused tests.\n- Concurrency/lifecycle: No new shared mutable state, threads, locks, or special lifecycle concerns were introduced; aggregate state serialization format remains compatible because the derived scale is recomputed from serialized interval/offset.\n- Compatibility/persistence: No storage format, edit log, or FE-BE protocol changes. Serialized aggregate state layout is unchanged.\n- Parallel paths: Serialize/deserialize and merge paths propagate or recompute the derived boundary scale consistently.\n- Error handling: Existing invalid interval/offset and bucket range checks remain intact; no ignored Status or new exception boundary issue found.\n- Performance/memory: Added work is constant-time per row and per emitted boundary; no significant new allocations in hot add path.\n- Test result review: Added regression output matches the covered scenarios and uses ordered query output.\n- Observability: Not applicable; this is deterministic scalar aggregate formatting/assignment behavior and does not add distributed operational paths.\n\nUser focus: no additional user-provided review focus was specified.

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-H: Total hot run time: 31152 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit f6bfc5fde9bc9b1d6d35ffe0316cd7f9d8181f0f, 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	17704	3891	3915	3891
q2	q3	10808	1385	820	820
q4	4685	476	354	354
q5	7601	2265	2356	2265
q6	314	174	136	136
q7	929	781	664	664
q8	9389	1689	1538	1538
q9	6825	4920	4890	4890
q10	6431	2094	1752	1752
q11	436	287	241	241
q12	701	427	300	300
q13	18191	3764	2775	2775
q14	272	251	239	239
q15	q16	818	784	710	710
q17	923	1018	1010	1010
q18	7006	5742	5490	5490
q19	1209	1286	1111	1111
q20	514	405	259	259
q21	5709	2575	2410	2410
q22	433	368	297	297
Total cold run time: 100898 ms
Total hot run time: 31152 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	4223	4124	4116	4116
q2	q3	4504	4919	4319	4319
q4	2108	2233	1401	1401
q5	4458	4294	4481	4294
q6	294	201	142	142
q7	1970	1830	1707	1707
q8	2500	2194	2132	2132
q9	8018	7868	7820	7820
q10	4650	4614	4136	4136
q11	793	411	408	408
q12	748	753	528	528
q13	3312	3622	3030	3030
q14	293	313	276	276
q15	q16	735	745	663	663
q17	1369	1317	1342	1317
q18	7873	7395	6903	6903
q19	1133	1095	1114	1095
q20	2223	2226	1940	1940
q21	5340	4718	4610	4610
q22	515	463	420	420
Total cold run time: 57059 ms
Total hot run time: 51257 ms

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 20, 2026

run buildall

@hello-stephen
Copy link
Copy Markdown
Contributor

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

query5	4319	661	528	528
query6	350	221	206	206
query7	4272	547	325	325
query8	341	234	223	223
query9	8844	4067	4000	4000
query10	451	345	295	295
query11	5694	2431	2195	2195
query12	182	129	128	128
query13	1267	619	437	437
query14	6084	5441	5180	5180
query14_1	4402	4428	4474	4428
query15	217	209	188	188
query16	992	476	360	360
query17	1196	753	626	626
query18	2481	504	371	371
query19	227	217	173	173
query20	141	137	140	137
query21	226	144	120	120
query22	13610	13490	13375	13375
query23	17311	16324	16004	16004
query23_1	16116	16189	16149	16149
query24	7489	1800	1329	1329
query24_1	1315	1329	1322	1322
query25	584	501	449	449
query26	1305	322	209	209
query27	2681	539	332	332
query28	4421	1941	1941	1941
query29	1005	632	504	504
query30	307	237	197	197
query31	1106	1065	951	951
query32	86	76	74	74
query33	544	361	307	307
query34	1177	1141	639	639
query35	768	796	665	665
query36	1360	1362	1221	1221
query37	152	116	92	92
query38	3198	3162	3048	3048
query39	941	914	908	908
query39_1	871	860	892	860
query40	223	143	124	124
query41	66	66	65	65
query42	116	115	112	112
query43	338	343	301	301
query44	
query45	212	207	193	193
query46	1080	1197	758	758
query47	2275	2272	2174	2174
query48	401	396	307	307
query49	637	487	399	399
query50	981	356	252	252
query51	4371	4258	4326	4258
query52	111	108	95	95
query53	264	290	203	203
query54	323	291	253	253
query55	95	89	86	86
query56	311	332	304	304
query57	1410	1376	1333	1333
query58	303	266	267	266
query59	1608	1655	1386	1386
query60	329	322	318	318
query61	163	163	157	157
query62	670	604	568	568
query63	251	209	220	209
query64	2705	832	656	656
query65	
query66	1856	493	360	360
query67	30149	30135	29905	29905
query68	
query69	479	340	310	310
query70	1040	979	1003	979
query71	322	286	275	275
query72	3105	2750	2493	2493
query73	871	736	471	471
query74	5127	4918	4743	4743
query75	2698	2669	2275	2275
query76	2285	1156	763	763
query77	414	412	356	356
query78	12184	12295	11571	11571
query79	1425	1028	723	723
query80	685	581	505	505
query81	454	284	241	241
query82	1409	160	126	126
query83	374	285	259	259
query84	304	143	118	118
query85	890	541	453	453
query86	401	325	334	325
query87	3459	3375	3217	3217
query88	3602	2672	2648	2648
query89	435	381	342	342
query90	1994	190	205	190
query91	187	170	141	141
query92	79	78	78	78
query93	1510	1444	900	900
query94	531	338	311	311
query95	667	372	347	347
query96	1022	781	322	322
query97	2685	2693	2550	2550
query98	240	237	235	235
query99	1113	1097	973	973
Total cold run time: 254209 ms
Total hot run time: 170014 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-H: Total hot run time: 30954 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit f6bfc5fde9bc9b1d6d35ffe0316cd7f9d8181f0f, 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	17723	3892	3905	3892
q2	q3	10798	1499	813	813
q4	4684	482	351	351
q5	7664	2241	2132	2132
q6	236	185	141	141
q7	970	780	649	649
q8	9418	2000	1635	1635
q9	5176	4912	4911	4911
q10	6412	2069	1794	1794
q11	440	277	245	245
q12	627	423	293	293
q13	18126	3558	2808	2808
q14	266	258	237	237
q15	q16	816	789	701	701
q17	963	980	944	944
q18	6851	5922	5593	5593
q19	1297	1293	1002	1002
q20	514	396	271	271
q21	5912	2670	2240	2240
q22	433	358	302	302
Total cold run time: 99326 ms
Total hot run time: 30954 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	4189	4107	4110	4107
q2	q3	4502	4908	4355	4355
q4	2111	2185	1395	1395
q5	4379	4281	4316	4281
q6	231	174	128	128
q7	2085	2011	1671	1671
q8	2529	2178	2174	2174
q9	7883	8122	7824	7824
q10	4570	4510	4134	4134
q11	587	413	386	386
q12	751	781	540	540
q13	3273	3659	3021	3021
q14	285	304	273	273
q15	q16	700	726	644	644
q17	1342	1315	1416	1315
q18	7981	7398	7333	7333
q19	1193	1126	1101	1101
q20	2224	2211	1935	1935
q21	5316	4619	4499	4499
q22	523	458	402	402
Total cold run time: 56654 ms
Total hot run time: 51518 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

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

query5	4323	665	502	502
query6	346	227	206	206
query7	4239	566	315	315
query8	320	238	220	220
query9	8825	3977	3976	3976
query10	454	334	300	300
query11	5746	2397	2197	2197
query12	189	126	127	126
query13	1292	593	453	453
query14	6001	5329	5045	5045
query14_1	4317	4361	4360	4360
query15	214	198	191	191
query16	982	451	421	421
query17	953	721	578	578
query18	2449	485	360	360
query19	211	204	164	164
query20	132	133	131	131
query21	210	139	118	118
query22	13692	13562	13370	13370
query23	17248	16431	16036	16036
query23_1	16175	16220	16153	16153
query24	7627	1772	1316	1316
query24_1	1322	1319	1293	1293
query25	602	517	450	450
query26	1317	340	180	180
query27	2671	575	353	353
query28	4550	1947	1935	1935
query29	1018	643	528	528
query30	309	260	204	204
query31	1265	1065	930	930
query32	92	79	77	77
query33	551	369	317	317
query34	1195	1138	664	664
query35	781	798	690	690
query36	1404	1329	1203	1203
query37	154	105	89	89
query38	3230	3144	3052	3052
query39	937	933	906	906
query39_1	880	887	869	869
query40	243	151	132	132
query41	71	70	71	70
query42	116	115	111	111
query43	328	330	283	283
query44	
query45	220	205	200	200
query46	1063	1178	754	754
query47	2331	2378	2219	2219
query48	408	419	300	300
query49	655	503	423	423
query50	991	352	260	260
query51	4320	4245	4235	4235
query52	107	109	101	101
query53	263	283	204	204
query54	331	299	269	269
query55	95	97	92	92
query56	322	327	324	324
query57	1406	1407	1319	1319
query58	314	294	282	282
query59	1553	1635	1427	1427
query60	337	346	361	346
query61	160	156	150	150
query62	671	630	563	563
query63	240	199	206	199
query64	2396	809	635	635
query65	
query66	1736	483	360	360
query67	29494	29924	29792	29792
query68	
query69	479	341	308	308
query70	1028	956	992	956
query71	317	279	273	273
query72	3040	2765	2451	2451
query73	839	763	418	418
query74	5108	4914	4728	4728
query75	2671	2601	2262	2262
query76	2408	1142	756	756
query77	399	415	334	334
query78	12180	12233	11722	11722
query79	1434	994	707	707
query80	768	535	453	453
query81	470	281	240	240
query82	1364	157	123	123
query83	355	270	247	247
query84	304	136	112	112
query85	927	534	453	453
query86	429	366	333	333
query87	3435	3381	3225	3225
query88	3531	2670	2624	2624
query89	460	383	335	335
query90	1803	201	186	186
query91	179	170	138	138
query92	80	80	73	73
query93	1447	1482	932	932
query94	636	350	313	313
query95	659	470	355	355
query96	973	799	368	368
query97	2698	2658	2534	2534
query98	239	234	226	226
query99	1114	1089	992	992
Total cold run time: 253226 ms
Total hot run time: 169494 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.

2 participants