Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature](nereids) extend infer predicates #41731

Merged
merged 4 commits into from
Oct 15, 2024

Conversation

feiniaofeiafei
Copy link
Contributor

@feiniaofeiafei feiniaofeiafei commented Oct 11, 2024

This pr refactors the PredicatePropagation module and adds support for predicate deduction, including:

Support for predicate deduction of like, not in, !=;
Support for predicate deduction of abs(b)=1 for a=b and abs(a)=1;
Support for transitive deduction of non-equivalent relations, for example, a>b b>1 leads to a>1.
Deleted useless predicates.
But still has something to do in predicate inference:
support expr in infer predicate, e.g. abs(t1.c1)>abs(t2.c2) and abs(t1.c1)<1
need to add expr qualifier info, to determine whether abs(t1.c1) and abs(t2.c2) is from same table.
tpcds 1000 total time
before pr:
689804 | 554230 | 550065 | 546197
after pr:
670477 | 551991 | 544594 | 542985
No performance degradation was observed

@doris-robot
Copy link

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

Since 2024-03-18, the Document has been moved to doris-website.
See Doris Document.

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17647	7528	7329	7329
q2	2022	308	291	291
q3	11582	1058	1206	1058
q4	10568	786	731	731
q5	7786	2907	2826	2826
q6	244	155	153	153
q7	986	614	626	614
q8	9370	1951	1898	1898
q9	6546	6422	6400	6400
q10	6957	2311	2295	2295
q11	442	246	250	246
q12	416	221	221	221
q13	17781	3000	2972	2972
q14	237	209	206	206
q15	582	522	509	509
q16	640	589	559	559
q17	975	597	593	593
q18	7396	6672	6571	6571
q19	1354	915	1009	915
q20	473	197	203	197
q21	3938	3194	3271	3194
q22	1108	1008	1002	1002
Total cold run time: 109050 ms
Total hot run time: 40780 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7292	7293	7288	7288
q2	328	231	232	231
q3	2959	2932	2956	2932
q4	2113	1796	1859	1796
q5	5805	5704	5750	5704
q6	235	157	155	155
q7	2229	1852	1822	1822
q8	3359	3574	3442	3442
q9	8905	8874	8809	8809
q10	3614	3578	3553	3553
q11	580	495	491	491
q12	824	688	592	592
q13	9442	3251	3211	3211
q14	313	288	282	282
q15	569	528	521	521
q16	673	626	625	625
q17	1854	1631	1603	1603
q18	8293	7807	7526	7526
q19	1742	1638	1447	1447
q20	2131	1849	1881	1849
q21	5545	5449	5349	5349
q22	1204	1045	1084	1045
Total cold run time: 70009 ms
Total hot run time: 60273 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 191738 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 5aba81a1743e0e2c75ffea9e47935320d206e906, data reload: false

query1	864	387	413	387
query2	6253	2117	2036	2036
query3	8701	193	198	193
query4	34032	23470	23505	23470
query5	3636	483	450	450
query6	271	160	185	160
query7	4189	297	300	297
query8	303	225	232	225
query9	9424	2698	2707	2698
query10	481	281	272	272
query11	17850	15297	15130	15130
query12	153	101	96	96
query13	1572	474	471	471
query14	8459	7785	7489	7489
query15	259	165	179	165
query16	8016	414	456	414
query17	1567	597	585	585
query18	2127	345	342	342
query19	368	156	147	147
query20	121	111	120	111
query21	217	110	105	105
query22	4658	4534	4581	4534
query23	35096	34051	34042	34042
query24	11010	2886	2884	2884
query25	634	411	416	411
query26	1171	161	168	161
query27	2290	307	298	298
query28	7500	2428	2412	2412
query29	831	430	432	430
query30	263	163	160	160
query31	1021	786	809	786
query32	99	56	64	56
query33	788	283	295	283
query34	925	516	532	516
query35	901	741	734	734
query36	1100	961	955	955
query37	158	92	83	83
query38	3974	3954	3903	3903
query39	1498	1420	1440	1420
query40	210	98	100	98
query41	50	44	44	44
query42	121	99	95	95
query43	549	495	467	467
query44	1269	802	806	802
query45	200	165	164	164
query46	1134	729	750	729
query47	1911	1838	1843	1838
query48	438	360	343	343
query49	977	421	425	421
query50	828	409	409	409
query51	7117	7039	6949	6949
query52	99	86	90	86
query53	259	186	179	179
query54	1111	491	479	479
query55	79	78	83	78
query56	281	278	263	263
query57	1246	1128	1139	1128
query58	222	250	224	224
query59	3090	3007	2858	2858
query60	281	268	262	262
query61	107	102	99	99
query62	888	683	668	668
query63	228	196	183	183
query64	4059	632	597	597
query65	3267	3154	3228	3154
query66	812	298	314	298
query67	15963	15504	15411	15411
query68	4611	578	567	567
query69	458	297	298	297
query70	1190	1106	1098	1098
query71	341	267	269	267
query72	7175	3892	3945	3892
query73	758	340	353	340
query74	10126	8857	9056	8857
query75	3432	2708	2613	2613
query76	2733	912	889	889
query77	598	294	287	287
query78	10507	9683	9551	9551
query79	1728	579	589	579
query80	2352	431	460	431
query81	581	239	234	234
query82	714	137	138	137
query83	289	138	129	129
query84	284	77	76	76
query85	1614	297	281	281
query86	431	300	305	300
query87	4394	4338	4233	4233
query88	3236	2471	2442	2442
query89	405	289	284	284
query90	2055	183	183	183
query91	153	107	106	106
query92	61	48	48	48
query93	1913	545	545	545
query94	1168	289	291	289
query95	352	255	251	251
query96	613	289	286	286
query97	3239	3118	3151	3118
query98	220	199	195	195
query99	1559	1296	1311	1296
Total cold run time: 298866 ms
Total hot run time: 191738 ms

@doris-robot
Copy link

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

query1	0.03	0.03	0.03
query2	0.06	0.02	0.03
query3	0.23	0.06	0.06
query4	1.65	0.10	0.10
query5	0.52	0.51	0.51
query6	1.12	0.72	0.72
query7	0.02	0.02	0.01
query8	0.03	0.03	0.03
query9	0.56	0.50	0.49
query10	0.56	0.54	0.54
query11	0.13	0.11	0.14
query12	0.13	0.11	0.11
query13	0.60	0.60	0.59
query14	2.73	2.75	2.72
query15	0.90	0.82	0.85
query16	0.38	0.37	0.38
query17	1.06	1.07	1.05
query18	0.20	0.20	0.20
query19	1.94	1.86	2.02
query20	0.01	0.02	0.01
query21	15.37	0.59	0.59
query22	2.71	1.74	1.85
query23	17.02	1.00	0.72
query24	2.87	1.28	1.28
query25	0.24	0.13	0.19
query26	0.51	0.14	0.15
query27	0.05	0.04	0.03
query28	10.44	1.09	1.07
query29	12.57	3.25	3.23
query30	0.24	0.06	0.06
query31	2.88	0.38	0.39
query32	3.27	0.46	0.46
query33	3.00	3.00	3.02
query34	17.15	4.44	4.46
query35	4.52	4.46	4.53
query36	0.66	0.50	0.47
query37	0.08	0.06	0.06
query38	0.04	0.03	0.03
query39	0.03	0.02	0.02
query40	0.17	0.13	0.12
query41	0.08	0.02	0.02
query42	0.03	0.02	0.02
query43	0.03	0.03	0.02
Total cold run time: 106.82 s
Total hot run time: 32.84 s

@feiniaofeiafei
Copy link
Contributor Author

run p0

@feiniaofeiafei
Copy link
Contributor Author

run cloud_p0

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17575	7402	7218	7218
q2	2025	278	267	267
q3	12138	1062	1210	1062
q4	10565	769	718	718
q5	7716	2863	2844	2844
q6	238	153	153	153
q7	980	639	621	621
q8	9345	1870	1937	1870
q9	6433	6405	6341	6341
q10	6939	2293	2322	2293
q11	436	248	249	248
q12	420	216	213	213
q13	17774	2977	2951	2951
q14	245	204	218	204
q15	562	516	507	507
q16	635	577	578	577
q17	959	559	710	559
q18	7106	6602	6751	6602
q19	1345	973	920	920
q20	478	205	212	205
q21	4095	3205	3168	3168
q22	1115	1012	994	994
Total cold run time: 109124 ms
Total hot run time: 40535 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7267	7268	7230	7230
q2	329	229	225	225
q3	2958	2909	2976	2909
q4	2184	1894	1808	1808
q5	5791	5686	5744	5686
q6	236	149	148	148
q7	2243	1853	1835	1835
q8	3365	3498	3381	3381
q9	8950	8908	8799	8799
q10	3601	3586	3521	3521
q11	578	497	486	486
q12	888	662	613	613
q13	10331	3211	3135	3135
q14	303	271	285	271
q15	586	517	526	517
q16	669	651	657	651
q17	1856	1613	1602	1602
q18	8185	7841	7561	7561
q19	1724	1493	1537	1493
q20	2120	1861	1858	1858
q21	5529	5461	5437	5437
q22	1149	1041	1051	1041
Total cold run time: 70842 ms
Total hot run time: 60207 ms

@feiniaofeiafei
Copy link
Contributor Author

run p0

@doris-robot
Copy link

TPC-DS: Total hot run time: 191755 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 2cce1c50699e5490b4677e95120e27636ddfce92, data reload: false

query1	847	392	404	392
query2	6258	2102	1967	1967
query3	8679	198	200	198
query4	34154	23567	23493	23493
query5	3445	488	465	465
query6	258	160	161	160
query7	4187	309	301	301
query8	285	219	219	219
query9	9485	2708	2699	2699
query10	469	296	272	272
query11	17878	15271	15146	15146
query12	147	98	99	98
query13	1586	482	453	453
query14	9575	6863	7536	6863
query15	259	168	182	168
query16	7594	479	474	474
query17	1605	604	583	583
query18	2026	349	312	312
query19	390	157	152	152
query20	120	121	117	117
query21	213	106	101	101
query22	5029	4605	4847	4605
query23	34946	34128	34035	34035
query24	11017	2881	2872	2872
query25	644	421	412	412
query26	1408	162	164	162
query27	2519	308	311	308
query28	7497	2413	2414	2413
query29	892	441	423	423
query30	251	159	157	157
query31	1019	780	806	780
query32	96	53	55	53
query33	765	297	306	297
query34	908	509	516	509
query35	895	751	714	714
query36	1109	946	929	929
query37	152	85	81	81
query38	3983	3844	3970	3844
query39	1506	1441	1430	1430
query40	258	101	100	100
query41	47	46	46	46
query42	121	97	95	95
query43	516	483	482	482
query44	1231	801	797	797
query45	203	164	162	162
query46	1170	719	710	710
query47	1924	1837	1828	1828
query48	444	362	350	350
query49	953	418	416	416
query50	829	426	422	422
query51	7445	7050	7002	7002
query52	100	87	89	87
query53	257	182	186	182
query54	1186	513	466	466
query55	76	73	79	73
query56	276	261	268	261
query57	1249	1155	1168	1155
query58	229	232	241	232
query59	3240	2929	3068	2929
query60	306	270	263	263
query61	105	98	112	98
query62	876	677	683	677
query63	227	187	181	181
query64	4958	615	597	597
query65	3306	3199	3181	3181
query66	1450	309	308	308
query67	15857	15853	15583	15583
query68	4464	564	562	562
query69	497	295	305	295
query70	1173	1138	1112	1112
query71	343	270	287	270
query72	7311	3975	3884	3884
query73	771	352	346	346
query74	10347	9021	8990	8990
query75	3392	2725	2677	2677
query76	2928	950	914	914
query77	600	301	281	281
query78	10446	9647	9615	9615
query79	1121	603	584	584
query80	2304	433	453	433
query81	544	241	237	237
query82	751	133	132	132
query83	307	135	130	130
query84	274	77	83	77
query85	1464	290	280	280
query86	374	304	295	295
query87	4520	4277	4312	4277
query88	3308	2455	2442	2442
query89	412	291	284	284
query90	2249	186	186	186
query91	142	105	108	105
query92	65	51	46	46
query93	1063	540	539	539
query94	1169	296	289	289
query95	367	253	248	248
query96	601	284	287	284
query97	3224	3147	3112	3112
query98	208	208	197	197
query99	1551	1314	1292	1292
Total cold run time: 301225 ms
Total hot run time: 191755 ms

@doris-robot
Copy link

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

query1	0.04	0.03	0.03
query2	0.07	0.03	0.02
query3	0.22	0.06	0.06
query4	1.65	0.10	0.10
query5	0.51	0.51	0.51
query6	1.14	0.73	0.74
query7	0.01	0.01	0.02
query8	0.04	0.03	0.03
query9	0.56	0.51	0.50
query10	0.56	0.55	0.56
query11	0.13	0.11	0.11
query12	0.14	0.11	0.11
query13	0.61	0.60	0.59
query14	2.70	2.77	2.76
query15	0.91	0.84	0.85
query16	0.40	0.39	0.37
query17	1.11	1.06	1.07
query18	0.20	0.21	0.21
query19	2.04	1.95	2.06
query20	0.02	0.01	0.01
query21	15.35	0.60	0.59
query22	2.22	2.05	2.28
query23	17.12	1.02	0.85
query24	2.50	1.58	0.90
query25	0.31	0.13	0.06
query26	0.43	0.15	0.13
query27	0.04	0.05	0.04
query28	10.81	1.10	1.06
query29	12.54	3.24	3.19
query30	0.24	0.06	0.06
query31	2.87	0.38	0.38
query32	3.28	0.46	0.46
query33	3.01	3.05	3.10
query34	17.10	4.44	4.56
query35	4.50	4.50	4.50
query36	0.66	0.48	0.48
query37	0.08	0.06	0.06
query38	0.05	0.03	0.03
query39	0.03	0.02	0.02
query40	0.15	0.12	0.12
query41	0.07	0.02	0.02
query42	0.03	0.02	0.02
query43	0.03	0.03	0.03
Total cold run time: 106.48 s
Total hot run time: 33.09 s


@Override
public ImmutableSet<Expression> visit(Plan plan, Void context) {
if (plan.arity() == 1) {
Copy link
Contributor

Choose a reason for hiding this comment

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

why not remain this and avoid override too many plan visitor whose pullup is disabled?

@feiniaofeiafei feiniaofeiafei force-pushed the new_extend_predicates branch 2 times, most recently from 64c558c to 9588dc0 Compare October 12, 2024 03:20
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17562	7332	7260	7260
q2	2024	278	267	267
q3	11649	1055	1167	1055
q4	10565	736	768	736
q5	7732	2910	2807	2807
q6	234	155	145	145
q7	985	621	606	606
q8	9353	1937	1948	1937
q9	6483	6432	6400	6400
q10	6959	2247	2354	2247
q11	442	243	257	243
q12	408	217	212	212
q13	17771	3018	2996	2996
q14	238	210	208	208
q15	571	522	513	513
q16	636	583	580	580
q17	965	523	620	523
q18	7175	6673	6636	6636
q19	1348	1070	959	959
q20	483	204	205	204
q21	3935	3273	3197	3197
q22	1094	994	997	994
Total cold run time: 108612 ms
Total hot run time: 40725 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7246	7241	7268	7241
q2	321	226	240	226
q3	2899	2909	2980	2909
q4	2085	1882	1817	1817
q5	5718	5740	5726	5726
q6	227	146	149	146
q7	2252	1901	1835	1835
q8	3369	3574	3523	3523
q9	8904	8866	8862	8862
q10	3605	3571	3542	3542
q11	571	494	486	486
q12	829	652	654	652
q13	9088	3173	3143	3143
q14	320	267	277	267
q15	571	518	530	518
q16	671	643	638	638
q17	1868	1592	1616	1592
q18	8272	7722	7522	7522
q19	1723	1382	1394	1382
q20	2078	1884	1886	1884
q21	5424	5341	5411	5341
q22	1131	1025	1029	1025
Total cold run time: 69172 ms
Total hot run time: 60277 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 191611 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 9588dc09adb92847c4548da588ca2e93e94d15a7, data reload: false

query1	942	404	396	396
query2	6241	2064	1972	1972
query3	8691	193	200	193
query4	34185	23637	23609	23609
query5	3362	460	485	460
query6	275	184	158	158
query7	4186	300	308	300
query8	288	226	228	226
query9	9505	2725	2720	2720
query10	470	277	273	273
query11	17945	15169	15213	15169
query12	162	95	100	95
query13	1574	467	437	437
query14	9686	7914	7188	7188
query15	250	170	189	170
query16	7792	489	509	489
query17	1686	610	594	594
query18	1982	319	319	319
query19	369	160	153	153
query20	128	115	113	113
query21	217	107	106	106
query22	4718	4753	4419	4419
query23	35165	33990	34169	33990
query24	10969	2834	2878	2834
query25	650	407	406	406
query26	1372	162	165	162
query27	2455	300	291	291
query28	7523	2435	2402	2402
query29	906	442	438	438
query30	260	153	156	153
query31	1032	782	816	782
query32	101	59	54	54
query33	771	300	299	299
query34	974	520	509	509
query35	879	739	750	739
query36	1095	920	922	920
query37	165	92	83	83
query38	3998	3887	3856	3856
query39	1548	1451	1435	1435
query40	253	98	98	98
query41	47	46	45	45
query42	116	97	98	97
query43	527	485	497	485
query44	1202	813	796	796
query45	197	164	164	164
query46	1144	718	726	718
query47	1909	1812	1843	1812
query48	434	352	344	344
query49	1004	425	431	425
query50	815	419	405	405
query51	7121	6954	6982	6954
query52	98	89	89	89
query53	269	183	182	182
query54	1357	502	501	501
query55	82	79	79	79
query56	288	299	238	238
query57	1229	1143	1161	1143
query58	233	228	229	228
query59	3155	2838	2870	2838
query60	287	277	274	274
query61	111	108	101	101
query62	874	657	655	655
query63	224	183	185	183
query64	4958	635	596	596
query65	3276	3222	3192	3192
query66	1288	296	328	296
query67	15777	15497	15689	15497
query68	4524	567	573	567
query69	462	304	294	294
query70	1184	1106	1098	1098
query71	343	281	277	277
query72	6918	3904	3988	3904
query73	773	344	349	344
query74	10144	8918	8932	8918
query75	3396	2665	2687	2665
query76	2686	892	925	892
query77	396	286	285	285
query78	10459	9564	9493	9493
query79	2534	592	591	591
query80	801	430	440	430
query81	559	241	239	239
query82	730	140	133	133
query83	231	131	132	131
query84	242	85	83	83
query85	1131	302	284	284
query86	328	303	307	303
query87	4497	4401	4418	4401
query88	3737	2412	2402	2402
query89	413	290	283	283
query90	2151	187	182	182
query91	141	105	109	105
query92	58	47	46	46
query93	1151	532	544	532
query94	957	299	291	291
query95	362	253	250	250
query96	611	283	299	283
query97	3259	3113	3094	3094
query98	217	201	190	190
query99	1631	1286	1274	1274
Total cold run time: 299818 ms
Total hot run time: 191611 ms

@doris-robot
Copy link

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

query1	0.04	0.04	0.03
query2	0.07	0.02	0.03
query3	0.22	0.06	0.06
query4	1.65	0.11	0.10
query5	0.53	0.51	0.51
query6	1.14	0.72	0.72
query7	0.02	0.02	0.02
query8	0.04	0.03	0.03
query9	0.58	0.53	0.52
query10	0.56	0.55	0.55
query11	0.14	0.10	0.10
query12	0.14	0.11	0.11
query13	0.60	0.58	0.59
query14	2.71	2.75	2.71
query15	0.89	0.82	0.82
query16	0.41	0.38	0.39
query17	1.02	0.99	0.99
query18	0.20	0.19	0.19
query19	1.83	1.85	1.89
query20	0.02	0.00	0.01
query21	15.37	0.59	0.59
query22	3.00	2.24	2.37
query23	17.01	1.07	0.73
query24	2.93	1.30	0.99
query25	0.19	0.12	0.07
query26	0.47	0.15	0.15
query27	0.05	0.04	0.04
query28	10.68	1.09	1.06
query29	12.57	3.24	3.20
query30	0.25	0.06	0.06
query31	2.87	0.39	0.38
query32	3.28	0.45	0.46
query33	2.98	3.03	3.05
query34	16.89	4.53	4.45
query35	4.51	4.48	4.51
query36	0.67	0.48	0.48
query37	0.09	0.05	0.06
query38	0.05	0.03	0.04
query39	0.03	0.02	0.02
query40	0.16	0.12	0.12
query41	0.07	0.02	0.02
query42	0.03	0.02	0.02
query43	0.03	0.03	0.03
Total cold run time: 106.99 s
Total hot run time: 32.98 s

}
case LEFT_OUTER_JOIN:
case LEFT_SEMI_JOIN:
case LEFT_ANTI_JOIN:
Copy link
Contributor

Choose a reason for hiding this comment

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

why anti join's predicate can be pulled up?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

e.g. select t1.a from test_like1 t1 left anti join test_like2 t2 on t1.a=t2.a where t1.a<10 , t1.a<10 can be pulled up, because all rows that left anti join outputs, t1.a<10 is satisfied.

@feiniaofeiafei
Copy link
Contributor Author

run buildall

Copy link
Contributor

PR approved by anyone and no changes requested.

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17621	7767	7234	7234
q2	2023	274	275	274
q3	12259	1057	1181	1057
q4	10577	723	732	723
q5	7757	2832	2799	2799
q6	237	156	150	150
q7	999	634	611	611
q8	9370	1959	1989	1959
q9	6602	6525	6441	6441
q10	7011	2259	2323	2259
q11	433	251	250	250
q12	404	214	209	209
q13	17783	2989	2977	2977
q14	250	206	211	206
q15	561	523	513	513
q16	626	575	594	575
q17	962	577	512	512
q18	7228	6767	6676	6676
q19	1355	909	975	909
q20	470	199	198	198
q21	4068	3191	3220	3191
q22	1100	1008	970	970
Total cold run time: 109696 ms
Total hot run time: 40693 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7222	7248	7201	7201
q2	328	233	236	233
q3	3028	2934	2896	2896
q4	2076	1836	1810	1810
q5	5770	5726	5705	5705
q6	232	146	145	145
q7	2244	1868	1816	1816
q8	3354	3600	3414	3414
q9	8944	8862	8864	8862
q10	3558	3568	3555	3555
q11	590	500	477	477
q12	833	628	624	624
q13	9566	3154	3279	3154
q14	298	272	288	272
q15	574	514	521	514
q16	675	645	638	638
q17	1878	1647	1595	1595
q18	8400	7804	7553	7553
q19	1724	1472	1393	1393
q20	2139	1836	1838	1836
q21	5608	5396	5394	5394
q22	1134	1024	1020	1020
Total cold run time: 70175 ms
Total hot run time: 60107 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 191922 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 35ee0fd8e26524c253106bf020efb194c8c70441, data reload: false

query1	870	396	407	396
query2	6257	2143	2066	2066
query3	8681	191	200	191
query4	34149	23712	23471	23471
query5	3513	476	489	476
query6	269	162	159	159
query7	4203	297	296	296
query8	286	224	230	224
query9	9237	2675	2663	2663
query10	476	279	290	279
query11	17778	15205	15149	15149
query12	158	97	94	94
query13	1586	462	434	434
query14	9692	7304	7204	7204
query15	250	172	170	170
query16	8006	462	427	427
query17	1562	639	617	617
query18	2160	337	322	322
query19	305	159	157	157
query20	129	117	114	114
query21	217	124	109	109
query22	4968	4712	4648	4648
query23	35042	34131	33898	33898
query24	11048	2830	2775	2775
query25	631	424	414	414
query26	1479	162	162	162
query27	2605	306	292	292
query28	7778	2411	2396	2396
query29	952	444	433	433
query30	274	151	155	151
query31	1035	801	829	801
query32	100	53	55	53
query33	774	296	295	295
query34	924	492	501	492
query35	915	751	742	742
query36	1102	960	956	956
query37	155	92	83	83
query38	4069	3959	3888	3888
query39	1464	1411	1412	1411
query40	252	99	98	98
query41	49	48	44	44
query42	125	98	95	95
query43	529	483	495	483
query44	1259	804	801	801
query45	196	164	164	164
query46	1147	713	722	713
query47	1952	1830	1865	1830
query48	432	354	352	352
query49	1058	435	425	425
query50	821	413	406	406
query51	7184	7057	6917	6917
query52	102	88	89	88
query53	259	186	181	181
query54	1405	475	487	475
query55	83	75	80	75
query56	286	289	247	247
query57	1266	1129	1149	1129
query58	228	221	253	221
query59	3172	3056	2840	2840
query60	310	270	275	270
query61	109	103	108	103
query62	878	693	653	653
query63	211	190	185	185
query64	4957	638	627	627
query65	3523	3201	3194	3194
query66	1397	326	299	299
query67	16078	15684	15670	15670
query68	4529	585	567	567
query69	513	300	299	299
query70	1224	1140	1156	1140
query71	363	277	272	272
query72	7316	3958	3965	3958
query73	763	335	334	334
query74	10355	9105	9031	9031
query75	3404	2666	2678	2666
query76	3042	933	886	886
query77	420	307	291	291
query78	10532	9589	9547	9547
query79	1444	580	586	580
query80	2469	439	456	439
query81	574	234	236	234
query82	419	135	137	135
query83	299	136	133	133
query84	273	77	78	77
query85	1637	314	305	305
query86	468	303	289	289
query87	4462	4283	4299	4283
query88	3629	2477	2354	2354
query89	405	281	286	281
query90	2097	182	180	180
query91	154	106	107	106
query92	73	51	47	47
query93	2114	548	539	539
query94	1194	295	292	292
query95	359	251	250	250
query96	616	277	275	275
query97	3256	3206	3139	3139
query98	225	207	190	190
query99	1588	1310	1325	1310
Total cold run time: 304583 ms
Total hot run time: 191922 ms

@doris-robot
Copy link

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

query1	0.03	0.02	0.03
query2	0.06	0.02	0.03
query3	0.23	0.07	0.06
query4	1.64	0.10	0.10
query5	0.52	0.51	0.52
query6	1.13	0.72	0.74
query7	0.03	0.01	0.01
query8	0.04	0.04	0.03
query9	0.57	0.49	0.50
query10	0.58	0.56	0.55
query11	0.14	0.11	0.11
query12	0.13	0.11	0.10
query13	0.61	0.60	0.59
query14	2.80	2.75	2.85
query15	0.90	0.82	0.83
query16	0.39	0.37	0.39
query17	1.06	0.98	1.12
query18	0.20	0.20	0.20
query19	1.89	1.92	2.03
query20	0.01	0.01	0.01
query21	15.36	0.60	0.57
query22	2.37	2.75	1.76
query23	17.14	0.83	0.72
query24	2.88	0.57	0.99
query25	0.31	0.22	0.12
query26	0.32	0.13	0.14
query27	0.05	0.04	0.04
query28	11.26	1.09	1.06
query29	12.57	3.20	3.23
query30	0.24	0.06	0.06
query31	2.87	0.38	0.37
query32	3.29	0.46	0.44
query33	3.04	2.98	3.03
query34	16.66	4.48	4.46
query35	4.55	4.51	4.53
query36	0.68	0.49	0.47
query37	0.09	0.05	0.06
query38	0.04	0.03	0.04
query39	0.03	0.02	0.02
query40	0.15	0.12	0.12
query41	0.08	0.02	0.03
query42	0.03	0.02	0.02
query43	0.03	0.03	0.03
Total cold run time: 107 s
Total hot run time: 32.11 s

[feature](nereids) add unequal predicates infer

[feature](nereids) add unequal predicates infer

[feature](nereids) add unequal predicates infer

normalize unequal infer predicate 5>a to a<5

add regression res

[feature](nereids) add unequal predicates infer

[Feature](nereids) extend derivation of equivalence predicate

[Feature](nereids) extend derivation of equivalence predicate

[Feature](nereids) extend derivation of equivalence predicate

literal should not be targetExpr and produce new predicate

delete useless code

delete useless code

[Feature](nereids) extend derivation of equivalence predicate

fix a=1 b=1 a=2 deduce to a=b

[Feature](nereids) extend derivation of equivalence predicate

[Feature](nereids) extend derivation of equivalence predicate

[Feature](nereids) extend derivation of equivalence predicate

[Feature](nereids) extend derivation of equivalence predicate

add feut

only support slot equalTo infer, remove the expr equalTo infer support

fix feut

change the logic of pull up predicate from join, and support a=1 b=1 infer a=b

not infer same table predicates

revert 'change the logic of pull up predicate from join, and support a=1 b=1 infer a=b'

sort the equal set, and infer a=b a=c to b=c in order

merge equal and unequal predicate infer

fix feut

prepare stmt not infer predicates

support cast to unequal predicates

fix regression

fix regression

do some print in regression

use this function mv_rewrite_success_without_check_chosen in regression

fix regression

change hashset to linkedhashset in predicate infer to make predicate order stable

sort input exprs by tosql in unequal infer to fix result, generate equalTo in unequal infer and change pull up join predicates

when throw error in replace predicate, skip it and add cast check for decimalv3, and add feut for unequal predicate infer

infer all different table equal(t1.a=t2.a)

infer all different table equal(t1.a=t2.b=t3.c), but not infer when equal with literal(t1.a=t2.b=t3.c=1)

delete deduceTransitiveEquality in ReplacePredicates

support literal slot equal pair in ReplacePredicate

fix checkstyle

add comment

add regression

add boolean getAllPredicates in PullUpPredicates, to avoid redundant predicates. keep the order of predicates

fix regression

revert merge filter change(will affect preparestmt), and forbid null literal in infer, add try catch in generate fitlers

not take null literal when build equal set

not generate all literal predicates

simplify PredicateInferUtils.inferPredicate

adjust feut

fix feut

remove useless code, add comment

fix name expand_graph
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17628	7390	7329	7329
q2	2040	284	273	273
q3	11884	1079	1177	1079
q4	10552	798	718	718
q5	7774	2864	2817	2817
q6	238	155	150	150
q7	1019	663	614	614
q8	9359	1917	1926	1917
q9	6933	6384	6451	6384
q10	6988	2259	2347	2259
q11	441	245	241	241
q12	405	224	217	217
q13	17773	2990	2989	2989
q14	233	210	214	210
q15	568	535	514	514
q16	659	592	580	580
q17	968	548	531	531
q18	7229	6549	6630	6549
q19	1345	906	944	906
q20	485	202	196	196
q21	3945	3223	3148	3148
q22	1086	997	1007	997
Total cold run time: 109552 ms
Total hot run time: 40618 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7237	7304	7241	7241
q2	329	230	236	230
q3	2991	2901	2954	2901
q4	2080	1832	1808	1808
q5	5722	5658	5711	5658
q6	231	152	151	151
q7	2235	1879	1815	1815
q8	3350	3572	3448	3448
q9	8973	8876	8897	8876
q10	3570	3564	3529	3529
q11	577	478	482	478
q12	831	592	618	592
q13	9596	3184	3219	3184
q14	308	287	264	264
q15	587	524	534	524
q16	708	640	633	633
q17	1865	1649	1613	1613
q18	8319	7815	7749	7749
q19	1687	1510	1422	1422
q20	2108	1890	1892	1890
q21	5488	5344	5357	5344
q22	1119	1049	1026	1026
Total cold run time: 69911 ms
Total hot run time: 60376 ms

@doris-robot
Copy link

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

query1	954	393	408	393
query2	6287	2131	2071	2071
query3	8685	193	198	193
query4	33966	23634	23425	23425
query5	3669	480	466	466
query6	275	175	183	175
query7	4195	308	312	308
query8	298	238	236	236
query9	9458	2680	2667	2667
query10	465	285	276	276
query11	18003	15138	15267	15138
query12	146	98	96	96
query13	1595	473	438	438
query14	10213	7618	7659	7618
query15	255	174	180	174
query16	8014	514	523	514
query17	1660	624	590	590
query18	2065	329	320	320
query19	397	160	166	160
query20	121	112	113	112
query21	214	107	112	107
query22	4700	4427	4505	4427
query23	36651	34291	34030	34030
query24	11060	2887	2825	2825
query25	558	398	410	398
query26	757	158	163	158
query27	2242	305	301	301
query28	7285	2426	2392	2392
query29	690	436	420	420
query30	264	160	161	160
query31	1015	795	798	795
query32	99	55	55	55
query33	763	318	303	303
query34	923	511	531	511
query35	848	756	742	742
query36	1123	946	946	946
query37	149	91	89	89
query38	4085	4034	3891	3891
query39	1486	1457	1490	1457
query40	221	97	97	97
query41	48	43	52	43
query42	115	99	101	99
query43	522	500	493	493
query44	1249	810	794	794
query45	207	162	169	162
query46	1153	736	718	718
query47	1963	1819	1819	1819
query48	460	358	339	339
query49	882	474	421	421
query50	806	413	437	413
query51	7106	6975	7036	6975
query52	97	86	87	86
query53	251	176	175	175
query54	1287	479	469	469
query55	77	75	78	75
query56	275	257	270	257
query57	1273	1139	1114	1114
query58	234	228	223	223
query59	3134	3084	2847	2847
query60	309	271	266	266
query61	102	100	98	98
query62	860	655	678	655
query63	225	187	187	187
query64	3831	655	619	619
query65	3267	3196	3193	3193
query66	722	305	305	305
query67	15617	15474	15447	15447
query68	4444	567	553	553
query69	556	296	292	292
query70	1160	1174	1118	1118
query71	374	264	272	264
query72	7340	3937	3936	3936
query73	763	342	359	342
query74	10176	8950	9098	8950
query75	3567	2696	2665	2665
query76	3487	967	954	954
query77	728	297	294	294
query78	10509	9569	9556	9556
query79	2204	593	612	593
query80	1092	432	472	432
query81	593	253	243	243
query82	634	135	137	135
query83	348	132	132	132
query84	285	70	78	70
query85	1300	305	289	289
query86	393	312	301	301
query87	4598	4298	4409	4298
query88	3603	2396	2339	2339
query89	426	282	284	282
query90	1991	180	184	180
query91	152	115	110	110
query92	66	50	47	47
query93	2217	548	542	542
query94	866	261	295	261
query95	351	253	254	253
query96	609	277	275	275
query97	3208	3116	3131	3116
query98	218	202	194	194
query99	1631	1358	1320	1320
Total cold run time: 301815 ms
Total hot run time: 192102 ms

@doris-robot
Copy link

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

query1	0.03	0.03	0.03
query2	0.06	0.04	0.03
query3	0.23	0.06	0.06
query4	1.64	0.10	0.10
query5	0.52	0.51	0.52
query6	1.13	0.72	0.71
query7	0.01	0.02	0.01
query8	0.04	0.03	0.03
query9	0.56	0.50	0.50
query10	0.55	0.54	0.54
query11	0.13	0.11	0.11
query12	0.13	0.11	0.11
query13	0.61	0.63	0.60
query14	2.84	2.73	2.74
query15	0.91	0.83	0.83
query16	0.39	0.38	0.39
query17	1.01	1.04	1.05
query18	0.21	0.20	0.20
query19	1.85	1.83	2.05
query20	0.02	0.01	0.01
query21	15.36	0.59	0.58
query22	3.06	2.51	1.37
query23	17.05	0.92	0.84
query24	2.96	1.10	1.65
query25	0.15	0.13	0.04
query26	0.61	0.12	0.12
query27	0.04	0.04	0.04
query28	10.21	1.10	1.08
query29	12.58	3.24	3.23
query30	0.25	0.06	0.06
query31	2.87	0.37	0.37
query32	3.30	0.47	0.47
query33	2.98	3.07	3.02
query34	17.17	4.51	4.46
query35	4.45	4.47	4.55
query36	0.68	0.48	0.50
query37	0.09	0.06	0.06
query38	0.04	0.03	0.04
query39	0.03	0.02	0.02
query40	0.16	0.12	0.12
query41	0.08	0.02	0.02
query42	0.04	0.02	0.02
query43	0.03	0.02	0.02
Total cold run time: 107.06 s
Total hot run time: 32.38 s

@feiniaofeiafei
Copy link
Contributor Author

run p0

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Oct 15, 2024
Copy link
Contributor

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

@morrySnow morrySnow merged commit 6a0d48b into apache:master Oct 15, 2024
24 of 25 checks passed
feiniaofeiafei added a commit to feiniaofeiafei/doris that referenced this pull request Oct 25, 2024
This pr refactors the PredicatePropagation module and adds support for
predicate deduction, including:

Support for predicate deduction of like, not in, !=;
Support for predicate deduction of abs(b)=1 for a=b and abs(a)=1;
Support for transitive deduction of non-equivalent relations, for example, a>b b>1 leads to a>1.
Deleted useless predicates.
But still has something to do in predicate inference:
support expr in infer predicate, e.g. abs(t1.c1)>abs(t2.c2) and abs(t1.c1)<1
need to add expr qualifier info, to determine whether abs(t1.c1) and abs(t2.c2) is from same table.
feiniaofeiafei added a commit to feiniaofeiafei/doris that referenced this pull request Oct 25, 2024
This pr refactors the PredicatePropagation module and adds support for
predicate deduction, including:

Support for predicate deduction of like, not in, !=;
Support for predicate deduction of abs(b)=1 for a=b and abs(a)=1;
Support for transitive deduction of non-equivalent relations, for example, a>b b>1 leads to a>1.
Deleted useless predicates.
But still has something to do in predicate inference:
support expr in infer predicate, e.g. abs(t1.c1)>abs(t2.c2) and abs(t1.c1)<1
need to add expr qualifier info, to determine whether abs(t1.c1) and abs(t2.c2) is from same table.
feiniaofeiafei added a commit to feiniaofeiafei/doris that referenced this pull request Oct 25, 2024
This pr refactors the PredicatePropagation module and adds support for
predicate deduction, including:

Support for predicate deduction of like, not in, !=;
Support for predicate deduction of abs(b)=1 for a=b and abs(a)=1;
Support for transitive deduction of non-equivalent relations, for example, a>b b>1 leads to a>1.
Deleted useless predicates.
But still has something to do in predicate inference:
support expr in infer predicate, e.g. abs(t1.c1)>abs(t2.c2) and abs(t1.c1)<1
need to add expr qualifier info, to determine whether abs(t1.c1) and abs(t2.c2) is from same table.
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. dev/3.0.x reviewed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants