Skip to content

Conversation

@feiniaofeiafei
Copy link
Contributor

@feiniaofeiafei feiniaofeiafei commented May 24, 2024

introduced by #31811
sql like this:

    select col1, col2 from  (select a as col1, a as col2 from mal_test1 group by a) t group by col1, col2 ;

Transformation Description:
In the process of optimizing the query, an agg-project-agg pattern is transformed into a project-agg pattern:
Before Transformation:

LogicalAggregate
+-- LogicalPrject
    +-- LogicalAggregate

After Transformation:

LogicalProject
+-- LogicalAggregate

Before the transformation, the projection in the LogicalProject was a AS col1, a AS col2, and the outer aggregate group by keys were col1, col2. After the transformation, the aggregate group by keys became a, a, and the projection remained a AS col1, a AS col2.

Problem:
When building the project projections, the group by key a, a needed to be transformed to a AS col1, a AS col2. The old code had a bug where it used the slot as the map key and the alias in the projections as the map value. This approach did not account for the situation where aliases might have the same slot.

Solution:
The new code fixes this issue by using the original outer aggregate group by expression's exprId. It searches within the original project projections to find the NamedExpression that has the same exprId. These expressions are then placed into the new projections. This method ensures that the correct aliases are maintained, resolving the bug.

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

------ Round 1 ----------------------------------
q1	17622	4283	4265	4265
q2	2044	183	186	183
q3	10472	1239	1203	1203
q4	10205	880	799	799
q5	7470	2660	2764	2660
q6	225	131	136	131
q7	943	609	606	606
q8	9223	2123	2067	2067
q9	9427	6714	6706	6706
q10	9299	3891	3832	3832
q11	439	238	252	238
q12	422	227	229	227
q13	17454	3146	3291	3146
q14	258	205	212	205
q15	511	478	470	470
q16	491	410	384	384
q17	959	731	736	731
q18	8267	7772	7709	7709
q19	5833	1529	1549	1529
q20	623	326	323	323
q21	5087	3933	4024	3933
q22	353	294	288	288
Total cold run time: 117627 ms
Total hot run time: 41635 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4624	4418	4466	4418
q2	374	273	285	273
q3	3111	2835	2931	2835
q4	1861	1577	1590	1577
q5	5472	5508	5501	5501
q6	231	132	126	126
q7	2125	1787	1815	1787
q8	3221	3396	3379	3379
q9	8495	8638	8619	8619
q10	4011	3666	3794	3666
q11	591	492	481	481
q12	787	618	599	599
q13	16046	3123	3182	3123
q14	313	263	264	263
q15	537	486	481	481
q16	496	433	431	431
q17	1807	1518	1507	1507
q18	7818	7664	7527	7527
q19	1647	1531	1575	1531
q20	1980	1774	1793	1774
q21	7469	4671	4706	4671
q22	565	493	505	493
Total cold run time: 73581 ms
Total hot run time: 55062 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 169924 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 207919ef6cf494946e5cae0ba322a89be74c417d, data reload: false

query1	905	369	371	369
query2	6429	2370	2399	2370
query3	6637	201	200	200
query4	19211	17373	17369	17369
query5	4174	427	404	404
query6	237	156	157	156
query7	4590	300	296	296
query8	235	188	189	188
query9	8426	2401	2380	2380
query10	446	279	261	261
query11	10784	10306	10329	10306
query12	126	94	88	88
query13	1664	379	371	371
query14	9279	7121	7159	7121
query15	214	165	167	165
query16	7751	254	259	254
query17	1715	520	531	520
query18	1848	272	263	263
query19	204	149	155	149
query20	87	85	82	82
query21	189	130	125	125
query22	4576	4214	4179	4179
query23	33695	32994	33059	32994
query24	10695	2777	2752	2752
query25	565	354	373	354
query26	714	158	156	156
query27	2223	321	321	321
query28	6002	2086	2104	2086
query29	864	608	601	601
query30	256	174	174	174
query31	959	740	722	722
query32	91	50	61	50
query33	660	268	263	263
query34	876	474	468	468
query35	728	594	586	586
query36	1065	895	892	892
query37	110	71	76	71
query38	2904	2775	2773	2773
query39	836	811	788	788
query40	208	121	124	121
query41	45	45	43	43
query42	109	96	94	94
query43	581	583	551	551
query44	1069	722	748	722
query45	178	168	161	161
query46	1075	715	720	715
query47	1861	1785	1815	1785
query48	365	291	292	291
query49	827	370	381	370
query50	767	390	383	383
query51	6827	6659	6707	6659
query52	101	86	95	86
query53	372	282	284	282
query54	842	430	417	417
query55	73	70	72	70
query56	257	235	239	235
query57	1123	1052	1046	1046
query58	230	213	228	213
query59	3593	3169	3482	3169
query60	273	250	242	242
query61	90	91	84	84
query62	616	436	428	428
query63	313	280	281	280
query64	8519	2184	1705	1705
query65	3138	3122	3081	3081
query66	765	321	324	321
query67	15060	14746	14696	14696
query68	4540	540	533	533
query69	489	301	265	265
query70	1168	1062	1079	1062
query71	393	262	253	253
query72	7201	5697	2701	2701
query73	712	318	314	314
query74	6103	5746	5643	5643
query75	3315	2667	2646	2646
query76	2819	970	979	970
query77	579	281	265	265
query78	10336	9684	9863	9684
query79	2142	514	513	513
query80	1276	432	422	422
query81	534	241	242	241
query82	1291	95	92	92
query83	249	176	168	168
query84	249	88	88	88
query85	1444	305	310	305
query86	457	290	302	290
query87	3286	3158	3136	3136
query88	4181	2350	2353	2350
query89	491	397	381	381
query90	1947	188	184	184
query91	133	109	108	108
query92	62	50	52	50
query93	2166	523	504	504
query94	1243	215	188	188
query95	488	298	300	298
query96	583	263	263	263
query97	3164	3052	3029	3029
query98	250	219	212	212
query99	1128	849	867	849
Total cold run time: 266666 ms
Total hot run time: 169924 ms

@doris-robot
Copy link

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

query1	0.04	0.04	0.04
query2	0.09	0.04	0.04
query3	0.23	0.06	0.05
query4	1.67	0.06	0.07
query5	0.50	0.50	0.51
query6	1.12	0.73	0.72
query7	0.02	0.02	0.01
query8	0.05	0.04	0.04
query9	0.54	0.47	0.49
query10	0.53	0.54	0.53
query11	0.16	0.12	0.11
query12	0.15	0.12	0.12
query13	0.59	0.59	0.59
query14	0.77	0.78	0.81
query15	0.82	0.80	0.80
query16	0.36	0.37	0.36
query17	0.98	0.94	1.01
query18	0.22	0.26	0.24
query19	1.79	1.72	1.66
query20	0.01	0.02	0.01
query21	15.62	0.67	0.67
query22	4.30	6.63	2.15
query23	18.35	1.30	1.32
query24	2.08	0.22	0.20
query25	0.15	0.09	0.09
query26	0.28	0.16	0.17
query27	0.08	0.08	0.08
query28	13.31	1.02	1.00
query29	13.46	3.36	3.29
query30	0.24	0.06	0.05
query31	2.86	0.39	0.39
query32	3.27	0.47	0.46
query33	2.92	2.89	2.92
query34	17.11	4.42	4.44
query35	4.50	4.45	4.59
query36	0.69	0.47	0.47
query37	0.18	0.15	0.15
query38	0.15	0.15	0.14
query39	0.04	0.04	0.03
query40	0.17	0.15	0.14
query41	0.09	0.04	0.05
query42	0.06	0.04	0.04
query43	0.05	0.03	0.04
Total cold run time: 110.6 s
Total hot run time: 30.71 s

Copy link
Contributor

@morrySnow morrySnow left a comment

Choose a reason for hiding this comment

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

add test case.
add a description explaining the cause of the problem and the PR number that introduced it

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17621	4372	4270	4270
q2	2023	197	191	191
q3	10460	1261	1249	1249
q4	11043	806	783	783
q5	7887	2710	2697	2697
q6	222	138	136	136
q7	974	604	614	604
q8	9573	2083	2093	2083
q9	9138	6601	6540	6540
q10	9110	3664	3712	3664
q11	454	244	241	241
q12	415	211	219	211
q13	18728	2985	2962	2962
q14	261	216	223	216
q15	509	482	471	471
q16	504	380	378	378
q17	960	669	665	665
q18	8069	7517	7375	7375
q19	3397	1532	1502	1502
q20	638	311	308	308
q21	4949	3990	3934	3934
q22	350	279	290	279
Total cold run time: 117285 ms
Total hot run time: 40759 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4362	4239	4334	4239
q2	364	257	277	257
q3	2987	2720	2689	2689
q4	1880	1612	1661	1612
q5	5225	5297	5243	5243
q6	214	128	130	128
q7	2148	1751	1758	1751
q8	3206	3366	3302	3302
q9	8316	8319	8348	8319
q10	3903	3691	3656	3656
q11	574	491	481	481
q12	744	613	602	602
q13	17407	2978	2999	2978
q14	305	266	267	266
q15	505	482	477	477
q16	484	439	407	407
q17	1784	1500	1484	1484
q18	7722	7534	7439	7439
q19	1699	1599	1521	1521
q20	1996	1759	1788	1759
q21	4822	4752	4695	4695
q22	564	473	468	468
Total cold run time: 71211 ms
Total hot run time: 53773 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 168863 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 1fcf871aad400660b3b8946e816219317124208b, data reload: false

query1	919	388	372	372
query2	6465	2409	2249	2249
query3	6662	206	206	206
query4	19969	17340	17199	17199
query5	4148	427	418	418
query6	246	158	159	158
query7	4593	299	296	296
query8	250	197	188	188
query9	8548	2417	2408	2408
query10	460	289	273	273
query11	10413	9955	9946	9946
query12	137	90	92	90
query13	1640	380	371	371
query14	9438	6966	6981	6966
query15	225	174	182	174
query16	7770	275	263	263
query17	1745	543	569	543
query18	1825	268	272	268
query19	208	163	157	157
query20	100	92	90	90
query21	203	131	130	130
query22	4274	3903	3914	3903
query23	33742	33128	32977	32977
query24	12163	2889	2815	2815
query25	664	358	362	358
query26	1779	161	157	157
query27	2947	322	325	322
query28	7653	2058	2058	2058
query29	1109	631	599	599
query30	317	170	175	170
query31	948	774	734	734
query32	94	51	55	51
query33	766	263	268	263
query34	1042	481	474	474
query35	777	626	583	583
query36	1067	923	909	909
query37	281	70	72	70
query38	2904	2810	2715	2715
query39	833	789	781	781
query40	267	125	121	121
query41	47	44	44	44
query42	104	98	97	97
query43	588	548	554	548
query44	1289	736	759	736
query45	178	168	166	166
query46	1078	732	724	724
query47	1826	1740	1745	1740
query48	368	302	309	302
query49	1186	385	388	385
query50	768	388	395	388
query51	6758	6666	6618	6618
query52	107	90	96	90
query53	363	293	286	286
query54	1027	437	427	427
query55	73	74	74	74
query56	268	241	261	241
query57	1135	1087	1033	1033
query58	244	204	207	204
query59	3457	3305	3040	3040
query60	273	256	248	248
query61	92	91	89	89
query62	668	461	447	447
query63	312	285	296	285
query64	9831	2277	1749	1749
query65	3226	3080	3124	3080
query66	1343	332	326	326
query67	15250	14950	15124	14950
query68	4501	551	542	542
query69	437	272	286	272
query70	1205	1113	1055	1055
query71	420	269	268	268
query72	7608	2743	2530	2530
query73	728	323	325	323
query74	6082	5609	5541	5541
query75	3358	2601	2646	2601
query76	2802	986	977	977
query77	412	268	263	263
query78	10175	9992	9792	9792
query79	2556	516	510	510
query80	1075	489	433	433
query81	529	246	238	238
query82	1145	94	92	92
query83	243	172	170	170
query84	235	86	87	86
query85	1319	268	274	268
query86	461	303	320	303
query87	3329	3105	3164	3105
query88	4166	2350	2354	2350
query89	473	398	372	372
query90	1949	189	191	189
query91	124	96	95	95
query92	59	47	47	47
query93	1771	520	506	506
query94	1261	202	185	185
query95	451	307	310	307
query96	589	271	270	270
query97	3166	2989	3036	2989
query98	242	214	216	214
query99	1101	828	858	828
Total cold run time: 275422 ms
Total hot run time: 168863 ms

@doris-robot
Copy link

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

query1	0.04	0.04	0.04
query2	0.09	0.05	0.04
query3	0.23	0.05	0.05
query4	1.68	0.06	0.06
query5	0.50	0.50	0.50
query6	1.13	0.73	0.72
query7	0.01	0.01	0.01
query8	0.04	0.04	0.04
query9	0.54	0.49	0.48
query10	0.55	0.56	0.54
query11	0.16	0.11	0.11
query12	0.15	0.12	0.12
query13	0.58	0.58	0.60
query14	0.76	0.76	0.78
query15	0.83	0.82	0.80
query16	0.34	0.36	0.37
query17	0.93	0.96	1.02
query18	0.21	0.28	0.21
query19	1.84	1.69	1.72
query20	0.01	0.01	0.02
query21	15.52	0.69	0.66
query22	4.11	7.03	2.53
query23	18.53	1.41	1.24
query24	2.16	0.22	0.21
query25	0.14	0.09	0.09
query26	0.25	0.16	0.17
query27	0.08	0.07	0.07
query28	13.41	1.02	0.99
query29	12.74	3.29	3.28
query30	0.25	0.05	0.05
query31	2.87	0.39	0.38
query32	3.28	0.46	0.47
query33	2.88	2.89	2.85
query34	17.18	4.41	4.42
query35	4.45	4.49	4.53
query36	0.65	0.45	0.45
query37	0.19	0.16	0.15
query38	0.15	0.15	0.14
query39	0.04	0.04	0.03
query40	0.16	0.14	0.15
query41	0.10	0.04	0.05
query42	0.06	0.05	0.05
query43	0.04	0.04	0.03
Total cold run time: 109.86 s
Total hot run time: 30.98 s

@feiniaofeiafei
Copy link
Contributor Author

run p0

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	18105	4434	4365	4365
q2	2620	192	190	190
q3	11739	1163	1184	1163
q4	10573	854	795	795
q5	7841	2707	2733	2707
q6	224	134	132	132
q7	961	601	601	601
q8	9548	2063	2061	2061
q9	9339	6843	6824	6824
q10	9037	3676	3742	3676
q11	476	231	237	231
q12	453	211	214	211
q13	17766	2993	2963	2963
q14	262	213	209	209
q15	512	470	465	465
q16	535	385	379	379
q17	955	662	674	662
q18	8130	7576	7450	7450
q19	6060	1542	1518	1518
q20	670	316	294	294
q21	4913	3187	3920	3187
q22	344	276	276	276
Total cold run time: 121063 ms
Total hot run time: 40359 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4355	4223	4180	4180
q2	370	257	268	257
q3	2983	2701	2740	2701
q4	1852	1575	1556	1556
q5	5266	5283	5294	5283
q6	216	123	123	123
q7	2061	1774	1756	1756
q8	3186	3276	3271	3271
q9	8761	8737	8741	8737
q10	3861	3672	3708	3672
q11	578	489	475	475
q12	760	594	586	586
q13	17565	2974	3007	2974
q14	288	266	264	264
q15	505	473	466	466
q16	481	435	406	406
q17	1759	1471	1465	1465
q18	7641	7563	7353	7353
q19	2850	1563	1632	1563
q20	1963	1777	1786	1777
q21	4738	4728	4781	4728
q22	558	496	473	473
Total cold run time: 72597 ms
Total hot run time: 54066 ms

@doris-robot
Copy link

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

query1	918	391	373	373
query2	6448	2555	2537	2537
query3	6662	208	206	206
query4	19610	17467	17451	17451
query5	4124	426	417	417
query6	252	171	147	147
query7	4584	292	284	284
query8	238	182	180	180
query9	8540	2351	2338	2338
query10	443	269	258	258
query11	10675	10088	10247	10088
query12	143	90	85	85
query13	1637	381	353	353
query14	9911	6621	7330	6621
query15	224	172	161	161
query16	7890	257	258	257
query17	1852	524	539	524
query18	1977	265	271	265
query19	213	148	149	148
query20	94	85	86	85
query21	192	134	129	129
query22	4314	4053	4038	4038
query23	33751	33126	32947	32947
query24	12057	2914	2884	2884
query25	638	359	356	356
query26	1822	154	153	153
query27	2963	320	333	320
query28	7515	2001	2043	2001
query29	1113	615	591	591
query30	313	171	178	171
query31	1067	768	731	731
query32	87	50	52	50
query33	772	261	269	261
query34	994	458	464	458
query35	744	590	600	590
query36	1075	942	907	907
query37	289	71	69	69
query38	2926	2782	2792	2782
query39	897	807	801	801
query40	271	122	124	122
query41	45	43	46	43
query42	103	95	94	94
query43	606	585	571	571
query44	1203	718	734	718
query45	184	167	166	166
query46	1074	745	695	695
query47	1901	1781	1781	1781
query48	371	302	286	286
query49	1205	376	380	376
query50	776	397	386	386
query51	6868	6817	6770	6770
query52	101	91	88	88
query53	347	282	275	275
query54	986	433	418	418
query55	75	72	73	72
query56	265	245	259	245
query57	1167	1032	1061	1032
query58	275	208	216	208
query59	3598	3247	3252	3247
query60	276	246	248	246
query61	110	91	83	83
query62	639	441	420	420
query63	300	289	282	282
query64	9783	2236	1687	1687
query65	3143	3102	3147	3102
query66	1358	344	321	321
query67	15026	14845	14910	14845
query68	6085	539	541	539
query69	498	272	280	272
query70	1136	1142	1142	1142
query71	474	263	254	254
query72	7305	5966	5558	5558
query73	768	323	316	316
query74	6169	5685	5587	5587
query75	3987	2618	2634	2618
query76	3715	1049	980	980
query77	642	285	260	260
query78	10391	9793	9669	9669
query79	2036	510	516	510
query80	1025	432	428	428
query81	504	246	242	242
query82	1021	96	94	94
query83	189	171	164	164
query84	261	86	82	82
query85	1367	267	264	264
query86	463	297	331	297
query87	3319	3101	3135	3101
query88	3774	2328	2337	2328
query89	464	380	377	377
query90	2004	186	186	186
query91	132	110	108	108
query92	59	51	50	50
query93	1938	509	508	508
query94	1161	197	197	197
query95	411	316	317	316
query96	592	271	262	262
query97	3263	3081	3060	3060
query98	243	220	229	220
query99	1215	851	899	851
Total cold run time: 278631 ms
Total hot run time: 172436 ms

@doris-robot
Copy link

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

query1	0.04	0.03	0.04
query2	0.07	0.04	0.04
query3	0.23	0.05	0.06
query4	1.67	0.07	0.08
query5	0.49	0.50	0.50
query6	1.12	0.73	0.72
query7	0.02	0.02	0.01
query8	0.05	0.04	0.04
query9	0.53	0.48	0.50
query10	0.54	0.54	0.54
query11	0.16	0.11	0.11
query12	0.14	0.12	0.12
query13	0.60	0.59	0.59
query14	0.77	0.77	0.77
query15	0.83	0.82	0.82
query16	0.37	0.35	0.37
query17	1.00	1.02	1.00
query18	0.22	0.26	0.26
query19	1.81	1.67	1.72
query20	0.01	0.02	0.01
query21	15.70	0.66	0.64
query22	4.55	7.48	1.60
query23	18.34	1.37	1.29
query24	1.38	0.28	0.26
query25	0.15	0.08	0.08
query26	0.25	0.16	0.16
query27	0.09	0.08	0.08
query28	13.46	1.01	1.01
query29	13.27	3.26	3.23
query30	0.25	0.06	0.06
query31	2.89	0.39	0.38
query32	3.24	0.46	0.45
query33	2.93	2.88	2.82
query34	17.06	4.45	4.40
query35	4.54	4.47	4.48
query36	0.66	0.47	0.47
query37	0.19	0.15	0.16
query38	0.14	0.14	0.15
query39	0.05	0.03	0.04
query40	0.17	0.15	0.14
query41	0.09	0.05	0.04
query42	0.05	0.05	0.04
query43	0.03	0.04	0.03
Total cold run time: 110.15 s
Total hot run time: 30.15 s

NamedExpression namedExpression = exprIdToNameExpressionMap.get(exprId);
projectGroupBy.add(namedExpression);
}
// List<Expression> projectGroupBy = ExpressionUtils.replace(replacedGroupBy, childToAlias);
Copy link
Contributor

Choose a reason for hiding this comment

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

remove useless code

@feiniaofeiafei
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17610	4384	4263	4263
q2	2023	182	188	182
q3	10441	1280	1318	1280
q4	10208	954	768	768
q5	7490	2765	2673	2673
q6	216	129	134	129
q7	970	666	614	614
q8	9215	2165	2108	2108
q9	9221	6764	6765	6764
q10	9326	3909	3823	3823
q11	446	246	242	242
q12	448	217	232	217
q13	17575	3209	3122	3122
q14	263	223	229	223
q15	519	473	501	473
q16	510	413	390	390
q17	981	678	666	666
q18	8499	7839	7913	7839
q19	2367	1552	1551	1551
q20	645	317	332	317
q21	5231	4062	3960	3960
q22	364	293	277	277
Total cold run time: 114568 ms
Total hot run time: 41881 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4559	4362	4388	4362
q2	382	276	276	276
q3	3204	2770	2767	2767
q4	1936	1644	1634	1634
q5	5478	5484	5542	5484
q6	211	123	120	120
q7	2199	1860	1805	1805
q8	3238	3445	3419	3419
q9	8725	8670	8435	8435
q10	4076	3821	3843	3821
q11	597	498	500	498
q12	801	649	625	625
q13	15905	3138	3169	3138
q14	305	269	255	255
q15	507	470	476	470
q16	457	425	407	407
q17	1761	1474	1468	1468
q18	7762	7548	7465	7465
q19	2029	1616	1544	1544
q20	2057	1781	1806	1781
q21	4848	4620	4682	4620
q22	565	488	486	486
Total cold run time: 71602 ms
Total hot run time: 54880 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 172456 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 3defeb6dd438f56943128e3fcdaab6fcadff3d69, data reload: false

query1	908	378	364	364
query2	7569	2394	2524	2394
query3	6638	201	201	201
query4	19402	17215	17294	17215
query5	4135	410	414	410
query6	246	157	152	152
query7	4573	302	285	285
query8	253	183	183	183
query9	8457	2352	2351	2351
query10	450	280	263	263
query11	10558	9983	10037	9983
query12	135	97	88	88
query13	1649	362	362	362
query14	10010	7451	7400	7400
query15	244	175	168	168
query16	7963	263	254	254
query17	1764	509	504	504
query18	2058	266	267	266
query19	198	156	150	150
query20	94	84	86	84
query21	191	129	132	129
query22	4378	3964	3944	3944
query23	33574	32996	33102	32996
query24	9022	2895	2793	2793
query25	551	347	356	347
query26	694	153	152	152
query27	2184	323	319	319
query28	5722	2054	2047	2047
query29	841	615	613	613
query30	223	148	150	148
query31	967	755	747	747
query32	93	51	56	51
query33	628	265	258	258
query34	840	467	478	467
query35	684	618	613	613
query36	1101	899	897	897
query37	100	66	64	64
query38	2928	2777	2809	2777
query39	824	778	810	778
query40	206	126	122	122
query41	46	45	44	44
query42	102	95	96	95
query43	597	572	577	572
query44	1074	731	751	731
query45	191	179	169	169
query46	1066	693	686	686
query47	1868	1782	1800	1782
query48	363	305	300	300
query49	875	383	382	382
query50	761	386	382	382
query51	6827	6831	6805	6805
query52	97	91	85	85
query53	352	281	283	281
query54	738	428	417	417
query55	73	72	73	72
query56	259	239	239	239
query57	1132	1005	1047	1005
query58	237	207	206	206
query59	3562	3290	3277	3277
query60	282	256	280	256
query61	88	87	86	86
query62	608	455	449	449
query63	306	281	278	278
query64	8424	2211	1800	1800
query65	3186	3046	3086	3046
query66	790	334	317	317
query67	15267	15030	14917	14917
query68	4549	523	519	519
query69	476	266	259	259
query70	1190	1083	1130	1083
query71	382	285	256	256
query72	7518	5274	5739	5274
query73	711	336	316	316
query74	5970	5790	5571	5571
query75	3331	2597	2619	2597
query76	2601	963	957	957
query77	586	263	263	263
query78	10273	9788	9793	9788
query79	1798	512	508	508
query80	680	458	490	458
query81	471	215	214	214
query82	769	91	87	87
query83	191	172	166	166
query84	241	87	85	85
query85	1243	261	259	259
query86	439	310	274	274
query87	3285	3155	3091	3091
query88	3878	2435	2435	2435
query89	471	376	373	373
query90	2036	187	185	185
query91	121	96	95	95
query92	59	47	48	47
query93	2051	496	482	482
query94	1184	183	184	183
query95	412	311	302	302
query96	586	273	265	265
query97	3146	2995	3007	2995
query98	241	219	208	208
query99	1145	843	854	843
Total cold run time: 264260 ms
Total hot run time: 172456 ms

@doris-robot
Copy link

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

query1	0.04	0.03	0.03
query2	0.08	0.04	0.04
query3	0.23	0.05	0.05
query4	1.69	0.07	0.07
query5	0.48	0.51	0.50
query6	1.12	0.72	0.72
query7	0.02	0.02	0.01
query8	0.05	0.03	0.04
query9	0.54	0.49	0.50
query10	0.54	0.54	0.54
query11	0.15	0.12	0.11
query12	0.14	0.12	0.11
query13	0.60	0.58	0.60
query14	0.77	0.79	0.77
query15	0.82	0.82	0.80
query16	0.36	0.35	0.37
query17	0.96	0.98	1.02
query18	0.20	0.26	0.23
query19	1.78	1.68	1.74
query20	0.02	0.01	0.01
query21	15.43	0.69	0.66
query22	4.37	7.00	2.27
query23	18.31	1.42	1.26
query24	1.95	0.23	0.21
query25	0.14	0.09	0.08
query26	0.28	0.16	0.18
query27	0.08	0.08	0.08
query28	13.31	1.02	1.00
query29	12.77	3.29	3.23
query30	0.23	0.05	0.06
query31	2.87	0.38	0.38
query32	3.30	0.47	0.47
query33	2.86	2.88	2.92
query34	17.23	4.40	4.45
query35	4.53	4.47	4.57
query36	0.69	0.50	0.46
query37	0.17	0.15	0.15
query38	0.15	0.14	0.15
query39	0.04	0.04	0.03
query40	0.15	0.14	0.14
query41	0.10	0.05	0.04
query42	0.06	0.04	0.04
query43	0.05	0.04	0.03
Total cold run time: 109.66 s
Total hot run time: 30.73 s

@morrySnow morrySnow requested a review from 924060929 May 27, 2024 06:49
@github-actions
Copy link
Contributor

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

@github-actions github-actions bot added approved Indicates a PR has been approved by one committer. reviewed labels May 27, 2024
@github-actions
Copy link
Contributor

PR approved by anyone and no changes requested.

@morrySnow morrySnow added the p0_b label May 27, 2024
@morrySnow morrySnow merged commit d591ec9 into apache:master May 27, 2024
yiguolei pushed a commit that referenced this pull request May 28, 2024
introduced by #31811

sql like this:

    select col1, col2 from  (select a as col1, a as col2 from mal_test1 group by a) t group by col1, col2 ;

Transformation Description:
In the process of optimizing the query, an agg-project-agg pattern is transformed into a project-agg pattern:
Before Transformation:

LogicalAggregate
+-- LogicalPrject
    +-- LogicalAggregate

After Transformation:

LogicalProject
+-- LogicalAggregate

Before the transformation, the projection in the LogicalProject was a AS col1, a AS col2, and the outer aggregate group by keys were col1, col2. After the transformation, the aggregate group by keys became a, a, and the projection remained a AS col1, a AS col2.

Problem:
When building the project projections, the group by key a, a needed to be transformed to a AS col1, a AS col2. The old code had a bug where it used the slot as the map key and the alias in the projections as the map value. This approach did not account for the situation where aliases might have the same slot.

Solution:
The new code fixes this issue by using the original outer aggregate group by expression's exprId. It searches within the original project projections to find the NamedExpression that has the same exprId. These expressions are then placed into the new projections. This method ensures that the correct aliases are maintained, resolving the bug.
dataroaring pushed a commit that referenced this pull request May 28, 2024
introduced by #31811

sql like this:

    select col1, col2 from  (select a as col1, a as col2 from mal_test1 group by a) t group by col1, col2 ;

Transformation Description:
In the process of optimizing the query, an agg-project-agg pattern is transformed into a project-agg pattern:
Before Transformation:

LogicalAggregate
+-- LogicalPrject
    +-- LogicalAggregate

After Transformation:

LogicalProject
+-- LogicalAggregate

Before the transformation, the projection in the LogicalProject was a AS col1, a AS col2, and the outer aggregate group by keys were col1, col2. After the transformation, the aggregate group by keys became a, a, and the projection remained a AS col1, a AS col2.

Problem:
When building the project projections, the group by key a, a needed to be transformed to a AS col1, a AS col2. The old code had a bug where it used the slot as the map key and the alias in the projections as the map value. This approach did not account for the situation where aliases might have the same slot.

Solution:
The new code fixes this issue by using the original outer aggregate group by expression's exprId. It searches within the original project projections to find the NamedExpression that has the same exprId. These expressions are then placed into the new projections. This method ensures that the correct aliases are maintained, resolving the bug.
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/2.1.4-merged dev/3.0.0-merged p0_b reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants