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

[fix](decimal256) fix coredump when enable decimal256 but fallback to old planner #35731

Merged
merged 1 commit into from
May 31, 2024

Conversation

jacktengg
Copy link
Contributor

@jacktengg jacktengg commented May 31, 2024

Proposed changes

Issue Number: close #xxx

BE coredump when enable decimal256 but fallback to old planner.
When enable_decimal256 =true and falls back to the old optimizer, the sum result type become decimal128, but BE receives enable_decimal256=true, thinking that the sum result type is still decimal256.

20240530 18:01:40.713162 72530 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >
*** Check failure stack trace: ***
    @     0x564c51b56e86  google::LogMessage::SendToLog()
    @     0x564c51b538d0  google::LogMessage::Flush()
    @     0x564c51b576c9  google::LogMessageFatal::~LogMessageFatal()
    @     0x564c266f6880  assert_cast<>()
    @     0x564c3361ebe8  doris::vectorized::AggregateFunctionSum<>::insert_result_into()
    @     0x564c33633cee  doris::vectorized::AggregateFunctionNullBaseInline<>::insert_result_into()
    @     0x564c33633f48  doris::vectorized::IAggregateFunctionHelper<>::insert_result_into_vec()
F20240530 18:01:40.986271 72538 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >

*** Query id: 6ba2b0c5b10249d4-a36d87744741db1d ***
*** is nereids: 0 ***
*** tablet id: 0 ***
*** Aborted at 1717063302 (unix time) try "date -d @1717063302" if you are using GNU date ***
*** Current BE git commitID: b130df2488 ***
*** SIGABRT unknown detail explain (@0x10fd5) received by PID 69589 (TID 72530 OR 0x7f61a04bb700) from PID 69589; stack trace: ***
    @     0x564c3bafab38  std::_Function_handler<>::_M_invoke()
    @     0x564c2489325f  std::function<>::operator()()
    @     0x564c3b82da6d  doris::vectorized::AggregationNode::pull()
    @     0x564c3b82d6cc  doris::vectorized::AggregationNode::get_next()
    @     0x564c2487329d  std::__invoke_impl<>()
    @     0x564c24872fb0  std::__invoke<>()
    @     0x564c24872ea7  _ZNSt5_BindIFMN5doris8ExecNodeEFNS0_6StatusEPNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS1_St12_PlaceholderILi1EESC_ILi2EESC_ILi3EEEE6__callIS2_JOS4_OS7_OS8_EJLm0ELm1ELm2ELm3EEEET_OSt5tupleIJDpT0_EESt12_Index_tupleIJXspT1_EEE
    @     0x564c24872c38  std::_Bind<>::operator()<>()
    @     0x564c24872ae8  std::__invoke_impl<>()
    @     0x564c24872a58  _ZSt10__invoke_rIN5doris6StatusERSt5_BindIFMNS0_8ExecNodeEFS1_PNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS3_St12_PlaceholderILi1EESD_ILi2EESD_ILi3EEEEJS5_S8_S9_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESL_E4typeEOSM_DpOSN_
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk2/tengjianping/doris-38/be/src/common/signal_handler.h:421
 1# 0x00007F6C0F5AD400 in /lib64/libc.so.6
 2# gsignal in /lib64/libc.so.6
 3# abort in /lib64/libc.so.6
 4# 0x0000564C51B616FD in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 5# 0x0000564C51B53D9A in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 6# google::LogMessage::SendToLog() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 7# google::LogMessage::Flush() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 8# google::LogMessageFatal::~LogMessageFatal() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 9# doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >& assert_cast<doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >&, doris::vectorized::IColumn&>(doris::vectorized::IColumn&) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
10# doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_sum.h:124
11# doris::vectorized::AggregateFunctionNullBaseInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true, doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_null.h:171
12# doris::vectorized::IAggregateFunctionHelper<doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn&, unsigned long) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function.h:315
13# doris::vectorized::AggFnEvaluator::insert_result_info_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn*, unsigned long) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exprs/vectorized_agg_fn.cpp:273
14# void doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0::operator()<doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1296
15# void std::__invoke_impl<void, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(std::__invoke_other, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0&&, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61

20# doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1264
21# doris::vectorized::AggregationNode::_get_with_serialized_key_result(doris::RuntimeState*, doris::vectorized::Block*, bool*) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
22# doris::Status std::__invoke_impl<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_memfun_deref, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
23# std::enable_if<is_invocable_r_v<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
24# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::__call<doris::Status, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&, 0ul, 1ul, 2ul, 3ul>(std::tuple<doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:570
25# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()<doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:629
26# doris::Status std::__invoke_impl<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_other, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
27# std::enable_if<is_invocable_r_v<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
28# std::_Function_handler<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*), std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)> >::_M_invoke(std::_Any_data const&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
29# std::function<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()(doris::RuntimeState*, doris::vectorized::Block*, bool*) const at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
30# doris::vectorized::AggregationNode::pull(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:494
31# doris::vectorized::AggregationNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:487
@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.

@jacktengg
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

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

------ Round 1 ----------------------------------
q1	17895	4411	4377	4377
q2	2398	195	198	195
q3	10461	1219	1115	1115
q4	10152	805	738	738
q5	7449	2737	2581	2581
q6	213	133	137	133
q7	960	583	592	583
q8	9214	2055	2056	2055
q9	8923	6454	6461	6454
q10	8924	3694	3757	3694
q11	460	246	237	237
q12	392	222	219	219
q13	18860	2932	2941	2932
q14	265	210	224	210
q15	519	470	478	470
q16	523	391	380	380
q17	953	609	858	609
q18	8133	7576	7351	7351
q19	7558	1532	1457	1457
q20	651	307	322	307
q21	4925	3227	3288	3227
q22	374	326	327	326
Total cold run time: 120202 ms
Total hot run time: 39650 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4358	4199	4183	4183
q2	375	274	269	269
q3	2949	2777	2737	2737
q4	1848	1639	1630	1630
q5	5225	5235	5260	5235
q6	215	125	125	125
q7	2070	1699	1715	1699
q8	3166	3324	3287	3287
q9	8346	8337	8305	8305
q10	3878	3709	3707	3707
q11	569	485	470	470
q12	757	589	600	589
q13	16841	2958	2945	2945
q14	297	262	260	260
q15	508	473	482	473
q16	491	399	414	399
q17	1778	1465	1509	1465
q18	7657	7438	7224	7224
q19	1666	1626	1458	1458
q20	1990	1790	1778	1778
q21	4804	4683	4581	4581
q22	576	547	518	518
Total cold run time: 70364 ms
Total hot run time: 53337 ms
@doris-robot
Copy link

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

query1	925	365	378	365
query2	6454	2381	2417	2381
query3	6649	208	212	208
query4	19939	17119	17287	17119
query5	4171	429	428	428
query6	274	159	166	159
query7	4586	306	298	298
query8	339	287	287	287
query9	8556	2432	2421	2421
query10	465	290	266	266
query11	10496	10135	9995	9995
query12	140	88	82	82
query13	1633	370	364	364
query14	8909	7426	7555	7426
query15	239	189	186	186
query16	7760	259	253	253
query17	1863	519	516	516
query18	1889	270	262	262
query19	205	154	165	154
query20	98	107	87	87
query21	194	131	125	125
query22	4287	3979	3890	3890
query23	33605	32872	32883	32872
query24	11201	2835	2889	2835
query25	628	366	389	366
query26	1590	163	161	161
query27	2904	331	345	331
query28	7490	2079	2095	2079
query29	1000	610	588	588
query30	287	149	149	149
query31	966	763	726	726
query32	90	54	52	52
query33	768	270	257	257
query34	1016	491	473	473
query35	766	593	598	593
query36	1082	904	911	904
query37	138	67	67	67
query38	2935	2766	2774	2766
query39	854	780	802	780
query40	278	126	125	125
query41	53	51	48	48
query42	102	94	97	94
query43	578	550	555	550
query44	1221	734	756	734
query45	182	174	169	169
query46	1075	728	714	714
query47	1841	1771	1789	1771
query48	373	297	301	297
query49	1183	393	394	393
query50	764	400	392	392
query51	6667	6585	6713	6585
query52	100	89	89	89
query53	353	302	288	288
query54	1004	422	427	422
query55	75	75	72	72
query56	264	240	242	240
query57	1169	1048	1041	1041
query58	258	220	225	220
query59	3549	3246	3078	3078
query60	264	260	258	258
query61	96	92	90	90
query62	631	451	439	439
query63	309	289	287	287
query64	9852	2245	1746	1746
query65	3199	3071	3127	3071
query66	1382	332	326	326
query67	15301	14859	14633	14633
query68	4723	539	534	534
query69	495	261	274	261
query70	1082	1107	1124	1107
query71	415	270	271	270
query72	7850	5397	2718	2718
query73	712	320	320	320
query74	6017	5660	5556	5556
query75	3605	2658	2640	2640
query76	3364	958	969	958
query77	606	267	259	259
query78	10255	9769	9683	9683
query79	2392	517	525	517
query80	1000	439	450	439
query81	498	216	216	216
query82	1338	89	90	89
query83	263	172	168	168
query84	232	87	84	84
query85	1571	267	288	267
query86	472	299	317	299
query87	3262	3177	3105	3105
query88	3995	2374	2400	2374
query89	474	390	391	390
query90	1937	185	183	183
query91	122	96	103	96
query92	62	48	48	48
query93	2097	501	499	499
query94	1243	188	182	182
query95	413	356	310	310
query96	580	272	266	266
query97	3179	3002	3104	3002
query98	231	221	215	215
query99	1107	860	861	860
Total cold run time: 275106 ms
Total hot run time: 169358 ms
@doris-robot
Copy link

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

query1	0.04	0.04	0.03
query2	0.08	0.04	0.04
query3	0.23	0.05	0.05
query4	1.67	0.07	0.06
query5	0.49	0.49	0.47
query6	1.13	0.73	0.72
query7	0.02	0.02	0.01
query8	0.05	0.05	0.04
query9	0.53	0.49	0.50
query10	0.54	0.55	0.53
query11	0.16	0.12	0.11
query12	0.15	0.12	0.13
query13	0.60	0.60	0.60
query14	0.79	0.78	0.76
query15	0.82	0.79	0.82
query16	0.38	0.36	0.37
query17	1.00	0.95	0.94
query18	0.23	0.25	0.24
query19	1.75	1.71	1.71
query20	0.01	0.01	0.02
query21	15.70	0.67	0.65
query22	4.18	7.40	1.52
query23	18.25	1.39	1.30
query24	1.42	0.37	0.20
query25	0.15	0.08	0.08
query26	0.26	0.17	0.17
query27	0.09	0.08	0.07
query28	13.41	1.01	1.01
query29	13.13	3.31	3.25
query30	0.24	0.06	0.05
query31	2.88	0.38	0.38
query32	3.27	0.48	0.47
query33	2.86	2.94	2.92
query34	17.22	4.38	4.44
query35	4.46	4.52	4.46
query36	0.65	0.46	0.46
query37	0.18	0.15	0.16
query38	0.16	0.14	0.14
query39	0.05	0.03	0.03
query40	0.17	0.14	0.15
query41	0.09	0.05	0.05
query42	0.06	0.04	0.06
query43	0.05	0.04	0.04
Total cold run time: 109.6 s
Total hot run time: 30.04 s
@yiguolei yiguolei added the usercase Important user case type label label May 31, 2024
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 31, 2024
Copy link
Contributor

PR approved by anyone and no changes requested.

@yiguolei yiguolei merged commit e008bcf into apache:master May 31, 2024
28 of 31 checks passed
yiguolei pushed a commit that referenced this pull request May 31, 2024
… old planner (#35731)

## Proposed changes

Issue Number: close #xxx

BE coredump when enable decimal256 but fallback to old planner.
When enable_decimal256 =true and falls back to the old optimizer, the
sum result type become decimal128, but BE receives
enable_decimal256=true, thinking that the sum result type is still
decimal256.

```
20240530 18:01:40.713162 72530 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >
*** Check failure stack trace: ***
    @     0x564c51b56e86  google::LogMessage::SendToLog()
    @     0x564c51b538d0  google::LogMessage::Flush()
    @     0x564c51b576c9  google::LogMessageFatal::~LogMessageFatal()
    @     0x564c266f6880  assert_cast<>()
    @     0x564c3361ebe8  doris::vectorized::AggregateFunctionSum<>::insert_result_into()
    @     0x564c33633cee  doris::vectorized::AggregateFunctionNullBaseInline<>::insert_result_into()
    @     0x564c33633f48  doris::vectorized::IAggregateFunctionHelper<>::insert_result_into_vec()
F20240530 18:01:40.986271 72538 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >

*** Query id: 6ba2b0c5b10249d4-a36d87744741db1d ***
*** is nereids: 0 ***
*** tablet id: 0 ***
*** Aborted at 1717063302 (unix time) try "date -d @1717063302" if you are using GNU date ***
*** Current BE git commitID: b130df2 ***
*** SIGABRT unknown detail explain (@0x10fd5) received by PID 69589 (TID 72530 OR 0x7f61a04bb700) from PID 69589; stack trace: ***
    @     0x564c3bafab38  std::_Function_handler<>::_M_invoke()
    @     0x564c2489325f  std::function<>::operator()()
    @     0x564c3b82da6d  doris::vectorized::AggregationNode::pull()
    @     0x564c3b82d6cc  doris::vectorized::AggregationNode::get_next()
    @     0x564c2487329d  std::__invoke_impl<>()
    @     0x564c24872fb0  std::__invoke<>()
    @     0x564c24872ea7  _ZNSt5_BindIFMN5doris8ExecNodeEFNS0_6StatusEPNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS1_St12_PlaceholderILi1EESC_ILi2EESC_ILi3EEEE6__callIS2_JOS4_OS7_OS8_EJLm0ELm1ELm2ELm3EEEET_OSt5tupleIJDpT0_EESt12_Index_tupleIJXspT1_EEE
    @     0x564c24872c38  std::_Bind<>::operator()<>()
    @     0x564c24872ae8  std::__invoke_impl<>()
    @     0x564c24872a58  _ZSt10__invoke_rIN5doris6StatusERSt5_BindIFMNS0_8ExecNodeEFS1_PNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS3_St12_PlaceholderILi1EESD_ILi2EESD_ILi3EEEEJS5_S8_S9_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESL_E4typeEOSM_DpOSN_
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk2/tengjianping/doris-38/be/src/common/signal_handler.h:421
 1# 0x00007F6C0F5AD400 in /lib64/libc.so.6
 2# gsignal in /lib64/libc.so.6
 3# abort in /lib64/libc.so.6
 4# 0x0000564C51B616FD in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 5# 0x0000564C51B53D9A in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 6# google::LogMessage::SendToLog() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 7# google::LogMessage::Flush() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 8# google::LogMessageFatal::~LogMessageFatal() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 9# doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >& assert_cast<doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >&, doris::vectorized::IColumn&>(doris::vectorized::IColumn&) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
10# doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_sum.h:124
11# doris::vectorized::AggregateFunctionNullBaseInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true, doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_null.h:171
12# doris::vectorized::IAggregateFunctionHelper<doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn&, unsigned long) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function.h:315
13# doris::vectorized::AggFnEvaluator::insert_result_info_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn*, unsigned long) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exprs/vectorized_agg_fn.cpp:273
14# void doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0::operator()<doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1296
15# void std::__invoke_impl<void, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(std::__invoke_other, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0&&, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61

20# doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1264
21# doris::vectorized::AggregationNode::_get_with_serialized_key_result(doris::RuntimeState*, doris::vectorized::Block*, bool*) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
22# doris::Status std::__invoke_impl<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_memfun_deref, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
23# std::enable_if<is_invocable_r_v<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
24# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::__call<doris::Status, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&, 0ul, 1ul, 2ul, 3ul>(std::tuple<doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:570
25# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()<doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:629
26# doris::Status std::__invoke_impl<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_other, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
27# std::enable_if<is_invocable_r_v<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
28# std::_Function_handler<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*), std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)> >::_M_invoke(std::_Any_data const&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
29# std::function<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()(doris::RuntimeState*, doris::vectorized::Block*, bool*) const at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
30# doris::vectorized::AggregationNode::pull(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:494
31# doris::vectorized::AggregationNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:487
```
@yiguolei yiguolei mentioned this pull request Jun 1, 2024
dataroaring pushed a commit that referenced this pull request Jun 4, 2024
… old planner (#35731)

## Proposed changes

Issue Number: close #xxx

BE coredump when enable decimal256 but fallback to old planner.
When enable_decimal256 =true and falls back to the old optimizer, the
sum result type become decimal128, but BE receives
enable_decimal256=true, thinking that the sum result type is still
decimal256.

```
20240530 18:01:40.713162 72530 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >
*** Check failure stack trace: ***
    @     0x564c51b56e86  google::LogMessage::SendToLog()
    @     0x564c51b538d0  google::LogMessage::Flush()
    @     0x564c51b576c9  google::LogMessageFatal::~LogMessageFatal()
    @     0x564c266f6880  assert_cast<>()
    @     0x564c3361ebe8  doris::vectorized::AggregateFunctionSum<>::insert_result_into()
    @     0x564c33633cee  doris::vectorized::AggregateFunctionNullBaseInline<>::insert_result_into()
    @     0x564c33633f48  doris::vectorized::IAggregateFunctionHelper<>::insert_result_into_vec()
F20240530 18:01:40.986271 72538 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >

*** Query id: 6ba2b0c5b10249d4-a36d87744741db1d ***
*** is nereids: 0 ***
*** tablet id: 0 ***
*** Aborted at 1717063302 (unix time) try "date -d @1717063302" if you are using GNU date ***
*** Current BE git commitID: b130df2 ***
*** SIGABRT unknown detail explain (@0x10fd5) received by PID 69589 (TID 72530 OR 0x7f61a04bb700) from PID 69589; stack trace: ***
    @     0x564c3bafab38  std::_Function_handler<>::_M_invoke()
    @     0x564c2489325f  std::function<>::operator()()
    @     0x564c3b82da6d  doris::vectorized::AggregationNode::pull()
    @     0x564c3b82d6cc  doris::vectorized::AggregationNode::get_next()
    @     0x564c2487329d  std::__invoke_impl<>()
    @     0x564c24872fb0  std::__invoke<>()
    @     0x564c24872ea7  _ZNSt5_BindIFMN5doris8ExecNodeEFNS0_6StatusEPNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS1_St12_PlaceholderILi1EESC_ILi2EESC_ILi3EEEE6__callIS2_JOS4_OS7_OS8_EJLm0ELm1ELm2ELm3EEEET_OSt5tupleIJDpT0_EESt12_Index_tupleIJXspT1_EEE
    @     0x564c24872c38  std::_Bind<>::operator()<>()
    @     0x564c24872ae8  std::__invoke_impl<>()
    @     0x564c24872a58  _ZSt10__invoke_rIN5doris6StatusERSt5_BindIFMNS0_8ExecNodeEFS1_PNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS3_St12_PlaceholderILi1EESD_ILi2EESD_ILi3EEEEJS5_S8_S9_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESL_E4typeEOSM_DpOSN_
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk2/tengjianping/doris-38/be/src/common/signal_handler.h:421
 1# 0x00007F6C0F5AD400 in /lib64/libc.so.6
 2# gsignal in /lib64/libc.so.6
 3# abort in /lib64/libc.so.6
 4# 0x0000564C51B616FD in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 5# 0x0000564C51B53D9A in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 6# google::LogMessage::SendToLog() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 7# google::LogMessage::Flush() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 8# google::LogMessageFatal::~LogMessageFatal() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 9# doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >& assert_cast<doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >&, doris::vectorized::IColumn&>(doris::vectorized::IColumn&) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
10# doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_sum.h:124
11# doris::vectorized::AggregateFunctionNullBaseInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true, doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_null.h:171
12# doris::vectorized::IAggregateFunctionHelper<doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn&, unsigned long) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function.h:315
13# doris::vectorized::AggFnEvaluator::insert_result_info_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn*, unsigned long) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exprs/vectorized_agg_fn.cpp:273
14# void doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0::operator()<doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1296
15# void std::__invoke_impl<void, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(std::__invoke_other, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0&&, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61

20# doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1264
21# doris::vectorized::AggregationNode::_get_with_serialized_key_result(doris::RuntimeState*, doris::vectorized::Block*, bool*) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
22# doris::Status std::__invoke_impl<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_memfun_deref, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
23# std::enable_if<is_invocable_r_v<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
24# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::__call<doris::Status, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&, 0ul, 1ul, 2ul, 3ul>(std::tuple<doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:570
25# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()<doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:629
26# doris::Status std::__invoke_impl<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_other, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
27# std::enable_if<is_invocable_r_v<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
28# std::_Function_handler<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*), std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)> >::_M_invoke(std::_Any_data const&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
29# std::function<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()(doris::RuntimeState*, doris::vectorized::Block*, bool*) const at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
30# doris::vectorized::AggregationNode::pull(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:494
31# doris::vectorized::AggregationNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:487
```
seawinde pushed a commit to seawinde/doris that referenced this pull request Jun 5, 2024
… old planner (apache#35731)

## Proposed changes

Issue Number: close #xxx

BE coredump when enable decimal256 but fallback to old planner.
When enable_decimal256 =true and falls back to the old optimizer, the
sum result type become decimal128, but BE receives
enable_decimal256=true, thinking that the sum result type is still
decimal256.

```
20240530 18:01:40.713162 72530 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >
*** Check failure stack trace: ***
    @     0x564c51b56e86  google::LogMessage::SendToLog()
    @     0x564c51b538d0  google::LogMessage::Flush()
    @     0x564c51b576c9  google::LogMessageFatal::~LogMessageFatal()
    @     0x564c266f6880  assert_cast<>()
    @     0x564c3361ebe8  doris::vectorized::AggregateFunctionSum<>::insert_result_into()
    @     0x564c33633cee  doris::vectorized::AggregateFunctionNullBaseInline<>::insert_result_into()
    @     0x564c33633f48  doris::vectorized::IAggregateFunctionHelper<>::insert_result_into_vec()
F20240530 18:01:40.986271 72538 assert_cast.h:57] Bad cast from type:doris::vectorized::ColumnDecimal<doris::vectorized::Decimal128V3> to doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >

*** Query id: 6ba2b0c5b10249d4-a36d87744741db1d ***
*** is nereids: 0 ***
*** tablet id: 0 ***
*** Aborted at 1717063302 (unix time) try "date -d @1717063302" if you are using GNU date ***
*** Current BE git commitID: b130df2 ***
*** SIGABRT unknown detail explain (@0x10fd5) received by PID 69589 (TID 72530 OR 0x7f61a04bb700) from PID 69589; stack trace: ***
    @     0x564c3bafab38  std::_Function_handler<>::_M_invoke()
    @     0x564c2489325f  std::function<>::operator()()
    @     0x564c3b82da6d  doris::vectorized::AggregationNode::pull()
    @     0x564c3b82d6cc  doris::vectorized::AggregationNode::get_next()
    @     0x564c2487329d  std::__invoke_impl<>()
    @     0x564c24872fb0  std::__invoke<>()
    @     0x564c24872ea7  _ZNSt5_BindIFMN5doris8ExecNodeEFNS0_6StatusEPNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS1_St12_PlaceholderILi1EESC_ILi2EESC_ILi3EEEE6__callIS2_JOS4_OS7_OS8_EJLm0ELm1ELm2ELm3EEEET_OSt5tupleIJDpT0_EESt12_Index_tupleIJXspT1_EEE
    @     0x564c24872c38  std::_Bind<>::operator()<>()
    @     0x564c24872ae8  std::__invoke_impl<>()
    @     0x564c24872a58  _ZSt10__invoke_rIN5doris6StatusERSt5_BindIFMNS0_8ExecNodeEFS1_PNS0_12RuntimeStateEPNS0_10vectorized5BlockEPbEPS3_St12_PlaceholderILi1EESD_ILi2EESD_ILi3EEEEJS5_S8_S9_EENSt9enable_ifIX16is_invocable_r_vIT_T0_DpT1_EESL_E4typeEOSM_DpOSN_
 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /mnt/disk2/tengjianping/doris-38/be/src/common/signal_handler.h:421
 1# 0x00007F6C0F5AD400 in /lib64/libc.so.6
 2# gsignal in /lib64/libc.so.6
 3# abort in /lib64/libc.so.6
 4# 0x0000564C51B616FD in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 5# 0x0000564C51B53D9A in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 6# google::LogMessage::SendToLog() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 7# google::LogMessage::Flush() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 8# google::LogMessageFatal::~LogMessageFatal() in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
 9# doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >& assert_cast<doris::vectorized::ColumnDecimal<doris::vectorized::Decimal<wide::integer<256ul, int> > >&, doris::vectorized::IColumn&>(doris::vectorized::IColumn&) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
10# doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_sum.h:124
11# doris::vectorized::AggregateFunctionNullBaseInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true, doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into(char const*, doris::vectorized::IColumn&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function_null.h:171
12# doris::vectorized::IAggregateFunctionHelper<doris::vectorized::AggregateFunctionNullUnaryInline<doris::vectorized::AggregateFunctionSum<doris::vectorized::Decimal128V3, doris::vectorized::Decimal<wide::integer<256ul, int> >, doris::vectorized::AggregateFunctionSumData<doris::vectorized::Decimal<wide::integer<256ul, int> > > >, true> >::insert_result_into_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn&, unsigned long) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/aggregate_functions/aggregate_function.h:315
13# doris::vectorized::AggFnEvaluator::insert_result_info_vec(std::vector<char*, std::allocator<char*> > const&, unsigned long, doris::vectorized::IColumn*, unsigned long) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exprs/vectorized_agg_fn.cpp:273
14# void doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0::operator()<doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) const at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1296
15# void std::__invoke_impl<void, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&>(std::__invoke_other, doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*)::$_0&&, doris::vectorized::MethodSingleNullableColumn<doris::vectorized::MethodStringNoCache<doris::vectorized::DataWithNullKey<doris::StringHashMap<char*, Allocator<true, true, false> > > > >&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61

20# doris::vectorized::AggregationNode::_get_result_with_serialized_key_non_spill(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:1264
21# doris::vectorized::AggregationNode::_get_with_serialized_key_result(doris::RuntimeState*, doris::vectorized::Block*, bool*) in /usr/local/doris/apache-doris-be-1.2.0-bin-x86_64/lib/doris_be
22# doris::Status std::__invoke_impl<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_memfun_deref, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:74
23# std::enable_if<is_invocable_r_v<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::Status (doris::vectorized::AggregationNode::*&)(doris::RuntimeState*, doris::vectorized::Block*, bool*), doris::vectorized::AggregationNode*&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
24# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::__call<doris::Status, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&, 0ul, 1ul, 2ul, 3ul>(std::tuple<doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:570
25# doris::Status std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()<doris::RuntimeState*, doris::vectorized::Block*, bool*>(doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/functional:629
26# doris::Status std::__invoke_impl<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::__invoke_other, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
27# std::enable_if<is_invocable_r_v<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>, doris::Status>::type std::__invoke_r<doris::Status, std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*, doris::vectorized::Block*, bool*>(std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:114
28# std::_Function_handler<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*), std::_Bind_result<doris::Status, doris::Status (doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)> >::_M_invoke(std::_Any_data const&, doris::RuntimeState*&&, doris::vectorized::Block*&&, bool*&&) at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:291
29# std::function<doris::Status (doris::RuntimeState*, doris::vectorized::Block*, bool*)>::operator()(doris::RuntimeState*, doris::vectorized::Block*, bool*) const at /mnt/disk2/tengjianping/local/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/std_function.h:560
30# doris::vectorized::AggregationNode::pull(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:494
31# doris::vectorized::AggregationNode::get_next(doris::RuntimeState*, doris::vectorized::Block*, bool*) at /mnt/disk2/tengjianping/doris-38/be/src/vec/exec/vaggregation_node.cpp:487
```
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 reviewed usercase Important user case type label
5 participants