Skip to content

[util](column)Use ColumnView to automatically handle Nullable and Const.#60575

Open
Mryange wants to merge 1 commit intoapache:masterfrom
Mryange:column-view-util
Open

[util](column)Use ColumnView to automatically handle Nullable and Const.#60575
Mryange wants to merge 1 commit intoapache:masterfrom
Mryange:column-view-util

Conversation

@Mryange
Copy link
Contributor

@Mryange Mryange commented Feb 6, 2026

What problem does this PR solve?

For example, a regular ColumnInt32 may appear in the following four cases:

  1. ColumnInt32
  2. Const(ColumnInt32)
  3. Nullable(ColumnInt32)
  4. Const(Nullable(ColumnInt32)) (although this case is rare, it can still occur; many of our previous implementations did not consider this)

Here we provide a utility class that automatically handles const/nullable columns.

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • 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

@Mryange Mryange requested a review from zclllyybb as a code owner February 6, 2026 09:48
@Thearas
Copy link
Contributor

Thearas commented Feb 6, 2026

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@Mryange
Copy link
Contributor Author

Mryange commented Feb 6, 2026

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17609	4426	4277	4277
q2	2051	357	239	239
q3	10162	1318	717	717
q4	10197	807	312	312
q5	7528	2180	1978	1978
q6	204	180	148	148
q7	910	726	605	605
q8	9265	1413	1200	1200
q9	4745	4635	4625	4625
q10	6837	1941	1551	1551
q11	539	308	292	292
q12	386	387	226	226
q13	17792	4037	3265	3265
q14	236	240	217	217
q15	890	814	812	812
q16	682	688	608	608
q17	698	794	571	571
q18	6813	5958	6214	5958
q19	1123	1041	665	665
q20	544	528	405	405
q21	2790	1980	1928	1928
q22	366	323	284	284
Total cold run time: 102367 ms
Total hot run time: 30883 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4566	4585	4670	4585
q2	261	355	252	252
q3	2319	2894	2520	2520
q4	1459	1837	1432	1432
q5	4877	4486	4520	4486
q6	241	190	136	136
q7	2254	1856	1797	1797
q8	2598	2412	2497	2412
q9	7599	7483	7505	7483
q10	2839	3052	2755	2755
q11	550	470	459	459
q12	685	737	618	618
q13	3763	4420	3442	3442
q14	284	293	271	271
q15	818	770	772	770
q16	634	710	636	636
q17	1119	1263	1314	1263
q18	7535	7351	7340	7340
q19	842	791	787	787
q20	1941	2067	1944	1944
q21	4522	4166	4100	4100
q22	570	548	506	506
Total cold run time: 52276 ms
Total hot run time: 49994 ms

@doris-robot
Copy link

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

query1	0.06	0.05	0.05
query2	0.10	0.04	0.05
query3	0.25	0.08	0.09
query4	1.62	0.11	0.11
query5	0.27	0.24	0.26
query6	1.16	0.67	0.67
query7	0.03	0.03	0.03
query8	0.05	0.04	0.03
query9	0.58	0.51	0.49
query10	0.54	0.55	0.55
query11	0.13	0.10	0.10
query12	0.14	0.11	0.10
query13	0.63	0.61	0.64
query14	1.07	1.06	1.07
query15	0.87	0.85	0.88
query16	0.39	0.38	0.40
query17	1.14	1.09	1.16
query18	0.22	0.21	0.20
query19	2.04	1.91	2.01
query20	0.02	0.02	0.01
query21	15.40	0.28	0.15
query22	5.06	0.06	0.04
query23	15.81	0.30	0.11
query24	1.58	0.42	0.48
query25	0.10	0.14	0.06
query26	0.14	0.14	0.13
query27	0.07	0.05	0.06
query28	4.48	1.14	0.96
query29	12.62	3.99	3.21
query30	0.27	0.13	0.12
query31	2.83	0.64	0.40
query32	3.25	0.59	0.50
query33	3.23	3.26	3.23
query34	16.36	5.41	4.68
query35	4.80	4.83	4.76
query36	0.65	0.49	0.48
query37	0.11	0.08	0.07
query38	0.08	0.04	0.04
query39	0.05	0.03	0.03
query40	0.19	0.17	0.16
query41	0.08	0.03	0.03
query42	0.04	0.03	0.03
query43	0.05	0.04	0.03
Total cold run time: 98.56 s
Total hot run time: 28.29 s

@doris-robot
Copy link

BE UT Coverage Report

Increment line coverage 93.44% (114/122) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 52.60% (19405/36890)
Line Coverage 36.11% (180518/499880)
Region Coverage 32.46% (139947/431186)
Branch Coverage 33.47% (60596/181053)

@hello-stephen
Copy link
Contributor

BE Regression && UT Coverage Report

Increment line coverage 94.83% (110/116) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 73.32% (26506/36150)
Line Coverage 56.39% (281170/498652)
Region Coverage 54.02% (235312/435563)
Branch Coverage 55.76% (101341/181757)

@github-actions
Copy link
Contributor

github-actions bot commented Feb 7, 2026

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

@github-actions github-actions bot added approved Indicates a PR has been approved by one committer. reviewed labels Feb 7, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Feb 7, 2026

PR approved by anyone 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.

5 participants