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

[Enhancement](MaxCompute)Refactoring maxCompute catalog using Storage API. #40225

Merged
merged 11 commits into from
Sep 11, 2024

Conversation

hubgeter
Copy link
Contributor

@hubgeter hubgeter commented Sep 1, 2024

Proposed changes

Refactoring maxCompute catalog using Storage API.

Storage API : https://help.aliyun.com/zh/maxcompute/user-guide/open-storage-sample-java-sdk?spm=a2c4g.11186623.0.i0

The following are required:

CREATE CATALOG mc PROPERTIES (
"type" = "max_compute",
"mc.default.project" = "xxx",
"mc.access_key" = "xxx",
"mc.secret_key" = "xxxx",
"mc.endpoint" = "xxxx"
);

Optional parameters:
Configuration Item      Default Value
"mc.quota"              =    "pay-as-you-go"

"mc.split_strategy" =   "byte_size" Split according to file size
"mc.split_byte_size" = "268435456" You can set the file size of each split

"mc.split_strategy" = "row_count" Split according to the number of rows of data
"mc.split_row_count" = "1048576" You can set how many lines to read for each split

@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.

@hubgeter
Copy link
Contributor Author

hubgeter commented Sep 1, 2024

run buildall

Copy link
Contributor

github-actions bot commented Sep 1, 2024

clang-tidy review says "All clean, LGTM! 👍"

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	18036	4532	4332	4332
q2	2030	189	177	177
q3	11476	929	1065	929
q4	10429	791	777	777
q5	7771	2905	2851	2851
q6	235	147	143	143
q7	974	611	634	611
q8	9338	2098	2145	2098
q9	7242	6538	6554	6538
q10	7001	2212	2223	2212
q11	448	242	245	242
q12	394	220	226	220
q13	17766	3059	3070	3059
q14	281	228	231	228
q15	518	479	503	479
q16	591	514	526	514
q17	990	699	758	699
q18	7475	6760	6854	6760
q19	1412	1057	1109	1057
q20	694	337	344	337
q21	3980	3078	2749	2749
q22	1143	1019	1004	1004
Total cold run time: 110224 ms
Total hot run time: 38016 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4332	4491	4316	4316
q2	383	280	277	277
q3	2924	2688	2708	2688
q4	1946	1629	1658	1629
q5	5703	5738	5771	5738
q6	247	143	142	142
q7	2216	1858	1817	1817
q8	3325	3420	3477	3420
q9	8887	8947	8873	8873
q10	3614	3433	3391	3391
q11	621	504	513	504
q12	840	662	651	651
q13	14779	3134	3298	3134
q14	333	289	284	284
q15	533	499	487	487
q16	621	576	563	563
q17	1843	1524	1542	1524
q18	8165	7827	7772	7772
q19	1748	1724	1682	1682
q20	2217	1937	1874	1874
q21	5754	5565	5604	5565
q22	1120	1056	1050	1050
Total cold run time: 72151 ms
Total hot run time: 57381 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 193561 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 9b818bedb956a247985af6cb0fbdfe19079b24d2, data reload: false

query1	1283	882	874	874
query2	6264	1979	1989	1979
query3	10754	4151	4050	4050
query4	59959	25060	23137	23137
query5	5472	516	499	499
query6	414	166	169	166
query7	5790	292	287	287
query8	294	214	222	214
query9	8974	2518	2521	2518
query10	504	277	270	270
query11	17929	15018	15228	15018
query12	160	104	103	103
query13	1564	407	410	407
query14	11154	7399	7408	7399
query15	238	183	182	182
query16	7308	496	491	491
query17	1106	562	579	562
query18	1961	298	301	298
query19	302	151	150	150
query20	121	113	113	113
query21	215	106	101	101
query22	4920	4546	4482	4482
query23	34603	33662	33611	33611
query24	5939	2903	2848	2848
query25	547	426	376	376
query26	680	153	150	150
query27	1785	273	283	273
query28	3796	2129	2121	2121
query29	663	398	405	398
query30	239	149	155	149
query31	897	752	755	752
query32	80	54	59	54
query33	428	283	284	283
query34	859	473	479	473
query35	829	697	708	697
query36	1035	935	932	932
query37	148	98	94	94
query38	3918	3849	3946	3849
query39	1472	1379	1382	1379
query40	197	113	115	113
query41	46	46	45	45
query42	120	97	95	95
query43	508	476	489	476
query44	1103	747	742	742
query45	198	167	163	163
query46	1097	733	750	733
query47	1939	1809	1841	1809
query48	367	294	296	294
query49	753	426	455	426
query50	828	402	404	402
query51	7180	7113	7095	7095
query52	96	85	86	85
query53	247	180	180	180
query54	555	439	450	439
query55	76	76	76	76
query56	280	258	255	255
query57	1188	1068	1072	1068
query58	217	234	232	232
query59	3072	2775	2911	2775
query60	296	265	259	259
query61	99	99	104	99
query62	730	661	668	661
query63	221	184	185	184
query64	2839	682	677	677
query65	3220	3145	3166	3145
query66	674	359	345	345
query67	15564	15230	15275	15230
query68	3009	573	578	573
query69	407	277	273	273
query70	1133	1124	1140	1124
query71	365	278	275	275
query72	5374	4008	3968	3968
query73	763	329	332	329
query74	9064	8783	8884	8783
query75	3369	2698	2717	2698
query76	1557	1017	993	993
query77	579	385	314	314
query78	11226	9429	9096	9096
query79	1038	547	540	540
query80	682	495	511	495
query81	471	233	226	226
query82	249	147	146	146
query83	171	148	148	148
query84	264	77	74	74
query85	671	283	280	280
query86	310	296	304	296
query87	4423	4256	4315	4256
query88	2962	2308	2305	2305
query89	370	292	289	289
query90	1929	194	188	188
query91	123	100	103	100
query92	62	52	51	51
query93	1035	536	535	535
query94	699	294	295	294
query95	333	262	329	262
query96	601	265	267	265
query97	3203	3089	3113	3089
query98	212	210	196	196
query99	1520	1258	1258	1258
Total cold run time: 306488 ms
Total hot run time: 193561 ms

@doris-robot
Copy link

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

query1	0.05	0.05	0.04
query2	0.07	0.04	0.05
query3	0.23	0.05	0.05
query4	1.68	0.08	0.08
query5	0.51	0.48	0.50
query6	1.14	0.73	0.74
query7	0.02	0.02	0.01
query8	0.05	0.05	0.04
query9	0.55	0.49	0.49
query10	0.54	0.54	0.54
query11	0.16	0.12	0.11
query12	0.15	0.12	0.12
query13	0.62	0.59	0.59
query14	2.05	2.12	2.07
query15	0.84	0.83	0.82
query16	0.35	0.36	0.37
query17	0.97	0.99	1.04
query18	0.21	0.20	0.19
query19	1.80	1.76	1.84
query20	0.01	0.01	0.01
query21	15.43	0.66	0.66
query22	4.19	6.66	2.28
query23	18.29	1.34	1.35
query24	2.15	0.21	0.23
query25	0.15	0.07	0.08
query26	0.27	0.19	0.18
query27	0.07	0.08	0.08
query28	13.21	1.01	1.00
query29	12.60	3.32	3.31
query30	0.25	0.06	0.06
query31	2.88	0.40	0.39
query32	3.25	0.49	0.47
query33	2.97	2.99	3.01
query34	17.06	4.43	4.42
query35	4.45	4.51	4.41
query36	0.65	0.47	0.47
query37	0.19	0.16	0.15
query38	0.15	0.16	0.15
query39	0.06	0.04	0.04
query40	0.15	0.12	0.12
query41	0.09	0.05	0.06
query42	0.06	0.05	0.04
query43	0.05	0.05	0.04
Total cold run time: 110.62 s
Total hot run time: 32.45 s

private TableTunnel tunnel;
@SerializedName(value = "region")
private String region;

@SerializedName(value = "accessKey")
private String accessKey;
Copy link
Contributor

Choose a reason for hiding this comment

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

I think these 2 fields no need to persist.
All property should be persisited in CatalogProperty

if (region.startsWith("oss-")) {
// may use oss-cn-beijing, ensure compatible
region = region.replace("oss-", "");
if (Strings.isNullOrEmpty(quota)) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a default value for QUOTA?

Copy link
Contributor

github-actions bot commented Sep 3, 2024

clang-tidy review says "All clean, LGTM! 👍"

@hubgeter
Copy link
Contributor Author

hubgeter commented Sep 3, 2024

run buildall

Copy link
Contributor

github-actions bot commented Sep 3, 2024

clang-tidy review says "All clean, LGTM! 👍"

@doris-robot
Copy link

TeamCity be ut coverage result:
Function Coverage: 36.82% (9385/25488)
Line Coverage: 28.27% (77440/273905)
Region Coverage: 27.66% (39955/144425)
Branch Coverage: 24.32% (20340/83630)
Coverage Report: http://coverage.selectdb-in.cc/coverage/40fada4cdb82562d755cac8c2d74d64533a77c2a_40fada4cdb82562d755cac8c2d74d64533a77c2a/report/index.html

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17706	4613	4376	4376
q2	2024	191	174	174
q3	11222	970	1122	970
q4	10383	737	785	737
q5	7753	2921	2852	2852
q6	233	145	140	140
q7	971	615	616	615
q8	9329	2129	2129	2129
q9	7300	6570	6647	6570
q10	7014	2230	2168	2168
q11	448	240	249	240
q12	406	227	227	227
q13	17767	3117	3070	3070
q14	277	236	233	233
q15	538	506	506	506
q16	595	514	490	490
q17	999	679	737	679
q18	7583	6877	6782	6782
q19	1389	1078	1042	1042
q20	711	344	347	344
q21	3944	3184	3061	3061
q22	1138	1056	1049	1049
Total cold run time: 109730 ms
Total hot run time: 38454 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4432	4353	4351	4351
q2	389	273	272	272
q3	2953	2647	2681	2647
q4	1974	1654	1655	1654
q5	5690	5699	5793	5699
q6	231	144	141	141
q7	2235	1813	1845	1813
q8	3335	3445	3505	3445
q9	8948	8905	8847	8847
q10	3600	3434	3384	3384
q11	620	527	531	527
q12	828	636	654	636
q13	16399	3270	3291	3270
q14	338	311	316	311
q15	552	486	488	486
q16	633	577	581	577
q17	1868	1561	1591	1561
q18	8232	7915	7966	7915
q19	1758	1645	1582	1582
q20	2161	1953	1992	1953
q21	5818	5465	5490	5465
q22	1144	1037	1065	1037
Total cold run time: 74138 ms
Total hot run time: 57573 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 192576 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 40fada4cdb82562d755cac8c2d74d64533a77c2a, data reload: false

query1	1270	881	887	881
query2	6311	1929	1897	1897
query3	10605	3903	3865	3865
query4	59704	26811	23327	23327
query5	5356	495	494	494
query6	400	166	176	166
query7	5771	294	288	288
query8	280	198	201	198
query9	8901	2473	2454	2454
query10	480	261	265	261
query11	18056	15085	15418	15085
query12	167	101	103	101
query13	1536	388	388	388
query14	10442	7633	7041	7041
query15	217	180	173	173
query16	7505	477	427	427
query17	1152	576	580	576
query18	1903	288	293	288
query19	288	151	140	140
query20	117	105	108	105
query21	215	104	102	102
query22	4789	4605	4474	4474
query23	34264	33474	33316	33316
query24	5971	2866	2843	2843
query25	529	407	400	400
query26	688	157	157	157
query27	1793	279	273	273
query28	3637	2040	2032	2032
query29	699	429	470	429
query30	240	152	157	152
query31	954	777	792	777
query32	90	50	59	50
query33	459	294	297	294
query34	870	474	479	474
query35	833	718	718	718
query36	1048	938	928	928
query37	151	90	94	90
query38	4005	3873	3835	3835
query39	1472	1416	1421	1416
query40	205	113	116	113
query41	47	47	44	44
query42	120	93	95	93
query43	519	477	474	474
query44	1084	723	732	723
query45	208	174	169	169
query46	1098	766	742	742
query47	1907	1815	1830	1815
query48	387	292	302	292
query49	780	432	447	432
query50	826	433	410	410
query51	7087	6961	6920	6920
query52	98	86	89	86
query53	252	182	184	182
query54	564	460	462	460
query55	75	74	76	74
query56	333	256	251	251
query57	1194	1040	1066	1040
query58	215	237	220	220
query59	3083	2798	2854	2798
query60	301	278	262	262
query61	103	99	98	98
query62	750	656	645	645
query63	216	178	180	178
query64	2858	674	678	674
query65	3193	3171	3164	3164
query66	629	337	335	335
query67	15673	15367	15227	15227
query68	3010	561	560	560
query69	407	286	294	286
query70	1135	1119	1025	1025
query71	357	280	284	280
query72	6235	4197	4019	4019
query73	770	330	325	325
query74	9140	8751	8927	8751
query75	3409	2667	2710	2667
query76	1486	982	1018	982
query77	569	315	314	314
query78	9724	9426	9139	9139
query79	1041	527	524	524
query80	698	501	497	497
query81	545	243	232	232
query82	249	147	146	146
query83	167	147	142	142
query84	271	76	74	74
query85	688	289	279	279
query86	312	289	300	289
query87	4443	4367	4352	4352
query88	3037	2350	2331	2331
query89	385	286	290	286
query90	1842	192	191	191
query91	119	99	100	99
query92	60	47	48	47
query93	1039	523	532	523
query94	613	296	286	286
query95	341	253	252	252
query96	582	268	271	268
query97	3227	3126	3157	3126
query98	222	201	195	195
query99	1551	1253	1282	1253
Total cold run time: 304647 ms
Total hot run time: 192576 ms

@doris-robot
Copy link

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

query1	0.04	0.04	0.04
query2	0.09	0.05	0.04
query3	0.22	0.05	0.06
query4	1.68	0.07	0.08
query5	0.51	0.50	0.50
query6	1.14	0.72	0.74
query7	0.02	0.01	0.01
query8	0.05	0.05	0.04
query9	0.56	0.49	0.50
query10	0.55	0.56	0.54
query11	0.16	0.12	0.12
query12	0.14	0.12	0.13
query13	0.62	0.58	0.58
query14	2.10	2.19	2.11
query15	0.83	0.84	0.84
query16	0.37	0.36	0.38
query17	1.01	1.05	1.06
query18	0.20	0.21	0.20
query19	1.92	1.75	1.76
query20	0.01	0.02	0.01
query21	15.40	0.66	0.66
query22	4.35	7.89	2.03
query23	18.24	1.34	1.22
query24	2.11	0.22	0.22
query25	0.15	0.08	0.08
query26	0.27	0.18	0.18
query27	0.08	0.08	0.08
query28	13.20	1.02	0.99
query29	12.64	3.40	3.39
query30	0.24	0.06	0.05
query31	2.88	0.41	0.41
query32	3.23	0.48	0.47
query33	2.94	3.02	3.04
query34	17.06	4.40	4.36
query35	4.49	4.46	4.48
query36	0.66	0.47	0.51
query37	0.18	0.16	0.15
query38	0.15	0.15	0.16
query39	0.04	0.04	0.04
query40	0.15	0.12	0.12
query41	0.09	0.04	0.05
query42	0.06	0.04	0.04
query43	0.04	0.04	0.04
Total cold run time: 110.87 s
Total hot run time: 32.31 s

@hubgeter
Copy link
Contributor Author

hubgeter commented Sep 4, 2024

run buildall

Copy link
Contributor

github-actions bot commented Sep 4, 2024

clang-tidy review says "All clean, LGTM! 👍"

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	18199	5431	4429	4429
q2	2890	189	177	177
q3	10745	1137	1111	1111
q4	10505	845	813	813
q5	7782	2965	2883	2883
q6	229	142	145	142
q7	982	620	603	603
q8	9438	2139	2109	2109
q9	7312	6526	6560	6526
q10	7028	2215	2181	2181
q11	447	249	253	249
q12	402	220	217	217
q13	17776	3062	3061	3061
q14	288	243	236	236
q15	534	494	494	494
q16	573	521	518	518
q17	984	637	666	637
q18	7478	6830	6863	6830
q19	1395	1077	1042	1042
q20	694	330	329	329
q21	4006	2917	3087	2917
q22	1120	1020	1032	1020
Total cold run time: 110807 ms
Total hot run time: 38524 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4374	4277	4323	4277
q2	385	292	276	276
q3	2943	2692	2647	2647
q4	1946	1711	1713	1711
q5	5418	5413	5434	5413
q6	220	133	131	131
q7	2157	1751	1779	1751
q8	3207	3414	3418	3414
q9	8499	8445	8463	8445
q10	3742	3241	3219	3219
q11	603	497	506	497
q12	784	620	623	620
q13	14063	3111	3110	3110
q14	314	274	282	274
q15	525	484	494	484
q16	629	581	585	581
q17	1804	1475	1497	1475
q18	7888	7477	7413	7413
q19	1686	1465	1645	1465
q20	2063	1814	1841	1814
q21	5460	5295	5151	5151
q22	1127	1017	1051	1017
Total cold run time: 69837 ms
Total hot run time: 55185 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 188053 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 8cb3173c7b8f8c032b956ab11d39828305edc1a1, data reload: false

query1	915	385	371	371
query2	6501	1994	1982	1982
query3	6646	218	216	216
query4	29224	23283	23175	23175
query5	4171	500	473	473
query6	252	166	166	166
query7	4577	294	293	293
query8	248	192	208	192
query9	8599	2518	2485	2485
query10	448	282	270	270
query11	17920	15065	15046	15046
query12	150	100	98	98
query13	1620	383	378	378
query14	8804	7268	7135	7135
query15	272	165	173	165
query16	7922	430	468	430
query17	1582	556	532	532
query18	2044	278	286	278
query19	315	141	142	141
query20	114	111	108	108
query21	211	103	101	101
query22	4522	4108	4079	4079
query23	34242	33442	33620	33442
query24	11167	2872	2846	2846
query25	646	373	389	373
query26	1175	156	155	155
query27	2483	283	277	277
query28	7516	2067	2060	2060
query29	819	415	406	406
query30	306	166	153	153
query31	990	769	781	769
query32	103	53	53	53
query33	756	307	292	292
query34	946	466	482	466
query35	851	730	725	725
query36	1111	924	924	924
query37	170	94	94	94
query38	3969	3867	4025	3867
query39	1442	1402	1383	1383
query40	203	117	112	112
query41	50	45	45	45
query42	118	95	97	95
query43	511	486	460	460
query44	1268	776	735	735
query45	217	169	171	169
query46	1100	742	771	742
query47	1875	1774	1807	1774
query48	395	305	302	302
query49	1104	435	430	430
query50	815	402	417	402
query51	7013	6865	6858	6858
query52	102	89	92	89
query53	260	187	182	182
query54	952	450	459	450
query55	77	75	75	75
query56	285	269	261	261
query57	1157	1074	1085	1074
query58	235	222	232	222
query59	2988	2804	2843	2804
query60	284	260	268	260
query61	104	95	105	95
query62	847	656	642	642
query63	224	184	180	180
query64	4316	692	643	643
query65	3204	3162	3122	3122
query66	1436	338	340	338
query67	15747	15236	15554	15236
query68	3266	598	576	576
query69	399	274	272	272
query70	1131	1145	1106	1106
query71	344	264	271	264
query72	6446	4049	4043	4043
query73	740	329	324	324
query74	9339	8860	8862	8860
query75	3418	2678	2720	2678
query76	1861	1016	965	965
query77	490	308	316	308
query78	9579	9143	9092	9092
query79	1041	537	526	526
query80	691	497	506	497
query81	475	236	234	234
query82	236	151	142	142
query83	167	157	156	156
query84	229	76	83	76
query85	683	291	278	278
query86	309	302	303	302
query87	4451	4251	4267	4251
query88	3034	2402	2438	2402
query89	380	292	281	281
query90	1792	186	184	184
query91	129	106	103	103
query92	61	49	50	49
query93	1029	552	539	539
query94	812	276	280	276
query95	348	253	249	249
query96	590	271	272	271
query97	3145	3099	3113	3099
query98	214	200	195	195
query99	1487	1259	1268	1259
Total cold run time: 280952 ms
Total hot run time: 188053 ms

@doris-robot
Copy link

TeamCity be ut coverage result:
Function Coverage: 36.84% (9394/25500)
Line Coverage: 28.28% (77462/273936)
Region Coverage: 27.66% (39961/144452)
Branch Coverage: 24.31% (20334/83652)
Coverage Report: http://coverage.selectdb-in.cc/coverage/8cb3173c7b8f8c032b956ab11d39828305edc1a1_8cb3173c7b8f8c032b956ab11d39828305edc1a1/report/index.html

@doris-robot
Copy link

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

query1	0.05	0.04	0.04
query2	0.08	0.04	0.04
query3	0.23	0.05	0.06
query4	1.67	0.08	0.10
query5	0.51	0.48	0.50
query6	1.14	0.74	0.73
query7	0.02	0.01	0.01
query8	0.05	0.04	0.04
query9	0.55	0.48	0.48
query10	0.53	0.54	0.56
query11	0.15	0.11	0.11
query12	0.14	0.12	0.12
query13	0.60	0.58	0.58
query14	2.11	2.09	2.05
query15	0.89	0.83	0.81
query16	0.38	0.36	0.37
query17	1.00	0.99	1.03
query18	0.22	0.20	0.20
query19	1.87	1.71	1.79
query20	0.01	0.01	0.01
query21	15.42	0.67	0.68
query22	4.06	6.64	2.46
query23	18.26	1.37	1.33
query24	2.08	0.22	0.22
query25	0.15	0.09	0.08
query26	0.27	0.18	0.18
query27	0.07	0.08	0.08
query28	13.28	1.02	1.00
query29	12.63	3.36	3.33
query30	0.24	0.05	0.06
query31	2.87	0.40	0.39
query32	3.25	0.50	0.47
query33	2.98	3.00	3.11
query34	17.05	4.40	4.39
query35	4.44	4.48	4.42
query36	0.66	0.48	0.48
query37	0.20	0.15	0.16
query38	0.15	0.15	0.15
query39	0.05	0.04	0.04
query40	0.16	0.13	0.12
query41	0.09	0.05	0.05
query42	0.06	0.05	0.05
query43	0.04	0.04	0.04
Total cold run time: 110.66 s
Total hot run time: 32.58 s

Copy link
Contributor

github-actions bot commented Sep 5, 2024

clang-tidy review says "All clean, LGTM! 👍"

@hubgeter
Copy link
Contributor Author

hubgeter commented Sep 5, 2024

run buildall

Copy link
Contributor

github-actions bot commented Sep 5, 2024

clang-tidy review says "All clean, LGTM! 👍"

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	18229	4639	4431	4431
q2	2540	206	191	191
q3	11239	1136	1098	1098
q4	11287	794	764	764
q5	8599	2964	2802	2802
q6	230	140	135	135
q7	960	615	611	611
q8	9330	2091	2090	2090
q9	7236	6555	6559	6555
q10	7043	2265	2287	2265
q11	456	239	250	239
q12	414	226	217	217
q13	17778	3062	3043	3043
q14	279	237	241	237
q15	551	508	481	481
q16	590	537	526	526
q17	1009	692	699	692
q18	7353	6848	6804	6804
q19	1390	1025	1047	1025
q20	673	331	335	331
q21	3946	3159	2903	2903
q22	1117	1004	974	974
Total cold run time: 112249 ms
Total hot run time: 38414 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4378	4289	4290	4289
q2	393	275	277	275
q3	2936	2681	2690	2681
q4	1927	1656	1655	1655
q5	5451	5445	5392	5392
q6	223	131	133	131
q7	2112	1751	1771	1751
q8	3243	3384	3350	3350
q9	8473	8518	8424	8424
q10	3468	3230	3188	3188
q11	593	507	511	507
q12	771	599	603	599
q13	11837	3088	3027	3027
q14	298	268	284	268
q15	516	474	480	474
q16	619	551	564	551
q17	1817	1477	1476	1476
q18	7815	7639	7356	7356
q19	1669	1631	1571	1571
q20	2077	1835	1827	1827
q21	5546	5220	5206	5206
q22	1114	1031	1005	1005
Total cold run time: 67276 ms
Total hot run time: 55003 ms

@doris-robot
Copy link

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

query1	917	384	386	384
query2	6495	2048	1938	1938
query3	6646	225	223	223
query4	31428	23128	23187	23128
query5	4181	515	502	502
query6	257	166	179	166
query7	4587	303	297	297
query8	273	228	231	228
query9	8657	2532	2525	2525
query10	440	300	282	282
query11	15862	15017	15246	15017
query12	150	101	101	101
query13	1635	393	371	371
query14	9302	6900	7168	6900
query15	284	169	184	169
query16	8084	465	455	455
query17	1603	568	547	547
query18	2069	287	284	284
query19	247	143	143	143
query20	120	109	112	109
query21	210	109	104	104
query22	4387	4276	4007	4007
query23	34141	33330	33294	33294
query24	11135	2819	2880	2819
query25	624	380	390	380
query26	1392	151	156	151
query27	2851	282	273	273
query28	7708	2077	2056	2056
query29	859	409	404	404
query30	311	158	158	158
query31	959	751	842	751
query32	103	56	57	56
query33	749	280	290	280
query34	983	496	478	478
query35	831	712	710	710
query36	1077	912	929	912
query37	166	94	102	94
query38	4019	3892	3826	3826
query39	1453	1439	1420	1420
query40	264	115	116	115
query41	49	47	48	47
query42	116	97	95	95
query43	520	475	474	474
query44	1173	757	756	756
query45	194	167	168	167
query46	1101	721	726	721
query47	1872	1795	1810	1795
query48	370	315	296	296
query49	1096	447	465	447
query50	802	411	424	411
query51	6951	6930	6872	6872
query52	101	89	87	87
query53	257	181	176	176
query54	854	457	464	457
query55	77	77	75	75
query56	275	258	259	258
query57	1207	1050	1072	1050
query58	254	242	249	242
query59	3098	2761	2835	2761
query60	313	266	268	266
query61	105	100	101	100
query62	877	686	666	666
query63	223	191	182	182
query64	5322	684	655	655
query65	3249	3164	3175	3164
query66	1415	347	339	339
query67	15403	15234	15214	15214
query68	3549	579	574	574
query69	411	286	294	286
query70	1136	1122	1080	1080
query71	339	281	288	281
query72	6506	4147	4125	4125
query73	751	331	330	330
query74	9146	8812	8902	8812
query75	3373	2718	2688	2688
query76	1917	986	1020	986
query77	477	317	320	317
query78	9720	9352	9012	9012
query79	1077	549	534	534
query80	901	536	543	536
query81	560	240	246	240
query82	1117	147	150	147
query83	244	160	160	160
query84	245	81	88	81
query85	1108	355	342	342
query86	306	270	296	270
query87	4446	4189	4285	4189
query88	3010	2390	2392	2390
query89	391	296	288	288
query90	1999	201	202	201
query91	146	113	118	113
query92	63	54	50	50
query93	1051	550	535	535
query94	828	301	310	301
query95	366	271	269	269
query96	595	278	271	271
query97	3169	3062	3052	3052
query98	353	250	201	201
query99	1713	1274	1317	1274
Total cold run time: 285746 ms
Total hot run time: 187765 ms

@doris-robot
Copy link

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

query1	0.05	0.04	0.04
query2	0.08	0.04	0.04
query3	0.23	0.06	0.06
query4	1.66	0.08	0.08
query5	0.52	0.50	0.51
query6	1.12	0.72	0.72
query7	0.02	0.02	0.01
query8	0.05	0.04	0.04
query9	0.55	0.50	0.50
query10	0.54	0.57	0.55
query11	0.16	0.12	0.12
query12	0.15	0.12	0.12
query13	0.59	0.60	0.59
query14	2.09	2.04	2.04
query15	0.86	0.83	0.80
query16	0.38	0.37	0.38
query17	1.07	1.05	1.07
query18	0.22	0.20	0.21
query19	1.94	1.89	1.84
query20	0.02	0.01	0.01
query21	15.39	0.67	0.66
query22	4.09	6.46	2.17
query23	18.22	1.39	1.32
query24	2.11	0.23	0.23
query25	0.16	0.09	0.08
query26	0.26	0.17	0.17
query27	0.08	0.08	0.07
query28	13.25	1.03	1.00
query29	12.62	3.33	3.30
query30	0.24	0.05	0.06
query31	2.88	0.42	0.39
query32	3.25	0.49	0.47
query33	2.98	3.00	3.01
query34	16.90	4.33	4.37
query35	4.45	4.43	4.40
query36	0.66	0.47	0.48
query37	0.19	0.16	0.16
query38	0.16	0.15	0.15
query39	0.05	0.04	0.04
query40	0.16	0.13	0.12
query41	0.10	0.04	0.05
query42	0.06	0.05	0.05
query43	0.06	0.05	0.05
Total cold run time: 110.62 s
Total hot run time: 32.4 s

@doris-robot
Copy link

TeamCity be ut coverage result:
Function Coverage: 36.83% (9395/25509)
Line Coverage: 28.27% (77499/274107)
Region Coverage: 27.66% (39990/144559)
Branch Coverage: 24.30% (20347/83730)
Coverage Report: http://coverage.selectdb-in.cc/coverage/7e229aaf10594938d9bb8ff159deb52d1d673575_7e229aaf10594938d9bb8ff159deb52d1d673575/report/index.html

hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 9, 2024
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 9, 2024
… API. (apache#40225)

Refactoring maxCompute catalog using Storage API.

Storage API :
https://help.aliyun.com/zh/maxcompute/user-guide/open-storage-sample-java-sdk?spm=a2c4g.11186623.0.i0

```
The following are required:

CREATE CATALOG mc PROPERTIES (
"type" = "max_compute",
"mc.default.project" = "xxx",
"mc.access_key" = "xxx",
"mc.secret_key" = "xxxx",
"mc.endpoint" = "xxxx"
);

Optional parameters:
Configuration Item      Default Value
"mc.quota"              =    "pay-as-you-go"

"mc.split_strategy" =   "byte_size" Split according to file size
"mc.split_byte_size" = "268435456" You can set the file size of each split

"mc.split_strategy" = "row_count" Split according to the number of rows of data
"mc.split_row_count" = "1048576" You can set how many lines to read for each split
```
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 9, 2024
… maxcompute. (apache#40888)

before pr apache#40225 
## Proposed changes

Fixed a bug where when reading maxcompute, if there are null values ​​in
a batch, null values ​​will always be read out.
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 9, 2024
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 10, 2024
… API. (apache#40225)

Refactoring maxCompute catalog using Storage API.

Storage API :
https://help.aliyun.com/zh/maxcompute/user-guide/open-storage-sample-java-sdk?spm=a2c4g.11186623.0.i0

```
The following are required:

CREATE CATALOG mc PROPERTIES (
"type" = "max_compute",
"mc.default.project" = "xxx",
"mc.access_key" = "xxx",
"mc.secret_key" = "xxxx",
"mc.endpoint" = "xxxx"
);

Optional parameters:
Configuration Item      Default Value
"mc.quota"              =    "pay-as-you-go"

"mc.split_strategy" =   "byte_size" Split according to file size
"mc.split_byte_size" = "268435456" You can set the file size of each split

"mc.split_strategy" = "row_count" Split according to the number of rows of data
"mc.split_row_count" = "1048576" You can set how many lines to read for each split
```
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 10, 2024
… maxcompute. (apache#40888)

before pr apache#40225 
## Proposed changes

Fixed a bug where when reading maxcompute, if there are null values ​​in
a batch, null values ​​will always be read out.
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 10, 2024
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 10, 2024
… API. (apache#40225)

Refactoring maxCompute catalog using Storage API.

Storage API :
https://help.aliyun.com/zh/maxcompute/user-guide/open-storage-sample-java-sdk?spm=a2c4g.11186623.0.i0

```
The following are required:

CREATE CATALOG mc PROPERTIES (
"type" = "max_compute",
"mc.default.project" = "xxx",
"mc.access_key" = "xxx",
"mc.secret_key" = "xxxx",
"mc.endpoint" = "xxxx"
);

Optional parameters:
Configuration Item      Default Value
"mc.quota"              =    "pay-as-you-go"

"mc.split_strategy" =   "byte_size" Split according to file size
"mc.split_byte_size" = "268435456" You can set the file size of each split

"mc.split_strategy" = "row_count" Split according to the number of rows of data
"mc.split_row_count" = "1048576" You can set how many lines to read for each split
```
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 10, 2024
… maxcompute. (apache#40888)

before pr apache#40225 
## Proposed changes

Fixed a bug where when reading maxcompute, if there are null values ​​in
a batch, null values ​​will always be read out.
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 10, 2024
…pute catalogs from previous versions. (apache#41386)

before pr apache#40225

(cherry picked from commit e8a1a16)
eldenmoon pushed a commit to eldenmoon/incubator-doris that referenced this pull request Oct 10, 2024
morningman pushed a commit that referenced this pull request Oct 11, 2024
… API.(#40225 , #40888 ,#41386 ) (#41610)

bp #40225 , #40888 ,#41386

## Proposed changes
Among them, #40225 is the new api of mc,
#40888 is used to fix the bug when reading null between the new and old
apis,
#41386 is used for compatibility between the new and old versions
cjj2010 pushed a commit to cjj2010/doris that referenced this pull request Oct 12, 2024
amorynan pushed a commit to amorynan/doris that referenced this pull request Oct 12, 2024
morningman pushed a commit that referenced this pull request Oct 17, 2024
This PR #40225 try to pass time zone info from BE to JNI, and it use
`_state->timezone_obj().name()`
to get the timezone name.
But when we do some rolling upgrade of BE, it may coredump like:

```
*** SIGSEGV address not mapped to object (@0x610) received by PID 72661 (TID 73538 OR 0x7f2e898d1640) from PID 1552; stack trace: ***
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/common/signal_handler.h:421
 1# os::Linux::chained_handler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 2# JVM_handle_linux_signal in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 3# signalHandler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 4# 0x00007F3070D3E520 in /lib/x86_64-linux-gnu/libc.so.6
 5# cctz::time_zone::name[abi:cxx11]() const in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be
 6# doris::vectorized::JniConnector::open(doris::RuntimeState*, doris::RuntimeProfile*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/jni_connector.cpp:87
 7# doris::vectorized::AvroJNIReader::init_fetch_table_schema_reader() at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/format/avro/avro_jni_reader.cpp:119
 8# std::_Function_handler::_M_invoke(std::_Any_data const&) at /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
 9# doris::WorkThreadPool::work_thread(int) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/util/work_thread_pool.hpp:159
10# execute_native_thread_routine at ../../../../../libstdc++-v3/src/c++11/thread.cc:84
11# start_thread at ./nptl/pthread_create.c:442
12# 0x00007F3070E22850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
172.20.50.206 last coredump sql: 2024-10-13 04:12:23,985 [query] 
```

This PR use another method: `_state->timezone()`, which just return a
string, instead of reading and initializing
time zone info file, to avoid potential coredump.
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 17, 2024
This PR apache#40225 try to pass time zone info from BE to JNI, and it use
`_state->timezone_obj().name()`
to get the timezone name.
But when we do some rolling upgrade of BE, it may coredump like:

```
*** SIGSEGV address not mapped to object (@0x610) received by PID 72661 (TID 73538 OR 0x7f2e898d1640) from PID 1552; stack trace: ***
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/common/signal_handler.h:421
 1# os::Linux::chained_handler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 2# JVM_handle_linux_signal in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 3# signalHandler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 4# 0x00007F3070D3E520 in /lib/x86_64-linux-gnu/libc.so.6
 5# cctz::time_zone::name[abi:cxx11]() const in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be
 6# doris::vectorized::JniConnector::open(doris::RuntimeState*, doris::RuntimeProfile*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/jni_connector.cpp:87
 7# doris::vectorized::AvroJNIReader::init_fetch_table_schema_reader() at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/format/avro/avro_jni_reader.cpp:119
 8# std::_Function_handler::_M_invoke(std::_Any_data const&) at /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
 9# doris::WorkThreadPool::work_thread(int) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/util/work_thread_pool.hpp:159
10# execute_native_thread_routine at ../../../../../libstdc++-v3/src/c++11/thread.cc:84
11# start_thread at ./nptl/pthread_create.c:442
12# 0x00007F3070E22850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
172.20.50.206 last coredump sql: 2024-10-13 04:12:23,985 [query] 
```

This PR use another method: `_state->timezone()`, which just return a
string, instead of reading and initializing
time zone info file, to avoid potential coredump.
yiguolei pushed a commit that referenced this pull request Oct 17, 2024
…2003)

bp #41956 

This PR #40225 try to pass time zone info from BE to JNI, and it use
`_state->timezone_obj().name()`
to get the timezone name.
But when we do some rolling upgrade of BE, it may coredump like:

```
*** SIGSEGV address not mapped to object (@0x610) received by PID 72661 (TID 73538 OR 0x7f2e898d1640) from PID 1552; stack trace: ***
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/common/signal_handler.h:421
 1# os::Linux::chained_handler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 2# JVM_handle_linux_signal in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 3# signalHandler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 4# 0x00007F3070D3E520 in /lib/x86_64-linux-gnu/libc.so.6
 5# cctz::time_zone::name[abi:cxx11]() const in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be
 6# doris::vectorized::JniConnector::open(doris::RuntimeState*, doris::RuntimeProfile*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/jni_connector.cpp:87
 7# doris::vectorized::AvroJNIReader::init_fetch_table_schema_reader() at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/format/avro/avro_jni_reader.cpp:119
 8# std::_Function_handler::_M_invoke(std::_Any_data const&) at /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
 9# doris::WorkThreadPool::work_thread(int) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/util/work_thread_pool.hpp:159
10# execute_native_thread_routine at ../../../../../libstdc++-v3/src/c++11/thread.cc:84
11# start_thread at ./nptl/pthread_create.c:442
12# 0x00007F3070E22850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
172.20.50.206 last coredump sql: 2024-10-13 04:12:23,985 [query] 
```

This PR use another method: `_state->timezone()`, which just return a
string, instead of reading and initializing
time zone info file, to avoid potential coredump.
hubgeter added a commit to hubgeter/doris that referenced this pull request Oct 18, 2024
This PR apache#40225 try to pass time zone info from BE to JNI, and it use
`_state->timezone_obj().name()`
to get the timezone name.
But when we do some rolling upgrade of BE, it may coredump like:

```
*** SIGSEGV address not mapped to object (@0x610) received by PID 72661 (TID 73538 OR 0x7f2e898d1640) from PID 1552; stack trace: ***
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/common/signal_handler.h:421
 1# os::Linux::chained_handler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 2# JVM_handle_linux_signal in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 3# signalHandler(int, siginfo_t*, void*) in /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so
 4# 0x00007F3070D3E520 in /lib/x86_64-linux-gnu/libc.so.6
 5# cctz::time_zone::name[abi:cxx11]() const in /mnt/hdd01/ci/compatibility-deploy/be/lib/doris_be
 6# doris::vectorized::JniConnector::open(doris::RuntimeState*, doris::RuntimeProfile*) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/jni_connector.cpp:87
 7# doris::vectorized::AvroJNIReader::init_fetch_table_schema_reader() at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/vec/exec/format/avro/avro_jni_reader.cpp:119
 8# std::_Function_handler::_M_invoke(std::_Any_data const&) at /var/local/ldb-toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
 9# doris::WorkThreadPool::work_thread(int) at /home/zcp/repo_center/doris_branch-2.1/doris/be/src/util/work_thread_pool.hpp:159
10# execute_native_thread_routine at ../../../../../libstdc++-v3/src/c++11/thread.cc:84
11# start_thread at ./nptl/pthread_create.c:442
12# 0x00007F3070E22850 at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:83
172.20.50.206 last coredump sql: 2024-10-13 04:12:23,985 [query] 
```

This PR use another method: `_state->timezone()`, which just return a
string, instead of reading and initializing
time zone info file, to avoid potential coredump.
morningman pushed a commit to apache/doris-website that referenced this pull request Nov 10, 2024
Since I refactored the maxcompute code before, some properties changed
when creating the catalog, so I refactored the corresponding documents
here.
pr : apache/doris#40225
# Versions 

- [x] dev
- [x] 3.0
- [x] 2.1
- [ ] 2.0

# Languages

- [x] Chinese
- [x] English
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.7-merged dev/3.0.3-merged reviewed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants