Skip to content

Conversation

@yujun777
Copy link
Contributor

@yujun777 yujun777 commented Jan 13, 2026

Add more inference rules:

  1. simplify: IsNull AND xx
TA is null and TA > 10  => TA is null and null
TA is null and TA = 10  => TA is null and null
TA is null and TA != 10 => TA is null and null 

then if this expression is in where condition, it will replace null to FALSE, and fold this expression to FALSE

  1. simplify: IsNotNull OR xx
TA is not null or TA > 10  => TA is not null or null
TA is not null or TA = 10 => TA is not null or null
TA is not null or TA != 10 => TA is not null or null

then if this expression is in where condition, it will replace null to FALSE, and fold this expression to TA is not null

  1. simplify: IsNotNull(TA) AND RangeAll(TA) = IsNotNull(TA)
TA is not null and (TA is not null or null) => TA is not null
  1. simplify: IsNull(TA) AND RangeAll(TA) = EmptyValue(TA)
TA is null and (TA is not null or null) = TA is null and null
  1. simplify: IsNotNull(TA) or EmptyValue(TA) = RangeAll(TA)
TA is not null or (TA is null and null) = TA is not null or null
  1. Fix merge compound value bug

if A AND B is FALSE/EmptyValue, A AND (B OR C) = A AND C.

but this has bug, if 'A AND B' is FALSE, the equation is correct.

but if 'A AND B' is EmptyValue and A nullable, the equation maybe still wrong, for example: a > 100 and (a = 1 or a is not null), it cann't simplify to a > 100 and a is not null.

so we give up simplify this expression just in one step, if A and B is empty value, we replace B with EmptyValue, then we will have A AND (B OR C) = A AND (EmptyValue OR C), then in the next expression rewrite iteration, it will try to simplify EmptyValue OR C.

for the same logical for OR, then for 'A OR (B AND C)', if A OR B is RangeAll, then we replace B with RangeAll.

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

@Thearas
Copy link
Contributor

Thearas commented Jan 13, 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?

@yujun777 yujun777 force-pushed the fix-simplify-range-merge-compound-value-2 branch from a2839af to 72d4dea Compare January 13, 2026 07:40
@yujun777
Copy link
Contributor Author

run buildall

@yujun777 yujun777 marked this pull request as draft January 13, 2026 08:02
@yujun777 yujun777 marked this pull request as ready for review January 13, 2026 08:08
@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17657	4166	4027	4027
q2	2099	362	246	246
q3	10096	1290	731	731
q4	10216	860	317	317
q5	7462	2064	1907	1907
q6	188	171	141	141
q7	952	792	661	661
q8	9281	1413	1218	1218
q9	4956	4609	4616	4609
q10	6761	1841	1433	1433
q11	524	290	279	279
q12	702	739	591	591
q13	17770	3886	3144	3144
q14	316	310	278	278
q15	591	518	510	510
q16	663	695	640	640
q17	665	774	524	524
q18	7069	6444	6943	6444
q19	1268	1030	670	670
q20	421	392	257	257
q21	3337	2631	2449	2449
q22	1118	1088	1028	1028
Total cold run time: 104112 ms
Total hot run time: 32104 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4463	4211	4302	4211
q2	322	413	324	324
q3	2232	2801	2345	2345
q4	1448	1897	1374	1374
q5	4474	4330	4438	4330
q6	222	178	132	132
q7	1967	1942	1744	1744
q8	2549	2681	2384	2384
q9	7097	7111	7117	7111
q10	2571	2715	2295	2295
q11	535	492	475	475
q12	721	752	624	624
q13	3690	4106	3280	3280
q14	260	278	262	262
q15	521	483	485	483
q16	627	657	611	611
q17	1107	1332	1316	1316
q18	7420	7398	7242	7242
q19	843	812	809	809
q20	1904	1948	1918	1918
q21	4608	4231	4184	4184
q22	1075	1031	951	951
Total cold run time: 50656 ms
Total hot run time: 48405 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 172879 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 72d4dea9c7228233b1057bb9b2be60763f98c52d, data reload: false

query5	4463	638	464	464
query6	328	256	222	222
query7	4237	460	252	252
query8	339	251	247	247
query9	8724	2863	2903	2863
query10	498	384	339	339
query11	15208	15033	14838	14838
query12	197	121	121	121
query13	1264	495	395	395
query14	6450	3060	2823	2823
query14_1	2694	2687	2663	2663
query15	205	194	174	174
query16	1007	495	465	465
query17	1124	689	574	574
query18	2641	440	334	334
query19	234	227	202	202
query20	126	121	118	118
query21	211	134	128	128
query22	3881	3999	3849	3849
query23	16181	15669	15284	15284
query23_1	15441	15607	15426	15426
query24	7368	1516	1142	1142
query24_1	1173	1128	1162	1128
query25	528	448	384	384
query26	1241	264	149	149
query27	2760	439	261	261
query28	4565	2164	2129	2129
query29	788	518	418	418
query30	305	244	206	206
query31	801	639	561	561
query32	80	83	76	76
query33	521	352	295	295
query34	940	877	532	532
query35	732	771	665	665
query36	846	946	866	866
query37	126	96	82	82
query38	2731	2662	2713	2662
query39	785	744	733	733
query39_1	733	714	719	714
query40	220	136	117	117
query41	82	61	59	59
query42	109	106	109	106
query43	489	448	416	416
query44	1306	747	735	735
query45	186	187	177	177
query46	826	934	565	565
query47	1350	1489	1403	1403
query48	296	311	226	226
query49	610	426	340	340
query50	623	275	205	205
query51	3761	3817	3738	3738
query52	108	109	100	100
query53	300	326	276	276
query54	295	274	267	267
query55	81	77	73	73
query56	304	318	312	312
query57	1018	970	943	943
query58	280	258	267	258
query59	2007	2136	2180	2136
query60	335	331	314	314
query61	164	155	158	155
query62	390	356	307	307
query63	309	269	271	269
query64	4977	1294	975	975
query65	3811	3630	3720	3630
query66	1391	418	327	327
query67	15308	15005	15319	15005
query68	2739	1005	742	742
query69	461	371	341	341
query70	1033	974	917	917
query71	333	316	301	301
query72	6128	3580	3507	3507
query73	583	718	305	305
query74	8830	8755	8573	8573
query75	2740	2814	2450	2450
query76	2452	1068	661	661
query77	353	377	305	305
query78	9861	9872	9170	9170
query79	1673	873	561	561
query80	1578	580	504	504
query81	561	263	227	227
query82	417	151	111	111
query83	393	252	238	238
query84	252	133	95	95
query85	893	506	446	446
query86	407	301	327	301
query87	2945	2880	2787	2787
query88	2955	2137	2110	2110
query89	378	364	330	330
query90	2012	165	159	159
query91	168	163	136	136
query92	80	73	76	73
query93	1055	887	520	520
query94	644	325	303	303
query95	585	396	324	324
query96	552	469	202	202
query97	2337	2407	2279	2279
query98	212	207	197	197
query99	596	584	500	500
Total cold run time: 248646 ms
Total hot run time: 172879 ms

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 58.49% (31/53) 🎉
Increment coverage report
Complete coverage report

@yujun777 yujun777 force-pushed the fix-simplify-range-merge-compound-value-2 branch from 72d4dea to 492f6d9 Compare January 13, 2026 12:22
@yujun777
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17622	4185	4018	4018
q2	2055	342	225	225
q3	10171	1229	707	707
q4	10221	887	327	327
q5	7550	2025	1885	1885
q6	191	167	139	139
q7	902	775	649	649
q8	9263	1409	1189	1189
q9	4930	4497	4607	4497
q10	6792	1783	1415	1415
q11	526	301	280	280
q12	684	757	579	579
q13	17788	3879	3072	3072
q14	288	297	269	269
q15	588	516	506	506
q16	651	677	628	628
q17	660	877	407	407
q18	6609	6430	6802	6430
q19	1279	1058	634	634
q20	412	375	262	262
q21	3316	2584	2472	2472
q22	1130	1100	1066	1066
Total cold run time: 103628 ms
Total hot run time: 31656 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4476	4352	4245	4245
q2	327	413	346	346
q3	2277	2747	2401	2401
q4	1396	1830	1443	1443
q5	4482	4441	4254	4254
q6	220	174	168	168
q7	2051	1886	1767	1767
q8	2523	2463	2420	2420
q9	7091	7022	7136	7022
q10	2491	2663	2420	2420
q11	551	485	451	451
q12	685	755	616	616
q13	3648	4008	3186	3186
q14	267	301	256	256
q15	514	487	483	483
q16	603	642	599	599
q17	1121	1278	1313	1278
q18	7276	7281	7361	7281
q19	848	847	804	804
q20	1874	1943	1812	1812
q21	4624	4232	4167	4167
q22	1082	1042	1000	1000
Total cold run time: 50427 ms
Total hot run time: 48419 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 172157 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 492f6d966afaade84b3b3777313944e7a6f2f9f6, data reload: false

query5	4423	633	493	493
query6	343	232	214	214
query7	4224	475	256	256
query8	353	258	234	234
query9	8717	2871	2874	2871
query10	525	360	338	338
query11	15506	15208	14789	14789
query12	182	123	131	123
query13	1273	519	363	363
query14	6334	2946	2705	2705
query14_1	2620	2616	2790	2616
query15	206	202	174	174
query16	995	483	466	466
query17	1082	670	543	543
query18	2569	422	324	324
query19	218	220	194	194
query20	128	120	119	119
query21	216	138	122	122
query22	4045	4038	3821	3821
query23	15841	15400	15366	15366
query23_1	15427	15449	15408	15408
query24	7113	1536	1153	1153
query24_1	1175	1150	1162	1150
query25	570	486	423	423
query26	1249	273	156	156
query27	2761	434	264	264
query28	4600	2150	2137	2137
query29	790	553	454	454
query30	309	242	209	209
query31	812	633	545	545
query32	86	77	75	75
query33	544	363	322	322
query34	888	871	511	511
query35	724	774	680	680
query36	903	920	840	840
query37	127	104	88	88
query38	2721	2752	2627	2627
query39	772	748	743	743
query39_1	711	708	704	704
query40	228	144	126	126
query41	76	68	68	68
query42	117	112	106	106
query43	445	469	437	437
query44	1329	747	726	726
query45	190	188	177	177
query46	818	943	566	566
query47	1433	1476	1377	1377
query48	307	319	236	236
query49	626	431	358	358
query50	623	283	210	210
query51	3770	3775	3873	3775
query52	103	110	101	101
query53	299	337	274	274
query54	318	296	278	278
query55	82	84	79	79
query56	328	341	343	341
query57	1044	977	947	947
query58	294	271	281	271
query59	2027	2203	2101	2101
query60	393	333	308	308
query61	165	159	152	152
query62	394	387	315	315
query63	297	264	267	264
query64	4916	1287	984	984
query65	3837	3744	3753	3744
query66	1425	448	320	320
query67	15201	14761	14924	14761
query68	7673	977	713	713
query69	507	344	318	318
query70	1070	918	892	892
query71	365	320	298	298
query72	5725	3303	3447	3303
query73	765	702	303	303
query74	8895	8689	8551	8551
query75	2827	2782	2436	2436
query76	3342	1056	637	637
query77	511	374	297	297
query78	9732	9686	9134	9134
query79	1637	887	549	549
query80	682	595	501	501
query81	524	259	231	231
query82	211	146	110	110
query83	265	255	238	238
query84	264	114	100	100
query85	917	534	458	458
query86	393	295	295	295
query87	2873	2881	2733	2733
query88	2901	2122	2083	2083
query89	376	354	329	329
query90	2027	162	164	162
query91	171	171	141	141
query92	79	73	70	70
query93	1180	911	517	517
query94	574	333	287	287
query95	583	330	366	330
query96	549	467	200	200
query97	2319	2423	2323	2323
query98	244	211	201	201
query99	633	607	529	529
Total cold run time: 253013 ms
Total hot run time: 172157 ms

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 84.91% (45/53) 🎉
Increment coverage report
Complete coverage report

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 58.49% (31/53) 🎉
Increment coverage report
Complete coverage report

@yujun777
Copy link
Contributor Author

run external

@yujun777
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17663	4184	4050	4050
q2	2070	387	266	266
q3	10108	1303	711	711
q4	10230	864	320	320
q5	7515	2101	1842	1842
q6	185	168	141	141
q7	925	837	688	688
q8	9309	1411	1137	1137
q9	4871	4669	4548	4548
q10	6808	1828	1397	1397
q11	541	312	268	268
q12	703	722	587	587
q13	17777	3839	3113	3113
q14	288	292	292	292
q15	584	501	509	501
q16	694	669	646	646
q17	644	781	496	496
q18	7081	6427	6438	6427
q19	1102	952	592	592
q20	380	353	240	240
q21	2943	2385	2096	2096
q22	1012	1003	925	925
Total cold run time: 103433 ms
Total hot run time: 31283 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4083	4034	4017	4017
q2	315	402	320	320
q3	2072	2567	2200	2200
q4	1304	1764	1304	1304
q5	4104	4090	4296	4090
q6	186	163	130	130
q7	1828	1821	1698	1698
q8	2747	2439	2415	2415
q9	7357	7132	7064	7064
q10	2545	2696	2351	2351
q11	570	487	454	454
q12	770	761	644	644
q13	3610	4054	3334	3334
q14	281	328	281	281
q15	542	507	501	501
q16	900	776	648	648
q17	1120	1407	1338	1338
q18	8004	7973	7614	7614
q19	879	845	817	817
q20	1964	2054	1881	1881
q21	4875	4342	4112	4112
q22	1090	1029	983	983
Total cold run time: 51146 ms
Total hot run time: 48196 ms

@doris-robot
Copy link

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

query5	4410	626	495	495
query6	346	243	227	227
query7	4228	462	260	260
query8	337	251	241	241
query9	8703	2862	2874	2862
query10	502	371	337	337
query11	15174	15202	15011	15011
query12	185	123	121	121
query13	1274	477	404	404
query14	5973	2980	2803	2803
query14_1	2686	2670	2663	2663
query15	203	195	177	177
query16	985	526	381	381
query17	1078	643	550	550
query18	2420	421	317	317
query19	230	216	189	189
query20	123	112	113	112
query21	217	135	117	117
query22	4025	4026	3856	3856
query23	15956	15488	15287	15287
query23_1	15286	15556	15470	15470
query24	7112	1507	1172	1172
query24_1	1179	1146	1178	1146
query25	530	443	387	387
query26	1244	260	151	151
query27	2772	431	257	257
query28	4621	2142	2133	2133
query29	768	518	454	454
query30	311	235	206	206
query31	785	637	533	533
query32	81	70	71	70
query33	524	338	298	298
query34	905	858	526	526
query35	730	770	671	671
query36	876	925	816	816
query37	126	99	85	85
query38	2657	2740	2690	2690
query39	764	762	733	733
query39_1	708	748	703	703
query40	212	133	117	117
query41	67	62	58	58
query42	106	107	103	103
query43	437	439	400	400
query44	1308	729	731	729
query45	188	186	176	176
query46	817	930	570	570
query47	1433	1466	1322	1322
query48	287	315	239	239
query49	599	415	351	351
query50	608	268	200	200
query51	3811	3794	3913	3794
query52	107	109	103	103
query53	311	321	266	266
query54	287	269	272	269
query55	79	83	80	80
query56	314	308	291	291
query57	966	1018	930	930
query58	277	251	266	251
query59	1953	2050	2037	2037
query60	331	332	319	319
query61	153	149	152	149
query62	372	359	305	305
query63	306	272	275	272
query64	5015	1274	970	970
query65	3830	3762	3755	3755
query66	1446	408	331	331
query67	15991	14731	14755	14731
query68	2736	1007	745	745
query69	460	367	330	330
query70	1018	956	950	950
query71	345	320	293	293
query72	5831	3612	3601	3601
query73	592	735	310	310
query74	8779	8741	8703	8703
query75	2707	2760	2459	2459
query76	2377	1047	679	679
query77	364	383	310	310
query78	9977	9898	9211	9211
query79	1039	916	568	568
query80	1324	578	504	504
query81	559	262	238	238
query82	1013	149	108	108
query83	378	255	238	238
query84	247	113	103	103
query85	996	511	459	459
query86	411	303	329	303
query87	2892	2897	2769	2769
query88	3004	2146	2118	2118
query89	391	353	331	331
query90	1989	172	161	161
query91	182	163	137	137
query92	82	72	68	68
query93	1019	919	522	522
query94	655	325	287	287
query95	593	381	330	330
query96	563	480	201	201
query97	2355	2379	2315	2315
query98	217	202	204	202
query99	611	598	527	527
Total cold run time: 247481 ms
Total hot run time: 173564 ms

@doris-robot
Copy link

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

query1	0.06	0.05	0.05
query2	0.10	0.05	0.05
query3	0.25	0.09	0.09
query4	1.61	0.12	0.11
query5	0.27	0.27	0.25
query6	1.14	0.67	0.66
query7	0.04	0.03	0.03
query8	0.05	0.04	0.05
query9	0.58	0.50	0.52
query10	0.56	0.54	0.55
query11	0.14	0.10	0.10
query12	0.15	0.11	0.11
query13	0.61	0.60	0.59
query14	0.95	0.93	0.94
query15	0.79	0.78	0.79
query16	0.42	0.40	0.39
query17	1.09	1.08	1.00
query18	0.23	0.22	0.22
query19	1.95	1.90	1.79
query20	0.02	0.02	0.02
query21	15.46	0.24	0.13
query22	5.12	0.06	0.05
query23	15.88	0.32	0.10
query24	1.40	0.30	0.61
query25	0.10	0.14	0.07
query26	0.16	0.13	0.13
query27	0.06	0.06	0.08
query28	4.51	1.08	0.88
query29	12.54	3.86	3.12
query30	0.28	0.14	0.11
query31	2.81	0.64	0.41
query32	3.25	0.56	0.46
query33	2.95	3.02	3.04
query34	16.09	5.06	4.48
query35	4.48	4.44	4.48
query36	0.66	0.50	0.49
query37	0.11	0.07	0.07
query38	0.07	0.04	0.04
query39	0.04	0.03	0.03
query40	0.16	0.14	0.13
query41	0.09	0.03	0.04
query42	0.04	0.03	0.02
query43	0.04	0.04	0.03
Total cold run time: 97.31 s
Total hot run time: 26.85 s

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 66.67% (32/48) 🎉
Increment coverage report
Complete coverage report

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Jan 14, 2026
@github-actions
Copy link
Contributor

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

@github-actions
Copy link
Contributor

PR approved by anyone and no changes requested.

@yujun777
Copy link
Contributor Author

run external

@starocean999 starocean999 merged commit 42675f6 into apache:master Jan 15, 2026
34 checks passed
yujun777 added a commit to yujun777/doris that referenced this pull request Jan 15, 2026
…che#59818)

Add more inference rules:

1.  simplify: `IsNull AND xx`

```
TA is null and TA > 10  => TA is null and null
TA is null and TA = 10  => TA is null and null
TA is null and TA != 10 => TA is null and null 
```

then if this expression is in where condition, it will replace null to
FALSE, and fold this expression to FALSE

2. simplify: `IsNotNull OR xx`

```
TA is not null or TA > 10  => TA is not null or null
TA is not null or TA = 10 => TA is not null or null
TA is not null or TA != 10 => TA is not null or null
```

then if this expression is in where condition, it will replace null to
FALSE, and fold this expression to TA is not null


3. simplify: IsNotNull(TA) AND RangeAll(TA) = IsNotNull(TA)

```
TA is not null and (TA is not null or null) => TA is not null
```

4. simplify: IsNull(TA) AND RangeAll(TA) = EmptyValue(TA)

```
TA is null and (TA is not null or null) = TA is null and null
```

5. simplify: IsNotNull(TA) or EmptyValue(TA) = RangeAll(TA)

```
TA is not null or (TA is null and null) = TA is not null or null
``` 

6. Fix merge compound value bug

if `A  AND B` is FALSE/EmptyValue,   A AND (B OR C) = A AND C.

but this has bug,  if 'A AND B' is FALSE,  the equation is correct.

but if 'A AND B' is EmptyValue and A nullable, the equation maybe still
wrong, for example: `a > 100 and (a = 1 or a is not null)`, it cann't
simplify to `a > 100 and a is not null`.

so we give up simplify this expression just in one step, if `A and B` is
empty value, we replace B with EmptyValue, then we will have `A AND (B
OR C)` = `A AND (EmptyValue OR C)`, then in the next expression rewrite
iteration, it will try to simplify `EmptyValue OR C`.

for the same logical for OR, then for 'A OR (B AND C)', if A OR B is
RangeAll, then we replace B with RangeAll.
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.

6 participants