be/src/exprs/function/cast/function_cast.cpp
Line | Count | Source |
1 | | // Licensed to the Apache Software Foundation (ASF) under one |
2 | | // or more contributor license agreements. See the NOTICE file |
3 | | // distributed with this work for additional information |
4 | | // regarding copyright ownership. The ASF licenses this file |
5 | | // to you under the Apache License, Version 2.0 (the |
6 | | // "License"); you may not use this file except in compliance |
7 | | // with the License. You may obtain a copy of the License at |
8 | | // |
9 | | // http://www.apache.org/licenses/LICENSE-2.0 |
10 | | // |
11 | | // Unless required by applicable law or agreed to in writing, |
12 | | // software distributed under the License is distributed on an |
13 | | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
14 | | // KIND, either express or implied. See the License for the |
15 | | // specific language governing permissions and limitations |
16 | | // under the License. |
17 | | |
18 | | #include <utility> |
19 | | |
20 | | #include "core/data_type/data_type_agg_state.h" |
21 | | #include "core/data_type/data_type_decimal.h" |
22 | | #include "core/data_type/data_type_number.h" // IWYU pragma: keep |
23 | | #include "core/data_type/data_type_quantilestate.h" |
24 | | #include "core/data_type/primitive_type.h" |
25 | | #include "exprs/function/cast/cast_to_array.h" |
26 | | #include "exprs/function/cast/cast_to_jsonb.h" |
27 | | #include "exprs/function/cast/cast_to_map.h" |
28 | | #include "exprs/function/cast/cast_to_struct.h" |
29 | | #include "exprs/function/cast/cast_to_variant.h" |
30 | | #include "exprs/function/cast/cast_wrapper_decls.h" |
31 | | #include "exprs/function/simple_function_factory.h" |
32 | | |
33 | | namespace doris { |
34 | | |
35 | | namespace CastWrapper { |
36 | | |
37 | | WrapperType create_hll_wrapper(FunctionContext* context, const DataTypePtr& from_type_untyped, |
38 | 6 | const DataTypeHLL& to_type) { |
39 | | /// Conversion from String through parsing. |
40 | 6 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
41 | 6 | return cast_from_string_to_generic; |
42 | 6 | } |
43 | | |
44 | 0 | return CastWrapper::create_unsupport_wrapper("Cast to HLL only support from String type"); |
45 | 6 | } |
46 | | |
47 | | WrapperType create_bitmap_wrapper(FunctionContext* context, const DataTypePtr& from_type_untyped, |
48 | 5 | const DataTypeBitMap& to_type) { |
49 | | /// Conversion from String through parsing. |
50 | 5 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
51 | 5 | return cast_from_string_to_generic; |
52 | 5 | } |
53 | | |
54 | 0 | return CastWrapper::create_unsupport_wrapper("Cast to BitMap only support from String type"); |
55 | 5 | } |
56 | | |
57 | | WrapperType create_quantile_state_wrapper(FunctionContext* context, |
58 | | const DataTypePtr& from_type_untyped, |
59 | 2 | const DataTypeQuantileState& to_type) { |
60 | | /// Conversion from String through parsing. |
61 | 2 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
62 | 2 | return cast_from_string_to_generic; |
63 | 2 | } |
64 | | |
65 | 0 | return CastWrapper::create_unsupport_wrapper( |
66 | 0 | "Cast to QuantileState only support from String type"); |
67 | 2 | } |
68 | | |
69 | 2 | WrapperType create_varbinary_wrapper(const DataTypePtr& from_type_untyped) { |
70 | | /// Conversion from String through parsing. |
71 | 2 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
72 | 2 | return cast_from_string_to_generic; |
73 | 2 | } |
74 | | |
75 | 0 | return CastWrapper::create_unsupport_wrapper("Cast to Varbinary only support from String type"); |
76 | 2 | } |
77 | | |
78 | | WrapperType prepare_unpack_dictionaries(FunctionContext* context, const DataTypePtr& from_type, |
79 | 499k | const DataTypePtr& to_type) { |
80 | 499k | const auto& from_nested = from_type; |
81 | 499k | const auto& to_nested = to_type; |
82 | | |
83 | 499k | if (from_type->is_null_literal()) { |
84 | 2.14k | if (!to_nested->is_nullable()) { |
85 | 0 | return CastWrapper::create_unsupport_wrapper( |
86 | 0 | "Cannot convert NULL to a non-nullable type"); |
87 | 0 | } |
88 | | |
89 | 2.14k | return [](FunctionContext* context, Block& block, const ColumnNumbers&, uint32_t result, |
90 | 2.14k | size_t input_rows_count, const NullMap::value_type* null_map = nullptr) { |
91 | | /// TODO: remove this in the future. |
92 | 2.14k | auto& res = block.get_by_position(result); |
93 | 2.14k | res.column = res.type->create_column_const_with_default_value(input_rows_count) |
94 | 2.14k | ->convert_to_full_column_if_const(); |
95 | 2.14k | return Status::OK(); |
96 | 2.14k | }; |
97 | 2.14k | } |
98 | | |
99 | 497k | auto wrapper = prepare_remove_nullable(context, from_nested, to_nested); |
100 | | |
101 | 497k | return wrapper; |
102 | 499k | } |
103 | | |
104 | | bool need_replace_null_data_to_default(FunctionContext* context, const DataTypePtr& from_type, |
105 | 468k | const DataTypePtr& to_type) { |
106 | 468k | if (from_type->equals(*to_type)) { |
107 | 69.5k | return false; |
108 | 69.5k | } |
109 | | |
110 | 398k | auto make_default_wrapper = [&](const auto& types) -> bool { |
111 | 268k | using Types = std::decay_t<decltype(types)>; |
112 | 268k | using ToDataType = typename Types::LeftType; |
113 | | |
114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || |
115 | | IsDatelikeV2Types<ToDataType> || |
116 | 34.3k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { |
117 | 34.3k | return false; |
118 | 34.3k | } |
119 | 0 | return call_on_index_and_data_type< |
120 | 268k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { |
121 | 212k | using Types2 = std::decay_t<decltype(types2)>; |
122 | 212k | using FromDataType = typename Types2::LeftType; |
123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || |
124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || |
125 | 96.5k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { |
126 | 96.5k | return false; |
127 | 96.5k | } |
128 | 73.7k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { |
129 | 73.7k | using FromFieldType = typename FromDataType::FieldType; |
130 | 73.7k | using ToFieldType = typename ToDataType::FieldType; |
131 | 73.7k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); |
132 | 73.7k | UInt32 from_scale = 0; |
133 | | |
134 | 73.7k | if constexpr (IsDataTypeDecimal<FromDataType>) { |
135 | 34.7k | const auto* from_decimal_type = |
136 | 34.7k | check_and_get_data_type<FromDataType>(from_type.get()); |
137 | 34.7k | from_precision = |
138 | 34.7k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); |
139 | 34.7k | from_scale = from_decimal_type->get_scale(); |
140 | 34.7k | } |
141 | | |
142 | 73.7k | UInt32 to_max_digits = 0; |
143 | 73.7k | UInt32 to_precision = 0; |
144 | 73.7k | UInt32 to_scale = 0; |
145 | | |
146 | 73.7k | if constexpr (IsDataTypeDecimal<ToDataType>) { |
147 | 67.0k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); |
148 | | |
149 | 67.0k | const auto* to_decimal_type = |
150 | 67.0k | check_and_get_data_type<ToDataType>(to_type.get()); |
151 | 67.0k | to_precision = to_decimal_type->get_precision(); |
152 | 67.0k | ToDataType::check_type_precision(to_precision); |
153 | | |
154 | 67.0k | to_scale = to_decimal_type->get_scale(); |
155 | 67.0k | ToDataType::check_type_scale(to_scale); |
156 | 67.0k | } |
157 | 73.7k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { |
158 | 6.61k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); |
159 | 6.61k | to_precision = to_max_digits; |
160 | 6.61k | } |
161 | | |
162 | 73.7k | bool narrow_integral = context->check_overflow_for_decimal() && |
163 | 73.7k | (to_precision - to_scale) <= (from_precision - from_scale); |
164 | | |
165 | 73.7k | bool multiply_may_overflow = context->check_overflow_for_decimal(); |
166 | 73.7k | if (to_scale > from_scale) { |
167 | 15.4k | multiply_may_overflow &= |
168 | 15.4k | (from_precision + to_scale - from_scale) >= to_max_digits; |
169 | 15.4k | } |
170 | 73.7k | return narrow_integral || multiply_may_overflow; |
171 | 73.7k | } |
172 | 0 | return false; |
173 | 212k | }); Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 18 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 18 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 18 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 18 | return false; | 173 | 18 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 14 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 14 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 14 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 14 | return false; | 173 | 14 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 34 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 34 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 34 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 34 | return false; | 173 | 34 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 99 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 99 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 99 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 99 | return false; | 173 | 99 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 9 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 9 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 9 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 9 | return false; | 173 | 9 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 4 | return false; | 173 | 4 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 9 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 9 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 9 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 9 | return false; | 173 | 9 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 12 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 12 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 12 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 12 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 12 | using FromFieldType = typename FromDataType::FieldType; | 130 | 12 | using ToFieldType = typename ToDataType::FieldType; | 131 | 12 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 12 | UInt32 from_scale = 0; | 133 | | | 134 | 12 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 12 | const auto* from_decimal_type = | 136 | 12 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 12 | from_precision = | 138 | 12 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 12 | from_scale = from_decimal_type->get_scale(); | 140 | 12 | } | 141 | | | 142 | 12 | UInt32 to_max_digits = 0; | 143 | 12 | UInt32 to_precision = 0; | 144 | 12 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 12 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 12 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 12 | to_precision = to_max_digits; | 160 | 12 | } | 161 | | | 162 | 12 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 12 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 12 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 12 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 12 | return narrow_integral || multiply_may_overflow; | 171 | 12 | } | 172 | 0 | return false; | 173 | 12 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 7 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 7 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 7 | using FromFieldType = typename FromDataType::FieldType; | 130 | 7 | using ToFieldType = typename ToDataType::FieldType; | 131 | 7 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 7 | UInt32 from_scale = 0; | 133 | | | 134 | 7 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 7 | const auto* from_decimal_type = | 136 | 7 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 7 | from_precision = | 138 | 7 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 7 | from_scale = from_decimal_type->get_scale(); | 140 | 7 | } | 141 | | | 142 | 7 | UInt32 to_max_digits = 0; | 143 | 7 | UInt32 to_precision = 0; | 144 | 7 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 7 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 7 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 7 | to_precision = to_max_digits; | 160 | 7 | } | 161 | | | 162 | 7 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 7 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 7 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 7 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 7 | return narrow_integral || multiply_may_overflow; | 171 | 7 | } | 172 | 0 | return false; | 173 | 7 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 4 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 4 | using FromFieldType = typename FromDataType::FieldType; | 130 | 4 | using ToFieldType = typename ToDataType::FieldType; | 131 | 4 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 4 | UInt32 from_scale = 0; | 133 | | | 134 | 4 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 4 | const auto* from_decimal_type = | 136 | 4 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 4 | from_precision = | 138 | 4 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 4 | from_scale = from_decimal_type->get_scale(); | 140 | 4 | } | 141 | | | 142 | 4 | UInt32 to_max_digits = 0; | 143 | 4 | UInt32 to_precision = 0; | 144 | 4 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 4 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 4 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 4 | to_precision = to_max_digits; | 160 | 4 | } | 161 | | | 162 | 4 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 4 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 4 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 4 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 4 | return narrow_integral || multiply_may_overflow; | 171 | 4 | } | 172 | 0 | return false; | 173 | 4 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 7 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 7 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 7 | using FromFieldType = typename FromDataType::FieldType; | 130 | 7 | using ToFieldType = typename ToDataType::FieldType; | 131 | 7 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 7 | UInt32 from_scale = 0; | 133 | | | 134 | 7 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 7 | const auto* from_decimal_type = | 136 | 7 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 7 | from_precision = | 138 | 7 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 7 | from_scale = from_decimal_type->get_scale(); | 140 | 7 | } | 141 | | | 142 | 7 | UInt32 to_max_digits = 0; | 143 | 7 | UInt32 to_precision = 0; | 144 | 7 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 7 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 7 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 7 | to_precision = to_max_digits; | 160 | 7 | } | 161 | | | 162 | 7 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 7 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 7 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 7 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 7 | return narrow_integral || multiply_may_overflow; | 171 | 7 | } | 172 | 0 | return false; | 173 | 7 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 4 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 4 | using FromFieldType = typename FromDataType::FieldType; | 130 | 4 | using ToFieldType = typename ToDataType::FieldType; | 131 | 4 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 4 | UInt32 from_scale = 0; | 133 | | | 134 | 4 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 4 | const auto* from_decimal_type = | 136 | 4 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 4 | from_precision = | 138 | 4 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 4 | from_scale = from_decimal_type->get_scale(); | 140 | 4 | } | 141 | | | 142 | 4 | UInt32 to_max_digits = 0; | 143 | 4 | UInt32 to_precision = 0; | 144 | 4 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 4 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 4 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 4 | to_precision = to_max_digits; | 160 | 4 | } | 161 | | | 162 | 4 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 4 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 4 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 4 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 4 | return narrow_integral || multiply_may_overflow; | 171 | 4 | } | 172 | 0 | return false; | 173 | 4 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 774 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 774 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 774 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 774 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 774 | return false; | 127 | 774 | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 774 | return false; | 173 | 774 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 858 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 858 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 858 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 858 | return false; | 173 | 858 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 17 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 17 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 17 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 17 | return false; | 173 | 17 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 150 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 150 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 150 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 150 | return false; | 173 | 150 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 245 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 245 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 245 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 245 | return false; | 173 | 245 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 14 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 14 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 14 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 14 | return false; | 173 | 14 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 46 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 46 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 46 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 46 | return false; | 173 | 46 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 57 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 57 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 57 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 57 | return false; | 173 | 57 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 33 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 33 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 33 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 33 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 33 | using FromFieldType = typename FromDataType::FieldType; | 130 | 33 | using ToFieldType = typename ToDataType::FieldType; | 131 | 33 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 33 | UInt32 from_scale = 0; | 133 | | | 134 | 33 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 33 | const auto* from_decimal_type = | 136 | 33 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 33 | from_precision = | 138 | 33 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 33 | from_scale = from_decimal_type->get_scale(); | 140 | 33 | } | 141 | | | 142 | 33 | UInt32 to_max_digits = 0; | 143 | 33 | UInt32 to_precision = 0; | 144 | 33 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 33 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 33 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 33 | to_precision = to_max_digits; | 160 | 33 | } | 161 | | | 162 | 33 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 33 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 33 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 33 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 33 | return narrow_integral || multiply_may_overflow; | 171 | 33 | } | 172 | 0 | return false; | 173 | 33 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 42 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 42 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 42 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 42 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 42 | using FromFieldType = typename FromDataType::FieldType; | 130 | 42 | using ToFieldType = typename ToDataType::FieldType; | 131 | 42 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 42 | UInt32 from_scale = 0; | 133 | | | 134 | 42 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 42 | const auto* from_decimal_type = | 136 | 42 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 42 | from_precision = | 138 | 42 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 42 | from_scale = from_decimal_type->get_scale(); | 140 | 42 | } | 141 | | | 142 | 42 | UInt32 to_max_digits = 0; | 143 | 42 | UInt32 to_precision = 0; | 144 | 42 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 42 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 42 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 42 | to_precision = to_max_digits; | 160 | 42 | } | 161 | | | 162 | 42 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 42 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 42 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 42 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 42 | return narrow_integral || multiply_may_overflow; | 171 | 42 | } | 172 | 0 | return false; | 173 | 42 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 16 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 16 | using FromFieldType = typename FromDataType::FieldType; | 130 | 16 | using ToFieldType = typename ToDataType::FieldType; | 131 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 16 | UInt32 from_scale = 0; | 133 | | | 134 | 16 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 16 | const auto* from_decimal_type = | 136 | 16 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 16 | from_precision = | 138 | 16 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 16 | from_scale = from_decimal_type->get_scale(); | 140 | 16 | } | 141 | | | 142 | 16 | UInt32 to_max_digits = 0; | 143 | 16 | UInt32 to_precision = 0; | 144 | 16 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 16 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 16 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 16 | to_precision = to_max_digits; | 160 | 16 | } | 161 | | | 162 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 16 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 16 | return narrow_integral || multiply_may_overflow; | 171 | 16 | } | 172 | 0 | return false; | 173 | 16 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 42 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 42 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 42 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 42 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 42 | using FromFieldType = typename FromDataType::FieldType; | 130 | 42 | using ToFieldType = typename ToDataType::FieldType; | 131 | 42 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 42 | UInt32 from_scale = 0; | 133 | | | 134 | 42 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 42 | const auto* from_decimal_type = | 136 | 42 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 42 | from_precision = | 138 | 42 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 42 | from_scale = from_decimal_type->get_scale(); | 140 | 42 | } | 141 | | | 142 | 42 | UInt32 to_max_digits = 0; | 143 | 42 | UInt32 to_precision = 0; | 144 | 42 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 42 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 42 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 42 | to_precision = to_max_digits; | 160 | 42 | } | 161 | | | 162 | 42 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 42 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 42 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 42 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 42 | return narrow_integral || multiply_may_overflow; | 171 | 42 | } | 172 | 0 | return false; | 173 | 42 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 42 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 42 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 42 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 42 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 42 | using FromFieldType = typename FromDataType::FieldType; | 130 | 42 | using ToFieldType = typename ToDataType::FieldType; | 131 | 42 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 42 | UInt32 from_scale = 0; | 133 | | | 134 | 42 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 42 | const auto* from_decimal_type = | 136 | 42 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 42 | from_precision = | 138 | 42 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 42 | from_scale = from_decimal_type->get_scale(); | 140 | 42 | } | 141 | | | 142 | 42 | UInt32 to_max_digits = 0; | 143 | 42 | UInt32 to_precision = 0; | 144 | 42 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 42 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 42 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 42 | to_precision = to_max_digits; | 160 | 42 | } | 161 | | | 162 | 42 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 42 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 42 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 42 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 42 | return narrow_integral || multiply_may_overflow; | 171 | 42 | } | 172 | 0 | return false; | 173 | 42 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 144 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 144 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 144 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 144 | return false; | 173 | 144 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 48 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 48 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 48 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 48 | return false; | 173 | 48 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 640 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 640 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 640 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 640 | return false; | 173 | 640 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 3.96k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3.96k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3.96k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 3.96k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 3.96k | return false; | 127 | 3.96k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 3.96k | return false; | 173 | 3.96k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 178 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 178 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 178 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 178 | return false; | 173 | 178 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.55k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.55k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.55k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.55k | return false; | 173 | 1.55k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 155 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 155 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 155 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 155 | return false; | 173 | 155 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 107 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 107 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 107 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 107 | return false; | 173 | 107 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 27 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 27 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 27 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 27 | return false; | 173 | 27 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 42 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 42 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 42 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 42 | return false; | 173 | 42 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 50 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 50 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 50 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 50 | return false; | 173 | 50 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 36 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 36 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 36 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 36 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 36 | using FromFieldType = typename FromDataType::FieldType; | 130 | 36 | using ToFieldType = typename ToDataType::FieldType; | 131 | 36 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 36 | UInt32 from_scale = 0; | 133 | | | 134 | 36 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 36 | const auto* from_decimal_type = | 136 | 36 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 36 | from_precision = | 138 | 36 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 36 | from_scale = from_decimal_type->get_scale(); | 140 | 36 | } | 141 | | | 142 | 36 | UInt32 to_max_digits = 0; | 143 | 36 | UInt32 to_precision = 0; | 144 | 36 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 36 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 36 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 36 | to_precision = to_max_digits; | 160 | 36 | } | 161 | | | 162 | 36 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 36 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 36 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 36 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 36 | return narrow_integral || multiply_may_overflow; | 171 | 36 | } | 172 | 0 | return false; | 173 | 36 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 42 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 42 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 42 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 42 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 42 | using FromFieldType = typename FromDataType::FieldType; | 130 | 42 | using ToFieldType = typename ToDataType::FieldType; | 131 | 42 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 42 | UInt32 from_scale = 0; | 133 | | | 134 | 42 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 42 | const auto* from_decimal_type = | 136 | 42 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 42 | from_precision = | 138 | 42 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 42 | from_scale = from_decimal_type->get_scale(); | 140 | 42 | } | 141 | | | 142 | 42 | UInt32 to_max_digits = 0; | 143 | 42 | UInt32 to_precision = 0; | 144 | 42 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 42 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 42 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 42 | to_precision = to_max_digits; | 160 | 42 | } | 161 | | | 162 | 42 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 42 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 42 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 42 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 42 | return narrow_integral || multiply_may_overflow; | 171 | 42 | } | 172 | 0 | return false; | 173 | 42 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 16 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 16 | using FromFieldType = typename FromDataType::FieldType; | 130 | 16 | using ToFieldType = typename ToDataType::FieldType; | 131 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 16 | UInt32 from_scale = 0; | 133 | | | 134 | 16 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 16 | const auto* from_decimal_type = | 136 | 16 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 16 | from_precision = | 138 | 16 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 16 | from_scale = from_decimal_type->get_scale(); | 140 | 16 | } | 141 | | | 142 | 16 | UInt32 to_max_digits = 0; | 143 | 16 | UInt32 to_precision = 0; | 144 | 16 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 16 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 16 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 16 | to_precision = to_max_digits; | 160 | 16 | } | 161 | | | 162 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 16 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 16 | return narrow_integral || multiply_may_overflow; | 171 | 16 | } | 172 | 0 | return false; | 173 | 16 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 43 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 43 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 43 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 43 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 43 | using FromFieldType = typename FromDataType::FieldType; | 130 | 43 | using ToFieldType = typename ToDataType::FieldType; | 131 | 43 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 43 | UInt32 from_scale = 0; | 133 | | | 134 | 43 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 43 | const auto* from_decimal_type = | 136 | 43 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 43 | from_precision = | 138 | 43 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 43 | from_scale = from_decimal_type->get_scale(); | 140 | 43 | } | 141 | | | 142 | 43 | UInt32 to_max_digits = 0; | 143 | 43 | UInt32 to_precision = 0; | 144 | 43 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 43 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 43 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 43 | to_precision = to_max_digits; | 160 | 43 | } | 161 | | | 162 | 43 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 43 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 43 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 43 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 43 | return narrow_integral || multiply_may_overflow; | 171 | 43 | } | 172 | 0 | return false; | 173 | 43 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 43 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 43 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 43 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 43 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 43 | using FromFieldType = typename FromDataType::FieldType; | 130 | 43 | using ToFieldType = typename ToDataType::FieldType; | 131 | 43 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 43 | UInt32 from_scale = 0; | 133 | | | 134 | 43 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 43 | const auto* from_decimal_type = | 136 | 43 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 43 | from_precision = | 138 | 43 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 43 | from_scale = from_decimal_type->get_scale(); | 140 | 43 | } | 141 | | | 142 | 43 | UInt32 to_max_digits = 0; | 143 | 43 | UInt32 to_precision = 0; | 144 | 43 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 43 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 43 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 43 | to_precision = to_max_digits; | 160 | 43 | } | 161 | | | 162 | 43 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 43 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 43 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 43 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 43 | return narrow_integral || multiply_may_overflow; | 171 | 43 | } | 172 | 0 | return false; | 173 | 43 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 144 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 144 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 144 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 144 | return false; | 173 | 144 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 48 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 48 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 48 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 48 | return false; | 173 | 48 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 640 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 640 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 640 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 640 | return false; | 173 | 640 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 3.33k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3.33k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3.33k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 3.33k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 3.33k | return false; | 127 | 3.33k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 3.33k | return false; | 173 | 3.33k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 48 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 48 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 48 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 48 | return false; | 173 | 48 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 3.49k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3.49k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3.49k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 3.49k | return false; | 173 | 3.49k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 352 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 352 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 352 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 352 | return false; | 173 | 352 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.64k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.64k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.64k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.64k | return false; | 173 | 1.64k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 20 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 20 | return false; | 173 | 20 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 37 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 37 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 37 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 37 | return false; | 173 | 37 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 151 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 151 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 151 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 151 | return false; | 173 | 151 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 35 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 35 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 35 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 35 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 35 | using FromFieldType = typename FromDataType::FieldType; | 130 | 35 | using ToFieldType = typename ToDataType::FieldType; | 131 | 35 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 35 | UInt32 from_scale = 0; | 133 | | | 134 | 35 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 35 | const auto* from_decimal_type = | 136 | 35 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 35 | from_precision = | 138 | 35 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 35 | from_scale = from_decimal_type->get_scale(); | 140 | 35 | } | 141 | | | 142 | 35 | UInt32 to_max_digits = 0; | 143 | 35 | UInt32 to_precision = 0; | 144 | 35 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 35 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 35 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 35 | to_precision = to_max_digits; | 160 | 35 | } | 161 | | | 162 | 35 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 35 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 35 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 35 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 35 | return narrow_integral || multiply_may_overflow; | 171 | 35 | } | 172 | 0 | return false; | 173 | 35 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 55 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 55 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 55 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 55 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 55 | using FromFieldType = typename FromDataType::FieldType; | 130 | 55 | using ToFieldType = typename ToDataType::FieldType; | 131 | 55 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 55 | UInt32 from_scale = 0; | 133 | | | 134 | 55 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 55 | const auto* from_decimal_type = | 136 | 55 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 55 | from_precision = | 138 | 55 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 55 | from_scale = from_decimal_type->get_scale(); | 140 | 55 | } | 141 | | | 142 | 55 | UInt32 to_max_digits = 0; | 143 | 55 | UInt32 to_precision = 0; | 144 | 55 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 55 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 55 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 55 | to_precision = to_max_digits; | 160 | 55 | } | 161 | | | 162 | 55 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 55 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 55 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 55 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 55 | return narrow_integral || multiply_may_overflow; | 171 | 55 | } | 172 | 0 | return false; | 173 | 55 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 16 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 16 | using FromFieldType = typename FromDataType::FieldType; | 130 | 16 | using ToFieldType = typename ToDataType::FieldType; | 131 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 16 | UInt32 from_scale = 0; | 133 | | | 134 | 16 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 16 | const auto* from_decimal_type = | 136 | 16 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 16 | from_precision = | 138 | 16 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 16 | from_scale = from_decimal_type->get_scale(); | 140 | 16 | } | 141 | | | 142 | 16 | UInt32 to_max_digits = 0; | 143 | 16 | UInt32 to_precision = 0; | 144 | 16 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 16 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 16 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 16 | to_precision = to_max_digits; | 160 | 16 | } | 161 | | | 162 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 16 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 16 | return narrow_integral || multiply_may_overflow; | 171 | 16 | } | 172 | 0 | return false; | 173 | 16 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 267 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 267 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 267 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 267 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 267 | using FromFieldType = typename FromDataType::FieldType; | 130 | 267 | using ToFieldType = typename ToDataType::FieldType; | 131 | 267 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 267 | UInt32 from_scale = 0; | 133 | | | 134 | 267 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 267 | const auto* from_decimal_type = | 136 | 267 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 267 | from_precision = | 138 | 267 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 267 | from_scale = from_decimal_type->get_scale(); | 140 | 267 | } | 141 | | | 142 | 267 | UInt32 to_max_digits = 0; | 143 | 267 | UInt32 to_precision = 0; | 144 | 267 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 267 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 267 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 267 | to_precision = to_max_digits; | 160 | 267 | } | 161 | | | 162 | 267 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 267 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 267 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 267 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 267 | return narrow_integral || multiply_may_overflow; | 171 | 267 | } | 172 | 0 | return false; | 173 | 267 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 39 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 39 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 39 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 39 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 39 | using FromFieldType = typename FromDataType::FieldType; | 130 | 39 | using ToFieldType = typename ToDataType::FieldType; | 131 | 39 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 39 | UInt32 from_scale = 0; | 133 | | | 134 | 39 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 39 | const auto* from_decimal_type = | 136 | 39 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 39 | from_precision = | 138 | 39 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 39 | from_scale = from_decimal_type->get_scale(); | 140 | 39 | } | 141 | | | 142 | 39 | UInt32 to_max_digits = 0; | 143 | 39 | UInt32 to_precision = 0; | 144 | 39 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 39 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 39 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 39 | to_precision = to_max_digits; | 160 | 39 | } | 161 | | | 162 | 39 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 39 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 39 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 39 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 39 | return narrow_integral || multiply_may_overflow; | 171 | 39 | } | 172 | 0 | return false; | 173 | 39 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 14 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 14 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 14 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 14 | return false; | 173 | 14 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 48 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 48 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 48 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 48 | return false; | 173 | 48 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 552 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 552 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 552 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 552 | return false; | 173 | 552 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 18.8k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 18.8k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 18.8k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 18.8k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 18.8k | return false; | 127 | 18.8k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 18.8k | return false; | 173 | 18.8k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 661 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 661 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 661 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 661 | return false; | 173 | 661 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.27k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.27k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.27k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.27k | return false; | 173 | 1.27k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 580 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 580 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 580 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 580 | return false; | 173 | 580 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 8.12k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8.12k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8.12k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 8.12k | return false; | 173 | 8.12k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 322 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 322 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 322 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 322 | return false; | 173 | 322 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 653 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 653 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 653 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 653 | return false; | 173 | 653 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 2.35k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.35k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.35k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 2.35k | return false; | 173 | 2.35k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 327 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 327 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 327 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 327 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 327 | using FromFieldType = typename FromDataType::FieldType; | 130 | 327 | using ToFieldType = typename ToDataType::FieldType; | 131 | 327 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 327 | UInt32 from_scale = 0; | 133 | | | 134 | 327 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 327 | const auto* from_decimal_type = | 136 | 327 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 327 | from_precision = | 138 | 327 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 327 | from_scale = from_decimal_type->get_scale(); | 140 | 327 | } | 141 | | | 142 | 327 | UInt32 to_max_digits = 0; | 143 | 327 | UInt32 to_precision = 0; | 144 | 327 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 327 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 327 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 327 | to_precision = to_max_digits; | 160 | 327 | } | 161 | | | 162 | 327 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 327 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 327 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 327 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 327 | return narrow_integral || multiply_may_overflow; | 171 | 327 | } | 172 | 0 | return false; | 173 | 327 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 334 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 334 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 334 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 334 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 334 | using FromFieldType = typename FromDataType::FieldType; | 130 | 334 | using ToFieldType = typename ToDataType::FieldType; | 131 | 334 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 334 | UInt32 from_scale = 0; | 133 | | | 134 | 334 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 334 | const auto* from_decimal_type = | 136 | 334 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 334 | from_precision = | 138 | 334 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 334 | from_scale = from_decimal_type->get_scale(); | 140 | 334 | } | 141 | | | 142 | 334 | UInt32 to_max_digits = 0; | 143 | 334 | UInt32 to_precision = 0; | 144 | 334 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 334 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 334 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 334 | to_precision = to_max_digits; | 160 | 334 | } | 161 | | | 162 | 334 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 334 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 334 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 334 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 335 | return narrow_integral || multiply_may_overflow; | 171 | 334 | } | 172 | 0 | return false; | 173 | 334 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 312 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 312 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 312 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 312 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 312 | using FromFieldType = typename FromDataType::FieldType; | 130 | 312 | using ToFieldType = typename ToDataType::FieldType; | 131 | 312 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 312 | UInt32 from_scale = 0; | 133 | | | 134 | 312 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 312 | const auto* from_decimal_type = | 136 | 312 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 312 | from_precision = | 138 | 312 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 312 | from_scale = from_decimal_type->get_scale(); | 140 | 312 | } | 141 | | | 142 | 312 | UInt32 to_max_digits = 0; | 143 | 312 | UInt32 to_precision = 0; | 144 | 312 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 312 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 312 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 312 | to_precision = to_max_digits; | 160 | 312 | } | 161 | | | 162 | 312 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 312 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 312 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 312 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 312 | return narrow_integral || multiply_may_overflow; | 171 | 312 | } | 172 | 0 | return false; | 173 | 312 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 764 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 764 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 764 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 764 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 764 | using FromFieldType = typename FromDataType::FieldType; | 130 | 764 | using ToFieldType = typename ToDataType::FieldType; | 131 | 764 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 764 | UInt32 from_scale = 0; | 133 | | | 134 | 764 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 764 | const auto* from_decimal_type = | 136 | 764 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 764 | from_precision = | 138 | 764 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 764 | from_scale = from_decimal_type->get_scale(); | 140 | 764 | } | 141 | | | 142 | 764 | UInt32 to_max_digits = 0; | 143 | 764 | UInt32 to_precision = 0; | 144 | 764 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 764 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 764 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 764 | to_precision = to_max_digits; | 160 | 764 | } | 161 | | | 162 | 764 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 764 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 764 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 764 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 764 | return narrow_integral || multiply_may_overflow; | 171 | 764 | } | 172 | 0 | return false; | 173 | 764 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 39 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 39 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 39 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 39 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 39 | using FromFieldType = typename FromDataType::FieldType; | 130 | 39 | using ToFieldType = typename ToDataType::FieldType; | 131 | 39 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 39 | UInt32 from_scale = 0; | 133 | | | 134 | 39 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 39 | const auto* from_decimal_type = | 136 | 39 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 39 | from_precision = | 138 | 39 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 39 | from_scale = from_decimal_type->get_scale(); | 140 | 39 | } | 141 | | | 142 | 39 | UInt32 to_max_digits = 0; | 143 | 39 | UInt32 to_precision = 0; | 144 | 39 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 39 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 39 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 39 | to_precision = to_max_digits; | 160 | 39 | } | 161 | | | 162 | 39 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 39 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 39 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 39 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 39 | return narrow_integral || multiply_may_overflow; | 171 | 39 | } | 172 | 0 | return false; | 173 | 39 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 1.25k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.25k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.25k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.25k | return false; | 173 | 1.25k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 1.26k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.26k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.26k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.26k | return false; | 173 | 1.26k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 8 | return false; | 173 | 8 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 20.7k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 20.7k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 20.7k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 20.7k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 20.7k | return false; | 127 | 20.7k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 20.7k | return false; | 173 | 20.7k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 240 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 240 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 240 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 240 | return false; | 173 | 240 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 110 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 110 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 110 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 110 | return false; | 173 | 110 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 81 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 81 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 81 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 81 | return false; | 173 | 81 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 137 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 137 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 137 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 137 | return false; | 173 | 137 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 674 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 674 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 674 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 674 | return false; | 173 | 674 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 18 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 18 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 18 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 18 | return false; | 173 | 18 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 26 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 26 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 26 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 26 | return false; | 173 | 26 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 32 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 32 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 32 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 32 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 32 | using FromFieldType = typename FromDataType::FieldType; | 130 | 32 | using ToFieldType = typename ToDataType::FieldType; | 131 | 32 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 32 | UInt32 from_scale = 0; | 133 | | | 134 | 32 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 32 | const auto* from_decimal_type = | 136 | 32 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 32 | from_precision = | 138 | 32 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 32 | from_scale = from_decimal_type->get_scale(); | 140 | 32 | } | 141 | | | 142 | 32 | UInt32 to_max_digits = 0; | 143 | 32 | UInt32 to_precision = 0; | 144 | 32 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 32 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 32 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 32 | to_precision = to_max_digits; | 160 | 32 | } | 161 | | | 162 | 32 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 32 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 32 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 32 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 32 | return narrow_integral || multiply_may_overflow; | 171 | 32 | } | 172 | 0 | return false; | 173 | 32 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 39 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 39 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 39 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 39 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 39 | using FromFieldType = typename FromDataType::FieldType; | 130 | 39 | using ToFieldType = typename ToDataType::FieldType; | 131 | 39 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 39 | UInt32 from_scale = 0; | 133 | | | 134 | 39 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 39 | const auto* from_decimal_type = | 136 | 39 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 39 | from_precision = | 138 | 39 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 39 | from_scale = from_decimal_type->get_scale(); | 140 | 39 | } | 141 | | | 142 | 39 | UInt32 to_max_digits = 0; | 143 | 39 | UInt32 to_precision = 0; | 144 | 39 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 39 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 39 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 39 | to_precision = to_max_digits; | 160 | 39 | } | 161 | | | 162 | 39 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 39 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 39 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 39 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 39 | return narrow_integral || multiply_may_overflow; | 171 | 39 | } | 172 | 0 | return false; | 173 | 39 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 16 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 16 | using FromFieldType = typename FromDataType::FieldType; | 130 | 16 | using ToFieldType = typename ToDataType::FieldType; | 131 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 16 | UInt32 from_scale = 0; | 133 | | | 134 | 16 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 16 | const auto* from_decimal_type = | 136 | 16 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 16 | from_precision = | 138 | 16 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 16 | from_scale = from_decimal_type->get_scale(); | 140 | 16 | } | 141 | | | 142 | 16 | UInt32 to_max_digits = 0; | 143 | 16 | UInt32 to_precision = 0; | 144 | 16 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 16 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 16 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 16 | to_precision = to_max_digits; | 160 | 16 | } | 161 | | | 162 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 16 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 16 | return narrow_integral || multiply_may_overflow; | 171 | 16 | } | 172 | 0 | return false; | 173 | 16 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 39 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 39 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 39 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 39 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 39 | using FromFieldType = typename FromDataType::FieldType; | 130 | 39 | using ToFieldType = typename ToDataType::FieldType; | 131 | 39 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 39 | UInt32 from_scale = 0; | 133 | | | 134 | 39 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 39 | const auto* from_decimal_type = | 136 | 39 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 39 | from_precision = | 138 | 39 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 39 | from_scale = from_decimal_type->get_scale(); | 140 | 39 | } | 141 | | | 142 | 39 | UInt32 to_max_digits = 0; | 143 | 39 | UInt32 to_precision = 0; | 144 | 39 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 39 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 39 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 39 | to_precision = to_max_digits; | 160 | 39 | } | 161 | | | 162 | 39 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 39 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 39 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 39 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 39 | return narrow_integral || multiply_may_overflow; | 171 | 39 | } | 172 | 0 | return false; | 173 | 39 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 801 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 801 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 801 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 801 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 801 | using FromFieldType = typename FromDataType::FieldType; | 130 | 801 | using ToFieldType = typename ToDataType::FieldType; | 131 | 801 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 801 | UInt32 from_scale = 0; | 133 | | | 134 | 801 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 801 | const auto* from_decimal_type = | 136 | 801 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 801 | from_precision = | 138 | 801 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 801 | from_scale = from_decimal_type->get_scale(); | 140 | 801 | } | 141 | | | 142 | 801 | UInt32 to_max_digits = 0; | 143 | 801 | UInt32 to_precision = 0; | 144 | 801 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 801 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 801 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 801 | to_precision = to_max_digits; | 160 | 801 | } | 161 | | | 162 | 801 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 801 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 801 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 801 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 801 | return narrow_integral || multiply_may_overflow; | 171 | 801 | } | 172 | 0 | return false; | 173 | 801 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 4 | return false; | 173 | 4 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 24 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 24 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 24 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 24 | return false; | 173 | 24 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 8 | return false; | 173 | 8 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 3.13k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3.13k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3.13k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 3.13k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 3.13k | return false; | 127 | 3.13k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 3.13k | return false; | 173 | 3.13k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 4 | return false; | 173 | 4 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 21 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 21 | return false; | 173 | 21 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 8 | return false; | 173 | 8 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 20 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 20 | return false; | 173 | 20 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 8 | return false; | 173 | 8 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 117 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 117 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 117 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 117 | return false; | 173 | 117 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 91 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 91 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 91 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 91 | return false; | 173 | 91 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 131 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 131 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 131 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 131 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 131 | using FromFieldType = typename FromDataType::FieldType; | 130 | 131 | using ToFieldType = typename ToDataType::FieldType; | 131 | 131 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 131 | UInt32 from_scale = 0; | 133 | | | 134 | 131 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 131 | const auto* from_decimal_type = | 136 | 131 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 131 | from_precision = | 138 | 131 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 131 | from_scale = from_decimal_type->get_scale(); | 140 | 131 | } | 141 | | | 142 | 131 | UInt32 to_max_digits = 0; | 143 | 131 | UInt32 to_precision = 0; | 144 | 131 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 131 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 131 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 131 | to_precision = to_max_digits; | 160 | 131 | } | 161 | | | 162 | 131 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 131 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 131 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 131 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 131 | return narrow_integral || multiply_may_overflow; | 171 | 131 | } | 172 | 0 | return false; | 173 | 131 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 130 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 130 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 130 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 130 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 130 | using FromFieldType = typename FromDataType::FieldType; | 130 | 130 | using ToFieldType = typename ToDataType::FieldType; | 131 | 130 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 130 | UInt32 from_scale = 0; | 133 | | | 134 | 130 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 130 | const auto* from_decimal_type = | 136 | 130 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 130 | from_precision = | 138 | 130 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 130 | from_scale = from_decimal_type->get_scale(); | 140 | 130 | } | 141 | | | 142 | 130 | UInt32 to_max_digits = 0; | 143 | 130 | UInt32 to_precision = 0; | 144 | 130 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 130 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 130 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 130 | to_precision = to_max_digits; | 160 | 130 | } | 161 | | | 162 | 130 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 130 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 130 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 130 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 130 | return narrow_integral || multiply_may_overflow; | 171 | 130 | } | 172 | 0 | return false; | 173 | 130 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 28 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 28 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 28 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 28 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 28 | using FromFieldType = typename FromDataType::FieldType; | 130 | 28 | using ToFieldType = typename ToDataType::FieldType; | 131 | 28 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 28 | UInt32 from_scale = 0; | 133 | | | 134 | 28 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 28 | const auto* from_decimal_type = | 136 | 28 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 28 | from_precision = | 138 | 28 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 28 | from_scale = from_decimal_type->get_scale(); | 140 | 28 | } | 141 | | | 142 | 28 | UInt32 to_max_digits = 0; | 143 | 28 | UInt32 to_precision = 0; | 144 | 28 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 28 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 28 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 28 | to_precision = to_max_digits; | 160 | 28 | } | 161 | | | 162 | 28 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 28 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 28 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 28 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 28 | return narrow_integral || multiply_may_overflow; | 171 | 28 | } | 172 | 0 | return false; | 173 | 28 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 115 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 115 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 115 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 115 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 115 | using FromFieldType = typename FromDataType::FieldType; | 130 | 115 | using ToFieldType = typename ToDataType::FieldType; | 131 | 115 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 115 | UInt32 from_scale = 0; | 133 | | | 134 | 115 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 115 | const auto* from_decimal_type = | 136 | 115 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 115 | from_precision = | 138 | 115 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 115 | from_scale = from_decimal_type->get_scale(); | 140 | 115 | } | 141 | | | 142 | 115 | UInt32 to_max_digits = 0; | 143 | 115 | UInt32 to_precision = 0; | 144 | 115 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 115 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 115 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 115 | to_precision = to_max_digits; | 160 | 115 | } | 161 | | | 162 | 115 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 115 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 115 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 115 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 115 | return narrow_integral || multiply_may_overflow; | 171 | 115 | } | 172 | 0 | return false; | 173 | 115 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 590 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 590 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 590 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 590 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 590 | using FromFieldType = typename FromDataType::FieldType; | 130 | 590 | using ToFieldType = typename ToDataType::FieldType; | 131 | 590 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 590 | UInt32 from_scale = 0; | 133 | | | 134 | 590 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 590 | const auto* from_decimal_type = | 136 | 590 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 590 | from_precision = | 138 | 590 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 590 | from_scale = from_decimal_type->get_scale(); | 140 | 590 | } | 141 | | | 142 | 590 | UInt32 to_max_digits = 0; | 143 | 590 | UInt32 to_precision = 0; | 144 | 590 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 590 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 590 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 590 | to_precision = to_max_digits; | 160 | 590 | } | 161 | | | 162 | 590 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 590 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 590 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 590 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 590 | return narrow_integral || multiply_may_overflow; | 171 | 590 | } | 172 | 0 | return false; | 173 | 590 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 76 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 76 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 76 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 76 | return false; | 173 | 76 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 15.5k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 15.5k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 15.5k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 15.5k | return false; | 173 | 15.5k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 324 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 324 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 324 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 324 | return false; | 173 | 324 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 1.70k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.70k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.70k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 1.70k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 1.70k | return false; | 127 | 1.70k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.70k | return false; | 173 | 1.70k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 380 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 380 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 380 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 380 | return false; | 173 | 380 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 455 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 455 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 455 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 455 | return false; | 173 | 455 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 895 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 895 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 895 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 895 | return false; | 173 | 895 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.14k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.14k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.14k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.14k | return false; | 173 | 1.14k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.51k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.51k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.51k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.51k | return false; | 173 | 1.51k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 199 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 199 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 199 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 199 | return false; | 173 | 199 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.09k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.09k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.09k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1.09k | return false; | 173 | 1.09k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 427 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 427 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 427 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 427 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 427 | using FromFieldType = typename FromDataType::FieldType; | 130 | 427 | using ToFieldType = typename ToDataType::FieldType; | 131 | 427 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 427 | UInt32 from_scale = 0; | 133 | | | 134 | 427 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 427 | const auto* from_decimal_type = | 136 | 427 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 427 | from_precision = | 138 | 427 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 427 | from_scale = from_decimal_type->get_scale(); | 140 | 427 | } | 141 | | | 142 | 427 | UInt32 to_max_digits = 0; | 143 | 427 | UInt32 to_precision = 0; | 144 | 427 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 427 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 427 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 427 | to_precision = to_max_digits; | 160 | 427 | } | 161 | | | 162 | 427 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 427 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 427 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 427 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 428 | return narrow_integral || multiply_may_overflow; | 171 | 427 | } | 172 | 0 | return false; | 173 | 427 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 338 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 338 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 338 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 338 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 338 | using FromFieldType = typename FromDataType::FieldType; | 130 | 338 | using ToFieldType = typename ToDataType::FieldType; | 131 | 338 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 338 | UInt32 from_scale = 0; | 133 | | | 134 | 338 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 338 | const auto* from_decimal_type = | 136 | 338 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 338 | from_precision = | 138 | 338 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 338 | from_scale = from_decimal_type->get_scale(); | 140 | 338 | } | 141 | | | 142 | 338 | UInt32 to_max_digits = 0; | 143 | 338 | UInt32 to_precision = 0; | 144 | 338 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 338 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 338 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 338 | to_precision = to_max_digits; | 160 | 338 | } | 161 | | | 162 | 338 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 338 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 338 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 338 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 339 | return narrow_integral || multiply_may_overflow; | 171 | 338 | } | 172 | 0 | return false; | 173 | 338 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 68 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 68 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 68 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 68 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 68 | using FromFieldType = typename FromDataType::FieldType; | 130 | 68 | using ToFieldType = typename ToDataType::FieldType; | 131 | 68 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 68 | UInt32 from_scale = 0; | 133 | | | 134 | 68 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 68 | const auto* from_decimal_type = | 136 | 68 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 68 | from_precision = | 138 | 68 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 68 | from_scale = from_decimal_type->get_scale(); | 140 | 68 | } | 141 | | | 142 | 68 | UInt32 to_max_digits = 0; | 143 | 68 | UInt32 to_precision = 0; | 144 | 68 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 68 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 68 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 68 | to_precision = to_max_digits; | 160 | 68 | } | 161 | | | 162 | 68 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 68 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 68 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 68 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 68 | return narrow_integral || multiply_may_overflow; | 171 | 68 | } | 172 | 0 | return false; | 173 | 68 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 706 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 706 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 706 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 706 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 706 | using FromFieldType = typename FromDataType::FieldType; | 130 | 706 | using ToFieldType = typename ToDataType::FieldType; | 131 | 706 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 706 | UInt32 from_scale = 0; | 133 | | | 134 | 706 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 706 | const auto* from_decimal_type = | 136 | 706 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 706 | from_precision = | 138 | 706 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 706 | from_scale = from_decimal_type->get_scale(); | 140 | 706 | } | 141 | | | 142 | 706 | UInt32 to_max_digits = 0; | 143 | 706 | UInt32 to_precision = 0; | 144 | 706 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 706 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 706 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 706 | to_precision = to_max_digits; | 160 | 706 | } | 161 | | | 162 | 706 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 706 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 706 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 706 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 706 | return narrow_integral || multiply_may_overflow; | 171 | 706 | } | 172 | 0 | return false; | 173 | 706 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 558 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 558 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 558 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 558 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 558 | using FromFieldType = typename FromDataType::FieldType; | 130 | 558 | using ToFieldType = typename ToDataType::FieldType; | 131 | 558 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 558 | UInt32 from_scale = 0; | 133 | | | 134 | 558 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 558 | const auto* from_decimal_type = | 136 | 558 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 558 | from_precision = | 138 | 558 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 558 | from_scale = from_decimal_type->get_scale(); | 140 | 558 | } | 141 | | | 142 | 558 | UInt32 to_max_digits = 0; | 143 | 558 | UInt32 to_precision = 0; | 144 | 558 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 558 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 558 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 558 | to_precision = to_max_digits; | 160 | 558 | } | 161 | | | 162 | 558 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 558 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 558 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 558 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 558 | return narrow_integral || multiply_may_overflow; | 171 | 558 | } | 172 | 0 | return false; | 173 | 558 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 126 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 126 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 126 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 126 | return false; | 173 | 126 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 15.6k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 15.6k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 15.6k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 15.6k | return false; | 173 | 15.6k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 324 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 324 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 324 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 324 | return false; | 173 | 324 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 6.31k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6.31k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6.31k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 6.31k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 6.31k | return false; | 127 | 6.31k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 6.31k | return false; | 173 | 6.31k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 25 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 25 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 25 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 25 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 25 | using FromFieldType = typename FromDataType::FieldType; | 130 | 25 | using ToFieldType = typename ToDataType::FieldType; | 131 | 25 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 25 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 25 | UInt32 to_max_digits = 0; | 143 | 25 | UInt32 to_precision = 0; | 144 | 25 | UInt32 to_scale = 0; | 145 | | | 146 | 25 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 25 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 25 | const auto* to_decimal_type = | 150 | 25 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 25 | to_precision = to_decimal_type->get_precision(); | 152 | 25 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 25 | to_scale = to_decimal_type->get_scale(); | 155 | 25 | ToDataType::check_type_scale(to_scale); | 156 | 25 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 25 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 25 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 25 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 25 | if (to_scale > from_scale) { | 167 | 24 | multiply_may_overflow &= | 168 | 24 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 24 | } | 170 | 25 | return narrow_integral || multiply_may_overflow; | 171 | 25 | } | 172 | 0 | return false; | 173 | 25 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 516 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 516 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 516 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 516 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 516 | using FromFieldType = typename FromDataType::FieldType; | 130 | 516 | using ToFieldType = typename ToDataType::FieldType; | 131 | 516 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 516 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 516 | UInt32 to_max_digits = 0; | 143 | 516 | UInt32 to_precision = 0; | 144 | 516 | UInt32 to_scale = 0; | 145 | | | 146 | 516 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 516 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 516 | const auto* to_decimal_type = | 150 | 516 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 516 | to_precision = to_decimal_type->get_precision(); | 152 | 516 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 516 | to_scale = to_decimal_type->get_scale(); | 155 | 516 | ToDataType::check_type_scale(to_scale); | 156 | 516 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 516 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 516 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 516 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 516 | if (to_scale > from_scale) { | 167 | 302 | multiply_may_overflow &= | 168 | 302 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 302 | } | 170 | 516 | return narrow_integral || multiply_may_overflow; | 171 | 516 | } | 172 | 0 | return false; | 173 | 516 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 540 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 540 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 540 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 540 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 540 | using FromFieldType = typename FromDataType::FieldType; | 130 | 540 | using ToFieldType = typename ToDataType::FieldType; | 131 | 540 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 540 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 540 | UInt32 to_max_digits = 0; | 143 | 540 | UInt32 to_precision = 0; | 144 | 540 | UInt32 to_scale = 0; | 145 | | | 146 | 540 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 540 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 540 | const auto* to_decimal_type = | 150 | 540 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 540 | to_precision = to_decimal_type->get_precision(); | 152 | 540 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 540 | to_scale = to_decimal_type->get_scale(); | 155 | 540 | ToDataType::check_type_scale(to_scale); | 156 | 540 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 540 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 540 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 540 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 540 | if (to_scale > from_scale) { | 167 | 275 | multiply_may_overflow &= | 168 | 275 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 275 | } | 170 | 540 | return narrow_integral || multiply_may_overflow; | 171 | 540 | } | 172 | 0 | return false; | 173 | 540 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 602 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 602 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 602 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 602 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 602 | using FromFieldType = typename FromDataType::FieldType; | 130 | 602 | using ToFieldType = typename ToDataType::FieldType; | 131 | 602 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 602 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 602 | UInt32 to_max_digits = 0; | 143 | 602 | UInt32 to_precision = 0; | 144 | 602 | UInt32 to_scale = 0; | 145 | | | 146 | 602 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 602 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 602 | const auto* to_decimal_type = | 150 | 602 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 602 | to_precision = to_decimal_type->get_precision(); | 152 | 602 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 602 | to_scale = to_decimal_type->get_scale(); | 155 | 602 | ToDataType::check_type_scale(to_scale); | 156 | 602 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 602 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 602 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 602 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 602 | if (to_scale > from_scale) { | 167 | 308 | multiply_may_overflow &= | 168 | 308 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 308 | } | 170 | 602 | return narrow_integral || multiply_may_overflow; | 171 | 602 | } | 172 | 0 | return false; | 173 | 602 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 661 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 661 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 661 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 661 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 661 | using FromFieldType = typename FromDataType::FieldType; | 130 | 661 | using ToFieldType = typename ToDataType::FieldType; | 131 | 661 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 661 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 661 | UInt32 to_max_digits = 0; | 143 | 661 | UInt32 to_precision = 0; | 144 | 661 | UInt32 to_scale = 0; | 145 | | | 146 | 661 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 661 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 661 | const auto* to_decimal_type = | 150 | 661 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 661 | to_precision = to_decimal_type->get_precision(); | 152 | 661 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 661 | to_scale = to_decimal_type->get_scale(); | 155 | 661 | ToDataType::check_type_scale(to_scale); | 156 | 661 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 661 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 661 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 661 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 661 | if (to_scale > from_scale) { | 167 | 294 | multiply_may_overflow &= | 168 | 294 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 294 | } | 170 | 661 | return narrow_integral || multiply_may_overflow; | 171 | 661 | } | 172 | 0 | return false; | 173 | 661 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 598 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 598 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 598 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 598 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 598 | using FromFieldType = typename FromDataType::FieldType; | 130 | 598 | using ToFieldType = typename ToDataType::FieldType; | 131 | 598 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 598 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 598 | UInt32 to_max_digits = 0; | 143 | 598 | UInt32 to_precision = 0; | 144 | 598 | UInt32 to_scale = 0; | 145 | | | 146 | 598 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 598 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 598 | const auto* to_decimal_type = | 150 | 598 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 598 | to_precision = to_decimal_type->get_precision(); | 152 | 598 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 598 | to_scale = to_decimal_type->get_scale(); | 155 | 598 | ToDataType::check_type_scale(to_scale); | 156 | 598 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 598 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 598 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 598 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 598 | if (to_scale > from_scale) { | 167 | 306 | multiply_may_overflow &= | 168 | 306 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 306 | } | 170 | 598 | return narrow_integral || multiply_may_overflow; | 171 | 598 | } | 172 | 0 | return false; | 173 | 598 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 203 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 203 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 203 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 203 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 203 | using FromFieldType = typename FromDataType::FieldType; | 130 | 203 | using ToFieldType = typename ToDataType::FieldType; | 131 | 203 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 203 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 203 | UInt32 to_max_digits = 0; | 143 | 203 | UInt32 to_precision = 0; | 144 | 203 | UInt32 to_scale = 0; | 145 | | | 146 | 203 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 203 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 203 | const auto* to_decimal_type = | 150 | 203 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 203 | to_precision = to_decimal_type->get_precision(); | 152 | 203 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 203 | to_scale = to_decimal_type->get_scale(); | 155 | 203 | ToDataType::check_type_scale(to_scale); | 156 | 203 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 203 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 203 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 203 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 203 | if (to_scale > from_scale) { | 167 | 134 | multiply_may_overflow &= | 168 | 134 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 134 | } | 170 | 203 | return narrow_integral || multiply_may_overflow; | 171 | 203 | } | 172 | 0 | return false; | 173 | 203 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 411 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 411 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 411 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 411 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 411 | using FromFieldType = typename FromDataType::FieldType; | 130 | 411 | using ToFieldType = typename ToDataType::FieldType; | 131 | 411 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 411 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 411 | UInt32 to_max_digits = 0; | 143 | 411 | UInt32 to_precision = 0; | 144 | 411 | UInt32 to_scale = 0; | 145 | | | 146 | 411 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 411 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 411 | const auto* to_decimal_type = | 150 | 411 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 411 | to_precision = to_decimal_type->get_precision(); | 152 | 411 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 411 | to_scale = to_decimal_type->get_scale(); | 155 | 411 | ToDataType::check_type_scale(to_scale); | 156 | 411 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 411 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 411 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 411 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 411 | if (to_scale > from_scale) { | 167 | 324 | multiply_may_overflow &= | 168 | 324 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 324 | } | 170 | 411 | return narrow_integral || multiply_may_overflow; | 171 | 411 | } | 172 | 0 | return false; | 173 | 411 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ Line | Count | Source | 120 | 528 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 528 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 528 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 528 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 528 | using FromFieldType = typename FromDataType::FieldType; | 130 | 528 | using ToFieldType = typename ToDataType::FieldType; | 131 | 528 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 528 | UInt32 from_scale = 0; | 133 | | | 134 | 528 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 528 | const auto* from_decimal_type = | 136 | 528 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 528 | from_precision = | 138 | 528 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 528 | from_scale = from_decimal_type->get_scale(); | 140 | 528 | } | 141 | | | 142 | 528 | UInt32 to_max_digits = 0; | 143 | 528 | UInt32 to_precision = 0; | 144 | 528 | UInt32 to_scale = 0; | 145 | | | 146 | 528 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 528 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 528 | const auto* to_decimal_type = | 150 | 528 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 528 | to_precision = to_decimal_type->get_precision(); | 152 | 528 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 528 | to_scale = to_decimal_type->get_scale(); | 155 | 528 | ToDataType::check_type_scale(to_scale); | 156 | 528 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 528 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 528 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 528 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 528 | if (to_scale > from_scale) { | 167 | 143 | multiply_may_overflow &= | 168 | 143 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 143 | } | 170 | 528 | return narrow_integral || multiply_may_overflow; | 171 | 528 | } | 172 | 0 | return false; | 173 | 528 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 905 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 905 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 905 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 905 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 905 | using FromFieldType = typename FromDataType::FieldType; | 130 | 905 | using ToFieldType = typename ToDataType::FieldType; | 131 | 905 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 905 | UInt32 from_scale = 0; | 133 | | | 134 | 905 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 905 | const auto* from_decimal_type = | 136 | 905 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 905 | from_precision = | 138 | 905 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 905 | from_scale = from_decimal_type->get_scale(); | 140 | 905 | } | 141 | | | 142 | 905 | UInt32 to_max_digits = 0; | 143 | 905 | UInt32 to_precision = 0; | 144 | 905 | UInt32 to_scale = 0; | 145 | | | 146 | 905 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 905 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 905 | const auto* to_decimal_type = | 150 | 905 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 905 | to_precision = to_decimal_type->get_precision(); | 152 | 905 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 905 | to_scale = to_decimal_type->get_scale(); | 155 | 905 | ToDataType::check_type_scale(to_scale); | 156 | 905 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 905 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 905 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 905 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 905 | if (to_scale > from_scale) { | 167 | 276 | multiply_may_overflow &= | 168 | 276 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 276 | } | 170 | 905 | return narrow_integral || multiply_may_overflow; | 171 | 905 | } | 172 | 0 | return false; | 173 | 905 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 399 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 399 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 399 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 399 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 399 | using FromFieldType = typename FromDataType::FieldType; | 130 | 399 | using ToFieldType = typename ToDataType::FieldType; | 131 | 399 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 399 | UInt32 from_scale = 0; | 133 | | | 134 | 399 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 399 | const auto* from_decimal_type = | 136 | 399 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 399 | from_precision = | 138 | 399 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 399 | from_scale = from_decimal_type->get_scale(); | 140 | 399 | } | 141 | | | 142 | 399 | UInt32 to_max_digits = 0; | 143 | 399 | UInt32 to_precision = 0; | 144 | 399 | UInt32 to_scale = 0; | 145 | | | 146 | 399 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 399 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 399 | const auto* to_decimal_type = | 150 | 399 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 399 | to_precision = to_decimal_type->get_precision(); | 152 | 399 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 399 | to_scale = to_decimal_type->get_scale(); | 155 | 399 | ToDataType::check_type_scale(to_scale); | 156 | 399 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 399 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 399 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 399 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 399 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 399 | return narrow_integral || multiply_may_overflow; | 171 | 399 | } | 172 | 0 | return false; | 173 | 399 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 733 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 733 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 733 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 733 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 733 | using FromFieldType = typename FromDataType::FieldType; | 130 | 733 | using ToFieldType = typename ToDataType::FieldType; | 131 | 733 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 733 | UInt32 from_scale = 0; | 133 | | | 134 | 733 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 733 | const auto* from_decimal_type = | 136 | 733 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 733 | from_precision = | 138 | 733 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 733 | from_scale = from_decimal_type->get_scale(); | 140 | 733 | } | 141 | | | 142 | 733 | UInt32 to_max_digits = 0; | 143 | 733 | UInt32 to_precision = 0; | 144 | 733 | UInt32 to_scale = 0; | 145 | | | 146 | 733 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 733 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 733 | const auto* to_decimal_type = | 150 | 733 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 733 | to_precision = to_decimal_type->get_precision(); | 152 | 733 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 733 | to_scale = to_decimal_type->get_scale(); | 155 | 733 | ToDataType::check_type_scale(to_scale); | 156 | 733 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 733 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 733 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 733 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 733 | if (to_scale > from_scale) { | 167 | 220 | multiply_may_overflow &= | 168 | 220 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 220 | } | 170 | 733 | return narrow_integral || multiply_may_overflow; | 171 | 733 | } | 172 | 0 | return false; | 173 | 733 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 599 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 599 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 599 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 599 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 599 | using FromFieldType = typename FromDataType::FieldType; | 130 | 599 | using ToFieldType = typename ToDataType::FieldType; | 131 | 599 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 599 | UInt32 from_scale = 0; | 133 | | | 134 | 599 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 599 | const auto* from_decimal_type = | 136 | 599 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 599 | from_precision = | 138 | 599 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 599 | from_scale = from_decimal_type->get_scale(); | 140 | 599 | } | 141 | | | 142 | 599 | UInt32 to_max_digits = 0; | 143 | 599 | UInt32 to_precision = 0; | 144 | 599 | UInt32 to_scale = 0; | 145 | | | 146 | 599 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 599 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 599 | const auto* to_decimal_type = | 150 | 599 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 599 | to_precision = to_decimal_type->get_precision(); | 152 | 599 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 599 | to_scale = to_decimal_type->get_scale(); | 155 | 599 | ToDataType::check_type_scale(to_scale); | 156 | 599 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 599 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 599 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 599 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 599 | if (to_scale > from_scale) { | 167 | 157 | multiply_may_overflow &= | 168 | 157 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 157 | } | 170 | 599 | return narrow_integral || multiply_may_overflow; | 171 | 599 | } | 172 | 0 | return false; | 173 | 599 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 4.44k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4.44k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4.44k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 4.44k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 4.44k | return false; | 127 | 4.44k | } | 128 | 4.44k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 4.44k | using FromFieldType = typename FromDataType::FieldType; | 130 | 4.44k | using ToFieldType = typename ToDataType::FieldType; | 131 | 4.44k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 4.44k | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 4.44k | UInt32 to_max_digits = 0; | 143 | 4.44k | UInt32 to_precision = 0; | 144 | 4.44k | UInt32 to_scale = 0; | 145 | | | 146 | 4.44k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 4.44k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 4.44k | const auto* to_decimal_type = | 150 | 4.44k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 4.44k | to_precision = to_decimal_type->get_precision(); | 152 | 4.44k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 4.44k | to_scale = to_decimal_type->get_scale(); | 155 | 4.44k | ToDataType::check_type_scale(to_scale); | 156 | 4.44k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 4.44k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 4.44k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 4.44k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 4.44k | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 4.44k | return narrow_integral || multiply_may_overflow; | 171 | 4.44k | } | 172 | 0 | return false; | 173 | 4.44k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 24 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 24 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 24 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 24 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 24 | using FromFieldType = typename FromDataType::FieldType; | 130 | 24 | using ToFieldType = typename ToDataType::FieldType; | 131 | 24 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 24 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 24 | UInt32 to_max_digits = 0; | 143 | 24 | UInt32 to_precision = 0; | 144 | 24 | UInt32 to_scale = 0; | 145 | | | 146 | 24 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 24 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 24 | const auto* to_decimal_type = | 150 | 24 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 24 | to_precision = to_decimal_type->get_precision(); | 152 | 24 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 24 | to_scale = to_decimal_type->get_scale(); | 155 | 24 | ToDataType::check_type_scale(to_scale); | 156 | 24 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 24 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 24 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 24 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 24 | if (to_scale > from_scale) { | 167 | 22 | multiply_may_overflow &= | 168 | 22 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 22 | } | 170 | 24 | return narrow_integral || multiply_may_overflow; | 171 | 24 | } | 172 | 0 | return false; | 173 | 24 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 101 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 101 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 101 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 101 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 101 | using FromFieldType = typename FromDataType::FieldType; | 130 | 101 | using ToFieldType = typename ToDataType::FieldType; | 131 | 101 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 101 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 101 | UInt32 to_max_digits = 0; | 143 | 101 | UInt32 to_precision = 0; | 144 | 101 | UInt32 to_scale = 0; | 145 | | | 146 | 101 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 101 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 101 | const auto* to_decimal_type = | 150 | 101 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 101 | to_precision = to_decimal_type->get_precision(); | 152 | 101 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 101 | to_scale = to_decimal_type->get_scale(); | 155 | 101 | ToDataType::check_type_scale(to_scale); | 156 | 101 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 101 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 101 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 101 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 101 | if (to_scale > from_scale) { | 167 | 77 | multiply_may_overflow &= | 168 | 77 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 77 | } | 170 | 101 | return narrow_integral || multiply_may_overflow; | 171 | 101 | } | 172 | 0 | return false; | 173 | 101 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 78 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 78 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 78 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 78 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 78 | using FromFieldType = typename FromDataType::FieldType; | 130 | 78 | using ToFieldType = typename ToDataType::FieldType; | 131 | 78 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 78 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 78 | UInt32 to_max_digits = 0; | 143 | 78 | UInt32 to_precision = 0; | 144 | 78 | UInt32 to_scale = 0; | 145 | | | 146 | 78 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 78 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 78 | const auto* to_decimal_type = | 150 | 78 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 78 | to_precision = to_decimal_type->get_precision(); | 152 | 78 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 78 | to_scale = to_decimal_type->get_scale(); | 155 | 78 | ToDataType::check_type_scale(to_scale); | 156 | 78 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 78 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 78 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 78 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 78 | if (to_scale > from_scale) { | 167 | 56 | multiply_may_overflow &= | 168 | 56 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 56 | } | 170 | 78 | return narrow_integral || multiply_may_overflow; | 171 | 78 | } | 172 | 0 | return false; | 173 | 78 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 501 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 501 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 501 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 501 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 501 | using FromFieldType = typename FromDataType::FieldType; | 130 | 501 | using ToFieldType = typename ToDataType::FieldType; | 131 | 501 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 501 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 501 | UInt32 to_max_digits = 0; | 143 | 501 | UInt32 to_precision = 0; | 144 | 501 | UInt32 to_scale = 0; | 145 | | | 146 | 501 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 501 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 501 | const auto* to_decimal_type = | 150 | 501 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 501 | to_precision = to_decimal_type->get_precision(); | 152 | 501 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 501 | to_scale = to_decimal_type->get_scale(); | 155 | 501 | ToDataType::check_type_scale(to_scale); | 156 | 501 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 501 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 501 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 501 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 501 | if (to_scale > from_scale) { | 167 | 336 | multiply_may_overflow &= | 168 | 336 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 336 | } | 170 | 501 | return narrow_integral || multiply_may_overflow; | 171 | 501 | } | 172 | 0 | return false; | 173 | 501 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 99 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 99 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 99 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 99 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 99 | using FromFieldType = typename FromDataType::FieldType; | 130 | 99 | using ToFieldType = typename ToDataType::FieldType; | 131 | 99 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 99 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 99 | UInt32 to_max_digits = 0; | 143 | 99 | UInt32 to_precision = 0; | 144 | 99 | UInt32 to_scale = 0; | 145 | | | 146 | 99 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 99 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 99 | const auto* to_decimal_type = | 150 | 99 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 99 | to_precision = to_decimal_type->get_precision(); | 152 | 99 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 99 | to_scale = to_decimal_type->get_scale(); | 155 | 99 | ToDataType::check_type_scale(to_scale); | 156 | 99 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 99 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 99 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 99 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 99 | if (to_scale > from_scale) { | 167 | 57 | multiply_may_overflow &= | 168 | 57 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 57 | } | 170 | 99 | return narrow_integral || multiply_may_overflow; | 171 | 99 | } | 172 | 0 | return false; | 173 | 99 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 114 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 114 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 114 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 114 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 114 | using FromFieldType = typename FromDataType::FieldType; | 130 | 114 | using ToFieldType = typename ToDataType::FieldType; | 131 | 114 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 114 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 114 | UInt32 to_max_digits = 0; | 143 | 114 | UInt32 to_precision = 0; | 144 | 114 | UInt32 to_scale = 0; | 145 | | | 146 | 114 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 114 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 114 | const auto* to_decimal_type = | 150 | 114 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 114 | to_precision = to_decimal_type->get_precision(); | 152 | 114 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 114 | to_scale = to_decimal_type->get_scale(); | 155 | 114 | ToDataType::check_type_scale(to_scale); | 156 | 114 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 114 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 114 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 114 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 114 | if (to_scale > from_scale) { | 167 | 67 | multiply_may_overflow &= | 168 | 67 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 67 | } | 170 | 114 | return narrow_integral || multiply_may_overflow; | 171 | 114 | } | 172 | 0 | return false; | 173 | 114 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 206 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 206 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 206 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 206 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 206 | using FromFieldType = typename FromDataType::FieldType; | 130 | 206 | using ToFieldType = typename ToDataType::FieldType; | 131 | 206 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 206 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 206 | UInt32 to_max_digits = 0; | 143 | 206 | UInt32 to_precision = 0; | 144 | 206 | UInt32 to_scale = 0; | 145 | | | 146 | 206 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 206 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 206 | const auto* to_decimal_type = | 150 | 206 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 206 | to_precision = to_decimal_type->get_precision(); | 152 | 206 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 206 | to_scale = to_decimal_type->get_scale(); | 155 | 206 | ToDataType::check_type_scale(to_scale); | 156 | 206 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 206 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 206 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 206 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 206 | if (to_scale > from_scale) { | 167 | 123 | multiply_may_overflow &= | 168 | 123 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 123 | } | 170 | 206 | return narrow_integral || multiply_may_overflow; | 171 | 206 | } | 172 | 0 | return false; | 173 | 206 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 309 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 309 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 309 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 309 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 309 | using FromFieldType = typename FromDataType::FieldType; | 130 | 309 | using ToFieldType = typename ToDataType::FieldType; | 131 | 309 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 309 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 309 | UInt32 to_max_digits = 0; | 143 | 309 | UInt32 to_precision = 0; | 144 | 309 | UInt32 to_scale = 0; | 145 | | | 146 | 309 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 309 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 309 | const auto* to_decimal_type = | 150 | 309 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 309 | to_precision = to_decimal_type->get_precision(); | 152 | 309 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 309 | to_scale = to_decimal_type->get_scale(); | 155 | 309 | ToDataType::check_type_scale(to_scale); | 156 | 309 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 309 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 309 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 309 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 309 | if (to_scale > from_scale) { | 167 | 243 | multiply_may_overflow &= | 168 | 243 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 243 | } | 170 | 309 | return narrow_integral || multiply_may_overflow; | 171 | 309 | } | 172 | 0 | return false; | 173 | 309 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.27k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.27k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.27k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 1.27k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.27k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.27k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.27k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.27k | UInt32 from_scale = 0; | 133 | | | 134 | 1.27k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.27k | const auto* from_decimal_type = | 136 | 1.27k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.27k | from_precision = | 138 | 1.27k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.27k | from_scale = from_decimal_type->get_scale(); | 140 | 1.27k | } | 141 | | | 142 | 1.27k | UInt32 to_max_digits = 0; | 143 | 1.27k | UInt32 to_precision = 0; | 144 | 1.27k | UInt32 to_scale = 0; | 145 | | | 146 | 1.27k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.27k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.27k | const auto* to_decimal_type = | 150 | 1.27k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.27k | to_precision = to_decimal_type->get_precision(); | 152 | 1.27k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.27k | to_scale = to_decimal_type->get_scale(); | 155 | 1.27k | ToDataType::check_type_scale(to_scale); | 156 | 1.27k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 1.27k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.27k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.27k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.27k | if (to_scale > from_scale) { | 167 | 872 | multiply_may_overflow &= | 168 | 872 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 872 | } | 170 | 1.27k | return narrow_integral || multiply_may_overflow; | 171 | 1.27k | } | 172 | 0 | return false; | 173 | 1.27k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ Line | Count | Source | 120 | 10.2k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 10.2k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 10.2k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 10.2k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 10.2k | using FromFieldType = typename FromDataType::FieldType; | 130 | 10.2k | using ToFieldType = typename ToDataType::FieldType; | 131 | 10.2k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 10.2k | UInt32 from_scale = 0; | 133 | | | 134 | 10.2k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 10.2k | const auto* from_decimal_type = | 136 | 10.2k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 10.2k | from_precision = | 138 | 10.2k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 10.2k | from_scale = from_decimal_type->get_scale(); | 140 | 10.2k | } | 141 | | | 142 | 10.2k | UInt32 to_max_digits = 0; | 143 | 10.2k | UInt32 to_precision = 0; | 144 | 10.2k | UInt32 to_scale = 0; | 145 | | | 146 | 10.2k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 10.2k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 10.2k | const auto* to_decimal_type = | 150 | 10.2k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 10.2k | to_precision = to_decimal_type->get_precision(); | 152 | 10.2k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 10.2k | to_scale = to_decimal_type->get_scale(); | 155 | 10.2k | ToDataType::check_type_scale(to_scale); | 156 | 10.2k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 10.2k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 10.2k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 10.2k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 10.2k | if (to_scale > from_scale) { | 167 | 312 | multiply_may_overflow &= | 168 | 312 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 312 | } | 170 | 10.2k | return narrow_integral || multiply_may_overflow; | 171 | 10.2k | } | 172 | 0 | return false; | 173 | 10.2k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 492 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 492 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 492 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 492 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 492 | using FromFieldType = typename FromDataType::FieldType; | 130 | 492 | using ToFieldType = typename ToDataType::FieldType; | 131 | 492 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 492 | UInt32 from_scale = 0; | 133 | | | 134 | 492 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 492 | const auto* from_decimal_type = | 136 | 492 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 492 | from_precision = | 138 | 492 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 492 | from_scale = from_decimal_type->get_scale(); | 140 | 492 | } | 141 | | | 142 | 492 | UInt32 to_max_digits = 0; | 143 | 492 | UInt32 to_precision = 0; | 144 | 492 | UInt32 to_scale = 0; | 145 | | | 146 | 492 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 492 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 492 | const auto* to_decimal_type = | 150 | 492 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 492 | to_precision = to_decimal_type->get_precision(); | 152 | 492 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 492 | to_scale = to_decimal_type->get_scale(); | 155 | 492 | ToDataType::check_type_scale(to_scale); | 156 | 492 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 492 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 492 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 492 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 492 | if (to_scale > from_scale) { | 167 | 100 | multiply_may_overflow &= | 168 | 100 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 100 | } | 170 | 492 | return narrow_integral || multiply_may_overflow; | 171 | 492 | } | 172 | 0 | return false; | 173 | 492 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 809 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 809 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 809 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 809 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 809 | using FromFieldType = typename FromDataType::FieldType; | 130 | 809 | using ToFieldType = typename ToDataType::FieldType; | 131 | 809 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 809 | UInt32 from_scale = 0; | 133 | | | 134 | 809 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 809 | const auto* from_decimal_type = | 136 | 809 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 809 | from_precision = | 138 | 809 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 809 | from_scale = from_decimal_type->get_scale(); | 140 | 809 | } | 141 | | | 142 | 809 | UInt32 to_max_digits = 0; | 143 | 809 | UInt32 to_precision = 0; | 144 | 809 | UInt32 to_scale = 0; | 145 | | | 146 | 809 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 809 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 809 | const auto* to_decimal_type = | 150 | 809 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 809 | to_precision = to_decimal_type->get_precision(); | 152 | 809 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 809 | to_scale = to_decimal_type->get_scale(); | 155 | 809 | ToDataType::check_type_scale(to_scale); | 156 | 809 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 809 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 809 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 809 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 809 | if (to_scale > from_scale) { | 167 | 282 | multiply_may_overflow &= | 168 | 282 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 282 | } | 170 | 809 | return narrow_integral || multiply_may_overflow; | 171 | 809 | } | 172 | 0 | return false; | 173 | 809 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 793 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 793 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 793 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 793 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 793 | using FromFieldType = typename FromDataType::FieldType; | 130 | 793 | using ToFieldType = typename ToDataType::FieldType; | 131 | 793 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 793 | UInt32 from_scale = 0; | 133 | | | 134 | 793 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 793 | const auto* from_decimal_type = | 136 | 793 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 793 | from_precision = | 138 | 793 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 793 | from_scale = from_decimal_type->get_scale(); | 140 | 793 | } | 141 | | | 142 | 793 | UInt32 to_max_digits = 0; | 143 | 793 | UInt32 to_precision = 0; | 144 | 793 | UInt32 to_scale = 0; | 145 | | | 146 | 793 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 793 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 793 | const auto* to_decimal_type = | 150 | 793 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 793 | to_precision = to_decimal_type->get_precision(); | 152 | 793 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 793 | to_scale = to_decimal_type->get_scale(); | 155 | 793 | ToDataType::check_type_scale(to_scale); | 156 | 793 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 793 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 793 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 793 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 793 | if (to_scale > from_scale) { | 167 | 273 | multiply_may_overflow &= | 168 | 273 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 273 | } | 170 | 793 | return narrow_integral || multiply_may_overflow; | 171 | 793 | } | 172 | 0 | return false; | 173 | 793 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 9.29k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 9.29k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 9.29k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 9.29k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 9.29k | return false; | 127 | 9.29k | } | 128 | 9.29k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 9.29k | using FromFieldType = typename FromDataType::FieldType; | 130 | 9.29k | using ToFieldType = typename ToDataType::FieldType; | 131 | 9.29k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 9.29k | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 9.29k | UInt32 to_max_digits = 0; | 143 | 9.29k | UInt32 to_precision = 0; | 144 | 9.29k | UInt32 to_scale = 0; | 145 | | | 146 | 9.29k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 9.29k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 9.29k | const auto* to_decimal_type = | 150 | 9.29k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 9.29k | to_precision = to_decimal_type->get_precision(); | 152 | 9.29k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 9.29k | to_scale = to_decimal_type->get_scale(); | 155 | 9.29k | ToDataType::check_type_scale(to_scale); | 156 | 9.29k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 9.29k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 9.29k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 9.29k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 9.29k | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 9.29k | return narrow_integral || multiply_may_overflow; | 171 | 9.29k | } | 172 | 0 | return false; | 173 | 9.29k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 24 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 24 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 24 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 24 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 24 | using FromFieldType = typename FromDataType::FieldType; | 130 | 24 | using ToFieldType = typename ToDataType::FieldType; | 131 | 24 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 24 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 24 | UInt32 to_max_digits = 0; | 143 | 24 | UInt32 to_precision = 0; | 144 | 24 | UInt32 to_scale = 0; | 145 | | | 146 | 24 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 24 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 24 | const auto* to_decimal_type = | 150 | 24 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 24 | to_precision = to_decimal_type->get_precision(); | 152 | 24 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 24 | to_scale = to_decimal_type->get_scale(); | 155 | 24 | ToDataType::check_type_scale(to_scale); | 156 | 24 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 24 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 24 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 24 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 24 | if (to_scale > from_scale) { | 167 | 24 | multiply_may_overflow &= | 168 | 24 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 24 | } | 170 | 24 | return narrow_integral || multiply_may_overflow; | 171 | 24 | } | 172 | 0 | return false; | 173 | 24 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 16 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 16 | using FromFieldType = typename FromDataType::FieldType; | 130 | 16 | using ToFieldType = typename ToDataType::FieldType; | 131 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 16 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 16 | UInt32 to_max_digits = 0; | 143 | 16 | UInt32 to_precision = 0; | 144 | 16 | UInt32 to_scale = 0; | 145 | | | 146 | 16 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 16 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 16 | const auto* to_decimal_type = | 150 | 16 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 16 | to_precision = to_decimal_type->get_precision(); | 152 | 16 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 16 | to_scale = to_decimal_type->get_scale(); | 155 | 16 | ToDataType::check_type_scale(to_scale); | 156 | 16 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 16 | if (to_scale > from_scale) { | 167 | 16 | multiply_may_overflow &= | 168 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 16 | } | 170 | 16 | return narrow_integral || multiply_may_overflow; | 171 | 16 | } | 172 | 0 | return false; | 173 | 16 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 16 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 16 | using FromFieldType = typename FromDataType::FieldType; | 130 | 16 | using ToFieldType = typename ToDataType::FieldType; | 131 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 16 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 16 | UInt32 to_max_digits = 0; | 143 | 16 | UInt32 to_precision = 0; | 144 | 16 | UInt32 to_scale = 0; | 145 | | | 146 | 16 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 16 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 16 | const auto* to_decimal_type = | 150 | 16 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 16 | to_precision = to_decimal_type->get_precision(); | 152 | 16 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 16 | to_scale = to_decimal_type->get_scale(); | 155 | 16 | ToDataType::check_type_scale(to_scale); | 156 | 16 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 16 | if (to_scale > from_scale) { | 167 | 16 | multiply_may_overflow &= | 168 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 16 | } | 170 | 16 | return narrow_integral || multiply_may_overflow; | 171 | 16 | } | 172 | 0 | return false; | 173 | 16 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 16 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 16 | using FromFieldType = typename FromDataType::FieldType; | 130 | 16 | using ToFieldType = typename ToDataType::FieldType; | 131 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 16 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 16 | UInt32 to_max_digits = 0; | 143 | 16 | UInt32 to_precision = 0; | 144 | 16 | UInt32 to_scale = 0; | 145 | | | 146 | 16 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 16 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 16 | const auto* to_decimal_type = | 150 | 16 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 16 | to_precision = to_decimal_type->get_precision(); | 152 | 16 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 16 | to_scale = to_decimal_type->get_scale(); | 155 | 16 | ToDataType::check_type_scale(to_scale); | 156 | 16 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 16 | if (to_scale > from_scale) { | 167 | 16 | multiply_may_overflow &= | 168 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 16 | } | 170 | 16 | return narrow_integral || multiply_may_overflow; | 171 | 16 | } | 172 | 0 | return false; | 173 | 16 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_6EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_7EEESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 32 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 32 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 32 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 32 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 32 | using FromFieldType = typename FromDataType::FieldType; | 130 | 32 | using ToFieldType = typename ToDataType::FieldType; | 131 | 32 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 32 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 32 | UInt32 to_max_digits = 0; | 143 | 32 | UInt32 to_precision = 0; | 144 | 32 | UInt32 to_scale = 0; | 145 | | | 146 | 32 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 32 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 32 | const auto* to_decimal_type = | 150 | 32 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 32 | to_precision = to_decimal_type->get_precision(); | 152 | 32 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 32 | to_scale = to_decimal_type->get_scale(); | 155 | 32 | ToDataType::check_type_scale(to_scale); | 156 | 32 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 32 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 32 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 32 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 32 | if (to_scale > from_scale) { | 167 | 32 | multiply_may_overflow &= | 168 | 32 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 32 | } | 170 | 32 | return narrow_integral || multiply_may_overflow; | 171 | 32 | } | 172 | 0 | return false; | 173 | 32 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 128 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 128 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 128 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 128 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 128 | using FromFieldType = typename FromDataType::FieldType; | 130 | 128 | using ToFieldType = typename ToDataType::FieldType; | 131 | 128 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 128 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 128 | UInt32 to_max_digits = 0; | 143 | 128 | UInt32 to_precision = 0; | 144 | 128 | UInt32 to_scale = 0; | 145 | | | 146 | 128 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 128 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 128 | const auto* to_decimal_type = | 150 | 128 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 128 | to_precision = to_decimal_type->get_precision(); | 152 | 128 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 128 | to_scale = to_decimal_type->get_scale(); | 155 | 128 | ToDataType::check_type_scale(to_scale); | 156 | 128 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 128 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 128 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 128 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 128 | if (to_scale > from_scale) { | 167 | 128 | multiply_may_overflow &= | 168 | 128 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 128 | } | 170 | 128 | return narrow_integral || multiply_may_overflow; | 171 | 128 | } | 172 | 0 | return false; | 173 | 128 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_28EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_29EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_30EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_35EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 1 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 1 | return false; | 127 | 1 | } | 128 | 1 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1 | using FromFieldType = typename FromDataType::FieldType; | 130 | 1 | using ToFieldType = typename ToDataType::FieldType; | 131 | 1 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 1 | UInt32 to_max_digits = 0; | 143 | 1 | UInt32 to_precision = 0; | 144 | 1 | UInt32 to_scale = 0; | 145 | | | 146 | 1 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1 | const auto* to_decimal_type = | 150 | 1 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1 | to_precision = to_decimal_type->get_precision(); | 152 | 1 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1 | to_scale = to_decimal_type->get_scale(); | 155 | 1 | ToDataType::check_type_scale(to_scale); | 156 | 1 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 1 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 1 | return narrow_integral || multiply_may_overflow; | 171 | 1 | } | 172 | 0 | return false; | 173 | 1 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 30 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 30 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 30 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 30 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 30 | using FromFieldType = typename FromDataType::FieldType; | 130 | 30 | using ToFieldType = typename ToDataType::FieldType; | 131 | 30 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 30 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 30 | UInt32 to_max_digits = 0; | 143 | 30 | UInt32 to_precision = 0; | 144 | 30 | UInt32 to_scale = 0; | 145 | | | 146 | 30 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 30 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 30 | const auto* to_decimal_type = | 150 | 30 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 30 | to_precision = to_decimal_type->get_precision(); | 152 | 30 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 30 | to_scale = to_decimal_type->get_scale(); | 155 | 30 | ToDataType::check_type_scale(to_scale); | 156 | 30 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 30 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 30 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 30 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 30 | if (to_scale > from_scale) { | 167 | 28 | multiply_may_overflow &= | 168 | 28 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 28 | } | 170 | 30 | return narrow_integral || multiply_may_overflow; | 171 | 30 | } | 172 | 0 | return false; | 173 | 30 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 208 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 208 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 208 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 208 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 208 | using FromFieldType = typename FromDataType::FieldType; | 130 | 208 | using ToFieldType = typename ToDataType::FieldType; | 131 | 208 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 208 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 208 | UInt32 to_max_digits = 0; | 143 | 208 | UInt32 to_precision = 0; | 144 | 208 | UInt32 to_scale = 0; | 145 | | | 146 | 208 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 208 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 208 | const auto* to_decimal_type = | 150 | 208 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 208 | to_precision = to_decimal_type->get_precision(); | 152 | 208 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 208 | to_scale = to_decimal_type->get_scale(); | 155 | 208 | ToDataType::check_type_scale(to_scale); | 156 | 208 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 208 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 208 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 208 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 208 | if (to_scale > from_scale) { | 167 | 146 | multiply_may_overflow &= | 168 | 146 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 146 | } | 170 | 208 | return narrow_integral || multiply_may_overflow; | 171 | 208 | } | 172 | 0 | return false; | 173 | 208 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 195 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 195 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 195 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 195 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 195 | using FromFieldType = typename FromDataType::FieldType; | 130 | 195 | using ToFieldType = typename ToDataType::FieldType; | 131 | 195 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 195 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 195 | UInt32 to_max_digits = 0; | 143 | 195 | UInt32 to_precision = 0; | 144 | 195 | UInt32 to_scale = 0; | 145 | | | 146 | 195 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 195 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 195 | const auto* to_decimal_type = | 150 | 195 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 195 | to_precision = to_decimal_type->get_precision(); | 152 | 195 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 195 | to_scale = to_decimal_type->get_scale(); | 155 | 195 | ToDataType::check_type_scale(to_scale); | 156 | 195 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 195 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 195 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 195 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 195 | if (to_scale > from_scale) { | 167 | 133 | multiply_may_overflow &= | 168 | 133 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 133 | } | 170 | 195 | return narrow_integral || multiply_may_overflow; | 171 | 195 | } | 172 | 0 | return false; | 173 | 195 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 489 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 489 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 489 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 489 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 489 | using FromFieldType = typename FromDataType::FieldType; | 130 | 489 | using ToFieldType = typename ToDataType::FieldType; | 131 | 489 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 489 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 489 | UInt32 to_max_digits = 0; | 143 | 489 | UInt32 to_precision = 0; | 144 | 489 | UInt32 to_scale = 0; | 145 | | | 146 | 489 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 489 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 489 | const auto* to_decimal_type = | 150 | 489 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 489 | to_precision = to_decimal_type->get_precision(); | 152 | 489 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 489 | to_scale = to_decimal_type->get_scale(); | 155 | 489 | ToDataType::check_type_scale(to_scale); | 156 | 489 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 489 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 489 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 489 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 489 | if (to_scale > from_scale) { | 167 | 422 | multiply_may_overflow &= | 168 | 422 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 422 | } | 170 | 489 | return narrow_integral || multiply_may_overflow; | 171 | 489 | } | 172 | 0 | return false; | 173 | 489 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 2.30k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.30k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.30k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 2.30k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2.30k | using FromFieldType = typename FromDataType::FieldType; | 130 | 2.30k | using ToFieldType = typename ToDataType::FieldType; | 131 | 2.30k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2.30k | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 2.30k | UInt32 to_max_digits = 0; | 143 | 2.30k | UInt32 to_precision = 0; | 144 | 2.30k | UInt32 to_scale = 0; | 145 | | | 146 | 2.30k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 2.30k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 2.30k | const auto* to_decimal_type = | 150 | 2.30k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 2.30k | to_precision = to_decimal_type->get_precision(); | 152 | 2.30k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 2.30k | to_scale = to_decimal_type->get_scale(); | 155 | 2.30k | ToDataType::check_type_scale(to_scale); | 156 | 2.30k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 2.30k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2.30k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2.30k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2.30k | if (to_scale > from_scale) { | 167 | 544 | multiply_may_overflow &= | 168 | 544 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 544 | } | 170 | 2.30k | return narrow_integral || multiply_may_overflow; | 171 | 2.30k | } | 172 | 0 | return false; | 173 | 2.30k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 416 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 416 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 416 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 416 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 416 | using FromFieldType = typename FromDataType::FieldType; | 130 | 416 | using ToFieldType = typename ToDataType::FieldType; | 131 | 416 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 416 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 416 | UInt32 to_max_digits = 0; | 143 | 416 | UInt32 to_precision = 0; | 144 | 416 | UInt32 to_scale = 0; | 145 | | | 146 | 416 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 416 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 416 | const auto* to_decimal_type = | 150 | 416 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 416 | to_precision = to_decimal_type->get_precision(); | 152 | 416 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 416 | to_scale = to_decimal_type->get_scale(); | 155 | 416 | ToDataType::check_type_scale(to_scale); | 156 | 416 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 416 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 416 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 416 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 416 | if (to_scale > from_scale) { | 167 | 224 | multiply_may_overflow &= | 168 | 224 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 224 | } | 170 | 416 | return narrow_integral || multiply_may_overflow; | 171 | 416 | } | 172 | 0 | return false; | 173 | 416 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 355 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 355 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 355 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 355 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 355 | using FromFieldType = typename FromDataType::FieldType; | 130 | 355 | using ToFieldType = typename ToDataType::FieldType; | 131 | 355 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 355 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 355 | UInt32 to_max_digits = 0; | 143 | 355 | UInt32 to_precision = 0; | 144 | 355 | UInt32 to_scale = 0; | 145 | | | 146 | 355 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 355 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 355 | const auto* to_decimal_type = | 150 | 355 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 355 | to_precision = to_decimal_type->get_precision(); | 152 | 355 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 355 | to_scale = to_decimal_type->get_scale(); | 155 | 355 | ToDataType::check_type_scale(to_scale); | 156 | 355 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 355 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 355 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 355 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 355 | if (to_scale > from_scale) { | 167 | 196 | multiply_may_overflow &= | 168 | 196 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 196 | } | 170 | 355 | return narrow_integral || multiply_may_overflow; | 171 | 355 | } | 172 | 0 | return false; | 173 | 355 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 581 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 581 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 581 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 581 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 581 | using FromFieldType = typename FromDataType::FieldType; | 130 | 581 | using ToFieldType = typename ToDataType::FieldType; | 131 | 581 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 581 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 581 | UInt32 to_max_digits = 0; | 143 | 581 | UInt32 to_precision = 0; | 144 | 581 | UInt32 to_scale = 0; | 145 | | | 146 | 581 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 581 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 581 | const auto* to_decimal_type = | 150 | 581 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 581 | to_precision = to_decimal_type->get_precision(); | 152 | 581 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 581 | to_scale = to_decimal_type->get_scale(); | 155 | 581 | ToDataType::check_type_scale(to_scale); | 156 | 581 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 581 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 581 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 581 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 581 | if (to_scale > from_scale) { | 167 | 438 | multiply_may_overflow &= | 168 | 438 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 438 | } | 170 | 581 | return narrow_integral || multiply_may_overflow; | 171 | 581 | } | 172 | 0 | return false; | 173 | 581 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 911 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 911 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 911 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 911 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 911 | using FromFieldType = typename FromDataType::FieldType; | 130 | 911 | using ToFieldType = typename ToDataType::FieldType; | 131 | 911 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 911 | UInt32 from_scale = 0; | 133 | | | 134 | 911 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 911 | const auto* from_decimal_type = | 136 | 911 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 911 | from_precision = | 138 | 911 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 911 | from_scale = from_decimal_type->get_scale(); | 140 | 911 | } | 141 | | | 142 | 911 | UInt32 to_max_digits = 0; | 143 | 911 | UInt32 to_precision = 0; | 144 | 911 | UInt32 to_scale = 0; | 145 | | | 146 | 911 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 911 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 911 | const auto* to_decimal_type = | 150 | 911 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 911 | to_precision = to_decimal_type->get_precision(); | 152 | 911 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 911 | to_scale = to_decimal_type->get_scale(); | 155 | 911 | ToDataType::check_type_scale(to_scale); | 156 | 911 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 911 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 911 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 911 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 911 | if (to_scale > from_scale) { | 167 | 708 | multiply_may_overflow &= | 168 | 708 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 708 | } | 170 | 911 | return narrow_integral || multiply_may_overflow; | 171 | 911 | } | 172 | 0 | return false; | 173 | 911 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.31k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.31k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.31k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 1.31k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.31k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.31k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.31k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.31k | UInt32 from_scale = 0; | 133 | | | 134 | 1.31k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.31k | const auto* from_decimal_type = | 136 | 1.31k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.31k | from_precision = | 138 | 1.31k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.31k | from_scale = from_decimal_type->get_scale(); | 140 | 1.31k | } | 141 | | | 142 | 1.31k | UInt32 to_max_digits = 0; | 143 | 1.31k | UInt32 to_precision = 0; | 144 | 1.31k | UInt32 to_scale = 0; | 145 | | | 146 | 1.31k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.31k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.31k | const auto* to_decimal_type = | 150 | 1.31k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.31k | to_precision = to_decimal_type->get_precision(); | 152 | 1.31k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.31k | to_scale = to_decimal_type->get_scale(); | 155 | 1.31k | ToDataType::check_type_scale(to_scale); | 156 | 1.31k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 1.31k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.31k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.31k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.31k | if (to_scale > from_scale) { | 167 | 878 | multiply_may_overflow &= | 168 | 878 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 878 | } | 170 | 1.31k | return narrow_integral || multiply_may_overflow; | 171 | 1.31k | } | 172 | 0 | return false; | 173 | 1.31k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 468 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 468 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 468 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 468 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 468 | using FromFieldType = typename FromDataType::FieldType; | 130 | 468 | using ToFieldType = typename ToDataType::FieldType; | 131 | 468 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 468 | UInt32 from_scale = 0; | 133 | | | 134 | 468 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 468 | const auto* from_decimal_type = | 136 | 468 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 468 | from_precision = | 138 | 468 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 468 | from_scale = from_decimal_type->get_scale(); | 140 | 468 | } | 141 | | | 142 | 468 | UInt32 to_max_digits = 0; | 143 | 468 | UInt32 to_precision = 0; | 144 | 468 | UInt32 to_scale = 0; | 145 | | | 146 | 468 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 468 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 468 | const auto* to_decimal_type = | 150 | 468 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 468 | to_precision = to_decimal_type->get_precision(); | 152 | 468 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 468 | to_scale = to_decimal_type->get_scale(); | 155 | 468 | ToDataType::check_type_scale(to_scale); | 156 | 468 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 468 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 468 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 468 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 468 | if (to_scale > from_scale) { | 167 | 139 | multiply_may_overflow &= | 168 | 139 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 139 | } | 170 | 468 | return narrow_integral || multiply_may_overflow; | 171 | 468 | } | 172 | 0 | return false; | 173 | 468 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ Line | Count | Source | 120 | 2.43k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.43k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.43k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 2.43k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2.43k | using FromFieldType = typename FromDataType::FieldType; | 130 | 2.43k | using ToFieldType = typename ToDataType::FieldType; | 131 | 2.43k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2.43k | UInt32 from_scale = 0; | 133 | | | 134 | 2.43k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 2.43k | const auto* from_decimal_type = | 136 | 2.43k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 2.43k | from_precision = | 138 | 2.43k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 2.43k | from_scale = from_decimal_type->get_scale(); | 140 | 2.43k | } | 141 | | | 142 | 2.43k | UInt32 to_max_digits = 0; | 143 | 2.43k | UInt32 to_precision = 0; | 144 | 2.43k | UInt32 to_scale = 0; | 145 | | | 146 | 2.43k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 2.43k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 2.43k | const auto* to_decimal_type = | 150 | 2.43k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 2.43k | to_precision = to_decimal_type->get_precision(); | 152 | 2.43k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 2.43k | to_scale = to_decimal_type->get_scale(); | 155 | 2.43k | ToDataType::check_type_scale(to_scale); | 156 | 2.43k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 2.43k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2.43k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2.43k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2.43k | if (to_scale > from_scale) { | 167 | 857 | multiply_may_overflow &= | 168 | 857 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 857 | } | 170 | 2.43k | return narrow_integral || multiply_may_overflow; | 171 | 2.43k | } | 172 | 0 | return false; | 173 | 2.43k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_35EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.32k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.32k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.32k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 1.32k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.32k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.32k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.32k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.32k | UInt32 from_scale = 0; | 133 | | | 134 | 1.32k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.32k | const auto* from_decimal_type = | 136 | 1.32k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.32k | from_precision = | 138 | 1.32k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.32k | from_scale = from_decimal_type->get_scale(); | 140 | 1.32k | } | 141 | | | 142 | 1.32k | UInt32 to_max_digits = 0; | 143 | 1.32k | UInt32 to_precision = 0; | 144 | 1.32k | UInt32 to_scale = 0; | 145 | | | 146 | 1.32k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.32k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.32k | const auto* to_decimal_type = | 150 | 1.32k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.32k | to_precision = to_decimal_type->get_precision(); | 152 | 1.32k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.32k | to_scale = to_decimal_type->get_scale(); | 155 | 1.32k | ToDataType::check_type_scale(to_scale); | 156 | 1.32k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 1.32k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.32k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.32k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.32k | if (to_scale > from_scale) { | 167 | 530 | multiply_may_overflow &= | 168 | 530 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 530 | } | 170 | 1.32k | return narrow_integral || multiply_may_overflow; | 171 | 1.32k | } | 172 | 0 | return false; | 173 | 1.32k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 6.53k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6.53k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6.53k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 6.53k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 6.53k | return false; | 127 | 6.53k | } | 128 | 6.53k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 6.53k | using FromFieldType = typename FromDataType::FieldType; | 130 | 6.53k | using ToFieldType = typename ToDataType::FieldType; | 131 | 6.53k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 6.53k | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 6.53k | UInt32 to_max_digits = 0; | 143 | 6.53k | UInt32 to_precision = 0; | 144 | 6.53k | UInt32 to_scale = 0; | 145 | | | 146 | 6.53k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 6.53k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 6.53k | const auto* to_decimal_type = | 150 | 6.53k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 6.53k | to_precision = to_decimal_type->get_precision(); | 152 | 6.53k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 6.53k | to_scale = to_decimal_type->get_scale(); | 155 | 6.53k | ToDataType::check_type_scale(to_scale); | 156 | 6.53k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 6.53k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 6.53k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 6.53k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 6.53k | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 6.53k | return narrow_integral || multiply_may_overflow; | 171 | 6.53k | } | 172 | 0 | return false; | 173 | 6.53k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 14 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 14 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 14 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 14 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 14 | using FromFieldType = typename FromDataType::FieldType; | 130 | 14 | using ToFieldType = typename ToDataType::FieldType; | 131 | 14 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 14 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 14 | UInt32 to_max_digits = 0; | 143 | 14 | UInt32 to_precision = 0; | 144 | 14 | UInt32 to_scale = 0; | 145 | | | 146 | 14 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 14 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 14 | const auto* to_decimal_type = | 150 | 14 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 14 | to_precision = to_decimal_type->get_precision(); | 152 | 14 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 14 | to_scale = to_decimal_type->get_scale(); | 155 | 14 | ToDataType::check_type_scale(to_scale); | 156 | 14 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 14 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 14 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 14 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 14 | if (to_scale > from_scale) { | 167 | 12 | multiply_may_overflow &= | 168 | 12 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 12 | } | 170 | 14 | return narrow_integral || multiply_may_overflow; | 171 | 14 | } | 172 | 0 | return false; | 173 | 14 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 189 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 189 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 189 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 189 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 189 | using FromFieldType = typename FromDataType::FieldType; | 130 | 189 | using ToFieldType = typename ToDataType::FieldType; | 131 | 189 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 189 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 189 | UInt32 to_max_digits = 0; | 143 | 189 | UInt32 to_precision = 0; | 144 | 189 | UInt32 to_scale = 0; | 145 | | | 146 | 189 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 189 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 189 | const auto* to_decimal_type = | 150 | 189 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 189 | to_precision = to_decimal_type->get_precision(); | 152 | 189 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 189 | to_scale = to_decimal_type->get_scale(); | 155 | 189 | ToDataType::check_type_scale(to_scale); | 156 | 189 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 189 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 189 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 189 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 189 | if (to_scale > from_scale) { | 167 | 127 | multiply_may_overflow &= | 168 | 127 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 127 | } | 170 | 189 | return narrow_integral || multiply_may_overflow; | 171 | 189 | } | 172 | 0 | return false; | 173 | 189 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_4EEESE_EEEEbSI_ Line | Count | Source | 120 | 187 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 187 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 187 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 187 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 187 | using FromFieldType = typename FromDataType::FieldType; | 130 | 187 | using ToFieldType = typename ToDataType::FieldType; | 131 | 187 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 187 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 187 | UInt32 to_max_digits = 0; | 143 | 187 | UInt32 to_precision = 0; | 144 | 187 | UInt32 to_scale = 0; | 145 | | | 146 | 187 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 187 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 187 | const auto* to_decimal_type = | 150 | 187 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 187 | to_precision = to_decimal_type->get_precision(); | 152 | 187 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 187 | to_scale = to_decimal_type->get_scale(); | 155 | 187 | ToDataType::check_type_scale(to_scale); | 156 | 187 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 187 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 187 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 187 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 187 | if (to_scale > from_scale) { | 167 | 125 | multiply_may_overflow &= | 168 | 125 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 125 | } | 170 | 187 | return narrow_integral || multiply_may_overflow; | 171 | 187 | } | 172 | 0 | return false; | 173 | 187 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 205 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 205 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 205 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 205 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 205 | using FromFieldType = typename FromDataType::FieldType; | 130 | 205 | using ToFieldType = typename ToDataType::FieldType; | 131 | 205 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 205 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 205 | UInt32 to_max_digits = 0; | 143 | 205 | UInt32 to_precision = 0; | 144 | 205 | UInt32 to_scale = 0; | 145 | | | 146 | 205 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 205 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 205 | const auto* to_decimal_type = | 150 | 205 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 205 | to_precision = to_decimal_type->get_precision(); | 152 | 205 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 205 | to_scale = to_decimal_type->get_scale(); | 155 | 205 | ToDataType::check_type_scale(to_scale); | 156 | 205 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 205 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 205 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 205 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 205 | if (to_scale > from_scale) { | 167 | 138 | multiply_may_overflow &= | 168 | 138 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 138 | } | 170 | 205 | return narrow_integral || multiply_may_overflow; | 171 | 205 | } | 172 | 0 | return false; | 173 | 205 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_6EEESE_EEEEbSI_ Line | Count | Source | 120 | 187 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 187 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 187 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 187 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 187 | using FromFieldType = typename FromDataType::FieldType; | 130 | 187 | using ToFieldType = typename ToDataType::FieldType; | 131 | 187 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 187 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 187 | UInt32 to_max_digits = 0; | 143 | 187 | UInt32 to_precision = 0; | 144 | 187 | UInt32 to_scale = 0; | 145 | | | 146 | 187 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 187 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 187 | const auto* to_decimal_type = | 150 | 187 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 187 | to_precision = to_decimal_type->get_precision(); | 152 | 187 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 187 | to_scale = to_decimal_type->get_scale(); | 155 | 187 | ToDataType::check_type_scale(to_scale); | 156 | 187 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 187 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 187 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 187 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 187 | if (to_scale > from_scale) { | 167 | 125 | multiply_may_overflow &= | 168 | 125 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 125 | } | 170 | 187 | return narrow_integral || multiply_may_overflow; | 171 | 187 | } | 172 | 0 | return false; | 173 | 187 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_7EEESE_EEEEbSI_ Line | Count | Source | 120 | 276 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 276 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 276 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 276 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 276 | using FromFieldType = typename FromDataType::FieldType; | 130 | 276 | using ToFieldType = typename ToDataType::FieldType; | 131 | 276 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 276 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 276 | UInt32 to_max_digits = 0; | 143 | 276 | UInt32 to_precision = 0; | 144 | 276 | UInt32 to_scale = 0; | 145 | | | 146 | 276 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 276 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 276 | const auto* to_decimal_type = | 150 | 276 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 276 | to_precision = to_decimal_type->get_precision(); | 152 | 276 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 276 | to_scale = to_decimal_type->get_scale(); | 155 | 276 | ToDataType::check_type_scale(to_scale); | 156 | 276 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 276 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 276 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 276 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 276 | if (to_scale > from_scale) { | 167 | 198 | multiply_may_overflow &= | 168 | 198 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 198 | } | 170 | 276 | return narrow_integral || multiply_may_overflow; | 171 | 276 | } | 172 | 0 | return false; | 173 | 276 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 311 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 311 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 311 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 311 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 311 | using FromFieldType = typename FromDataType::FieldType; | 130 | 311 | using ToFieldType = typename ToDataType::FieldType; | 131 | 311 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 311 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 311 | UInt32 to_max_digits = 0; | 143 | 311 | UInt32 to_precision = 0; | 144 | 311 | UInt32 to_scale = 0; | 145 | | | 146 | 311 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 311 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 311 | const auto* to_decimal_type = | 150 | 311 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 311 | to_precision = to_decimal_type->get_precision(); | 152 | 311 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 311 | to_scale = to_decimal_type->get_scale(); | 155 | 311 | ToDataType::check_type_scale(to_scale); | 156 | 311 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 311 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 311 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 311 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 311 | if (to_scale > from_scale) { | 167 | 192 | multiply_may_overflow &= | 168 | 192 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 192 | } | 170 | 311 | return narrow_integral || multiply_may_overflow; | 171 | 311 | } | 172 | 0 | return false; | 173 | 311 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_9EEESE_EEEEbSI_ Line | Count | Source | 120 | 417 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 417 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 417 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 417 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 417 | using FromFieldType = typename FromDataType::FieldType; | 130 | 417 | using ToFieldType = typename ToDataType::FieldType; | 131 | 417 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 417 | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 417 | UInt32 to_max_digits = 0; | 143 | 417 | UInt32 to_precision = 0; | 144 | 417 | UInt32 to_scale = 0; | 145 | | | 146 | 417 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 417 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 417 | const auto* to_decimal_type = | 150 | 417 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 417 | to_precision = to_decimal_type->get_precision(); | 152 | 417 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 417 | to_scale = to_decimal_type->get_scale(); | 155 | 417 | ToDataType::check_type_scale(to_scale); | 156 | 417 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 417 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 417 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 417 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 417 | if (to_scale > from_scale) { | 167 | 274 | multiply_may_overflow &= | 168 | 274 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 274 | } | 170 | 417 | return narrow_integral || multiply_may_overflow; | 171 | 417 | } | 172 | 0 | return false; | 173 | 417 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 735 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 735 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 735 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 735 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 735 | using FromFieldType = typename FromDataType::FieldType; | 130 | 735 | using ToFieldType = typename ToDataType::FieldType; | 131 | 735 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 735 | UInt32 from_scale = 0; | 133 | | | 134 | 735 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 735 | const auto* from_decimal_type = | 136 | 735 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 735 | from_precision = | 138 | 735 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 735 | from_scale = from_decimal_type->get_scale(); | 140 | 735 | } | 141 | | | 142 | 735 | UInt32 to_max_digits = 0; | 143 | 735 | UInt32 to_precision = 0; | 144 | 735 | UInt32 to_scale = 0; | 145 | | | 146 | 735 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 735 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 735 | const auto* to_decimal_type = | 150 | 735 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 735 | to_precision = to_decimal_type->get_precision(); | 152 | 735 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 735 | to_scale = to_decimal_type->get_scale(); | 155 | 735 | ToDataType::check_type_scale(to_scale); | 156 | 735 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 735 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 735 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 735 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 735 | if (to_scale > from_scale) { | 167 | 605 | multiply_may_overflow &= | 168 | 605 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 605 | } | 170 | 735 | return narrow_integral || multiply_may_overflow; | 171 | 735 | } | 172 | 0 | return false; | 173 | 735 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.18k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.18k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.18k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 1.18k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.18k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.18k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.18k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.18k | UInt32 from_scale = 0; | 133 | | | 134 | 1.18k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.18k | const auto* from_decimal_type = | 136 | 1.18k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.18k | from_precision = | 138 | 1.18k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.18k | from_scale = from_decimal_type->get_scale(); | 140 | 1.18k | } | 141 | | | 142 | 1.18k | UInt32 to_max_digits = 0; | 143 | 1.18k | UInt32 to_precision = 0; | 144 | 1.18k | UInt32 to_scale = 0; | 145 | | | 146 | 1.18k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.18k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.18k | const auto* to_decimal_type = | 150 | 1.18k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.18k | to_precision = to_decimal_type->get_precision(); | 152 | 1.18k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.18k | to_scale = to_decimal_type->get_scale(); | 155 | 1.18k | ToDataType::check_type_scale(to_scale); | 156 | 1.18k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 1.18k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.18k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.18k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.18k | if (to_scale > from_scale) { | 167 | 952 | multiply_may_overflow &= | 168 | 952 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 952 | } | 170 | 1.18k | return narrow_integral || multiply_may_overflow; | 171 | 1.18k | } | 172 | 0 | return false; | 173 | 1.18k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_20EEESE_EEEEbSI_ Line | Count | Source | 120 | 280 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 280 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 280 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 280 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 280 | using FromFieldType = typename FromDataType::FieldType; | 130 | 280 | using ToFieldType = typename ToDataType::FieldType; | 131 | 280 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 280 | UInt32 from_scale = 0; | 133 | | | 134 | 280 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 280 | const auto* from_decimal_type = | 136 | 280 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 280 | from_precision = | 138 | 280 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 280 | from_scale = from_decimal_type->get_scale(); | 140 | 280 | } | 141 | | | 142 | 280 | UInt32 to_max_digits = 0; | 143 | 280 | UInt32 to_precision = 0; | 144 | 280 | UInt32 to_scale = 0; | 145 | | | 146 | 280 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 280 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 280 | const auto* to_decimal_type = | 150 | 280 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 280 | to_precision = to_decimal_type->get_precision(); | 152 | 280 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 280 | to_scale = to_decimal_type->get_scale(); | 155 | 280 | ToDataType::check_type_scale(to_scale); | 156 | 280 | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 280 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 280 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 280 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 280 | if (to_scale > from_scale) { | 167 | 152 | multiply_may_overflow &= | 168 | 152 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 152 | } | 170 | 280 | return narrow_integral || multiply_may_overflow; | 171 | 280 | } | 172 | 0 | return false; | 173 | 280 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 1.46k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.46k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.46k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 1.46k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.46k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.46k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.46k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.46k | UInt32 from_scale = 0; | 133 | | | 134 | 1.46k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.46k | const auto* from_decimal_type = | 136 | 1.46k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.46k | from_precision = | 138 | 1.46k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.46k | from_scale = from_decimal_type->get_scale(); | 140 | 1.46k | } | 141 | | | 142 | 1.46k | UInt32 to_max_digits = 0; | 143 | 1.46k | UInt32 to_precision = 0; | 144 | 1.46k | UInt32 to_scale = 0; | 145 | | | 146 | 1.46k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.46k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.46k | const auto* to_decimal_type = | 150 | 1.46k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.46k | to_precision = to_decimal_type->get_precision(); | 152 | 1.46k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.46k | to_scale = to_decimal_type->get_scale(); | 155 | 1.46k | ToDataType::check_type_scale(to_scale); | 156 | 1.46k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 1.46k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.46k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.46k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.46k | if (to_scale > from_scale) { | 167 | 897 | multiply_may_overflow &= | 168 | 897 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 897 | } | 170 | 1.46k | return narrow_integral || multiply_may_overflow; | 171 | 1.46k | } | 172 | 0 | return false; | 173 | 1.46k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ Line | Count | Source | 120 | 1.19k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.19k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.19k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 1.19k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.19k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.19k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.19k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.19k | UInt32 from_scale = 0; | 133 | | | 134 | 1.19k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.19k | const auto* from_decimal_type = | 136 | 1.19k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.19k | from_precision = | 138 | 1.19k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.19k | from_scale = from_decimal_type->get_scale(); | 140 | 1.19k | } | 141 | | | 142 | 1.19k | UInt32 to_max_digits = 0; | 143 | 1.19k | UInt32 to_precision = 0; | 144 | 1.19k | UInt32 to_scale = 0; | 145 | | | 146 | 1.19k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.19k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.19k | const auto* to_decimal_type = | 150 | 1.19k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.19k | to_precision = to_decimal_type->get_precision(); | 152 | 1.19k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.19k | to_scale = to_decimal_type->get_scale(); | 155 | 1.19k | ToDataType::check_type_scale(to_scale); | 156 | 1.19k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 1.19k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.19k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.19k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.19k | if (to_scale > from_scale) { | 167 | 604 | multiply_may_overflow &= | 168 | 604 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 604 | } | 170 | 1.19k | return narrow_integral || multiply_may_overflow; | 171 | 1.19k | } | 172 | 0 | return false; | 173 | 1.19k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 120 | 7.06k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 7.06k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 7.06k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 7.06k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 7.06k | return false; | 127 | 7.06k | } | 128 | 7.06k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 7.06k | using FromFieldType = typename FromDataType::FieldType; | 130 | 7.06k | using ToFieldType = typename ToDataType::FieldType; | 131 | 7.06k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 7.06k | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | 7.06k | UInt32 to_max_digits = 0; | 143 | 7.06k | UInt32 to_precision = 0; | 144 | 7.06k | UInt32 to_scale = 0; | 145 | | | 146 | 7.06k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 7.06k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 7.06k | const auto* to_decimal_type = | 150 | 7.06k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 7.06k | to_precision = to_decimal_type->get_precision(); | 152 | 7.06k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 7.06k | to_scale = to_decimal_type->get_scale(); | 155 | 7.06k | ToDataType::check_type_scale(to_scale); | 156 | 7.06k | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 7.06k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 7.06k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 7.06k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 7.06k | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 7.06k | return narrow_integral || multiply_may_overflow; | 171 | 7.06k | } | 172 | 0 | return false; | 173 | 7.06k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ Line | Count | Source | 120 | 6 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 6 | return false; | 173 | 6 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ Line | Count | Source | 120 | 3 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 3 | return false; | 173 | 3 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Line | Count | Source | 120 | 26 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 26 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 26 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 26 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 26 | return false; | 127 | 26 | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 26 | return false; | 173 | 26 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Line | Count | Source | 120 | 10 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 10 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 10 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 10 | return false; | 173 | 10 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Line | Count | Source | 120 | 14 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 14 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 14 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 14 | return false; | 173 | 14 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Line | Count | Source | 120 | 14 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 14 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 14 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 14 | return false; | 173 | 14 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Line | Count | Source | 120 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 4 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 4 | using FromFieldType = typename FromDataType::FieldType; | 130 | 4 | using ToFieldType = typename ToDataType::FieldType; | 131 | 4 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 4 | UInt32 from_scale = 0; | 133 | | | 134 | 4 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 4 | const auto* from_decimal_type = | 136 | 4 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 4 | from_precision = | 138 | 4 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 4 | from_scale = from_decimal_type->get_scale(); | 140 | 4 | } | 141 | | | 142 | 4 | UInt32 to_max_digits = 0; | 143 | 4 | UInt32 to_precision = 0; | 144 | 4 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 4 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 4 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 4 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 4 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 4 | return narrow_integral || multiply_may_overflow; | 171 | 4 | } | 172 | 0 | return false; | 173 | 4 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ Line | Count | Source | 120 | 371 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 371 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 371 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 371 | return false; | 173 | 371 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ Line | Count | Source | 120 | 222 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 222 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 222 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 222 | return false; | 173 | 222 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ Line | Count | Source | 120 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 1 | return false; | 173 | 1 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Line | Count | Source | 120 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 4 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 4 | return false; | 173 | 4 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Line | Count | Source | 120 | 6.03k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6.03k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6.03k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 6.03k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 6.03k | return false; | 127 | 6.03k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 6.03k | return false; | 173 | 6.03k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Line | Count | Source | 120 | 13 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 13 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 13 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 13 | return false; | 173 | 13 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Line | Count | Source | 120 | 40 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 40 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 40 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 40 | return false; | 173 | 40 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Line | Count | Source | 120 | 19 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 19 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 19 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 19 | return false; | 173 | 19 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Line | Count | Source | 120 | 12 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 12 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 12 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 12 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 12 | using FromFieldType = typename FromDataType::FieldType; | 130 | 12 | using ToFieldType = typename ToDataType::FieldType; | 131 | 12 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 12 | UInt32 from_scale = 0; | 133 | | | 134 | 12 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 12 | const auto* from_decimal_type = | 136 | 12 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 12 | from_precision = | 138 | 12 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 12 | from_scale = from_decimal_type->get_scale(); | 140 | 12 | } | 141 | | | 142 | 12 | UInt32 to_max_digits = 0; | 143 | 12 | UInt32 to_precision = 0; | 144 | 12 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 12 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 12 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 12 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 12 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 12 | return narrow_integral || multiply_may_overflow; | 171 | 12 | } | 172 | 0 | return false; | 173 | 12 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Line | Count | Source | 120 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 8 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 8 | using FromFieldType = typename FromDataType::FieldType; | 130 | 8 | using ToFieldType = typename ToDataType::FieldType; | 131 | 8 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 8 | UInt32 from_scale = 0; | 133 | | | 134 | 8 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 8 | const auto* from_decimal_type = | 136 | 8 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 8 | from_precision = | 138 | 8 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 8 | from_scale = from_decimal_type->get_scale(); | 140 | 8 | } | 141 | | | 142 | 8 | UInt32 to_max_digits = 0; | 143 | 8 | UInt32 to_precision = 0; | 144 | 8 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 8 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 8 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 8 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 8 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 8 | return narrow_integral || multiply_may_overflow; | 171 | 8 | } | 172 | 0 | return false; | 173 | 8 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Line | Count | Source | 120 | 5 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 5 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 5 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 5 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 5 | using FromFieldType = typename FromDataType::FieldType; | 130 | 5 | using ToFieldType = typename ToDataType::FieldType; | 131 | 5 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 5 | UInt32 from_scale = 0; | 133 | | | 134 | 5 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 5 | const auto* from_decimal_type = | 136 | 5 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 5 | from_precision = | 138 | 5 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 5 | from_scale = from_decimal_type->get_scale(); | 140 | 5 | } | 141 | | | 142 | 5 | UInt32 to_max_digits = 0; | 143 | 5 | UInt32 to_precision = 0; | 144 | 5 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | 5 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 5 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 5 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 5 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 5 | return narrow_integral || multiply_may_overflow; | 171 | 5 | } | 172 | 0 | return false; | 173 | 5 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ Line | Count | Source | 120 | 378 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 378 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 378 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 378 | return false; | 173 | 378 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ Line | Count | Source | 120 | 149 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 149 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 149 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 149 | return false; | 173 | 149 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ Line | Count | Source | 120 | 344 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 344 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 344 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 344 | return false; | 173 | 344 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Line | Count | Source | 120 | 6 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 6 | return false; | 173 | 6 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Line | Count | Source | 120 | 46 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 46 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 46 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 46 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 46 | return false; | 127 | 46 | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 46 | return false; | 173 | 46 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Line | Count | Source | 120 | 3.96k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3.96k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3.96k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 3.96k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 3.96k | return false; | 127 | 3.96k | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 3.96k | return false; | 173 | 3.96k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ Line | Count | Source | 120 | 5 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 5 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 5 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 5 | return false; | 173 | 5 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Line | Count | Source | 120 | 25 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 25 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 25 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 25 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 25 | return false; | 127 | 25 | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 25 | return false; | 173 | 25 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Line | Count | Source | 120 | 28 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 28 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 28 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 28 | return false; | 173 | 28 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ Line | Count | Source | 120 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 21 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 21 | return false; | 173 | 21 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Line | Count | Source | 120 | 33 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 33 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 33 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 33 | return false; | 173 | 33 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Line | Count | Source | 120 | 10 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 10 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 10 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 10 | return false; | 173 | 10 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Line | Count | Source | 120 | 3 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 3 | return false; | 173 | 3 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ Line | Count | Source | 120 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 7 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 7 | return false; | 173 | 7 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Line | Count | Source | 120 | 19 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 19 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 19 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 19 | return false; | 173 | 19 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Line | Count | Source | 120 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 2 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2 | using FromFieldType = typename FromDataType::FieldType; | 130 | 2 | using ToFieldType = typename ToDataType::FieldType; | 131 | 2 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2 | UInt32 from_scale = 0; | 133 | | | 134 | 2 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 2 | const auto* from_decimal_type = | 136 | 2 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 2 | from_precision = | 138 | 2 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 2 | from_scale = from_decimal_type->get_scale(); | 140 | 2 | } | 141 | | | 142 | 2 | UInt32 to_max_digits = 0; | 143 | 2 | UInt32 to_precision = 0; | 144 | 2 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 2 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 2 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 2 | to_precision = to_max_digits; | 160 | 2 | } | 161 | | | 162 | 2 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 2 | return narrow_integral || multiply_may_overflow; | 171 | 2 | } | 172 | 0 | return false; | 173 | 2 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Line | Count | Source | 120 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 2 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2 | using FromFieldType = typename FromDataType::FieldType; | 130 | 2 | using ToFieldType = typename ToDataType::FieldType; | 131 | 2 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2 | UInt32 from_scale = 0; | 133 | | | 134 | 2 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 2 | const auto* from_decimal_type = | 136 | 2 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 2 | from_precision = | 138 | 2 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 2 | from_scale = from_decimal_type->get_scale(); | 140 | 2 | } | 141 | | | 142 | 2 | UInt32 to_max_digits = 0; | 143 | 2 | UInt32 to_precision = 0; | 144 | 2 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 2 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 2 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 2 | to_precision = to_max_digits; | 160 | 2 | } | 161 | | | 162 | 2 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 2 | return narrow_integral || multiply_may_overflow; | 171 | 2 | } | 172 | 0 | return false; | 173 | 2 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Line | Count | Source | 120 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 1 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1 | using FromFieldType = typename FromDataType::FieldType; | 130 | 1 | using ToFieldType = typename ToDataType::FieldType; | 131 | 1 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1 | UInt32 from_scale = 0; | 133 | | | 134 | 1 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1 | const auto* from_decimal_type = | 136 | 1 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1 | from_precision = | 138 | 1 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1 | from_scale = from_decimal_type->get_scale(); | 140 | 1 | } | 141 | | | 142 | 1 | UInt32 to_max_digits = 0; | 143 | 1 | UInt32 to_precision = 0; | 144 | 1 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 1 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 1 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 1 | to_precision = to_max_digits; | 160 | 1 | } | 161 | | | 162 | 1 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 1 | return narrow_integral || multiply_may_overflow; | 171 | 1 | } | 172 | 0 | return false; | 173 | 1 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Line | Count | Source | 120 | 11 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 11 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 11 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | 11 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 11 | using FromFieldType = typename FromDataType::FieldType; | 130 | 11 | using ToFieldType = typename ToDataType::FieldType; | 131 | 11 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 11 | UInt32 from_scale = 0; | 133 | | | 134 | 11 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 11 | const auto* from_decimal_type = | 136 | 11 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 11 | from_precision = | 138 | 11 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 11 | from_scale = from_decimal_type->get_scale(); | 140 | 11 | } | 141 | | | 142 | 11 | UInt32 to_max_digits = 0; | 143 | 11 | UInt32 to_precision = 0; | 144 | 11 | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | 11 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 11 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 11 | to_precision = to_max_digits; | 160 | 11 | } | 161 | | | 162 | 11 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 11 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 11 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 11 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 11 | return narrow_integral || multiply_may_overflow; | 171 | 11 | } | 172 | 0 | return false; | 173 | 11 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ Line | Count | Source | 120 | 9 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 9 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 9 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 9 | return false; | 173 | 9 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ Line | Count | Source | 120 | 19 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 19 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 19 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | | return false; | 127 | | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 19 | return false; | 173 | 19 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Line | Count | Source | 120 | 311 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 311 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 311 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 311 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 311 | return false; | 127 | 311 | } | 128 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | | using FromFieldType = typename FromDataType::FieldType; | 130 | | using ToFieldType = typename ToDataType::FieldType; | 131 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | | UInt32 from_scale = 0; | 133 | | | 134 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | | const auto* from_decimal_type = | 136 | | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | | from_precision = | 138 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | | from_scale = from_decimal_type->get_scale(); | 140 | | } | 141 | | | 142 | | UInt32 to_max_digits = 0; | 143 | | UInt32 to_precision = 0; | 144 | | UInt32 to_scale = 0; | 145 | | | 146 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | | const auto* to_decimal_type = | 150 | | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | | to_precision = to_decimal_type->get_precision(); | 152 | | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | | to_scale = to_decimal_type->get_scale(); | 155 | | ToDataType::check_type_scale(to_scale); | 156 | | } | 157 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | | to_precision = to_max_digits; | 160 | | } | 161 | | | 162 | | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | | if (to_scale > from_scale) { | 167 | | multiply_may_overflow &= | 168 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | | } | 170 | | return narrow_integral || multiply_may_overflow; | 171 | | } | 172 | 311 | return false; | 173 | 311 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeStringESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE2EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE3EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE4EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE5EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE6EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE7EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE8EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeNumberILNS_13PrimitiveTypeE9EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeDateESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeDateV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_16DataTypeDateTimeESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_14DataTypeTimeV2ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv4ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_INS_12DataTypeIPv6ESC_EEEEbSG_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ENKUlSG_E_clINSB_ISC_SC_EEEEbSG_ |
174 | 268k | }; function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ Line | Count | Source | 110 | 2.47k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 2.47k | using Types = std::decay_t<decltype(types)>; | 112 | 2.47k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 2.47k | return call_on_index_and_data_type< | 120 | 2.47k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.47k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.47k | using FromDataType = typename Types2::LeftType; | 123 | 2.47k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 2.47k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 2.47k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 2.47k | return false; | 127 | 2.47k | } | 128 | 2.47k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2.47k | using FromFieldType = typename FromDataType::FieldType; | 130 | 2.47k | using ToFieldType = typename ToDataType::FieldType; | 131 | 2.47k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2.47k | UInt32 from_scale = 0; | 133 | | | 134 | 2.47k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 2.47k | const auto* from_decimal_type = | 136 | 2.47k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 2.47k | from_precision = | 138 | 2.47k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 2.47k | from_scale = from_decimal_type->get_scale(); | 140 | 2.47k | } | 141 | | | 142 | 2.47k | UInt32 to_max_digits = 0; | 143 | 2.47k | UInt32 to_precision = 0; | 144 | 2.47k | UInt32 to_scale = 0; | 145 | | | 146 | 2.47k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 2.47k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 2.47k | const auto* to_decimal_type = | 150 | 2.47k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 2.47k | to_precision = to_decimal_type->get_precision(); | 152 | 2.47k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 2.47k | to_scale = to_decimal_type->get_scale(); | 155 | 2.47k | ToDataType::check_type_scale(to_scale); | 156 | 2.47k | } | 157 | 2.47k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 2.47k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 2.47k | to_precision = to_max_digits; | 160 | 2.47k | } | 161 | | | 162 | 2.47k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2.47k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2.47k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2.47k | if (to_scale > from_scale) { | 167 | 2.47k | multiply_may_overflow &= | 168 | 2.47k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 2.47k | } | 170 | 2.47k | return narrow_integral || multiply_may_overflow; | 171 | 2.47k | } | 172 | 2.47k | return false; | 173 | 2.47k | }); | 174 | 2.47k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ Line | Count | Source | 110 | 6.44k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 6.44k | using Types = std::decay_t<decltype(types)>; | 112 | 6.44k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 6.44k | return call_on_index_and_data_type< | 120 | 6.44k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6.44k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6.44k | using FromDataType = typename Types2::LeftType; | 123 | 6.44k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 6.44k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 6.44k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 6.44k | return false; | 127 | 6.44k | } | 128 | 6.44k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 6.44k | using FromFieldType = typename FromDataType::FieldType; | 130 | 6.44k | using ToFieldType = typename ToDataType::FieldType; | 131 | 6.44k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 6.44k | UInt32 from_scale = 0; | 133 | | | 134 | 6.44k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 6.44k | const auto* from_decimal_type = | 136 | 6.44k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 6.44k | from_precision = | 138 | 6.44k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 6.44k | from_scale = from_decimal_type->get_scale(); | 140 | 6.44k | } | 141 | | | 142 | 6.44k | UInt32 to_max_digits = 0; | 143 | 6.44k | UInt32 to_precision = 0; | 144 | 6.44k | UInt32 to_scale = 0; | 145 | | | 146 | 6.44k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 6.44k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 6.44k | const auto* to_decimal_type = | 150 | 6.44k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 6.44k | to_precision = to_decimal_type->get_precision(); | 152 | 6.44k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 6.44k | to_scale = to_decimal_type->get_scale(); | 155 | 6.44k | ToDataType::check_type_scale(to_scale); | 156 | 6.44k | } | 157 | 6.44k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 6.44k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 6.44k | to_precision = to_max_digits; | 160 | 6.44k | } | 161 | | | 162 | 6.44k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 6.44k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 6.44k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 6.44k | if (to_scale > from_scale) { | 167 | 6.44k | multiply_may_overflow &= | 168 | 6.44k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 6.44k | } | 170 | 6.44k | return narrow_integral || multiply_may_overflow; | 171 | 6.44k | } | 172 | 6.44k | return false; | 173 | 6.44k | }); | 174 | 6.44k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ Line | Count | Source | 110 | 6.60k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 6.60k | using Types = std::decay_t<decltype(types)>; | 112 | 6.60k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 6.60k | return call_on_index_and_data_type< | 120 | 6.60k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6.60k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6.60k | using FromDataType = typename Types2::LeftType; | 123 | 6.60k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 6.60k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 6.60k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 6.60k | return false; | 127 | 6.60k | } | 128 | 6.60k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 6.60k | using FromFieldType = typename FromDataType::FieldType; | 130 | 6.60k | using ToFieldType = typename ToDataType::FieldType; | 131 | 6.60k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 6.60k | UInt32 from_scale = 0; | 133 | | | 134 | 6.60k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 6.60k | const auto* from_decimal_type = | 136 | 6.60k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 6.60k | from_precision = | 138 | 6.60k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 6.60k | from_scale = from_decimal_type->get_scale(); | 140 | 6.60k | } | 141 | | | 142 | 6.60k | UInt32 to_max_digits = 0; | 143 | 6.60k | UInt32 to_precision = 0; | 144 | 6.60k | UInt32 to_scale = 0; | 145 | | | 146 | 6.60k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 6.60k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 6.60k | const auto* to_decimal_type = | 150 | 6.60k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 6.60k | to_precision = to_decimal_type->get_precision(); | 152 | 6.60k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 6.60k | to_scale = to_decimal_type->get_scale(); | 155 | 6.60k | ToDataType::check_type_scale(to_scale); | 156 | 6.60k | } | 157 | 6.60k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 6.60k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 6.60k | to_precision = to_max_digits; | 160 | 6.60k | } | 161 | | | 162 | 6.60k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 6.60k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 6.60k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 6.60k | if (to_scale > from_scale) { | 167 | 6.60k | multiply_may_overflow &= | 168 | 6.60k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 6.60k | } | 170 | 6.60k | return narrow_integral || multiply_may_overflow; | 171 | 6.60k | } | 172 | 6.60k | return false; | 173 | 6.60k | }); | 174 | 6.60k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ Line | Count | Source | 110 | 35.9k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 35.9k | using Types = std::decay_t<decltype(types)>; | 112 | 35.9k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 35.9k | return call_on_index_and_data_type< | 120 | 35.9k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 35.9k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 35.9k | using FromDataType = typename Types2::LeftType; | 123 | 35.9k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 35.9k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 35.9k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 35.9k | return false; | 127 | 35.9k | } | 128 | 35.9k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 35.9k | using FromFieldType = typename FromDataType::FieldType; | 130 | 35.9k | using ToFieldType = typename ToDataType::FieldType; | 131 | 35.9k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 35.9k | UInt32 from_scale = 0; | 133 | | | 134 | 35.9k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 35.9k | const auto* from_decimal_type = | 136 | 35.9k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 35.9k | from_precision = | 138 | 35.9k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 35.9k | from_scale = from_decimal_type->get_scale(); | 140 | 35.9k | } | 141 | | | 142 | 35.9k | UInt32 to_max_digits = 0; | 143 | 35.9k | UInt32 to_precision = 0; | 144 | 35.9k | UInt32 to_scale = 0; | 145 | | | 146 | 35.9k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 35.9k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 35.9k | const auto* to_decimal_type = | 150 | 35.9k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 35.9k | to_precision = to_decimal_type->get_precision(); | 152 | 35.9k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 35.9k | to_scale = to_decimal_type->get_scale(); | 155 | 35.9k | ToDataType::check_type_scale(to_scale); | 156 | 35.9k | } | 157 | 35.9k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 35.9k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 35.9k | to_precision = to_max_digits; | 160 | 35.9k | } | 161 | | | 162 | 35.9k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 35.9k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 35.9k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 35.9k | if (to_scale > from_scale) { | 167 | 35.9k | multiply_may_overflow &= | 168 | 35.9k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 35.9k | } | 170 | 35.9k | return narrow_integral || multiply_may_overflow; | 171 | 35.9k | } | 172 | 35.9k | return false; | 173 | 35.9k | }); | 174 | 35.9k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ Line | Count | Source | 110 | 40.7k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 40.7k | using Types = std::decay_t<decltype(types)>; | 112 | 40.7k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 40.7k | return call_on_index_and_data_type< | 120 | 40.7k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 40.7k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 40.7k | using FromDataType = typename Types2::LeftType; | 123 | 40.7k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 40.7k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 40.7k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 40.7k | return false; | 127 | 40.7k | } | 128 | 40.7k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 40.7k | using FromFieldType = typename FromDataType::FieldType; | 130 | 40.7k | using ToFieldType = typename ToDataType::FieldType; | 131 | 40.7k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 40.7k | UInt32 from_scale = 0; | 133 | | | 134 | 40.7k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 40.7k | const auto* from_decimal_type = | 136 | 40.7k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 40.7k | from_precision = | 138 | 40.7k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 40.7k | from_scale = from_decimal_type->get_scale(); | 140 | 40.7k | } | 141 | | | 142 | 40.7k | UInt32 to_max_digits = 0; | 143 | 40.7k | UInt32 to_precision = 0; | 144 | 40.7k | UInt32 to_scale = 0; | 145 | | | 146 | 40.7k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 40.7k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 40.7k | const auto* to_decimal_type = | 150 | 40.7k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 40.7k | to_precision = to_decimal_type->get_precision(); | 152 | 40.7k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 40.7k | to_scale = to_decimal_type->get_scale(); | 155 | 40.7k | ToDataType::check_type_scale(to_scale); | 156 | 40.7k | } | 157 | 40.7k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 40.7k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 40.7k | to_precision = to_max_digits; | 160 | 40.7k | } | 161 | | | 162 | 40.7k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 40.7k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 40.7k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 40.7k | if (to_scale > from_scale) { | 167 | 40.7k | multiply_may_overflow &= | 168 | 40.7k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 40.7k | } | 170 | 40.7k | return narrow_integral || multiply_may_overflow; | 171 | 40.7k | } | 172 | 40.7k | return false; | 173 | 40.7k | }); | 174 | 40.7k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ Line | Count | Source | 110 | 6.47k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 6.47k | using Types = std::decay_t<decltype(types)>; | 112 | 6.47k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 6.47k | return call_on_index_and_data_type< | 120 | 6.47k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6.47k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6.47k | using FromDataType = typename Types2::LeftType; | 123 | 6.47k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 6.47k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 6.47k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 6.47k | return false; | 127 | 6.47k | } | 128 | 6.47k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 6.47k | using FromFieldType = typename FromDataType::FieldType; | 130 | 6.47k | using ToFieldType = typename ToDataType::FieldType; | 131 | 6.47k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 6.47k | UInt32 from_scale = 0; | 133 | | | 134 | 6.47k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 6.47k | const auto* from_decimal_type = | 136 | 6.47k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 6.47k | from_precision = | 138 | 6.47k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 6.47k | from_scale = from_decimal_type->get_scale(); | 140 | 6.47k | } | 141 | | | 142 | 6.47k | UInt32 to_max_digits = 0; | 143 | 6.47k | UInt32 to_precision = 0; | 144 | 6.47k | UInt32 to_scale = 0; | 145 | | | 146 | 6.47k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 6.47k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 6.47k | const auto* to_decimal_type = | 150 | 6.47k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 6.47k | to_precision = to_decimal_type->get_precision(); | 152 | 6.47k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 6.47k | to_scale = to_decimal_type->get_scale(); | 155 | 6.47k | ToDataType::check_type_scale(to_scale); | 156 | 6.47k | } | 157 | 6.47k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 6.47k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 6.47k | to_precision = to_max_digits; | 160 | 6.47k | } | 161 | | | 162 | 6.47k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 6.47k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 6.47k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 6.47k | if (to_scale > from_scale) { | 167 | 6.47k | multiply_may_overflow &= | 168 | 6.47k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 6.47k | } | 170 | 6.47k | return narrow_integral || multiply_may_overflow; | 171 | 6.47k | } | 172 | 6.47k | return false; | 173 | 6.47k | }); | 174 | 6.47k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ Line | Count | Source | 110 | 18.9k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 18.9k | using Types = std::decay_t<decltype(types)>; | 112 | 18.9k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 18.9k | return call_on_index_and_data_type< | 120 | 18.9k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 18.9k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 18.9k | using FromDataType = typename Types2::LeftType; | 123 | 18.9k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 18.9k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 18.9k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 18.9k | return false; | 127 | 18.9k | } | 128 | 18.9k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 18.9k | using FromFieldType = typename FromDataType::FieldType; | 130 | 18.9k | using ToFieldType = typename ToDataType::FieldType; | 131 | 18.9k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 18.9k | UInt32 from_scale = 0; | 133 | | | 134 | 18.9k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 18.9k | const auto* from_decimal_type = | 136 | 18.9k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 18.9k | from_precision = | 138 | 18.9k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 18.9k | from_scale = from_decimal_type->get_scale(); | 140 | 18.9k | } | 141 | | | 142 | 18.9k | UInt32 to_max_digits = 0; | 143 | 18.9k | UInt32 to_precision = 0; | 144 | 18.9k | UInt32 to_scale = 0; | 145 | | | 146 | 18.9k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 18.9k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 18.9k | const auto* to_decimal_type = | 150 | 18.9k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 18.9k | to_precision = to_decimal_type->get_precision(); | 152 | 18.9k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 18.9k | to_scale = to_decimal_type->get_scale(); | 155 | 18.9k | ToDataType::check_type_scale(to_scale); | 156 | 18.9k | } | 157 | 18.9k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 18.9k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 18.9k | to_precision = to_max_digits; | 160 | 18.9k | } | 161 | | | 162 | 18.9k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 18.9k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 18.9k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 18.9k | if (to_scale > from_scale) { | 167 | 18.9k | multiply_may_overflow &= | 168 | 18.9k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 18.9k | } | 170 | 18.9k | return narrow_integral || multiply_may_overflow; | 171 | 18.9k | } | 172 | 18.9k | return false; | 173 | 18.9k | }); | 174 | 18.9k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ Line | Count | Source | 110 | 35.7k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 35.7k | using Types = std::decay_t<decltype(types)>; | 112 | 35.7k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 35.7k | return call_on_index_and_data_type< | 120 | 35.7k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 35.7k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 35.7k | using FromDataType = typename Types2::LeftType; | 123 | 35.7k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 35.7k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 35.7k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 35.7k | return false; | 127 | 35.7k | } | 128 | 35.7k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 35.7k | using FromFieldType = typename FromDataType::FieldType; | 130 | 35.7k | using ToFieldType = typename ToDataType::FieldType; | 131 | 35.7k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 35.7k | UInt32 from_scale = 0; | 133 | | | 134 | 35.7k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 35.7k | const auto* from_decimal_type = | 136 | 35.7k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 35.7k | from_precision = | 138 | 35.7k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 35.7k | from_scale = from_decimal_type->get_scale(); | 140 | 35.7k | } | 141 | | | 142 | 35.7k | UInt32 to_max_digits = 0; | 143 | 35.7k | UInt32 to_precision = 0; | 144 | 35.7k | UInt32 to_scale = 0; | 145 | | | 146 | 35.7k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 35.7k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 35.7k | const auto* to_decimal_type = | 150 | 35.7k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 35.7k | to_precision = to_decimal_type->get_precision(); | 152 | 35.7k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 35.7k | to_scale = to_decimal_type->get_scale(); | 155 | 35.7k | ToDataType::check_type_scale(to_scale); | 156 | 35.7k | } | 157 | 35.7k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 35.7k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 35.7k | to_precision = to_max_digits; | 160 | 35.7k | } | 161 | | | 162 | 35.7k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 35.7k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 35.7k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 35.7k | if (to_scale > from_scale) { | 167 | 35.7k | multiply_may_overflow &= | 168 | 35.7k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 35.7k | } | 170 | 35.7k | return narrow_integral || multiply_may_overflow; | 171 | 35.7k | } | 172 | 35.7k | return false; | 173 | 35.7k | }); | 174 | 35.7k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ Line | Count | Source | 110 | 11.1k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 11.1k | using Types = std::decay_t<decltype(types)>; | 112 | 11.1k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 11.1k | return call_on_index_and_data_type< | 120 | 11.1k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 11.1k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 11.1k | using FromDataType = typename Types2::LeftType; | 123 | 11.1k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 11.1k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 11.1k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 11.1k | return false; | 127 | 11.1k | } | 128 | 11.1k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 11.1k | using FromFieldType = typename FromDataType::FieldType; | 130 | 11.1k | using ToFieldType = typename ToDataType::FieldType; | 131 | 11.1k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 11.1k | UInt32 from_scale = 0; | 133 | | | 134 | 11.1k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 11.1k | const auto* from_decimal_type = | 136 | 11.1k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 11.1k | from_precision = | 138 | 11.1k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 11.1k | from_scale = from_decimal_type->get_scale(); | 140 | 11.1k | } | 141 | | | 142 | 11.1k | UInt32 to_max_digits = 0; | 143 | 11.1k | UInt32 to_precision = 0; | 144 | 11.1k | UInt32 to_scale = 0; | 145 | | | 146 | 11.1k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 11.1k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 11.1k | const auto* to_decimal_type = | 150 | 11.1k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 11.1k | to_precision = to_decimal_type->get_precision(); | 152 | 11.1k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 11.1k | to_scale = to_decimal_type->get_scale(); | 155 | 11.1k | ToDataType::check_type_scale(to_scale); | 156 | 11.1k | } | 157 | 11.1k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 11.1k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 11.1k | to_precision = to_max_digits; | 160 | 11.1k | } | 161 | | | 162 | 11.1k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 11.1k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 11.1k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 11.1k | if (to_scale > from_scale) { | 167 | 11.1k | multiply_may_overflow &= | 168 | 11.1k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 11.1k | } | 170 | 11.1k | return narrow_integral || multiply_may_overflow; | 171 | 11.1k | } | 172 | 11.1k | return false; | 173 | 11.1k | }); | 174 | 11.1k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ Line | Count | Source | 110 | 24.3k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 24.3k | using Types = std::decay_t<decltype(types)>; | 112 | 24.3k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 24.3k | return call_on_index_and_data_type< | 120 | 24.3k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 24.3k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 24.3k | using FromDataType = typename Types2::LeftType; | 123 | 24.3k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 24.3k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 24.3k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 24.3k | return false; | 127 | 24.3k | } | 128 | 24.3k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 24.3k | using FromFieldType = typename FromDataType::FieldType; | 130 | 24.3k | using ToFieldType = typename ToDataType::FieldType; | 131 | 24.3k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 24.3k | UInt32 from_scale = 0; | 133 | | | 134 | 24.3k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 24.3k | const auto* from_decimal_type = | 136 | 24.3k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 24.3k | from_precision = | 138 | 24.3k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 24.3k | from_scale = from_decimal_type->get_scale(); | 140 | 24.3k | } | 141 | | | 142 | 24.3k | UInt32 to_max_digits = 0; | 143 | 24.3k | UInt32 to_precision = 0; | 144 | 24.3k | UInt32 to_scale = 0; | 145 | | | 146 | 24.3k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 24.3k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 24.3k | const auto* to_decimal_type = | 150 | 24.3k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 24.3k | to_precision = to_decimal_type->get_precision(); | 152 | 24.3k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 24.3k | to_scale = to_decimal_type->get_scale(); | 155 | 24.3k | ToDataType::check_type_scale(to_scale); | 156 | 24.3k | } | 157 | 24.3k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 24.3k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 24.3k | to_precision = to_max_digits; | 160 | 24.3k | } | 161 | | | 162 | 24.3k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 24.3k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 24.3k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 24.3k | if (to_scale > from_scale) { | 167 | 24.3k | multiply_may_overflow &= | 168 | 24.3k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 24.3k | } | 170 | 24.3k | return narrow_integral || multiply_may_overflow; | 171 | 24.3k | } | 172 | 24.3k | return false; | 173 | 24.3k | }); | 174 | 24.3k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ Line | Count | Source | 110 | 233 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 233 | using Types = std::decay_t<decltype(types)>; | 112 | 233 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 233 | return call_on_index_and_data_type< | 120 | 233 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 233 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 233 | using FromDataType = typename Types2::LeftType; | 123 | 233 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 233 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 233 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 233 | return false; | 127 | 233 | } | 128 | 233 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 233 | using FromFieldType = typename FromDataType::FieldType; | 130 | 233 | using ToFieldType = typename ToDataType::FieldType; | 131 | 233 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 233 | UInt32 from_scale = 0; | 133 | | | 134 | 233 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 233 | const auto* from_decimal_type = | 136 | 233 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 233 | from_precision = | 138 | 233 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 233 | from_scale = from_decimal_type->get_scale(); | 140 | 233 | } | 141 | | | 142 | 233 | UInt32 to_max_digits = 0; | 143 | 233 | UInt32 to_precision = 0; | 144 | 233 | UInt32 to_scale = 0; | 145 | | | 146 | 233 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 233 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 233 | const auto* to_decimal_type = | 150 | 233 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 233 | to_precision = to_decimal_type->get_precision(); | 152 | 233 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 233 | to_scale = to_decimal_type->get_scale(); | 155 | 233 | ToDataType::check_type_scale(to_scale); | 156 | 233 | } | 157 | 233 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 233 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 233 | to_precision = to_max_digits; | 160 | 233 | } | 161 | | | 162 | 233 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 233 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 233 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 233 | if (to_scale > from_scale) { | 167 | 233 | multiply_may_overflow &= | 168 | 233 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 233 | } | 170 | 233 | return narrow_integral || multiply_may_overflow; | 171 | 233 | } | 172 | 233 | return false; | 173 | 233 | }); | 174 | 233 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ Line | Count | Source | 110 | 17.8k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 17.8k | using Types = std::decay_t<decltype(types)>; | 112 | 17.8k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 17.8k | return call_on_index_and_data_type< | 120 | 17.8k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 17.8k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 17.8k | using FromDataType = typename Types2::LeftType; | 123 | 17.8k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 17.8k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 17.8k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 17.8k | return false; | 127 | 17.8k | } | 128 | 17.8k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 17.8k | using FromFieldType = typename FromDataType::FieldType; | 130 | 17.8k | using ToFieldType = typename ToDataType::FieldType; | 131 | 17.8k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 17.8k | UInt32 from_scale = 0; | 133 | | | 134 | 17.8k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 17.8k | const auto* from_decimal_type = | 136 | 17.8k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 17.8k | from_precision = | 138 | 17.8k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 17.8k | from_scale = from_decimal_type->get_scale(); | 140 | 17.8k | } | 141 | | | 142 | 17.8k | UInt32 to_max_digits = 0; | 143 | 17.8k | UInt32 to_precision = 0; | 144 | 17.8k | UInt32 to_scale = 0; | 145 | | | 146 | 17.8k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 17.8k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 17.8k | const auto* to_decimal_type = | 150 | 17.8k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 17.8k | to_precision = to_decimal_type->get_precision(); | 152 | 17.8k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 17.8k | to_scale = to_decimal_type->get_scale(); | 155 | 17.8k | ToDataType::check_type_scale(to_scale); | 156 | 17.8k | } | 157 | 17.8k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 17.8k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 17.8k | to_precision = to_max_digits; | 160 | 17.8k | } | 161 | | | 162 | 17.8k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 17.8k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 17.8k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 17.8k | if (to_scale > from_scale) { | 167 | 17.8k | multiply_may_overflow &= | 168 | 17.8k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 17.8k | } | 170 | 17.8k | return narrow_integral || multiply_may_overflow; | 171 | 17.8k | } | 172 | 17.8k | return false; | 173 | 17.8k | }); | 174 | 17.8k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ Line | Count | Source | 110 | 13.7k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 13.7k | using Types = std::decay_t<decltype(types)>; | 112 | 13.7k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 13.7k | return call_on_index_and_data_type< | 120 | 13.7k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 13.7k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 13.7k | using FromDataType = typename Types2::LeftType; | 123 | 13.7k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 13.7k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 13.7k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 13.7k | return false; | 127 | 13.7k | } | 128 | 13.7k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 13.7k | using FromFieldType = typename FromDataType::FieldType; | 130 | 13.7k | using ToFieldType = typename ToDataType::FieldType; | 131 | 13.7k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 13.7k | UInt32 from_scale = 0; | 133 | | | 134 | 13.7k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 13.7k | const auto* from_decimal_type = | 136 | 13.7k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 13.7k | from_precision = | 138 | 13.7k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 13.7k | from_scale = from_decimal_type->get_scale(); | 140 | 13.7k | } | 141 | | | 142 | 13.7k | UInt32 to_max_digits = 0; | 143 | 13.7k | UInt32 to_precision = 0; | 144 | 13.7k | UInt32 to_scale = 0; | 145 | | | 146 | 13.7k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 13.7k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 13.7k | const auto* to_decimal_type = | 150 | 13.7k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 13.7k | to_precision = to_decimal_type->get_precision(); | 152 | 13.7k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 13.7k | to_scale = to_decimal_type->get_scale(); | 155 | 13.7k | ToDataType::check_type_scale(to_scale); | 156 | 13.7k | } | 157 | 13.7k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 13.7k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 13.7k | to_precision = to_max_digits; | 160 | 13.7k | } | 161 | | | 162 | 13.7k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 13.7k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 13.7k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 13.7k | if (to_scale > from_scale) { | 167 | 13.7k | multiply_may_overflow &= | 168 | 13.7k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 13.7k | } | 170 | 13.7k | return narrow_integral || multiply_may_overflow; | 171 | 13.7k | } | 172 | 13.7k | return false; | 173 | 13.7k | }); | 174 | 13.7k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ Line | Count | Source | 110 | 35 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 35 | using Types = std::decay_t<decltype(types)>; | 112 | 35 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 35 | return call_on_index_and_data_type< | 120 | 35 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 35 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 35 | using FromDataType = typename Types2::LeftType; | 123 | 35 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 35 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 35 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 35 | return false; | 127 | 35 | } | 128 | 35 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 35 | using FromFieldType = typename FromDataType::FieldType; | 130 | 35 | using ToFieldType = typename ToDataType::FieldType; | 131 | 35 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 35 | UInt32 from_scale = 0; | 133 | | | 134 | 35 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 35 | const auto* from_decimal_type = | 136 | 35 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 35 | from_precision = | 138 | 35 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 35 | from_scale = from_decimal_type->get_scale(); | 140 | 35 | } | 141 | | | 142 | 35 | UInt32 to_max_digits = 0; | 143 | 35 | UInt32 to_precision = 0; | 144 | 35 | UInt32 to_scale = 0; | 145 | | | 146 | 35 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 35 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 35 | const auto* to_decimal_type = | 150 | 35 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 35 | to_precision = to_decimal_type->get_precision(); | 152 | 35 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 35 | to_scale = to_decimal_type->get_scale(); | 155 | 35 | ToDataType::check_type_scale(to_scale); | 156 | 35 | } | 157 | 35 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 35 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 35 | to_precision = to_max_digits; | 160 | 35 | } | 161 | | | 162 | 35 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 35 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 35 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 35 | if (to_scale > from_scale) { | 167 | 35 | multiply_may_overflow &= | 168 | 35 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 35 | } | 170 | 35 | return narrow_integral || multiply_may_overflow; | 171 | 35 | } | 172 | 35 | return false; | 173 | 35 | }); | 174 | 35 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ Line | Count | Source | 110 | 8.12k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 8.12k | using Types = std::decay_t<decltype(types)>; | 112 | 8.12k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 8.12k | return call_on_index_and_data_type< | 120 | 8.12k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8.12k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8.12k | using FromDataType = typename Types2::LeftType; | 123 | 8.12k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 8.12k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 8.12k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 8.12k | return false; | 127 | 8.12k | } | 128 | 8.12k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 8.12k | using FromFieldType = typename FromDataType::FieldType; | 130 | 8.12k | using ToFieldType = typename ToDataType::FieldType; | 131 | 8.12k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 8.12k | UInt32 from_scale = 0; | 133 | | | 134 | 8.12k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 8.12k | const auto* from_decimal_type = | 136 | 8.12k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 8.12k | from_precision = | 138 | 8.12k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 8.12k | from_scale = from_decimal_type->get_scale(); | 140 | 8.12k | } | 141 | | | 142 | 8.12k | UInt32 to_max_digits = 0; | 143 | 8.12k | UInt32 to_precision = 0; | 144 | 8.12k | UInt32 to_scale = 0; | 145 | | | 146 | 8.12k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 8.12k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 8.12k | const auto* to_decimal_type = | 150 | 8.12k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 8.12k | to_precision = to_decimal_type->get_precision(); | 152 | 8.12k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 8.12k | to_scale = to_decimal_type->get_scale(); | 155 | 8.12k | ToDataType::check_type_scale(to_scale); | 156 | 8.12k | } | 157 | 8.12k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 8.12k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 8.12k | to_precision = to_max_digits; | 160 | 8.12k | } | 161 | | | 162 | 8.12k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 8.12k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 8.12k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 8.12k | if (to_scale > from_scale) { | 167 | 8.12k | multiply_may_overflow &= | 168 | 8.12k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 8.12k | } | 170 | 8.12k | return narrow_integral || multiply_may_overflow; | 171 | 8.12k | } | 172 | 8.12k | return false; | 173 | 8.12k | }); | 174 | 8.12k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ Line | Count | Source | 110 | 5.10k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 5.10k | using Types = std::decay_t<decltype(types)>; | 112 | 5.10k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 5.10k | return call_on_index_and_data_type< | 120 | 5.10k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 5.10k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 5.10k | using FromDataType = typename Types2::LeftType; | 123 | 5.10k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 5.10k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 5.10k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 5.10k | return false; | 127 | 5.10k | } | 128 | 5.10k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 5.10k | using FromFieldType = typename FromDataType::FieldType; | 130 | 5.10k | using ToFieldType = typename ToDataType::FieldType; | 131 | 5.10k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 5.10k | UInt32 from_scale = 0; | 133 | | | 134 | 5.10k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 5.10k | const auto* from_decimal_type = | 136 | 5.10k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 5.10k | from_precision = | 138 | 5.10k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 5.10k | from_scale = from_decimal_type->get_scale(); | 140 | 5.10k | } | 141 | | | 142 | 5.10k | UInt32 to_max_digits = 0; | 143 | 5.10k | UInt32 to_precision = 0; | 144 | 5.10k | UInt32 to_scale = 0; | 145 | | | 146 | 5.10k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 5.10k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 5.10k | const auto* to_decimal_type = | 150 | 5.10k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 5.10k | to_precision = to_decimal_type->get_precision(); | 152 | 5.10k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 5.10k | to_scale = to_decimal_type->get_scale(); | 155 | 5.10k | ToDataType::check_type_scale(to_scale); | 156 | 5.10k | } | 157 | 5.10k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 5.10k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 5.10k | to_precision = to_max_digits; | 160 | 5.10k | } | 161 | | | 162 | 5.10k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 5.10k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 5.10k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 5.10k | if (to_scale > from_scale) { | 167 | 5.10k | multiply_may_overflow &= | 168 | 5.10k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 5.10k | } | 170 | 5.10k | return narrow_integral || multiply_may_overflow; | 171 | 5.10k | } | 172 | 5.10k | return false; | 173 | 5.10k | }); | 174 | 5.10k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ Line | Count | Source | 110 | 30 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 30 | using Types = std::decay_t<decltype(types)>; | 112 | 30 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 30 | return call_on_index_and_data_type< | 120 | 30 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 30 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 30 | using FromDataType = typename Types2::LeftType; | 123 | 30 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 30 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 30 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 30 | return false; | 127 | 30 | } | 128 | 30 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 30 | using FromFieldType = typename FromDataType::FieldType; | 130 | 30 | using ToFieldType = typename ToDataType::FieldType; | 131 | 30 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 30 | UInt32 from_scale = 0; | 133 | | | 134 | 30 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 30 | const auto* from_decimal_type = | 136 | 30 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 30 | from_precision = | 138 | 30 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 30 | from_scale = from_decimal_type->get_scale(); | 140 | 30 | } | 141 | | | 142 | 30 | UInt32 to_max_digits = 0; | 143 | 30 | UInt32 to_precision = 0; | 144 | 30 | UInt32 to_scale = 0; | 145 | | | 146 | 30 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 30 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 30 | const auto* to_decimal_type = | 150 | 30 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 30 | to_precision = to_decimal_type->get_precision(); | 152 | 30 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 30 | to_scale = to_decimal_type->get_scale(); | 155 | 30 | ToDataType::check_type_scale(to_scale); | 156 | 30 | } | 157 | 30 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 30 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 30 | to_precision = to_max_digits; | 160 | 30 | } | 161 | | | 162 | 30 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 30 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 30 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 30 | if (to_scale > from_scale) { | 167 | 30 | multiply_may_overflow &= | 168 | 30 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 30 | } | 170 | 30 | return narrow_integral || multiply_may_overflow; | 171 | 30 | } | 172 | 30 | return false; | 173 | 30 | }); | 174 | 30 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ Line | Count | Source | 110 | 476 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 476 | using Types = std::decay_t<decltype(types)>; | 112 | 476 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | | return false; | 118 | | } | 119 | 476 | return call_on_index_and_data_type< | 120 | 476 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 476 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 476 | using FromDataType = typename Types2::LeftType; | 123 | 476 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 476 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 476 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 476 | return false; | 127 | 476 | } | 128 | 476 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 476 | using FromFieldType = typename FromDataType::FieldType; | 130 | 476 | using ToFieldType = typename ToDataType::FieldType; | 131 | 476 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 476 | UInt32 from_scale = 0; | 133 | | | 134 | 476 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 476 | const auto* from_decimal_type = | 136 | 476 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 476 | from_precision = | 138 | 476 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 476 | from_scale = from_decimal_type->get_scale(); | 140 | 476 | } | 141 | | | 142 | 476 | UInt32 to_max_digits = 0; | 143 | 476 | UInt32 to_precision = 0; | 144 | 476 | UInt32 to_scale = 0; | 145 | | | 146 | 476 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 476 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 476 | const auto* to_decimal_type = | 150 | 476 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 476 | to_precision = to_decimal_type->get_precision(); | 152 | 476 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 476 | to_scale = to_decimal_type->get_scale(); | 155 | 476 | ToDataType::check_type_scale(to_scale); | 156 | 476 | } | 157 | 476 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 476 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 476 | to_precision = to_max_digits; | 160 | 476 | } | 161 | | | 162 | 476 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 476 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 476 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 476 | if (to_scale > from_scale) { | 167 | 476 | multiply_may_overflow &= | 168 | 476 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 476 | } | 170 | 476 | return narrow_integral || multiply_may_overflow; | 171 | 476 | } | 172 | 476 | return false; | 173 | 476 | }); | 174 | 476 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ Line | Count | Source | 110 | 462 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 462 | using Types = std::decay_t<decltype(types)>; | 112 | 462 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 462 | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 462 | return false; | 118 | 462 | } | 119 | 0 | return call_on_index_and_data_type< | 120 | 462 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 462 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 462 | using FromDataType = typename Types2::LeftType; | 123 | 462 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 462 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 462 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 462 | return false; | 127 | 462 | } | 128 | 462 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 462 | using FromFieldType = typename FromDataType::FieldType; | 130 | 462 | using ToFieldType = typename ToDataType::FieldType; | 131 | 462 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 462 | UInt32 from_scale = 0; | 133 | | | 134 | 462 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 462 | const auto* from_decimal_type = | 136 | 462 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 462 | from_precision = | 138 | 462 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 462 | from_scale = from_decimal_type->get_scale(); | 140 | 462 | } | 141 | | | 142 | 462 | UInt32 to_max_digits = 0; | 143 | 462 | UInt32 to_precision = 0; | 144 | 462 | UInt32 to_scale = 0; | 145 | | | 146 | 462 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 462 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 462 | const auto* to_decimal_type = | 150 | 462 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 462 | to_precision = to_decimal_type->get_precision(); | 152 | 462 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 462 | to_scale = to_decimal_type->get_scale(); | 155 | 462 | ToDataType::check_type_scale(to_scale); | 156 | 462 | } | 157 | 462 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 462 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 462 | to_precision = to_max_digits; | 160 | 462 | } | 161 | | | 162 | 462 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 462 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 462 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 462 | if (to_scale > from_scale) { | 167 | 462 | multiply_may_overflow &= | 168 | 462 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 462 | } | 170 | 462 | return narrow_integral || multiply_may_overflow; | 171 | 462 | } | 172 | 462 | return false; | 173 | 462 | }); | 174 | 462 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ Line | Count | Source | 110 | 635 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 635 | using Types = std::decay_t<decltype(types)>; | 112 | 635 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 635 | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 635 | return false; | 118 | 635 | } | 119 | 0 | return call_on_index_and_data_type< | 120 | 635 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 635 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 635 | using FromDataType = typename Types2::LeftType; | 123 | 635 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 635 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 635 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 635 | return false; | 127 | 635 | } | 128 | 635 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 635 | using FromFieldType = typename FromDataType::FieldType; | 130 | 635 | using ToFieldType = typename ToDataType::FieldType; | 131 | 635 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 635 | UInt32 from_scale = 0; | 133 | | | 134 | 635 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 635 | const auto* from_decimal_type = | 136 | 635 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 635 | from_precision = | 138 | 635 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 635 | from_scale = from_decimal_type->get_scale(); | 140 | 635 | } | 141 | | | 142 | 635 | UInt32 to_max_digits = 0; | 143 | 635 | UInt32 to_precision = 0; | 144 | 635 | UInt32 to_scale = 0; | 145 | | | 146 | 635 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 635 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 635 | const auto* to_decimal_type = | 150 | 635 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 635 | to_precision = to_decimal_type->get_precision(); | 152 | 635 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 635 | to_scale = to_decimal_type->get_scale(); | 155 | 635 | ToDataType::check_type_scale(to_scale); | 156 | 635 | } | 157 | 635 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 635 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 635 | to_precision = to_max_digits; | 160 | 635 | } | 161 | | | 162 | 635 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 635 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 635 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 635 | if (to_scale > from_scale) { | 167 | 635 | multiply_may_overflow &= | 168 | 635 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 635 | } | 170 | 635 | return narrow_integral || multiply_may_overflow; | 171 | 635 | } | 172 | 635 | return false; | 173 | 635 | }); | 174 | 635 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ Line | Count | Source | 110 | 301 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 301 | using Types = std::decay_t<decltype(types)>; | 112 | 301 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 301 | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 301 | return false; | 118 | 301 | } | 119 | 0 | return call_on_index_and_data_type< | 120 | 301 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 301 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 301 | using FromDataType = typename Types2::LeftType; | 123 | 301 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 301 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 301 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 301 | return false; | 127 | 301 | } | 128 | 301 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 301 | using FromFieldType = typename FromDataType::FieldType; | 130 | 301 | using ToFieldType = typename ToDataType::FieldType; | 131 | 301 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 301 | UInt32 from_scale = 0; | 133 | | | 134 | 301 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 301 | const auto* from_decimal_type = | 136 | 301 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 301 | from_precision = | 138 | 301 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 301 | from_scale = from_decimal_type->get_scale(); | 140 | 301 | } | 141 | | | 142 | 301 | UInt32 to_max_digits = 0; | 143 | 301 | UInt32 to_precision = 0; | 144 | 301 | UInt32 to_scale = 0; | 145 | | | 146 | 301 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 301 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 301 | const auto* to_decimal_type = | 150 | 301 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 301 | to_precision = to_decimal_type->get_precision(); | 152 | 301 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 301 | to_scale = to_decimal_type->get_scale(); | 155 | 301 | ToDataType::check_type_scale(to_scale); | 156 | 301 | } | 157 | 301 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 301 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 301 | to_precision = to_max_digits; | 160 | 301 | } | 161 | | | 162 | 301 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 301 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 301 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 301 | if (to_scale > from_scale) { | 167 | 301 | multiply_may_overflow &= | 168 | 301 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 301 | } | 170 | 301 | return narrow_integral || multiply_may_overflow; | 171 | 301 | } | 172 | 301 | return false; | 173 | 301 | }); | 174 | 301 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ Line | Count | Source | 110 | 32.9k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 32.9k | using Types = std::decay_t<decltype(types)>; | 112 | 32.9k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 32.9k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 32.9k | return false; | 118 | 32.9k | } | 119 | 0 | return call_on_index_and_data_type< | 120 | 32.9k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 32.9k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 32.9k | using FromDataType = typename Types2::LeftType; | 123 | 32.9k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 32.9k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 32.9k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 32.9k | return false; | 127 | 32.9k | } | 128 | 32.9k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 32.9k | using FromFieldType = typename FromDataType::FieldType; | 130 | 32.9k | using ToFieldType = typename ToDataType::FieldType; | 131 | 32.9k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 32.9k | UInt32 from_scale = 0; | 133 | | | 134 | 32.9k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 32.9k | const auto* from_decimal_type = | 136 | 32.9k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 32.9k | from_precision = | 138 | 32.9k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 32.9k | from_scale = from_decimal_type->get_scale(); | 140 | 32.9k | } | 141 | | | 142 | 32.9k | UInt32 to_max_digits = 0; | 143 | 32.9k | UInt32 to_precision = 0; | 144 | 32.9k | UInt32 to_scale = 0; | 145 | | | 146 | 32.9k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 32.9k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 32.9k | const auto* to_decimal_type = | 150 | 32.9k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 32.9k | to_precision = to_decimal_type->get_precision(); | 152 | 32.9k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 32.9k | to_scale = to_decimal_type->get_scale(); | 155 | 32.9k | ToDataType::check_type_scale(to_scale); | 156 | 32.9k | } | 157 | 32.9k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 32.9k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 32.9k | to_precision = to_max_digits; | 160 | 32.9k | } | 161 | | | 162 | 32.9k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 32.9k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 32.9k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 32.9k | if (to_scale > from_scale) { | 167 | 32.9k | multiply_may_overflow &= | 168 | 32.9k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 32.9k | } | 170 | 32.9k | return narrow_integral || multiply_may_overflow; | 171 | 32.9k | } | 172 | 32.9k | return false; | 173 | 32.9k | }); | 174 | 32.9k | }; |
|
175 | | |
176 | 398k | return call_on_index_and_data_type<void>(to_type->get_primitive_type(), make_default_wrapper); |
177 | 468k | } |
178 | | |
179 | | WrapperType prepare_remove_nullable(FunctionContext* context, const DataTypePtr& from_type, |
180 | 497k | const DataTypePtr& to_type) { |
181 | | /// Determine whether pre-processing and/or post-processing must take place during conversion. |
182 | 497k | bool result_is_nullable = to_type->is_nullable(); |
183 | | |
184 | 497k | if (result_is_nullable) { |
185 | 468k | return [from_type, to_type](FunctionContext* context, Block& block, |
186 | 468k | const ColumnNumbers& arguments, uint32_t result, |
187 | 468k | size_t input_rows_count, |
188 | 468k | const NullMap::value_type* null_map = nullptr) { |
189 | 468k | auto from_type_not_nullable = remove_nullable(from_type); |
190 | 468k | auto to_type_not_nullable = remove_nullable(to_type); |
191 | | |
192 | 468k | bool replace_null_data_to_default = need_replace_null_data_to_default( |
193 | 468k | context, from_type_not_nullable, to_type_not_nullable); |
194 | | |
195 | 468k | auto nested_result_index = block.columns(); |
196 | 468k | block.insert(block.get_by_position(result).unnest_nullable()); |
197 | 468k | auto nested_source_index = block.columns(); |
198 | 468k | block.insert(block.get_by_position(arguments[0]) |
199 | 468k | .unnest_nullable(replace_null_data_to_default)); |
200 | | |
201 | 468k | const auto& arg_col = block.get_by_position(arguments[0]); |
202 | 468k | const NullMap::value_type* arg_null_map = nullptr; |
203 | 468k | if (const auto* nullable = check_and_get_column<ColumnNullable>(*arg_col.column)) { |
204 | 422k | arg_null_map = nullable->get_null_map_data().data(); |
205 | 422k | } |
206 | 468k | RETURN_IF_ERROR(prepare_impl(context, from_type_not_nullable, to_type_not_nullable)( |
207 | 468k | context, block, {nested_source_index}, nested_result_index, input_rows_count, |
208 | 468k | arg_null_map)); |
209 | | |
210 | 418k | block.get_by_position(result).column = |
211 | 418k | wrap_in_nullable(block.get_by_position(nested_result_index).column, block, |
212 | 418k | arguments, input_rows_count); |
213 | | |
214 | 418k | block.erase(nested_source_index); |
215 | 418k | block.erase(nested_result_index); |
216 | 418k | return Status::OK(); |
217 | 468k | }; |
218 | 468k | } else { |
219 | 29.3k | return prepare_impl(context, from_type, to_type); |
220 | 29.3k | } |
221 | 497k | } |
222 | | |
223 | | /// 'from_type' and 'to_type' are nested types in case of Nullable. |
224 | | /// 'requested_result_is_nullable' is true if CAST to Nullable type is requested. |
225 | | WrapperType prepare_impl(FunctionContext* context, const DataTypePtr& origin_from_type, |
226 | 515k | const DataTypePtr& origin_to_type) { |
227 | 515k | auto to_type = get_serialized_type(origin_to_type); |
228 | 515k | auto from_type = get_serialized_type(origin_from_type); |
229 | 515k | if (from_type->equals(*to_type)) { |
230 | 78.2k | return create_identity_wrapper(from_type); |
231 | 78.2k | } |
232 | | |
233 | | // variant needs to be judged first |
234 | 437k | if (to_type->get_primitive_type() == PrimitiveType::TYPE_VARIANT) { |
235 | 11.7k | return create_cast_to_variant_wrapper(from_type, |
236 | 11.7k | static_cast<const DataTypeVariant&>(*to_type)); |
237 | 11.7k | } |
238 | 425k | if (from_type->get_primitive_type() == PrimitiveType::TYPE_VARIANT) { |
239 | 20.9k | return create_cast_from_variant_wrapper(static_cast<const DataTypeVariant&>(*from_type), |
240 | 20.9k | to_type); |
241 | 20.9k | } |
242 | | |
243 | 405k | if (from_type->get_primitive_type() == PrimitiveType::TYPE_JSONB) { |
244 | 9.50k | return create_cast_from_jsonb_wrapper(static_cast<const DataTypeJsonb&>(*from_type), |
245 | 9.50k | to_type, |
246 | 9.50k | context ? context->jsonb_string_as_string() : false); |
247 | 9.50k | } |
248 | | |
249 | 395k | switch (to_type->get_primitive_type()) { |
250 | 1.06k | case PrimitiveType::TYPE_BOOLEAN: |
251 | 1.06k | return create_boolean_wrapper(context, from_type); |
252 | 6.51k | case PrimitiveType::TYPE_TINYINT: |
253 | 13.0k | case PrimitiveType::TYPE_SMALLINT: |
254 | 46.7k | case PrimitiveType::TYPE_INT: |
255 | 93.2k | case PrimitiveType::TYPE_BIGINT: |
256 | 99.2k | case PrimitiveType::TYPE_LARGEINT: |
257 | 99.2k | return create_int_wrapper(context, from_type, to_type->get_primitive_type()); |
258 | 19.1k | case PrimitiveType::TYPE_FLOAT: |
259 | 56.1k | case PrimitiveType::TYPE_DOUBLE: |
260 | 56.1k | return create_float_wrapper(context, from_type, to_type->get_primitive_type()); |
261 | 35 | case PrimitiveType::TYPE_DATE: |
262 | 65 | case PrimitiveType::TYPE_DATETIME: |
263 | 8.15k | case PrimitiveType::TYPE_DATEV2: |
264 | 13.6k | case PrimitiveType::TYPE_DATETIMEV2: |
265 | 14.1k | case PrimitiveType::TYPE_TIMEV2: |
266 | 14.1k | return create_datelike_wrapper(context, from_type, to_type->get_primitive_type()); |
267 | 462 | case PrimitiveType::TYPE_TIMESTAMPTZ: |
268 | 462 | return create_timestamptz_wrapper(context, from_type); |
269 | 490 | case PrimitiveType::TYPE_IPV4: |
270 | 792 | case PrimitiveType::TYPE_IPV6: |
271 | 792 | return create_ip_wrapper(context, from_type, to_type->get_primitive_type()); |
272 | 296 | case PrimitiveType::TYPE_DECIMALV2: |
273 | 11.5k | case PrimitiveType::TYPE_DECIMAL32: |
274 | 39.2k | case PrimitiveType::TYPE_DECIMAL64: |
275 | 59.8k | case PrimitiveType::TYPE_DECIMAL128I: |
276 | 73.7k | case PrimitiveType::TYPE_DECIMAL256: |
277 | 73.7k | return create_decimal_wrapper(context, from_type, to_type->get_primitive_type()); |
278 | 21 | case PrimitiveType::TYPE_CHAR: |
279 | 6.56k | case PrimitiveType::TYPE_VARCHAR: |
280 | 28.2k | case PrimitiveType::TYPE_STRING: |
281 | 28.2k | return create_string_wrapper(from_type); |
282 | 8.81k | case PrimitiveType::TYPE_ARRAY: |
283 | 8.81k | return create_array_wrapper(context, from_type, |
284 | 8.81k | static_cast<const DataTypeArray&>(*to_type)); |
285 | 3.18k | case PrimitiveType::TYPE_STRUCT: |
286 | 3.18k | return create_struct_wrapper(context, from_type, |
287 | 3.18k | static_cast<const DataTypeStruct&>(*to_type)); |
288 | 2.56k | case PrimitiveType::TYPE_MAP: |
289 | 2.56k | return create_map_wrapper(context, from_type, static_cast<const DataTypeMap&>(*to_type)); |
290 | 6 | case PrimitiveType::TYPE_HLL: |
291 | 6 | return create_hll_wrapper(context, from_type, static_cast<const DataTypeHLL&>(*to_type)); |
292 | 5 | case PrimitiveType::TYPE_BITMAP: |
293 | 5 | return create_bitmap_wrapper(context, from_type, |
294 | 5 | static_cast<const DataTypeBitMap&>(*to_type)); |
295 | 2 | case PrimitiveType::TYPE_QUANTILE_STATE: |
296 | 2 | return create_quantile_state_wrapper(context, from_type, |
297 | 2 | static_cast<const DataTypeQuantileState&>(*to_type)); |
298 | 107k | case PrimitiveType::TYPE_JSONB: |
299 | 107k | return create_cast_to_jsonb_wrapper(from_type, static_cast<const DataTypeJsonb&>(*to_type), |
300 | 107k | context ? context->string_as_jsonb_string() : false); |
301 | 2 | case PrimitiveType::TYPE_VARBINARY: |
302 | 2 | return create_varbinary_wrapper(from_type); |
303 | 0 | default: |
304 | 0 | break; |
305 | 395k | } |
306 | | |
307 | 0 | return create_unsupport_wrapper(from_type->get_name(), to_type->get_name()); |
308 | 395k | } |
309 | | |
310 | | } // namespace CastWrapper |
311 | | |
312 | | class PreparedFunctionCast : public PreparedFunctionImpl { |
313 | | public: |
314 | | explicit PreparedFunctionCast(CastWrapper::WrapperType&& wrapper_function_, const char* name_) |
315 | 480k | : wrapper_function(std::move(wrapper_function_)), name(name_) {} |
316 | | |
317 | 0 | String get_name() const override { return name; } |
318 | | |
319 | | protected: |
320 | | Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments, |
321 | 480k | uint32_t result, size_t input_rows_count) const override { |
322 | 480k | return wrapper_function(context, block, arguments, result, input_rows_count, nullptr); |
323 | 480k | } |
324 | | |
325 | 480k | bool use_default_implementation_for_nulls() const override { return false; } |
326 | 480k | ColumnNumbers get_arguments_that_are_always_constant() const override { return {1}; } |
327 | | |
328 | | private: |
329 | | CastWrapper::WrapperType wrapper_function; |
330 | | const char* name; |
331 | | }; |
332 | | |
333 | | class FunctionCast final : public IFunctionBase { |
334 | | public: |
335 | | FunctionCast(const char* name_, DataTypes argument_types_, DataTypePtr return_type_) |
336 | 377k | : name(name_), |
337 | 377k | argument_types(std::move(argument_types_)), |
338 | 377k | return_type(std::move(return_type_)) {} |
339 | | |
340 | 480k | const DataTypes& get_argument_types() const override { return argument_types; } |
341 | 480k | const DataTypePtr& get_return_type() const override { return return_type; } |
342 | | |
343 | | PreparedFunctionPtr prepare(FunctionContext* context, const Block& /*sample_block*/, |
344 | | const ColumnNumbers& /*arguments*/, |
345 | 480k | uint32_t /*result*/) const override { |
346 | 480k | return std::make_shared<PreparedFunctionCast>( |
347 | 480k | CastWrapper::prepare_unpack_dictionaries(context, get_argument_types()[0], |
348 | 480k | get_return_type()), |
349 | 480k | name); |
350 | 480k | } |
351 | | |
352 | 0 | String get_name() const override { return name; } |
353 | | |
354 | 0 | bool is_use_default_implementation_for_constants() const override { return true; } |
355 | | |
356 | | private: |
357 | | const char* name = nullptr; |
358 | | |
359 | | DataTypes argument_types; |
360 | | DataTypePtr return_type; |
361 | | }; |
362 | | |
363 | | class FunctionBuilderCast : public FunctionBuilderImpl { |
364 | | public: |
365 | | static constexpr auto name = "CAST"; |
366 | 377k | static FunctionBuilderPtr create() { return std::make_shared<FunctionBuilderCast>(); } |
367 | | |
368 | 377k | FunctionBuilderCast() = default; |
369 | | |
370 | 2 | String get_name() const override { return name; } |
371 | | |
372 | 0 | size_t get_number_of_arguments() const override { return 2; } |
373 | | |
374 | 0 | ColumnNumbers get_arguments_that_are_always_constant() const override { return {1}; } |
375 | | |
376 | | protected: |
377 | | FunctionBasePtr build_impl(const ColumnsWithTypeAndName& arguments, |
378 | 377k | const DataTypePtr& return_type) const override { |
379 | 377k | DataTypes data_types(arguments.size()); |
380 | | |
381 | 1.13M | for (size_t i = 0; i < arguments.size(); ++i) { |
382 | 754k | data_types[i] = arguments[i].type; |
383 | 754k | } |
384 | | |
385 | 377k | return std::make_shared<FunctionCast>(name, data_types, return_type); |
386 | 377k | } |
387 | | |
388 | 377k | bool skip_return_type_check() const override { return true; } |
389 | 0 | DataTypePtr get_return_type_impl(const ColumnsWithTypeAndName& arguments) const override { |
390 | 0 | return nullptr; |
391 | 0 | } |
392 | | |
393 | 0 | bool use_default_implementation_for_nulls() const override { return false; } |
394 | | }; |
395 | | |
396 | 9 | void register_function_cast(SimpleFunctionFactory& factory) { |
397 | 9 | factory.register_function<FunctionBuilderCast>(); |
398 | 9 | } |
399 | | } // namespace doris |