Skip to content

[refine](storage) Strengthen enum type safety in storage code - #69287

Merged
yiguolei merged 1 commit into
apache:masterfrom
Mryange:refine-be-enum-types-other-modules
Oct 22, 2026
Merged

yiguolei merged 1 commit into
apache:masterfrom
Mryange:refine-be-enum-types-other-modules

Conversation

@Mryange

@Mryange Mryange commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

Issue Number: N/A

Related PR: #69174

Problem Summary:

Unscoped enums and integer fields used for storage states, character categories, compaction triggers, and binlog operations allow unintended implicit conversions and mixing unrelated values. Use scoped enums throughout these paths, store enum values in typed fields and containers, and convert explicitly at serialization, indexing, and logging boundaries. Replace anonymous size enums with constexpr constants and the IK dictionary's binary node state with a bool.

Persisted numeric values and storage formats remain unchanged. Keep compatibility constants and compaction-type stream output so Cloud source and tests do not need changes.

Release note

None

Check List (For Author)

  • Test
    • Regression test
    • Unit Test
    • Manual test: BUILD_TYPE=ASAN bash ./build.sh --be -j48 passed. Header hygiene and diff whitespace checks passed. Existing unit tests were adapted but not run.
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
  • Behavior changed:
    • No.
    • Yes.
  • Does this need documentation?
    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

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

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

@Mryange

Mryange commented Oct 19, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot left a comment

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.

Reviewed all 102 changed paths at f8f18a6 using the supplied aggregate diff, the repository review skill, and the applicable AGENTS.md guides. No actionable introduced defect was found in this static review. There were no existing inline threads to carry forward and no additional user focus points.

The review followed the complete binlog path (historical operation derivation, Int64 persistence, DETAIL/MIN_DELTA output), tokenizer dictionary construction and consumption, RocksDB column-family access, and local/Cloud tablet and compaction consumers.

Critical checkpoint Conclusion
Goal and evidence Scoped enums and typed fields replace implicit integer mixing. Existing unit cases were adapted for binlog codes, invalid operations, historical retrieval, metadata access, scan ranges and Kuromoji categories; runtime proof was not obtained in this static-only invocation.
Scope and clarity The broad caller updates are necessary for the enum changes. Small shared headers isolate binlog and trigger types; no unrelated functional change identified.
Concurrency and locks No threads, lock acquisitions, critical sections or atomic ordering changed. Tablet/rowset and schema-change state checks retain their original conditions and lock scope.
Lifecycle and initialization Rowset acquire/release and delayed close transitions, dictionary ownership and tokenizer resets retain their behavior. New compatibility constants are constexpr; no new cross-TU initialization dependency found.
Configuration and dynamic updates No configuration items added or changed.
Symbols, storage and upgrade compatibility Persisted binlog values and int64 width, uint8 Kuromoji category ordinals, explicit protobuf tablet-state mappings and file-header versions remain stable. Compaction/tablet compatibility aliases preserve unchanged Cloud consumers; compaction ostream output is retained. No externally exchanged structure changed.
Thrift/protobuf definitions No gensrc changes.
Parallel and special-case paths Reviewed local/Cloud callers, manual/automatic/load-triggered compaction, plain/MoW/fixed/flexible binlog derivation, DETAIL/MIN_DELTA and IK/Kuromoji/pinyin/ngram/standard tokenizers. No missed migration found.
Conditions and error propagation Changed comparisons preserve their predicates. Invalid/null binlog fallback, dictionary category validation and page-size checks remain equivalent; no introduced silent failure found.
Test coverage Inspected all changed tests and relevant unchanged consumers. Positive and negative operation/category checks remain intact; no new runtime behavior requiring a separate feature test identified.
Expected test results Assertions retain their expected values with enum qualifiers or explicit casts. No regression output files changed.
Observability Numeric logging and compaction trigger labels are preserved; this refactor adds no execution path needing new metrics. Enum formatting is supported by the pinned fmt 7.1.3 argument mapper.
Transactions and persistence Tablet state serialization/recovery and column-family ordinals remain equivalent; transaction prepare/commit/publish behavior is unchanged. No FE EditLog change.
Writes, atomicity and crash recovery Binlog operation selection and emitted numeric values remain unchanged; no added write ordering, durability or cleanup step. No new crash window identified.
FE/BE variable transport No transported variables or protocol fields added.
Performance and memory safety Enum storage widths in persisted/category paths remain fixed; no added allocations, copies or scans. Page header constants remain 4/16 bytes and positive type-size arithmetic preserves normal page bounds.
Other/module obligations Header layering, include budgets, PCH whitelist, extern-template pairing and unity-skip checks passed using the read-only build-hygiene script. No dependency/linker changes or new libc API use; release ELF compatibility was not audited.

Validation and limits: static source/call-chain inspection plus bash build-support/check-build-hygiene.sh; no build, unit test, regression test or runtime validation was performed, as required by the review contract. The PR author's build claim was not independently reproduced. These execution limits are distinct from convergence of the static review.

Convergence: all three assigned reviewers returned NO_NEW_VALUABLE_FINDINGS in round 1 on the unchanged empty finding set. All changed paths and initial risk items have evidence-backed dispositions; no unresolved static question or uncovered changed path remains.

Review converged after 1 round(s).

@Mryange

Mryange commented Oct 19, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17629	5192	5082	5082
q2	2115	314	259	259
q3	10218	1418	824	824
q4	4680	464	335	335
q5	7437	792	526	526
q6	179	183	152	152
q7	740	785	593	593
q8	9259	1369	1098	1098
q9	5512	4228	4211	4211
q10	6833	1292	1015	1015
q11	435	245	222	222
q12	637	407	279	279
q13	18115	3517	3052	3052
q14	288	272	252	252
q15	q16	737	742	652	652
q17	1216	762	569	569
q18	7119	6179	6108	6108
q19	1093	964	596	596
q20	374	333	237	237
q21	5341	2172	2301	2172
q22	348	312	261	261
Total cold run time: 100305 ms
Total hot run time: 28495 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5624	5630	5764	5630
q2	708	608	504	504
q3	5216	5382	4935	4935
q4	2012	2151	1536	1536
q5	5304	5188	5634	5188
q6	257	191	157	157
q7	2292	2102	1874	1874
q8	3044	2667	2639	2639
q9	8115	7964	8040	7964
q10	3763	3631	3526	3526
q11	614	438	439	438
q12	684	700	510	510
q13	3450	3927	3215	3215
q14	310	327	308	308
q15	q16	707	768	667	667
q17	8312	7398	6922	6922
q18	13044	12167	12890	12167
q19	939	805	782	782
q20	2159	2166	1914	1914
q21	5673	4631	4665	4631
q22	508	457	417	417
Total cold run time: 72735 ms
Total hot run time: 65924 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 151014 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 f8f18a64cc066983bc5c143d0f194361272e2b1b, data reload: false

query5	4304	578	452	452
query6	432	201	190	190
query7	4802	441	224	224
query8	313	168	149	149
query9	8764	3129	3115	3115
query10	478	328	258	258
query11	6024	3852	3569	3569
query12	143	100	86	86
query13	1255	461	316	316
query14	6091	3917	3627	3627
query14_1	3470	3452	3423	3423
query15	225	191	182	182
query16	949	449	412	412
query17	852	667	548	548
query18	2405	418	295	295
query19	187	154	129	129
query20	81	86	80	80
query21	206	120	103	103
query22	13045	12956	12903	12903
query23	13512	12742	12539	12539
query23_1	12616	12759	12737	12737
query24	7391	813	458	458
query24_1	476	460	458	458
query25	531	393	338	338
query26	1261	256	134	134
query27	2791	438	266	266
query28	4625	1954	1934	1934
query29	1525	584	426	426
query30	295	220	185	185
query31	1011	928	812	812
query32	134	88	88	88
query33	514	293	234	234
query34	906	842	485	485
query35	744	744	647	647
query36	799	849	733	733
query37	129	103	80	80
query38	1765	1741	1633	1633
query39	795	800	737	737
query39_1	724	720	734	720
query40	217	116	92	92
query41	65	63	60	60
query42	85	80	80	80
query43	336	357	307	307
query44	1336	686	688	686
query45	181	180	166	166
query46	846	965	558	558
query47	2983	2896	2875	2875
query48	317	322	227	227
query49	590	399	313	313
query50	680	275	209	209
query51	10426	10219	10162	10162
query52	78	80	70	70
query53	195	211	148	148
query54	241	187	198	187
query55	72	72	63	63
query56	228	208	206	206
query57	1665	1608	1570	1570
query58	304	252	249	249
query59	2057	2077	1917	1917
query60	281	232	221	221
query61	146	147	139	139
query62	387	348	286	286
query63	192	159	160	159
query64	2715	920	755	755
query65	3296	3274	3277	3274
query66	1758	417	294	294
query67	20200	20282	20099	20099
query68	3130	1037	614	614
query69	394	292	236	236
query70	848	768	764	764
query71	301	237	211	211
query72	2876	2726	2475	2475
query73	523	531	295	295
query74	4650	4518	4305	4305
query75	2317	2284	1910	1910
query76	2317	1022	594	594
query77	355	383	262	262
query78	9816	9655	9198	9198
query79	1070	868	518	518
query80	523	415	333	333
query81	541	315	273	273
query82	575	133	104	104
query83	317	200	177	177
query84	316	126	103	103
query85	815	429	374	374
query86	313	236	231	231
query87	1995	1954	1819	1819
query88	3677	2693	2671	2671
query89	321	276	241	241
query90	1904	168	170	168
query91	165	150	124	124
query92	98	89	87	87
query93	1023	1005	619	619
query94	446	315	278	278
query95	562	381	301	301
query96	678	487	234	234
query97	2410	2442	2305	2305
query98	164	147	146	146
query99	772	761	653	653
Total cold run time: 234455 ms
Total hot run time: 151014 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.27 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit f8f18a64cc066983bc5c143d0f194361272e2b1b, data reload: false

query1	0.01	0.01	0.00
query2	0.09	0.05	0.05
query3	0.26	0.09	0.09
query4	1.60	0.10	0.10
query5	0.23	0.24	0.24
query6	1.17	0.69	0.67
query7	0.03	0.01	0.01
query8	0.05	0.03	0.04
query9	0.40	0.35	0.36
query10	0.57	0.57	0.56
query11	0.19	0.14	0.15
query12	0.18	0.15	0.15
query13	0.47	0.50	0.49
query14	1.03	1.01	1.00
query15	0.65	0.61	0.61
query16	0.34	0.35	0.36
query17	1.12	1.14	1.16
query18	0.20	0.18	0.19
query19	2.10	1.92	1.90
query20	0.02	0.01	0.01
query21	15.49	0.18	0.13
query22	4.95	0.06	0.05
query23	16.27	0.32	0.12
query24	3.05	0.70	0.46
query25	0.12	0.06	0.04
query26	1.33	0.24	0.15
query27	0.04	0.03	0.04
query28	3.22	0.73	0.36
query29	12.49	4.10	3.24
query30	0.28	0.15	0.10
query31	2.77	0.56	0.32
query32	3.22	0.60	0.51
query33	3.17	3.25	3.19
query34	15.39	3.99	3.39
query35	3.34	3.36	3.37
query36	0.54	0.45	0.41
query37	0.09	0.06	0.07
query38	0.05	0.04	0.04
query39	0.04	0.03	0.03
query40	0.16	0.14	0.15
query41	0.08	0.03	0.02
query42	0.03	0.02	0.02
query43	0.04	0.04	0.03
Total cold run time: 96.87 s
Total hot run time: 24.27 s

@Mryange

Mryange commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

HappenLee
HappenLee previously approved these changes Oct 20, 2026

@HappenLee HappenLee left a comment

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.

LGTM. The scoped-enum / typed-field refactor is mechanical and well-scoped; persisted values and Cloud compatibility are preserved. Approved.

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17603	5173	5044	5044
q2	2196	313	265	265
q3	10188	1422	819	819
q4	4685	466	331	331
q5	7440	802	528	528
q6	182	186	155	155
q7	772	795	599	599
q8	9254	1331	1020	1020
q9	5462	4162	4158	4158
q10	6829	1306	1004	1004
q11	447	252	219	219
q12	639	400	285	285
q13	18108	3648	3017	3017
q14	282	271	241	241
q15	q16	743	732	661	661
q17	1241	750	587	587
q18	7131	6193	6173	6173
q19	1124	961	587	587
q20	394	331	225	225
q21	5443	2502	2470	2470
q22	389	333	275	275
Total cold run time: 100552 ms
Total hot run time: 28663 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5978	5924	6104	5924
q2	738	586	541	541
q3	5677	5648	5283	5283
q4	2014	2162	1552	1552
q5	5878	5869	5742	5742
q6	243	190	144	144
q7	2265	1962	1795	1795
q8	3038	2610	2555	2555
q9	7967	7948	7717	7717
q10	3642	3582	3135	3135
q11	591	409	377	377
q12	662	668	505	505
q13	3236	3571	3037	3037
q14	285	302	260	260
q15	q16	668	673	615	615
q17	7722	7072	6908	6908
q18	13027	12231	12903	12231
q19	904	782	782	782
q20	2150	2161	1918	1918
q21	5599	4573	4655	4573
q22	487	462	413	413
Total cold run time: 72771 ms
Total hot run time: 66007 ms

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 68.70% (90/131) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 66.40% (31762/47835)
Line Coverage 51.15% (334464/653868)
Region Coverage 46.48% (270188/581292)
Branch Coverage 48.24% (127383/264049)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 150089 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 f8f18a64cc066983bc5c143d0f194361272e2b1b, data reload: false

query5	4309	596	435	435
query6	438	213	195	195
query7	4806	467	228	228
query8	311	168	159	159
query9	8777	3079	3084	3079
query10	470	323	264	264
query11	5905	3837	3555	3555
query12	154	91	86	86
query13	1256	435	314	314
query14	6123	3870	3643	3643
query14_1	3439	3426	3346	3346
query15	213	206	182	182
query16	976	468	390	390
query17	838	641	504	504
query18	2405	419	296	296
query19	193	159	152	152
query20	81	80	80	80
query21	211	124	109	109
query22	12967	12930	12701	12701
query23	13539	12799	12482	12482
query23_1	12500	12396	12521	12396
query24	7409	811	441	441
query24_1	462	464	455	455
query25	506	397	324	324
query26	1263	254	138	138
query27	2774	434	262	262
query28	4623	1923	1933	1923
query29	1562	576	428	428
query30	302	221	180	180
query31	1010	919	813	813
query32	209	90	92	90
query33	520	292	232	232
query34	882	843	479	479
query35	731	754	644	644
query36	833	812	734	734
query37	117	91	82	82
query38	1769	1700	1663	1663
query39	801	811	733	733
query39_1	722	727	745	727
query40	217	116	94	94
query41	67	62	62	62
query42	88	84	79	79
query43	342	353	305	305
query44	1310	671	685	671
query45	175	186	160	160
query46	832	946	567	567
query47	2720	2873	2942	2873
query48	290	309	215	215
query49	581	393	296	296
query50	665	276	206	206
query51	10414	10428	10191	10191
query52	79	79	79	79
query53	184	217	150	150
query54	259	186	187	186
query55	70	68	65	65
query56	233	221	205	205
query57	1633	1594	1564	1564
query58	304	267	260	260
query59	2085	2161	1992	1992
query60	368	241	228	228
query61	150	148	150	148
query62	395	327	276	276
query63	187	152	156	152
query64	2887	1085	881	881
query65	3340	3274	3269	3269
query66	1808	444	314	314
query67	20051	19915	20240	19915
query68	2924	1005	610	610
query69	418	304	260	260
query70	876	767	777	767
query71	304	237	197	197
query72	2866	2738	2388	2388
query73	543	513	297	297
query74	4611	4506	4349	4349
query75	2361	2293	1878	1878
query76	2307	999	578	578
query77	331	359	266	266
query78	9954	9641	9067	9067
query79	1489	840	514	514
query80	1246	441	353	353
query81	612	302	271	271
query82	994	128	104	104
query83	307	188	186	186
query84	318	127	103	103
query85	872	433	364	364
query86	487	242	225	225
query87	2005	1961	1815	1815
query88	3825	2702	2629	2629
query89	356	272	241	241
query90	1913	167	161	161
query91	173	148	123	123
query92	100	91	89	89
query93	1155	986	581	581
query94	891	301	260	260
query95	563	326	360	326
query96	656	486	236	236
query97	2464	2448	2350	2350
query98	158	152	145	145
query99	770	764	653	653
Total cold run time: 236752 ms
Total hot run time: 150089 ms

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 79.39% (104/131) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.16% (35767/46352)
Line Coverage 62.39% (403596/646876)
Region Coverage 58.84% (340786/579206)
Branch Coverage 59.79% (157491/263408)

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.31 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit f8f18a64cc066983bc5c143d0f194361272e2b1b, data reload: false

query1	0.01	0.01	0.01
query2	0.10	0.04	0.04
query3	0.26	0.08	0.08
query4	1.61	0.10	0.10
query5	0.24	0.24	0.25
query6	1.17	0.68	0.66
query7	0.04	0.01	0.01
query8	0.06	0.04	0.04
query9	0.39	0.36	0.34
query10	0.57	0.58	0.60
query11	0.20	0.14	0.14
query12	0.18	0.14	0.14
query13	0.50	0.50	0.49
query14	1.05	1.02	1.01
query15	0.62	0.60	0.62
query16	0.34	0.34	0.34
query17	1.17	1.09	1.16
query18	0.21	0.19	0.19
query19	2.06	1.98	1.92
query20	0.02	0.02	0.01
query21	15.51	0.19	0.13
query22	4.88	0.06	0.06
query23	16.28	0.33	0.12
query24	3.27	0.60	0.43
query25	0.13	0.06	0.08
query26	0.84	0.21	0.16
query27	0.04	0.02	0.05
query28	3.03	0.70	0.37
query29	12.51	4.24	3.28
query30	0.28	0.13	0.09
query31	2.77	0.56	0.32
query32	3.22	0.59	0.49
query33	3.11	3.31	3.25
query34	15.34	4.01	3.38
query35	3.38	3.34	3.33
query36	0.57	0.48	0.43
query37	0.09	0.06	0.06
query38	0.05	0.04	0.04
query39	0.04	0.04	0.03
query40	0.17	0.16	0.15
query41	0.08	0.03	0.02
query42	0.04	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 96.47 s
Total hot run time: 24.31 s

yiguolei
yiguolei previously approved these changes Oct 21, 2026
csun5285
csun5285 previously approved these changes Oct 21, 2026
Issue Number: N/A

Related PR: apache#69174

Problem Summary: Use scoped enums and typed fields for storage states,
character categories, compaction triggers, and binlog operations to prevent
implicit integer conversions and mixing unrelated values. Preserve persisted
values and Cloud source compatibility; adapt callers and existing tests.

None

- Test: ASAN BE build, header hygiene, and diff whitespace checks passed.
  Existing unit tests were adapted but not run.
- Behavior changed: No
- Does this need documentation: No
@Mryange
Mryange dismissed stale reviews from csun5285, yiguolei, and HappenLee via 4052eba October 21, 2026 08:09
@Mryange
Mryange force-pushed the refine-be-enum-types-other-modules branch from f8f18a6 to 4052eba Compare October 21, 2026 08:09
@yiguolei

Copy link
Copy Markdown
Contributor

run buildall

@liaoxin01 liaoxin01 left a comment

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.

LGTM

@Mryange

Mryange commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot left a comment

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.

Static review of PR #69287 at 4052eba: no new actionable findings and no existing inline findings to carry forward. All 102 changed paths were covered (71 storage/execution/test paths and 31 tokenizer/dictionary/test paths), with a separate review of the three initial risk areas. All three reviewers returned NO_NEW_VALUABLE_FINDINGS on the unchanged empty inline set. The review converged in 1 round; no unresolved code candidates or source-coverage gaps remain.

Critical checkpoint conclusions:

  1. Goal and evidence: the scoped-enum migration preserves the examined storage and tokenization behavior. Existing unit tests were adapted; the author reports an ASAN BE build, while unit tests were not run. This review performed static analysis only.
  2. Scope and clarity: the broad consumer updates are required by the type migration; the two new headers contain only lightweight enum definitions. No unrelated functional change found.
  3. Concurrency: existing scanner, compaction, tablet, transaction and schema-change synchronization is unchanged; no new threads, lock ordering, blocking operations or heavy critical-section work found.
  4. Lifecycle and initialization: rowset load/close/release, tablet shutdown and dictionary ownership remain equivalent. New compatibility constants use constant initialization; no new cross-translation-unit dynamic initialization dependency.
  5. Configuration: none added or changed; dynamic reconfiguration is unaffected.
  6. Compatibility: changelog BIGINT operation values, file-header versions, RocksDB column-family slots, tablet protobuf mappings and Kuromoji bytes remain stable. Cloud compatibility aliases and numeric stream output preserve unchanged callers. Direct enum formatting is supported by the repository-pinned fmt 7.1.3 enum mapper. No dependency or linker changes introduce a new libc requirement; release artifacts were not built or audited.
  7. Thrift/protobuf definitions: no gensrc changes, so cross-branch field-ID review is not applicable.
  8. Parallel paths: checked local/Cloud compaction and tablet callers, plain/fixed/flexible changelog writes, DETAIL/MIN_DELTA reads, all changed tokenizer families, and dictionary producer/reader paths. No missed corresponding update found.
  9. Conditions and errors: changed conditions retain the same enum meanings; invalid/null operation fallbacks and page-header guards are preserved. No new swallowed error or speculative recovery branch found.
  10. Test coverage: existing tests retain the operation transition matrix, invalid/extreme operations, pending batches, cross-rowset folding, partial updates, historical deletes, dictionary round trips and invalid-category rejection. Builds and tests were prohibited by this review contract and were not executed.
  11. Expected results: no regression .out files changed; modified unit assertions preserve their numeric/category expectations.
  12. Observability: enum logs and compaction trigger labels retain existing values and identifiers; no new operational path requires additional instrumentation.
  13. Transactions, persistence and failover: column-family descriptor order, write batches, persisted state mappings, publish/delete-bitmap gates and visibility checks remain unchanged; no new replay/failover obligation identified.
  14. Writes, atomicity and crashes: operation columns still receive the same int64 values; transaction, rowset publication, cleanup and crash boundaries are unchanged.
  15. FE/BE transport: no new transmitted variable or protocol sending point.
  16. Performance and memory: fixed-width operation/category vectors preserve their element widths; no new scans, allocations or ownership edges found. Page-size arithmetic is equivalent for valid pages; widened plain-page products avoid prior 32-bit overflow on malformed counts.
  17. Other issues: IK's bool replaces only reachable binary trie states, Pinyin's removed status field had no readers, and standard-tokenizer EOF/token values are preserved. No additional substantiated issue found.

User focus: no additional focus points were supplied. Initial changelog-boundary, unchanged-consumer/persistence, and unsigned-page-arithmetic risks were independently investigated and dismissed with concrete evidence. Validation limit: static review only; no build, unit/regression execution, or release-artifact ABI verification is claimed.

Review converged after 1 round(s).

@hello-stephen

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

------ Round 1 ----------------------------------
============================================
q1	17600	5246	5100	5100
q2	2096	319	269	269
q3	10238	1423	848	848
q4	4679	468	344	344
q5	7432	815	564	564
q6	187	188	162	162
q7	752	801	620	620
q8	9267	1362	1071	1071
q9	5494	4223	4172	4172
q10	6834	1303	1015	1015
q11	439	250	234	234
q12	639	397	288	288
q13	18115	3583	3066	3066
q14	276	271	244	244
q15	q16	750	744	656	656
q17	1226	747	585	585
q18	7041	6214	6162	6162
q19	1240	970	609	609
q20	380	333	225	225
q21	5510	2177	2301	2177
q22	350	304	256	256
Total cold run time: 100545 ms
Total hot run time: 28667 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5644	5632	5628	5628
q2	685	564	546	546
q3	5221	5430	4921	4921
q4	2000	2155	1580	1580
q5	5281	5207	5735	5207
q6	265	205	157	157
q7	2334	2107	1927	1927
q8	3164	2885	2757	2757
q9	8163	8141	8053	8053
q10	3773	3650	3314	3314
q11	602	448	402	402
q12	693	702	520	520
q13	3579	3938	3323	3323
q14	308	319	279	279
q15	q16	690	737	645	645
q17	8366	7510	7319	7319
q18	13010	12171	13007	12171
q19	938	789	784	784
q20	2164	2145	1927	1927
q21	5683	4687	4878	4687
q22	490	458	419	419
Total cold run time: 73053 ms
Total hot run time: 66566 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 151353 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 4052ebaf680d605fdb6869738fbcc40d49284473, data reload: false

query5	4305	581	434	434
query6	427	206	185	185
query7	4803	434	223	223
query8	330	184	155	155
query9	8775	3120	3153	3120
query10	481	325	275	275
query11	6008	3892	3594	3594
query12	145	92	91	91
query13	1256	457	320	320
query14	6110	3993	3679	3679
query14_1	3434	3424	3479	3424
query15	219	204	191	191
query16	927	421	400	400
query17	882	644	527	527
query18	2402	407	305	305
query19	193	179	128	128
query20	84	82	80	80
query21	217	127	117	117
query22	13118	13018	12853	12853
query23	13332	12789	12411	12411
query23_1	12703	12509	12494	12494
query24	7373	803	463	463
query24_1	459	464	463	463
query25	507	392	342	342
query26	1259	268	140	140
query27	2766	434	269	269
query28	4651	1909	1921	1909
query29	1530	583	447	447
query30	304	224	185	185
query31	1019	936	823	823
query32	149	98	97	97
query33	536	308	252	252
query34	988	854	505	505
query35	752	762	671	671
query36	813	831	727	727
query37	120	101	86	86
query38	1766	1730	1702	1702
query39	802	804	748	748
query39_1	736	732	736	732
query40	221	114	96	96
query41	72	73	69	69
query42	90	89	90	89
query43	350	362	317	317
query44	1292	689	691	689
query45	186	182	162	162
query46	830	982	589	589
query47	2956	2829	2834	2829
query48	303	319	223	223
query49	584	417	305	305
query50	685	274	227	227
query51	10464	10447	10213	10213
query52	83	91	76	76
query53	195	209	161	161
query54	254	202	204	202
query55	74	69	66	66
query56	250	239	236	236
query57	1673	1617	1599	1599
query58	292	269	258	258
query59	2113	2152	1928	1928
query60	310	254	239	239
query61	174	172	169	169
query62	390	334	300	300
query63	202	162	172	162
query64	2893	1098	762	762
query65	3350	3307	3288	3288
query66	1766	415	311	311
query67	20645	20424	20288	20288
query68	3226	1012	609	609
query69	381	288	256	256
query70	850	778	786	778
query71	308	241	210	210
query72	2891	2595	2309	2309
query73	510	524	296	296
query74	4667	4558	4392	4392
query75	2342	2302	1941	1941
query76	2392	1007	595	595
query77	345	384	273	273
query78	9822	9826	9173	9173
query79	938	901	510	510
query80	738	429	347	347
query81	571	311	263	263
query82	583	137	102	102
query83	277	192	180	180
query84	313	121	102	102
query85	957	444	382	382
query86	351	237	233	233
query87	1989	1961	1806	1806
query88	3633	2688	2667	2667
query89	331	281	238	238
query90	1710	169	171	169
query91	162	153	127	127
query92	99	89	92	89
query93	1004	980	584	584
query94	502	291	267	267
query95	582	335	312	312
query96	667	473	235	235
query97	2442	2407	2314	2314
query98	160	149	149	149
query99	775	771	638	638
Total cold run time: 235625 ms
Total hot run time: 151353 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.28 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 4052ebaf680d605fdb6869738fbcc40d49284473, data reload: false

query1	0.01	0.01	0.01
query2	0.09	0.05	0.05
query3	0.26	0.09	0.09
query4	1.60	0.10	0.10
query5	0.24	0.24	0.24
query6	1.17	0.68	0.68
query7	0.04	0.00	0.00
query8	0.05	0.04	0.04
query9	0.40	0.35	0.36
query10	0.57	0.59	0.57
query11	0.20	0.14	0.14
query12	0.18	0.15	0.14
query13	0.49	0.50	0.51
query14	1.02	1.02	1.01
query15	0.64	0.61	0.60
query16	0.34	0.36	0.35
query17	1.17	1.12	1.15
query18	0.20	0.21	0.20
query19	2.14	1.93	2.01
query20	0.02	0.01	0.02
query21	15.48	0.22	0.14
query22	4.70	0.05	0.06
query23	16.31	0.34	0.12
query24	2.84	0.46	0.40
query25	0.13	0.06	0.07
query26	1.49	0.21	0.16
query27	0.05	0.05	0.04
query28	3.93	0.72	0.36
query29	12.50	4.17	3.27
query30	0.28	0.13	0.10
query31	2.77	0.57	0.32
query32	3.23	0.59	0.50
query33	3.32	3.21	3.14
query34	15.38	3.98	3.40
query35	3.39	3.33	3.35
query36	0.57	0.42	0.43
query37	0.09	0.06	0.06
query38	0.04	0.04	0.03
query39	0.04	0.03	0.03
query40	0.17	0.15	0.14
query41	0.08	0.03	0.02
query42	0.04	0.03	0.03
query43	0.04	0.03	0.04
Total cold run time: 97.7 s
Total hot run time: 24.28 s

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 79.39% (104/131) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.17% (35855/46461)
Line Coverage 62.40% (404569/648300)
Region Coverage 58.85% (341580/580398)
Branch Coverage 59.79% (157992/264247)

@airborne12 airborne12 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@yiguolei
yiguolei merged commit e11980f into apache:master Oct 22, 2026
42 of 43 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

PR approved by anyone and no changes requested.

@github-actions github-actions Bot added the approved Indicates a PR has been approved by one committer. label Oct 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR approved by at least one committer and no changes requested.

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

Labels

approved Indicates a PR has been approved by one committer. reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants