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) support pull up predicates from aggregate min/max/avg #42199

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

feiniaofeiafei
Copy link
Contributor

this pr do 2 things:
1.support pull up predicates from aggregate min/max/avg. e.g.

 select * from (select avg(c) c1 from test_like1 where c<=10 group by a ) t inner join test_like2 t2 on t.c1=t2.a;

c<=10 pull up from aggregate to avg(c)<=10, and then pull up from aggregate to t.c1<=10, and with equal join condition,can infer predicate t2.a<=10.
2. carry qualifier when pull up from projects, before this pr, c1<=10 pull up from project to c1<=10. after this pr, c1<=10 pull up from project to t.c1<=10.

@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: 41433 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit f003cfa34ac896360edc7152f6b5e51293237326, data reload: false

------ Round 1 ----------------------------------
q1	17654	7691	7268	7268
q2	2024	295	278	278
q3	12375	1082	1163	1082
q4	10565	837	868	837
q5	7757	3109	3102	3102
q6	239	155	149	149
q7	1031	624	606	606
q8	9359	1981	1991	1981
q9	6660	6479	6396	6396
q10	7070	2417	2415	2415
q11	451	241	245	241
q12	428	221	228	221
q13	17801	3045	3021	3021
q14	243	210	213	210
q15	576	520	507	507
q16	643	595	590	590
q17	986	470	456	456
q18	7213	6823	6847	6823
q19	1355	914	1062	914
q20	490	187	186	186
q21	4020	3337	3162	3162
q22	1105	1016	988	988
Total cold run time: 110045 ms
Total hot run time: 41433 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7301	7281	7307	7281
q2	331	246	245	245
q3	3083	2981	2990	2981
q4	2091	1755	1831	1755
q5	5749	5807	5820	5807
q6	232	149	149	149
q7	2294	1870	1879	1870
q8	3409	3430	3543	3430
q9	8965	8929	8984	8929
q10	3621	3582	3621	3582
q11	595	487	506	487
q12	847	674	627	627
q13	8713	3229	3266	3229
q14	311	273	272	272
q15	574	512	534	512
q16	707	665	643	643
q17	1850	1612	1591	1591
q18	8340	7766	7614	7614
q19	1736	1606	1532	1532
q20	2116	1876	1872	1872
q21	5803	5446	5482	5446
q22	1189	1091	1077	1077
Total cold run time: 69857 ms
Total hot run time: 60931 ms

@doris-robot
Copy link

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

query1	922	384	401	384
query2	6267	2132	2114	2114
query3	8705	193	211	193
query4	34205	23724	23466	23466
query5	3543	476	465	465
query6	281	180	172	172
query7	4192	295	293	293
query8	301	244	228	228
query9	9605	2731	2741	2731
query10	459	269	280	269
query11	17809	15199	15152	15152
query12	146	106	99	99
query13	1574	433	406	406
query14	9727	7489	7190	7190
query15	251	175	176	175
query16	7284	461	444	444
query17	1632	648	593	593
query18	1528	315	337	315
query19	376	156	178	156
query20	132	121	120	120
query21	209	108	107	107
query22	4781	4724	4657	4657
query23	35135	34182	34160	34160
query24	10870	2810	2732	2732
query25	616	434	396	396
query26	1142	161	164	161
query27	2202	286	293	286
query28	7364	2463	2436	2436
query29	716	435	436	435
query30	293	155	162	155
query31	1089	807	833	807
query32	97	57	54	54
query33	748	293	304	293
query34	914	534	489	489
query35	899	738	752	738
query36	1125	972	969	969
query37	148	88	89	88
query38	4143	3908	4028	3908
query39	1470	1437	1408	1408
query40	214	97	98	97
query41	48	47	46	46
query42	122	102	100	100
query43	543	514	492	492
query44	1266	812	810	810
query45	202	165	168	165
query46	1142	698	708	698
query47	1959	1864	1885	1864
query48	433	315	322	315
query49	1002	441	431	431
query50	813	391	394	391
query51	7100	6966	6973	6966
query52	104	94	93	93
query53	269	180	180	180
query54	1199	450	435	435
query55	78	74	76	74
query56	259	255	245	245
query57	1290	1209	1154	1154
query58	230	230	235	230
query59	3212	3238	3051	3051
query60	286	267	259	259
query61	106	103	103	103
query62	863	656	653	653
query63	222	188	187	187
query64	4014	634	603	603
query65	3266	3230	3226	3226
query66	823	302	337	302
query67	16133	15617	15741	15617
query68	3514	582	568	568
query69	506	297	294	294
query70	1222	1061	1060	1060
query71	345	279	298	279
query72	7292	3976	3831	3831
query73	775	354	378	354
query74	10123	9223	8944	8944
query75	3460	2643	2632	2632
query76	2963	917	922	917
query77	614	311	298	298
query78	10451	9640	9558	9558
query79	2010	588	603	588
query80	1049	451	445	445
query81	584	241	241	241
query82	649	136	139	136
query83	276	134	132	132
query84	272	68	70	68
query85	1309	299	294	294
query86	414	284	301	284
query87	4518	4421	4291	4291
query88	3052	2230	2190	2190
query89	407	287	294	287
query90	1947	184	189	184
query91	134	103	101	101
query92	62	50	48	48
query93	1795	537	538	537
query94	933	292	292	292
query95	349	246	249	246
query96	620	274	291	274
query97	3282	3107	3090	3090
query98	217	198	192	192
query99	1586	1329	1292	1292
Total cold run time: 296828 ms
Total hot run time: 191978 ms

@doris-robot
Copy link

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

query1	0.04	0.04	0.03
query2	0.06	0.03	0.03
query3	0.23	0.06	0.06
query4	1.67	0.10	0.10
query5	0.52	0.49	0.50
query6	1.13	0.73	0.73
query7	0.02	0.03	0.01
query8	0.04	0.03	0.03
query9	0.56	0.51	0.49
query10	0.56	0.55	0.56
query11	0.16	0.12	0.11
query12	0.14	0.11	0.11
query13	0.61	0.59	0.60
query14	2.84	2.84	2.73
query15	0.90	0.83	0.84
query16	0.38	0.38	0.39
query17	1.06	1.07	0.99
query18	0.19	0.19	0.19
query19	1.93	1.87	2.05
query20	0.01	0.01	0.01
query21	15.36	0.61	0.56
query22	2.47	1.77	1.51
query23	17.14	0.96	0.76
query24	2.58	0.87	2.20
query25	0.20	0.18	0.10
query26	0.59	0.14	0.14
query27	0.04	0.04	0.04
query28	10.16	1.10	1.07
query29	12.55	3.25	3.27
query30	0.24	0.06	0.05
query31	2.89	0.39	0.36
query32	3.28	0.45	0.46
query33	3.02	3.08	3.05
query34	16.92	4.52	4.46
query35	4.51	4.49	4.54
query36	0.67	0.49	0.50
query37	0.09	0.05	0.06
query38	0.05	0.04	0.03
query39	0.04	0.02	0.02
query40	0.17	0.12	0.13
query41	0.08	0.03	0.02
query42	0.04	0.02	0.02
query43	0.04	0.02	0.02
Total cold run time: 106.18 s
Total hot run time: 32.26 s

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@feiniaofeiafei feiniaofeiafei force-pushed the add_pull_up_agg branch 2 times, most recently from 0798760 to 07b17d3 Compare October 23, 2024 13:11
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17597	7470	7304	7304
q2	2067	169	166	166
q3	10564	1170	1188	1170
q4	10230	819	832	819
q5	7743	3093	3118	3093
q6	238	151	152	151
q7	1040	621	602	602
q8	9354	1944	1955	1944
q9	6676	6459	6476	6459
q10	7114	2438	2450	2438
q11	457	253	253	253
q12	585	226	230	226
q13	17783	3031	3038	3031
q14	250	215	218	215
q15	571	524	509	509
q16	655	595	594	594
q17	994	530	545	530
q18	7399	6889	6860	6860
q19	1375	990	1036	990
q20	469	191	185	185
q21	4175	3357	3081	3081
q22	1122	1014	981	981
Total cold run time: 108458 ms
Total hot run time: 41601 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7302	7426	7277	7277
q2	328	231	234	231
q3	2960	2800	2817	2800
q4	1975	1700	1701	1700
q5	5479	5484	5526	5484
q6	233	149	148	148
q7	2161	1724	1761	1724
q8	3227	3410	3402	3402
q9	8543	8615	8631	8615
q10	3514	3509	3473	3473
q11	573	479	489	479
q12	804	583	600	583
q13	12541	3007	3046	3007
q14	301	265	264	264
q15	565	509	510	509
q16	687	635	643	635
q17	1840	1622	1569	1569
q18	7864	7541	7626	7541
q19	1666	1529	1492	1492
q20	2045	1819	1817	1817
q21	5413	5204	5273	5204
q22	1125	1021	1008	1008
Total cold run time: 71146 ms
Total hot run time: 58962 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 192714 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 07b17d30d410bd73069d6b6b2ff1a7f70eb3aeff, data reload: false

query1	955	381	384	381
query2	5355	2211	2146	2146
query3	4664	216	226	216
query4	33280	23714	23579	23579
query5	3594	473	501	473
query6	237	169	158	158
query7	4032	299	300	299
query8	306	237	228	228
query9	8663	2717	2760	2717
query10	441	301	286	286
query11	17718	15158	15189	15158
query12	152	106	103	103
query13	1472	439	427	427
query14	9627	7130	7136	7130
query15	266	175	175	175
query16	7373	460	459	459
query17	1340	577	562	562
query18	1818	322	308	308
query19	279	152	148	148
query20	127	116	108	108
query21	216	109	103	103
query22	4722	4234	4366	4234
query23	35102	34487	34281	34281
query24	10723	2763	2815	2763
query25	691	412	409	409
query26	1711	160	173	160
query27	2619	284	285	284
query28	7400	2467	2467	2467
query29	1018	440	432	432
query30	334	166	156	156
query31	1038	813	855	813
query32	80	57	60	57
query33	698	290	305	290
query34	954	505	525	505
query35	961	755	765	755
query36	1130	946	963	946
query37	246	91	92	91
query38	4163	3905	3952	3905
query39	1496	1433	1493	1433
query40	279	103	105	103
query41	50	48	47	47
query42	121	99	101	99
query43	550	516	500	500
query44	1257	825	821	821
query45	206	170	173	170
query46	1161	715	706	706
query47	1922	1824	1822	1822
query48	433	326	324	324
query49	1258	452	443	443
query50	831	389	408	389
query51	7168	7034	7016	7016
query52	102	94	93	93
query53	259	187	181	181
query54	842	440	451	440
query55	81	79	80	79
query56	289	270	275	270
query57	1332	1181	1169	1169
query58	242	283	287	283
query59	3498	3043	3090	3043
query60	305	292	287	287
query61	154	100	107	100
query62	862	691	661	661
query63	217	186	185	185
query64	4602	656	615	615
query65	3277	3181	3248	3181
query66	1311	318	304	304
query67	16038	15952	15636	15636
query68	4256	574	550	550
query69	534	296	297	296
query70	1217	1151	1191	1151
query71	364	283	265	265
query72	6667	3954	4024	3954
query73	784	363	375	363
query74	9579	9118	9103	9103
query75	3405	2642	2700	2642
query76	3341	876	924	876
query77	411	320	305	305
query78	10468	9678	9655	9655
query79	1136	598	617	598
query80	2040	474	453	453
query81	579	243	245	243
query82	349	141	144	141
query83	282	136	136	136
query84	268	70	73	70
query85	1360	296	280	280
query86	394	307	305	305
query87	4581	4437	4516	4437
query88	3479	2239	2207	2207
query89	392	289	291	289
query90	2149	194	183	183
query91	143	101	101	101
query92	74	50	48	48
query93	1095	558	544	544
query94	1134	283	294	283
query95	349	253	258	253
query96	612	279	287	279
query97	3294	3151	3096	3096
query98	214	195	199	195
query99	1503	1307	1301	1301
Total cold run time: 292101 ms
Total hot run time: 192714 ms

@doris-robot
Copy link

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

query1	0.03	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.13	0.73	0.72
query7	0.02	0.02	0.01
query8	0.04	0.03	0.03
query9	0.56	0.50	0.51
query10	0.55	0.56	0.55
query11	0.15	0.11	0.11
query12	0.14	0.11	0.11
query13	0.61	0.61	0.59
query14	2.83	2.75	2.71
query15	0.91	0.84	0.83
query16	0.40	0.38	0.37
query17	1.01	1.01	1.05
query18	0.20	0.20	0.20
query19	1.95	1.88	2.00
query20	0.01	0.01	0.01
query21	15.35	0.62	0.61
query22	3.12	2.68	2.40
query23	17.14	0.94	0.88
query24	3.31	0.88	0.90
query25	0.27	0.22	0.05
query26	0.44	0.14	0.13
query27	0.04	0.03	0.03
query28	10.63	1.10	1.07
query29	12.52	3.31	3.30
query30	0.24	0.07	0.06
query31	2.84	0.38	0.38
query32	3.26	0.47	0.46
query33	3.01	3.00	3.04
query34	17.17	4.46	4.53
query35	4.47	4.46	4.47
query36	0.68	0.48	0.49
query37	0.08	0.06	0.06
query38	0.05	0.03	0.03
query39	0.03	0.03	0.02
query40	0.16	0.12	0.13
query41	0.08	0.02	0.03
query42	0.04	0.02	0.02
query43	0.03	0.04	0.02
Total cold run time: 107.95 s
Total hot run time: 33.29 s

@feiniaofeiafei
Copy link
Contributor Author

run feut

@@ -325,8 +343,8 @@ private ImmutableSet<Expression> getAvailableExpressions(Set<Expression> predica
return ImmutableSet.copyOf(newPredicates);
}

private boolean hasAgg(Expression expression) {
return expression.anyMatch(AggregateFunction.class::isInstance);
private boolean supportPullUpAgg(Expression expr) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Does it mean the original hasAgg judgement actually contains any unexpected pulled up agg cases, after this restriction?

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@feiniaofeiafei
Copy link
Contributor Author

run cloud_p0

@feiniaofeiafei
Copy link
Contributor Author

run performance

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17575	7751	7287	7287
q2	2055	168	176	168
q3	10541	1109	1217	1109
q4	10549	858	884	858
q5	7775	3110	3055	3055
q6	235	148	149	148
q7	1029	621	614	614
q8	9341	2004	1996	1996
q9	6642	6434	6468	6434
q10	7109	2458	2471	2458
q11	482	273	264	264
q12	410	215	214	214
q13	17788	3013	3003	3003
q14	264	208	222	208
q15	574	533	515	515
q16	689	609	597	597
q17	976	492	501	492
q18	7373	6748	6725	6725
q19	1343	1027	1084	1027
q20	495	187	185	185
q21	3979	3317	3081	3081
q22	1104	1017	1014	1014
Total cold run time: 108328 ms
Total hot run time: 41452 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7262	7241	7233	7233
q2	325	224	230	224
q3	3002	2965	3021	2965
q4	2115	1926	1797	1797
q5	5748	5784	5777	5777
q6	232	154	147	147
q7	2251	1899	1814	1814
q8	3384	3552	3448	3448
q9	8914	8976	8864	8864
q10	3608	3554	3566	3554
q11	608	513	510	510
q12	825	645	645	645
q13	9082	3209	3168	3168
q14	308	285	273	273
q15	589	523	531	523
q16	695	637	626	626
q17	1879	1652	1612	1612
q18	8505	7891	7648	7648
q19	1708	1547	1515	1515
q20	2133	1884	1881	1881
q21	5558	5394	5456	5394
q22	1162	1099	1041	1041
Total cold run time: 69893 ms
Total hot run time: 60659 ms

@doris-robot
Copy link

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

query1	1218	904	897	897
query2	6259	2077	2091	2077
query3	10788	3896	3925	3896
query4	67879	29405	23628	23628
query5	5077	455	432	432
query6	403	164	159	159
query7	5649	294	302	294
query8	294	231	225	225
query9	9290	2765	2756	2756
query10	467	267	251	251
query11	17559	15490	15933	15490
query12	163	105	104	104
query13	1550	448	434	434
query14	10953	7088	6939	6939
query15	214	183	180	180
query16	7085	460	455	455
query17	1012	550	568	550
query18	1843	294	293	293
query19	193	152	150	150
query20	118	111	110	110
query21	203	98	109	98
query22	4620	4366	4417	4366
query23	34784	34192	34288	34192
query24	6016	2817	2849	2817
query25	522	401	409	401
query26	658	165	165	165
query27	1657	294	290	290
query28	4197	2488	2437	2437
query29	657	400	411	400
query30	231	151	147	147
query31	982	761	843	761
query32	67	54	56	54
query33	432	262	261	261
query34	936	508	528	508
query35	865	730	733	730
query36	1080	958	967	958
query37	111	71	73	71
query38	4442	4309	4237	4237
query39	1487	1447	1406	1406
query40	191	94	97	94
query41	45	41	43	41
query42	110	97	96	96
query43	552	504	507	504
query44	1173	807	826	807
query45	179	160	160	160
query46	1105	725	681	681
query47	1926	1882	1859	1859
query48	414	318	316	316
query49	715	394	386	386
query50	815	389	418	389
query51	7302	7179	7031	7031
query52	97	90	87	87
query53	270	182	180	180
query54	525	395	401	395
query55	77	77	76	76
query56	258	230	241	230
query57	1280	1218	1163	1163
query58	212	210	198	198
query59	3241	3146	2916	2916
query60	279	250	246	246
query61	98	98	103	98
query62	798	672	682	672
query63	216	191	197	191
query64	1348	617	627	617
query65	3269	3258	3250	3250
query66	720	296	333	296
query67	15966	15523	15815	15523
query68	2741	591	606	591
query69	404	255	250	250
query70	1177	1164	1145	1145
query71	318	253	257	253
query72	5462	4118	4053	4053
query73	760	366	363	363
query74	9659	8925	9183	8925
query75	3414	2644	2675	2644
query76	1615	1025	1148	1025
query77	522	280	280	280
query78	10319	9449	9419	9419
query79	1367	606	589	589
query80	817	431	441	431
query81	493	251	243	243
query82	1257	118	113	113
query83	212	147	139	139
query84	270	72	70	70
query85	846	292	283	283
query86	348	286	276	276
query87	4895	4714	4854	4714
query88	3318	2223	2172	2172
query89	411	299	297	297
query90	1977	185	186	185
query91	137	104	96	96
query92	60	49	49	49
query93	1297	536	542	536
query94	767	281	284	281
query95	348	243	244	243
query96	607	272	286	272
query97	2898	2705	2728	2705
query98	215	209	190	190
query99	1583	1323	1323	1323
Total cold run time: 315656 ms
Total hot run time: 196276 ms

@doris-robot
Copy link

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

query1	0.03	0.03	0.03
query2	0.07	0.03	0.03
query3	0.23	0.06	0.06
query4	1.64	0.11	0.11
query5	0.42	0.42	0.42
query6	1.14	0.65	0.67
query7	0.01	0.02	0.01
query8	0.04	0.03	0.05
query9	0.56	0.51	0.51
query10	0.56	0.56	0.55
query11	0.14	0.10	0.10
query12	0.14	0.11	0.11
query13	0.61	0.61	0.61
query14	2.86	2.84	2.71
query15	0.89	0.83	0.82
query16	0.39	0.38	0.37
query17	1.08	1.07	1.06
query18	0.20	0.20	0.19
query19	1.98	1.90	2.02
query20	0.01	0.00	0.01
query21	15.39	0.59	0.58
query22	2.76	2.01	1.88
query23	17.03	0.92	0.82
query24	2.83	1.34	2.26
query25	0.16	0.18	0.05
query26	0.57	0.13	0.14
query27	0.04	0.04	0.04
query28	9.66	1.08	1.07
query29	12.58	3.27	3.25
query30	0.24	0.07	0.06
query31	2.86	0.39	0.37
query32	3.27	0.46	0.44
query33	2.96	3.05	3.06
query34	17.13	4.48	4.45
query35	4.52	4.50	4.45
query36	0.67	0.48	0.51
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.13	0.12
query41	0.09	0.02	0.02
query42	0.04	0.02	0.02
query43	0.03	0.03	0.03
Total cold run time: 106.14 s
Total hot run time: 33.03 s

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17583	7890	8009	7890
q2	2044	178	169	169
q3	10776	1177	1266	1177
q4	10564	738	772	738
q5	7629	2879	2865	2865
q6	260	152	151	151
q7	1064	637	626	626
q8	9260	1870	2051	1870
q9	6973	6729	6698	6698
q10	7010	2352	2369	2352
q11	470	275	270	270
q12	454	227	219	219
q13	17772	3058	3040	3040
q14	258	210	207	207
q15	589	531	544	531
q16	684	600	582	582
q17	1032	534	557	534
q18	7316	6657	6815	6657
q19	1359	1130	1218	1130
q20	496	182	187	182
q21	4285	3545	3395	3395
q22	396	328	315	315
Total cold run time: 108274 ms
Total hot run time: 41598 ms

----- Round 2, with runtime_filter_mode=off -----
q1	7836	7822	7990	7822
q2	357	243	237	237
q3	3202	3052	3111	3052
q4	2265	1970	1891	1891
q5	5782	5842	5916	5842
q6	251	146	148	146
q7	2365	1823	1804	1804
q8	3712	3796	3710	3710
q9	9165	9039	9029	9029
q10	3805	3709	3727	3709
q11	628	532	514	514
q12	861	623	589	589
q13	11252	3317	3292	3292
q14	333	295	293	293
q15	587	530	537	530
q16	704	637	658	637
q17	1985	1739	1718	1718
q18	8338	7757	7788	7757
q19	1898	1760	1758	1758
q20	2127	1892	1913	1892
q21	5814	5510	5541	5510
q22	676	577	573	573
Total cold run time: 73943 ms
Total hot run time: 62305 ms

@doris-robot
Copy link

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

query1	1229	933	899	899
query2	6267	2145	2080	2080
query3	10952	3972	4041	3972
query4	67874	29187	23542	23542
query5	4829	466	467	466
query6	433	193	188	188
query7	5503	307	294	294
query8	313	230	219	219
query9	8715	2634	2645	2634
query10	442	261	250	250
query11	17228	15224	15940	15224
query12	149	106	105	105
query13	1477	408	415	408
query14	10030	7927	7934	7927
query15	208	201	205	201
query16	7038	466	467	466
query17	1195	558	568	558
query18	1794	297	303	297
query19	230	147	154	147
query20	120	120	113	113
query21	202	104	108	104
query22	4724	4624	4350	4350
query23	34934	34354	34417	34354
query24	5446	2517	2571	2517
query25	487	390	394	390
query26	645	156	153	153
query27	1810	292	290	290
query28	4666	2476	2473	2473
query29	677	409	427	409
query30	219	150	160	150
query31	1045	828	838	828
query32	67	52	55	52
query33	467	289	285	285
query34	946	533	523	523
query35	864	743	755	743
query36	1068	976	947	947
query37	122	84	72	72
query38	4526	4507	4349	4349
query39	1515	1515	1494	1494
query40	198	110	101	101
query41	44	40	44	40
query42	114	105	105	105
query43	553	491	521	491
query44	1203	835	834	834
query45	200	204	167	167
query46	1136	736	726	726
query47	2031	1882	1914	1882
query48	423	317	333	317
query49	724	408	396	396
query50	840	396	423	396
query51	7465	7279	7290	7279
query52	104	95	85	85
query53	261	187	174	174
query54	518	391	397	391
query55	85	77	77	77
query56	252	241	243	241
query57	1290	1179	1174	1174
query58	230	223	227	223
query59	3337	3180	3180	3180
query60	285	258	250	250
query61	133	127	127	127
query62	808	676	682	676
query63	217	194	191	191
query64	1464	662	631	631
query65	3280	3183	3245	3183
query66	706	305	326	305
query67	15969	15737	15627	15627
query68	4073	574	562	562
query69	419	253	251	251
query70	1225	1064	1093	1064
query71	356	262	255	255
query72	6313	4073	4015	4015
query73	772	350	368	350
query74	10508	9073	9089	9073
query75	3392	2682	2789	2682
query76	1805	1134	1132	1132
query77	446	280	277	277
query78	10418	9455	9376	9376
query79	2221	591	607	591
query80	1426	424	436	424
query81	535	240	231	231
query82	1314	123	126	123
query83	269	155	146	146
query84	276	70	73	70
query85	1146	331	290	290
query86	435	302	304	302
query87	4870	4656	4625	4625
query88	3570	2256	2218	2218
query89	425	291	293	291
query90	1929	189	186	186
query91	136	102	105	102
query92	64	49	51	49
query93	3104	550	534	534
query94	873	306	275	275
query95	356	247	255	247
query96	632	282	282	282
query97	2928	2680	2702	2680
query98	222	193	199	193
query99	1666	1317	1304	1304
Total cold run time: 322450 ms
Total hot run time: 197942 ms

@doris-robot
Copy link

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

query1	0.04	0.04	0.04
query2	0.06	0.04	0.03
query3	0.23	0.08	0.07
query4	1.61	0.10	0.11
query5	0.42	0.42	0.40
query6	1.14	0.65	0.67
query7	0.02	0.02	0.01
query8	0.04	0.03	0.03
query9	0.57	0.49	0.51
query10	0.53	0.58	0.56
query11	0.14	0.10	0.11
query12	0.14	0.11	0.11
query13	0.61	0.61	0.61
query14	2.71	2.72	2.72
query15	0.91	0.83	0.84
query16	0.38	0.39	0.38
query17	1.00	1.07	1.03
query18	0.24	0.21	0.21
query19	1.96	1.85	1.93
query20	0.02	0.01	0.01
query21	15.37	0.59	0.58
query22	2.73	1.96	2.44
query23	16.88	0.96	0.84
query24	2.63	1.28	1.78
query25	0.15	0.24	0.16
query26	0.42	0.14	0.13
query27	0.05	0.06	0.04
query28	10.42	1.10	1.09
query29	12.52	3.25	3.21
query30	0.25	0.06	0.07
query31	2.86	0.39	0.38
query32	3.28	0.46	0.47
query33	3.03	3.11	3.03
query34	16.86	4.53	4.55
query35	4.57	4.47	4.54
query36	0.66	0.50	0.49
query37	0.09	0.06	0.07
query38	0.05	0.04	0.03
query39	0.03	0.02	0.03
query40	0.16	0.13	0.13
query41	0.07	0.02	0.02
query42	0.04	0.02	0.02
query43	0.04	0.03	0.03
Total cold run time: 105.93 s
Total hot run time: 33.25 s

@morrySnow morrySnow marked this pull request as draft December 25, 2024 03:56
@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17631	5582	5429	5429
q2	2048	307	172	172
q3	10407	1263	711	711
q4	10218	956	526	526
q5	7537	2407	2205	2205
q6	192	170	134	134
q7	953	750	623	623
q8	9233	1382	1218	1218
q9	5189	4995	4956	4956
q10	6832	2323	1909	1909
q11	471	269	250	250
q12	345	364	219	219
q13	17790	3775	3194	3194
q14	228	229	211	211
q15	509	471	466	466
q16	635	625	598	598
q17	550	858	319	319
q18	7094	6558	6430	6430
q19	1227	963	533	533
q20	305	332	193	193
q21	2857	2237	1982	1982
q22	367	339	314	314
Total cold run time: 102618 ms
Total hot run time: 32592 ms

----- Round 2, with runtime_filter_mode=off -----
q1	5528	5488	5509	5488
q2	243	341	239	239
q3	2250	2671	2329	2329
q4	1405	1842	1387	1387
q5	4312	4757	4652	4652
q6	165	155	123	123
q7	2084	2023	1834	1834
q8	2624	2804	2694	2694
q9	7332	7243	7179	7179
q10	2999	3270	2761	2761
q11	587	528	509	509
q12	690	784	605	605
q13	3497	3926	3368	3368
q14	278	292	268	268
q15	517	488	471	471
q16	661	694	648	648
q17	1238	1723	1266	1266
q18	7796	7430	7352	7352
q19	790	1091	1119	1091
q20	1972	2027	1888	1888
q21	5611	5254	4865	4865
q22	603	623	555	555
Total cold run time: 53182 ms
Total hot run time: 51572 ms

@doris-robot
Copy link

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

query1	972	381	363	363
query2	6509	2032	1920	1920
query3	6794	214	211	211
query4	33296	23269	22924	22924
query5	4376	619	464	464
query6	312	198	187	187
query7	4599	492	315	315
query8	307	246	231	231
query9	9283	2596	2590	2590
query10	493	334	274	274
query11	17817	15231	14864	14864
query12	154	107	108	107
query13	1659	554	408	408
query14	10359	7308	6679	6679
query15	259	197	183	183
query16	7922	645	478	478
query17	1644	725	549	549
query18	1971	378	285	285
query19	221	180	153	153
query20	112	112	136	112
query21	209	129	99	99
query22	4248	4339	4110	4110
query23	33938	32933	33185	32933
query24	6417	2218	2283	2218
query25	501	460	371	371
query26	1194	272	155	155
query27	1999	472	337	337
query28	5126	2432	2384	2384
query29	658	559	412	412
query30	237	185	155	155
query31	949	862	805	805
query32	91	60	65	60
query33	523	368	305	305
query34	753	834	507	507
query35	802	816	740	740
query36	982	1031	959	959
query37	130	98	74	74
query38	4180	4125	4132	4125
query39	1467	1392	1407	1392
query40	209	111	105	105
query41	54	53	52	52
query42	121	102	110	102
query43	525	502	477	477
query44	1346	799	818	799
query45	181	172	165	165
query46	854	1024	634	634
query47	1847	1811	1797	1797
query48	384	386	304	304
query49	785	488	391	391
query50	631	683	395	395
query51	7049	6983	6835	6835
query52	101	96	90	90
query53	219	251	184	184
query54	488	496	406	406
query55	81	81	78	78
query56	261	251	250	250
query57	1155	1175	1056	1056
query58	244	228	241	228
query59	2977	3191	2920	2920
query60	288	278	256	256
query61	119	118	121	118
query62	794	711	657	657
query63	224	193	192	192
query64	4319	1059	652	652
query65	3247	3156	3162	3156
query66	1082	413	315	315
query67	16042	15636	15464	15464
query68	5762	822	525	525
query69	491	298	265	265
query70	1248	1115	1085	1085
query71	386	291	260	260
query72	5899	3822	3835	3822
query73	653	758	367	367
query74	10315	9006	8866	8866
query75	3188	3201	2665	2665
query76	3234	1210	752	752
query77	482	349	289	289
query78	10068	10094	9241	9241
query79	3354	809	595	595
query80	598	524	451	451
query81	514	287	243	243
query82	589	145	121	121
query83	173	173	157	157
query84	237	100	77	77
query85	798	379	310	310
query86	404	317	310	310
query87	4466	4455	4403	4403
query88	4887	2130	2133	2130
query89	402	336	284	284
query90	1852	189	193	189
query91	136	140	114	114
query92	70	59	54	54
query93	1949	866	537	537
query94	706	408	299	299
query95	342	262	263	262
query96	494	619	278	278
query97	2789	2850	2746	2746
query98	237	208	197	197
query99	1267	1395	1254	1254
Total cold run time: 287080 ms
Total hot run time: 186664 ms

@doris-robot
Copy link

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

query1	0.03	0.03	0.03
query2	0.08	0.03	0.03
query3	0.24	0.07	0.07
query4	1.61	0.10	0.10
query5	0.44	0.40	0.40
query6	1.17	0.66	0.66
query7	0.03	0.02	0.02
query8	0.04	0.03	0.03
query9	0.58	0.52	0.50
query10	0.56	0.56	0.54
query11	0.15	0.10	0.10
query12	0.14	0.11	0.12
query13	0.61	0.59	0.60
query14	2.85	2.77	2.75
query15	0.91	0.82	0.82
query16	0.39	0.39	0.37
query17	1.02	1.06	1.03
query18	0.23	0.22	0.21
query19	1.96	1.79	1.97
query20	0.01	0.01	0.01
query21	15.36	0.94	0.57
query22	0.76	0.82	0.67
query23	15.26	1.49	0.52
query24	2.94	0.72	1.22
query25	0.12	0.08	0.13
query26	0.36	0.15	0.14
query27	0.07	0.06	0.06
query28	13.72	1.06	0.43
query29	12.56	3.91	3.30
query30	0.25	0.08	0.05
query31	2.85	0.60	0.39
query32	3.22	0.54	0.46
query33	3.01	2.97	3.06
query34	16.48	5.19	4.49
query35	4.55	4.52	4.50
query36	0.64	0.49	0.48
query37	0.10	0.07	0.06
query38	0.04	0.03	0.03
query39	0.03	0.03	0.02
query40	0.16	0.13	0.13
query41	0.08	0.03	0.02
query42	0.04	0.03	0.02
query43	0.04	0.03	0.02
Total cold run time: 105.69 s
Total hot run time: 30.29 s

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17596	5528	5405	5405
q2	2043	329	176	176
q3	10384	1330	728	728
q4	10220	967	532	532
q5	7699	2468	2167	2167
q6	196	164	132	132
q7	914	771	610	610
q8	9214	1332	1113	1113
q9	5476	4938	4895	4895
q10	6833	2325	1924	1924
q11	480	277	262	262
q12	342	364	223	223
q13	17767	3729	3134	3134
q14	239	217	210	210
q15	511	482	473	473
q16	653	616	597	597
q17	566	865	323	323
q18	6989	6487	6502	6487
q19	1234	936	539	539
q20	321	328	196	196
q21	2829	2210	1987	1987
q22	372	339	309	309
Total cold run time: 102878 ms
Total hot run time: 32422 ms

----- Round 2, with runtime_filter_mode=off -----
q1	5507	5517	5449	5449
q2	238	324	233	233
q3	2207	2648	2332	2332
q4	1412	1829	1435	1435
q5	4342	4782	4680	4680
q6	168	159	122	122
q7	2095	1990	1856	1856
q8	2667	2806	2695	2695
q9	7228	7238	7180	7180
q10	2987	3266	2803	2803
q11	578	512	492	492
q12	640	758	619	619
q13	3576	4154	3325	3325
q14	292	309	269	269
q15	508	464	460	460
q16	645	687	640	640
q17	1203	1741	1239	1239
q18	7919	7430	7203	7203
q19	757	1175	1066	1066
q20	2025	2055	1935	1935
q21	5686	5187	5074	5074
q22	593	599	552	552
Total cold run time: 53273 ms
Total hot run time: 51659 ms

@doris-robot
Copy link

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

query1	972	370	359	359
query2	6514	2088	2094	2088
query3	6801	210	215	210
query4	33618	23335	23555	23335
query5	4345	640	476	476
query6	302	195	181	181
query7	4599	481	307	307
query8	290	257	233	233
query9	9598	2702	2694	2694
query10	456	322	259	259
query11	17916	15456	15060	15060
query12	156	109	108	108
query13	1661	530	417	417
query14	10275	6968	6751	6751
query15	225	194	195	194
query16	8021	658	499	499
query17	1618	746	613	613
query18	2101	388	283	283
query19	224	183	154	154
query20	117	113	111	111
query21	213	121	100	100
query22	4184	4202	4134	4134
query23	34131	33176	33147	33147
query24	6802	2238	2248	2238
query25	490	458	379	379
query26	1215	270	152	152
query27	2041	458	339	339
query28	5475	2452	2443	2443
query29	701	530	417	417
query30	231	182	153	153
query31	959	875	805	805
query32	108	64	58	58
query33	517	344	295	295
query34	740	837	524	524
query35	800	821	729	729
query36	990	1052	939	939
query37	114	99	87	87
query38	4248	4158	4064	4064
query39	1457	1394	1395	1394
query40	207	115	99	99
query41	51	53	51	51
query42	120	100	102	100
query43	531	509	489	489
query44	1343	792	793	792
query45	186	178	166	166
query46	856	1041	645	645
query47	1823	1824	1770	1770
query48	384	395	329	329
query49	765	486	393	393
query50	624	695	404	404
query51	4223	4155	4131	4131
query52	107	111	93	93
query53	227	254	188	188
query54	475	500	434	434
query55	87	78	81	78
query56	269	261	233	233
query57	1112	1129	1078	1078
query58	250	237	237	237
query59	3054	3238	2930	2930
query60	280	266	257	257
query61	125	125	115	115
query62	815	734	648	648
query63	221	191	187	187
query64	4403	1050	654	654
query65	3233	3164	3119	3119
query66	1054	419	304	304
query67	15889	15496	15283	15283
query68	2433	829	568	568
query69	439	290	260	260
query70	1247	1154	1134	1134
query71	408	279	251	251
query72	5860	3813	3780	3780
query73	646	751	366	366
query74	10053	9179	8838	8838
query75	3171	3169	2654	2654
query76	2863	1227	803	803
query77	451	366	274	274
query78	10022	10370	9742	9742
query79	1022	888	593	593
query80	1280	539	470	470
query81	552	279	238	238
query82	364	154	124	124
query83	274	174	164	164
query84	235	95	70	70
query85	770	413	383	383
query86	411	319	314	314
query87	4465	4451	4517	4451
query88	3671	2244	2199	2199
query89	391	330	295	295
query90	1738	192	195	192
query91	202	141	106	106
query92	62	61	53	53
query93	955	877	548	548
query94	673	394	295	295
query95	336	269	259	259
query96	487	598	285	285
query97	2808	2871	2767	2767
query98	220	203	200	200
query99	1272	1399	1257	1257
Total cold run time: 277720 ms
Total hot run time: 185869 ms

@doris-robot
Copy link

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

query1	0.04	0.03	0.03
query2	0.06	0.04	0.03
query3	0.25	0.07	0.06
query4	1.62	0.10	0.11
query5	0.44	0.42	0.41
query6	1.15	0.65	0.66
query7	0.02	0.02	0.02
query8	0.04	0.04	0.03
query9	0.58	0.49	0.51
query10	0.56	0.57	0.56
query11	0.16	0.09	0.09
query12	0.14	0.12	0.12
query13	0.62	0.59	0.59
query14	2.86	2.89	2.87
query15	0.88	0.82	0.84
query16	0.38	0.36	0.37
query17	0.99	1.01	0.98
query18	0.23	0.22	0.21
query19	1.91	2.00	1.87
query20	0.02	0.01	0.01
query21	15.39	0.93	0.58
query22	0.73	0.80	0.83
query23	15.11	1.48	0.56
query24	2.89	1.20	0.83
query25	0.19	0.22	0.06
query26	0.25	0.15	0.14
query27	0.08	0.06	0.04
query28	13.82	1.09	0.45
query29	12.57	3.93	3.24
query30	0.25	0.08	0.06
query31	2.82	0.59	0.38
query32	3.22	0.54	0.48
query33	2.95	3.09	3.03
query34	16.64	5.14	4.54
query35	4.49	4.47	4.55
query36	0.66	0.51	0.50
query37	0.09	0.06	0.06
query38	0.05	0.04	0.03
query39	0.03	0.03	0.02
query40	0.17	0.14	0.14
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: 105.5 s
Total hot run time: 30.77 s

@feiniaofeiafei feiniaofeiafei marked this pull request as ready for review February 5, 2025 12:01
@morrySnow
Copy link
Contributor

@xzj7019 PTAL

@@ -379,4 +397,16 @@ private ImmutableSet<Expression> getFiltersFromUnionConstExprs(LogicalUnion unio
}
return ImmutableSet.copyOf(filtersFromConstExprs);
}

private Map<Slot, Expression> generateMap(List<NamedExpression> namedExpressions) {
Copy link
Contributor

Choose a reason for hiding this comment

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

could u add some comment to explain the purpose of this replace map

Comment on lines +406 to +407
} else if (namedExpression instanceof SlotReference) {
replaceMap.putIfAbsent((Slot) namedExpression, namedExpression);
Copy link
Contributor

Choose a reason for hiding this comment

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

why put a entry with same key and value? i think it is not necessary

Comment on lines +288 to +289
Map<Expression, List<Slot>> expressionSlotMap
= Maps.newHashMapWithExpectedSize(outputExpressions.size());
Copy link
Contributor

Choose a reason for hiding this comment

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

not need to keep order anymore?

Comment on lines +291 to +294
if (output instanceof Alias && supportPullUpAgg(output.child(0))) {
expressionSlotMap.computeIfAbsent(output.child(0).child(0),
k -> new ArrayList<>()).add(output.toSlot());
}
Copy link
Contributor

Choose a reason for hiding this comment

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

maybe need add some comment to explain when supportPullUpAgg return true, output.child(0) always has one child

@@ -68,9 +77,11 @@ public class PullUpPredicates extends PlanVisitor<ImmutableSet<Expression>, Void

Map<Plan, ImmutableSet<Expression>> cache = new IdentityHashMap<>();
private final boolean getAllPredicates;
private final ExpressionRewriteContext rewriteContext;
Copy link
Contributor

Choose a reason for hiding this comment

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

could we add more detail about this rule in the class' comment or in each function's comment?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants