Skip to content

[fix](be) Avoid unsigned underflow in JSON modify path#63579

Open
mrhhsg wants to merge 2 commits into
apache:masterfrom
mrhhsg:fix/json-modify-parent-path
Open

[fix](be) Avoid unsigned underflow in JSON modify path#63579
mrhhsg wants to merge 2 commits into
apache:masterfrom
mrhhsg:fix/json-modify-parent-path

Conversation

@mrhhsg
Copy link
Copy Markdown
Member

@mrhhsg mrhhsg commented May 25, 2026

What problem does this PR solve?

Issue Number: None

Problem Summary: JSON modify functions build a parent path by iterating to the element before the last JSON path leg. The loop used get_leg_vector_size() - 1 on an unsigned size, which can underflow for an empty path expression even though normal root-path execution resolves to the root value before that branch. This patch caches the leg count once, asserts the non-empty invariant for the insert-parent branch, and uses j + 1 < legs_count to avoid unsigned subtraction while preserving behavior.

The macOS BE UT workflow also needed runner setup updates: the current runner resolved Java 25 while the BE UT script requires JDK 17, OpenMP detection needs the Homebrew LLVM toolchain, and arm64 runners must download the matching Darwin third-party archive. This patch explicitly sets up Temurin JDK 17, points Doris to Homebrew LLVM, and selects the Darwin third-party archive by runner architecture before running BE UT.

Release note

None

Check List (For Author)

  • Test:
    • Manual test: git diff --check
    • Manual test: DORIS_HOME=/mnt/disk7/hushenggang/doris-fix-spill ninja -C be/ut_build_ASAN -j 1 src/exprs/CMakeFiles/Exprs.dir/function/function_jsonb.cpp.o
  • Behavior changed: No
  • 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 25, 2026

/review

@github-actions
Copy link
Copy Markdown
Contributor

OpenCode automated review failed and did not complete.

Error: Review step was failure (possibly timeout or cancelled)
Workflow run: https://github.com/apache/doris/actions/runs/26382576018

Please inspect the workflow logs and rerun the review after the underlying issue is resolved.

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 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.

Review result: no blocking issues found.

Critical checkpoint conclusions:

  • Goal/test: The PR removes the unsigned subtraction in the JSON modify parent-path loop. Existing json_insert/json_set/json_replace regression cases cover root paths, missing paths, array paths, NULL path handling, and wildcard errors; the author also reports diff check and object compilation.
  • Scope/clarity: The modification is small, focused, and preserves existing behavior by caching the leg count and using j + 1 < legs_count.
  • Concurrency/lifecycle/config/compatibility: Not applicable; this is a local expression function loop change with no shared state, lifecycle changes, config, persistence, or protocol/storage format changes.
  • Parallel paths: The changed loop is the relevant json_modify implementation shared by insert/set/replace. Other get_leg_vector_size() - 1 occurrences are in different recursive json path handling and were not the same parent-path construction case.
  • Error handling/invariants: The empty-path insert-parent branch remains guarded by the existing findValue root-path behavior plus DCHECK_GT. No ignored Status was introduced.
  • Memory/performance: No new allocation or memory ownership pattern was introduced; caching legs_count avoids repeated calls in the modified block.
  • Observability/docs: Not needed for this local correctness cleanup.
  • User focus: No additional user-provided review focus was supplied.

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 2026

run buildall

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-H: Total hot run time: 31812 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 0a1bc2212a945068549eafe8505232d4139f87b6, 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	17702	4150	4131	4131
q2	q3	10807	1417	834	834
q4	4685	516	351	351
q5	7787	2397	2237	2237
q6	283	193	139	139
q7	980	800	637	637
q8	9383	1703	1631	1631
q9	6538	5104	5131	5104
q10	6445	2316	1846	1846
q11	446	270	247	247
q12	689	478	301	301
q13	18125	3616	2735	2735
q14	286	267	235	235
q15	q16	829	769	714	714
q17	989	881	832	832
q18	7046	5871	5723	5723
q19	1295	1264	1071	1071
q20	524	402	260	260
q21	5787	2659	2480	2480
q22	432	369	304	304
Total cold run time: 101058 ms
Total hot run time: 31812 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	4541	4451	4451	4451
q2	q3	4673	5096	4417	4417
q4	2342	2446	1424	1424
q5	4696	4564	5335	4564
q6	283	217	161	161
q7	2068	1873	1662	1662
q8	2775	2438	2327	2327
q9	8300	8279	8422	8279
q10	5133	4946	4396	4396
q11	617	432	398	398
q12	829	820	560	560
q13	3443	3820	2987	2987
q14	326	344	296	296
q15	q16	767	768	654	654
q17	1439	1381	1383	1381
q18	8176	7525	7027	7027
q19	1103	1121	1093	1093
q20	2281	2249	1990	1990
q21	5713	4923	4670	4670
q22	547	470	403	403
Total cold run time: 60052 ms
Total hot run time: 53140 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-DS: Total hot run time: 172265 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 0a1bc2212a945068549eafe8505232d4139f87b6, data reload: false

query5	4385	661	519	519
query6	347	214	195	195
query7	4250	599	308	308
query8	322	236	224	224
query9	8829	4090	4048	4048
query10	465	368	291	291
query11	5817	2576	2231	2231
query12	181	125	126	125
query13	1285	622	420	420
query14	6167	5506	5198	5198
query14_1	4542	4477	4457	4457
query15	210	199	179	179
query16	991	460	438	438
query17	1153	738	597	597
query18	2462	485	349	349
query19	213	205	159	159
query20	140	133	130	130
query21	210	135	112	112
query22	13666	13552	13502	13502
query23	17336	16466	16209	16209
query23_1	16313	16372	16411	16372
query24	7641	1757	1316	1316
query24_1	1341	1315	1352	1315
query25	548	469	419	419
query26	1343	317	179	179
query27	2699	547	350	350
query28	4448	1998	2028	1998
query29	963	614	497	497
query30	298	241	198	198
query31	1121	1079	958	958
query32	93	76	72	72
query33	556	350	285	285
query34	1219	1134	659	659
query35	790	792	700	700
query36	1387	1387	1276	1276
query37	162	97	87	87
query38	3218	3198	3067	3067
query39	937	932	898	898
query39_1	860	874	881	874
query40	228	146	119	119
query41	66	63	68	63
query42	110	109	108	108
query43	332	338	300	300
query44	
query45	213	208	208	208
query46	1121	1210	734	734
query47	2391	2383	2268	2268
query48	404	433	315	315
query49	654	518	409	409
query50	1034	346	265	265
query51	4387	4297	4251	4251
query52	108	107	95	95
query53	262	279	202	202
query54	328	293	284	284
query55	98	98	88	88
query56	333	319	329	319
query57	1442	1420	1347	1347
query58	303	280	285	280
query59	1602	1652	1474	1474
query60	330	326	325	325
query61	182	181	188	181
query62	707	661	601	601
query63	248	205	217	205
query64	2476	856	676	676
query65	
query66	1752	505	379	379
query67	29563	30043	29913	29913
query68	
query69	479	354	311	311
query70	1027	1021	999	999
query71	310	274	273	273
query72	3279	2864	2469	2469
query73	865	777	441	441
query74	5138	4985	4844	4844
query75	2707	2646	2293	2293
query76	2265	1145	755	755
query77	408	404	330	330
query78	12441	12411	12019	12019
query79	1501	1050	702	702
query80	828	544	469	469
query81	485	289	253	253
query82	1362	157	126	126
query83	354	282	242	242
query84	257	142	109	109
query85	934	538	472	472
query86	432	344	321	321
query87	3435	3389	3239	3239
query88	3642	2748	2723	2723
query89	450	393	339	339
query90	1843	186	176	176
query91	179	177	137	137
query92	77	76	72	72
query93	1454	1399	849	849
query94	631	360	306	306
query95	657	388	347	347
query96	1107	826	332	332
query97	2736	2729	2626	2626
query98	241	226	228	226
query99	1186	1143	1043	1043
Total cold run time: 255290 ms
Total hot run time: 172265 ms

### What problem does this PR solve?

Issue Number: None

Problem Summary: JSON modify functions build a parent path by iterating to the element before the last JSON path leg. The loop used `get_leg_vector_size() - 1` on an unsigned size, which can underflow for an empty path expression even though normal root-path execution resolves to the root value before that branch. Cache the leg count once, assert the non-empty invariant for the insert-parent branch, and use `j + 1 < legs_count` to avoid unsigned subtraction while preserving behavior.

### Release note

None

### Check List (For Author)

- Test:
    - Manual test: `git diff --check`
    - Manual test: `DORIS_HOME=/mnt/disk7/hushenggang/doris-fix-spill ninja -C be/ut_build_ASAN -j 1 src/exprs/CMakeFiles/Exprs.dir/function/function_jsonb.cpp.o`
- Behavior changed: No
- Does this need documentation: No
@mrhhsg mrhhsg force-pushed the fix/json-modify-parent-path branch from 0a1bc22 to 6f9182f Compare May 25, 2026 07:45
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 2026

/review

1 similar comment
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 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.

Reviewed head SHA 6f9182f. No blocking issues found.

Critical checkpoint conclusions:

  • Goal/test: The change avoids unsigned underflow in JSON modify parent-path construction while preserving existing behavior. Existing json_set/json_insert/json_replace regression suites already include root-path and missing-path cases that cover the relevant control flow; this PR also reports diff/compile checks.
  • Scope: The modification is small and focused, caching the leg count and replacing the unsigned subtraction loop bound.
  • Concurrency/lifecycle: No shared state, threading, or non-obvious lifecycle changes introduced.
  • Configuration/compatibility: No config, protocol, storage-format, or compatibility changes.
  • Parallel paths: The template implementation is shared by jsonb_set/jsonb_insert/jsonb_replace aliases, so the fix applies consistently to the affected modify paths.
  • Conditions/error handling: The added DCHECK documents the non-empty-path invariant for the insert-parent branch; Status propagation remains unchanged.
  • Testing/observability: No new observability needed for this local arithmetic-safety fix. Regression tests exist for the surrounding JSON modify functions; I did not run the full regression suite in this runner.
  • User focus: No additional user-provided review focus.

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.

No blocking issues found in this review.

Critical checkpoint conclusions:

  • Goal/test: The PR avoids the unsigned size_t underflow when building the JSON modify parent path and pins macOS BE UT to JDK 17. The changed JSONB flow preserves root-path behavior because $ resolves to the root before the missing-path insert branch; existing JSON modify regression coverage includes root-path cases. The PR reports git diff --check and a targeted BE compile.
  • Scope/clarity: The change is small and focused: one loop condition rewrite plus one workflow setup step.
  • Concurrency/lifecycle: No new shared state, locks, threads, static initialization, or lifecycle-sensitive objects are introduced.
  • Configuration/compatibility: No Doris runtime config, storage format, FE-BE protocol, or rolling-upgrade compatibility change is involved.
  • Parallel paths: The JSON insert/set/replace implementation is templated through the same modified path, so the fix applies to all three modify variants.
  • Conditions/error handling: The new non-subtractive loop avoids the underflow path; DCHECK_GT(legs_count, 0) is consistent with the insert-parent invariant and root paths do not enter that branch for set/replace. Status-returning calls remain checked.
  • Test coverage/results: No new regression output is added, but the existing JSON modify suites cover root and invalid path behavior; I also verified the PR diff with git diff --check.
  • Observability/performance: No new observability is needed for this local arithmetic fix; the cached leg count removes repeated size lookup and does not add meaningful overhead.
  • Data correctness/transactions/persistence: The PR does not affect storage visibility, transaction processing, persistence, delete bitmaps, or data write atomicity.

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

@mrhhsg mrhhsg force-pushed the fix/json-modify-parent-path branch from 7d2c8c0 to 17bc2ed Compare May 25, 2026 07:57
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 2026

/review

@mrhhsg mrhhsg force-pushed the fix/json-modify-parent-path branch from 17bc2ed to a3cbe49 Compare May 25, 2026 08:06
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 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.

Review result: no blocking issues found. The JSONB change is a focused unsigned-underflow avoidance that preserves the existing root-path behavior because the insert-parent branch is only reached when the target path is not found; existing tests already cover root-path json_insert/json_set/json_replace cases. The macOS workflow change explicitly pins JDK 17 via setup-java and uses Homebrew LLVM before running BE UT, which matches the stated runner failures.\n\nCritical checkpoint conclusions:\n- Goal/test: the PR addresses JSON modify unsigned-size underflow risk and macOS BE UT environment setup; existing JSON modify regression cases cover relevant root and path behavior, and the author reports diff check plus targeted compilation.\n- Scope: changes are small and focused.\n- Concurrency/lifecycle: no new concurrent state, threads, locks, or special object lifecycle introduced.\n- Configuration/compatibility/protocol: no new Doris config, storage format, RPC, or FE-BE protocol compatibility concern.\n- Parallel paths: json_insert/json_set/json_replace share the templated path, so the BE fix applies consistently; workflow change is specific to macOS BE UT.\n- Error handling/memory: no ignored Status introduced; the existing DorisUniqueBufferPtr tracking remains unchanged.\n- Tests/results: no generated result files changed; no additional user focus points were provided.\n- Observability/performance: no new runtime observability need; the cached leg count avoids repeated lookup without changing hot-path semantics.

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 2026

run buildall

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 blocking issue in the macOS BE UT workflow change. The JSON path arithmetic change is small and matches the stated goal; I did not find an additional correctness issue in that code path.

Critical checkpoints:

  • Goal/test proof: The JSON underflow guard is addressed, but the workflow goal is not achieved because the PR's own BE UT (macOS) check still fails.
  • Scope/focus: The code changes are small and focused.
  • Concurrency/lifecycle/config/compatibility/FE-BE protocol: No relevant new concurrency, lifecycle, dynamic config, compatibility, or protocol concerns found.
  • Parallel paths: The workflow now needs consistent runner/toolchain/thirdparty architecture handling; the current path remains broken.
  • Tests/results: Existing CI result shows the changed macOS workflow fails; author manual tests do not cover this workflow end-to-end.
  • Observability/transaction/data writes: Not applicable.
  • Performance: No relevant performance concern found.

User focus: No additional user-provided review focus was specified.

tar -xvf doris-thirdparty-prebuilt-darwin-x86_64.tar.xz
popd

export JAVA_HOME="${JAVA_HOME_17_X64%\/}"
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 workflow still fails on the PR check after this change. The log for BE UT (macOS) shows the macos-15 runner is arm64 (/opt/homebrew, ARM_MARCH is armv8-a+crc, Temurin path under arm64), and these new exports make CMake configure a native arm64 clang build. However the job still downloads and extracts doris-thirdparty-prebuilt-darwin-x86_64.tar.xz, and the build then stops with ninja: error: .../thirdparty/installed/lib64/libarrow_dataset.a, needed by 'test/doris_be_test', missing and no known rule to make it. So the workflow fix is incomplete: please either run this job on an Intel macOS label / x86_64 toolchain, or switch the downloaded third-party archive and toolchain setup to the matching arm64 package so ./run-be-ut.sh can actually build.

### What problem does this PR solve?

Issue Number: None

Problem Summary: The macOS BE UT workflow relies on `JAVA_HOME_17_X64` before running `run-be-ut.sh`. On the current macOS runner the job resolves Java 25 instead, and the BE UT script rejects it because the build requires JDK 17. After switching Java, the job also needs the Homebrew LLVM toolchain to make OpenMP detection succeed, and arm64 runners must download the matching darwin-arm64 third-party archive instead of the x86_64 archive. Set up Temurin JDK 17 explicitly, point Doris to Homebrew LLVM, and select the Darwin third-party archive by runner architecture.

### Release note

None

### Check List (For Author)

- Test:
    - Manual test: `git diff --check`
    - Manual test: `DORIS_HOME=/mnt/disk7/hushenggang/doris-fix-spill ninja -C be/ut_build_ASAN -j 1 src/exprs/CMakeFiles/Exprs.dir/function/function_jsonb.cpp.o`
- Behavior changed: No
- Does this need documentation: No
@mrhhsg mrhhsg force-pushed the fix/json-modify-parent-path branch from a3cbe49 to de24ddc Compare May 25, 2026 08:13
@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 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.

Review result: no new blocking issues found in the current GitHub PR diff.

Critical checkpoint conclusions:

  • Goal and proof: the PR targets unsigned underflow avoidance in jsonb_modify path handling and macOS BE UT runner setup. The JSONB change is a minimal equivalent loop rewrite, and the workflow now selects Java 17, Homebrew LLVM, and the Darwin third-party archive by runner architecture. Evidence is limited to the author-reported compile/diff checks; no end-to-end BE UT result is included.
  • Scope: changes are small and focused.
  • Concurrency: no new concurrent code or shared mutable lifecycle was introduced.
  • Lifecycle/static initialization: no new static/global initialization dependency was introduced.
  • Configuration: no Doris runtime config item was added.
  • Compatibility/storage format: no protocol, persisted metadata, or storage-format compatibility change was introduced.
  • Parallel paths: no additional JSON modify registration path appears to need the same local loop change beyond this shared implementation.
  • Conditional checks: the new DCHECK_GT(legs_count, 0) is on the insert-parent branch; findValue() returns the root for empty paths, so that branch should only execute for non-empty paths.
  • Tests: test coverage is weak for the workflow fix because the PR does not show a successful macOS BE UT run, but I did not find a distinct code issue beyond the existing review thread context.
  • Observability: not applicable; no runtime behavior requiring new logs/metrics.
  • Transaction/persistence/data writes: not applicable.
  • FE-BE variable passing: not applicable.
  • Performance: no meaningful regression found; the JSONB loop now caches the leg count once.

Existing review context: I read the existing inline thread about the macOS job previously downloading the x86_64 third-party archive on an arm64 runner. The current PR diff now selects doris-thirdparty-prebuilt-darwin-${arch}.tar.xz, so I did not duplicate that already-known concern.

User focus: no additional user-provided review focus was specified.

@mrhhsg
Copy link
Copy Markdown
Member Author

mrhhsg commented May 25, 2026

run buildall

@hello-stephen
Copy link
Copy Markdown
Contributor

TPC-H: Total hot run time: 31863 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit de24ddcd1f296d6d760be7965723fef26c97e009, 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	17709	4277	4228	4228
q2	q3	10842	1382	857	857
q4	4685	479	354	354
q5	7596	2309	2162	2162
q6	255	176	139	139
q7	979	771	661	661
q8	9414	1860	1603	1603
q9	6776	4978	5044	4978
q10	6447	2237	1861	1861
q11	449	274	255	255
q12	701	436	299	299
q13	18202	3412	2833	2833
q14	278	266	237	237
q15	q16	827	789	716	716
q17	1045	947	957	947
q18	6856	5950	5611	5611
q19	1195	1303	1104	1104
q20	529	415	275	275
q21	5880	2716	2422	2422
q22	452	375	321	321
Total cold run time: 101117 ms
Total hot run time: 31863 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	4685	4579	4502	4502
q2	q3	4618	4984	4406	4406
q4	2236	2333	1467	1467
q5	4570	4386	5400	4386
q6	277	206	156	156
q7	2000	1892	1634	1634
q8	2626	2360	2373	2360
q9	8167	8126	8061	8061
q10	5031	4788	4326	4326
q11	662	426	436	426
q12	784	758	593	593
q13	3365	3760	3058	3058
q14	329	319	279	279
q15	q16	749	756	654	654
q17	1429	1396	1378	1378
q18	8045	7458	7049	7049
q19	1168	1136	1100	1100
q20	2252	2239	1968	1968
q21	5531	4807	4744	4744
q22	549	491	411	411
Total cold run time: 59073 ms
Total hot run time: 52958 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

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

query5	4337	671	534	534
query6	338	221	210	210
query7	4394	608	315	315
query8	343	248	238	238
query9	8866	4277	4224	4224
query10	462	340	308	308
query11	5826	2831	2300	2300
query12	187	138	127	127
query13	1286	638	420	420
query14	6228	5615	5321	5321
query14_1	4625	4647	4601	4601
query15	222	215	191	191
query16	965	465	440	440
query17	1172	794	648	648
query18	2492	521	382	382
query19	237	219	176	176
query20	143	145	138	138
query21	222	150	129	129
query22	13709	13748	13486	13486
query23	17469	16539	16328	16328
query23_1	16404	16430	16465	16430
query24	7564	1834	1329	1329
query24_1	1347	1347	1357	1347
query25	610	533	468	468
query26	1302	346	180	180
query27	2676	602	349	349
query28	4431	2065	2032	2032
query29	1029	680	528	528
query30	316	246	214	214
query31	1164	1088	958	958
query32	88	79	76	76
query33	560	367	316	316
query34	1193	1145	664	664
query35	831	809	711	711
query36	1432	1395	1300	1300
query37	153	106	90	90
query38	3298	3163	3139	3139
query39	970	931	932	931
query39_1	917	903	910	903
query40	231	160	125	125
query41	66	67	64	64
query42	113	111	114	111
query43	348	348	309	309
query44	
query45	226	210	207	207
query46	1140	1241	741	741
query47	2422	2427	2243	2243
query48	412	436	294	294
query49	638	497	413	413
query50	981	346	256	256
query51	4410	4379	4287	4287
query52	105	110	96	96
query53	264	282	206	206
query54	308	275	257	257
query55	100	92	89	89
query56	309	305	307	305
query57	1448	1421	1293	1293
query58	303	274	274	274
query59	1631	1706	1516	1516
query60	323	344	310	310
query61	162	148	157	148
query62	698	653	584	584
query63	246	204	216	204
query64	2401	789	626	626
query65	
query66	1714	495	381	381
query67	30227	30156	29368	29368
query68	
query69	479	371	313	313
query70	1073	1010	985	985
query71	300	276	283	276
query72	2952	2751	2434	2434
query73	879	770	426	426
query74	5181	4970	4796	4796
query75	2687	2726	2287	2287
query76	2289	1155	785	785
query77	414	415	347	347
query78	12288	12591	11887	11887
query79	1518	1082	742	742
query80	773	553	456	456
query81	475	282	240	240
query82	1329	161	124	124
query83	368	291	253	253
query84	265	145	115	115
query85	934	539	451	451
query86	455	367	331	331
query87	3446	3421	3263	3263
query88	3659	2769	2760	2760
query89	455	390	344	344
query90	1764	183	181	181
query91	179	168	141	141
query92	79	80	76	76
query93	1517	1567	895	895
query94	624	368	315	315
query95	670	378	362	362
query96	1059	881	377	377
query97	2775	2730	2615	2615
query98	240	225	231	225
query99	1202	1153	1035	1035
Total cold run time: 256453 ms
Total hot run time: 173582 ms

@hello-stephen
Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 0.00% (0/3) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 53.80% (20873/38797)
Line Coverage 37.37% (197678/528937)
Region Coverage 33.68% (154882/459924)
Branch Coverage 34.67% (67433/194478)

@hello-stephen
Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100.00% (3/3) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.79% (28029/37987)
Line Coverage 57.74% (304592/527488)
Region Coverage 54.94% (255028/464165)
Branch Coverage 56.44% (110127/195128)

@mrhhsg mrhhsg marked this pull request as ready for review May 26, 2026 06:39
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