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 | 1.67M | const DataTypePtr& to_type) { |
80 | 1.67M | const auto& from_nested = from_type; |
81 | 1.67M | const auto& to_nested = to_type; |
82 | | |
83 | 1.67M | if (from_type->is_null_literal()) { |
84 | 2.16k | 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.16k | return [](FunctionContext* context, Block& block, const ColumnNumbers&, uint32_t result, |
90 | 2.16k | size_t input_rows_count, const NullMap::value_type* null_map = nullptr) { |
91 | | /// TODO: remove this in the future. |
92 | 2.16k | auto& res = block.get_by_position(result); |
93 | 2.16k | res.column = res.type->create_column_const_with_default_value(input_rows_count) |
94 | 2.16k | ->convert_to_full_column_if_const(); |
95 | 2.16k | return Status::OK(); |
96 | 2.16k | }; |
97 | 2.16k | } |
98 | | |
99 | 1.67M | auto wrapper = prepare_remove_nullable(context, from_nested, to_nested); |
100 | | |
101 | 1.67M | return wrapper; |
102 | 1.67M | } |
103 | | |
104 | | bool need_replace_null_data_to_default(FunctionContext* context, const DataTypePtr& from_type, |
105 | 1.64M | const DataTypePtr& to_type) { |
106 | 1.64M | if (from_type->equals(*to_type)) { |
107 | 88.9k | return false; |
108 | 88.9k | } |
109 | | |
110 | 1.55M | auto make_default_wrapper = [&](const auto& types) -> bool { |
111 | 1.30M | using Types = std::decay_t<decltype(types)>; |
112 | 1.30M | using ToDataType = typename Types::LeftType; |
113 | | |
114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || |
115 | | IsDatelikeV2Types<ToDataType> || |
116 | 375k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { |
117 | 375k | return false; |
118 | 375k | } |
119 | 0 | return call_on_index_and_data_type< |
120 | 1.30M | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { |
121 | 908k | using Types2 = std::decay_t<decltype(types2)>; |
122 | 908k | using FromDataType = typename Types2::LeftType; |
123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || |
124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || |
125 | 677k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { |
126 | 677k | return false; |
127 | 677k | } |
128 | 231k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { |
129 | 231k | using FromFieldType = typename FromDataType::FieldType; |
130 | 231k | using ToFieldType = typename ToDataType::FieldType; |
131 | 231k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); |
132 | 231k | UInt32 from_scale = 0; |
133 | | |
134 | 231k | if constexpr (IsDataTypeDecimal<FromDataType>) { |
135 | 29.4k | const auto* from_decimal_type = |
136 | 29.4k | check_and_get_data_type<FromDataType>(from_type.get()); |
137 | 29.4k | from_precision = |
138 | 29.4k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); |
139 | 29.4k | from_scale = from_decimal_type->get_scale(); |
140 | 29.4k | } |
141 | | |
142 | 231k | UInt32 to_max_digits = 0; |
143 | 231k | UInt32 to_precision = 0; |
144 | 231k | UInt32 to_scale = 0; |
145 | | |
146 | 231k | if constexpr (IsDataTypeDecimal<ToDataType>) { |
147 | 225k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); |
148 | | |
149 | 225k | const auto* to_decimal_type = |
150 | 225k | check_and_get_data_type<ToDataType>(to_type.get()); |
151 | 225k | to_precision = to_decimal_type->get_precision(); |
152 | 225k | ToDataType::check_type_precision(to_precision); |
153 | | |
154 | 225k | to_scale = to_decimal_type->get_scale(); |
155 | 225k | ToDataType::check_type_scale(to_scale); |
156 | 225k | } |
157 | 231k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { |
158 | 6.05k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); |
159 | 6.05k | to_precision = to_max_digits; |
160 | 6.05k | } |
161 | | |
162 | 231k | bool narrow_integral = context->check_overflow_for_decimal() && |
163 | 231k | (to_precision - to_scale) <= (from_precision - from_scale); |
164 | | |
165 | 231k | bool multiply_may_overflow = context->check_overflow_for_decimal(); |
166 | 231k | if (to_scale > from_scale) { |
167 | 12.3k | multiply_may_overflow &= |
168 | 12.3k | (from_precision + to_scale - from_scale) >= to_max_digits; |
169 | 12.3k | } |
170 | 231k | return narrow_integral || multiply_may_overflow; |
171 | 231k | } |
172 | 0 | return false; |
173 | 908k | }); 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 | 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 | }); |
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 | 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_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_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 | | 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 | 35 | return false; | 173 | 35 | }); |
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 | 97 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 97 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 97 | 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 | 97 | return false; | 173 | 97 | }); |
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 | 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_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ 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 | | 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 | return false; | 173 | 2 | }); |
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 | 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_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_EEEEbSI_ 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 | 10 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 10 | using FromFieldType = typename FromDataType::FieldType; | 130 | 10 | using ToFieldType = typename ToDataType::FieldType; | 131 | 10 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 10 | UInt32 from_scale = 0; | 133 | | | 134 | 10 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 10 | const auto* from_decimal_type = | 136 | 10 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 10 | from_precision = | 138 | 10 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 10 | from_scale = from_decimal_type->get_scale(); | 140 | 10 | } | 141 | | | 142 | 10 | UInt32 to_max_digits = 0; | 143 | 10 | UInt32 to_precision = 0; | 144 | 10 | 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 | 10 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 10 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 10 | to_precision = to_max_digits; | 160 | 10 | } | 161 | | | 162 | 10 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 10 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 10 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 10 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 10 | return narrow_integral || multiply_may_overflow; | 171 | 10 | } | 172 | 0 | return false; | 173 | 10 | }); |
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 | 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 | 5 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 5 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 5 | to_precision = to_max_digits; | 160 | 5 | } | 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 | }); |
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 | 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_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ 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 | 5 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 5 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 5 | to_precision = to_max_digits; | 160 | 5 | } | 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 | }); |
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 | 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 | }); |
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 | 827 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 827 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 827 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 827 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 827 | return false; | 127 | 827 | } | 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 | 827 | return false; | 173 | 827 | }); |
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 | 2.54k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.54k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.54k | 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.54k | return false; | 173 | 2.54k | }); |
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 | 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_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_5EEESE_EEEEbSI_ Line | Count | Source | 120 | 143 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 143 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 143 | 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 | 143 | return false; | 173 | 143 | }); |
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 | 220 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 220 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 220 | 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 | 220 | return false; | 173 | 220 | }); |
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 | 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_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_EEEEbSI_ Line | Count | Source | 120 | 23 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 23 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 23 | 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 | 23 | return false; | 173 | 23 | }); |
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 | 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 | | 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 | 30 | return false; | 173 | 30 | }); |
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 | 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 | 19 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 19 | using FromFieldType = typename FromDataType::FieldType; | 130 | 19 | using ToFieldType = typename ToDataType::FieldType; | 131 | 19 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 19 | UInt32 from_scale = 0; | 133 | | | 134 | 19 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 19 | const auto* from_decimal_type = | 136 | 19 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 19 | from_precision = | 138 | 19 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 19 | from_scale = from_decimal_type->get_scale(); | 140 | 19 | } | 141 | | | 142 | 19 | UInt32 to_max_digits = 0; | 143 | 19 | UInt32 to_precision = 0; | 144 | 19 | 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 | 19 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 19 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 19 | to_precision = to_max_digits; | 160 | 19 | } | 161 | | | 162 | 19 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 19 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 19 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 19 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 19 | return narrow_integral || multiply_may_overflow; | 171 | 19 | } | 172 | 0 | return false; | 173 | 19 | }); |
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 | 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 | 24 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 24 | const auto* from_decimal_type = | 136 | 24 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 24 | from_precision = | 138 | 24 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 24 | from_scale = from_decimal_type->get_scale(); | 140 | 24 | } | 141 | | | 142 | 24 | UInt32 to_max_digits = 0; | 143 | 24 | UInt32 to_precision = 0; | 144 | 24 | 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 | 24 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 24 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 24 | to_precision = to_max_digits; | 160 | 24 | } | 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 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 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_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_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 | 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 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 8 | to_precision = to_max_digits; | 160 | 8 | } | 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 | }); |
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 | 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 | 24 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 24 | const auto* from_decimal_type = | 136 | 24 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 24 | from_precision = | 138 | 24 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 24 | from_scale = from_decimal_type->get_scale(); | 140 | 24 | } | 141 | | | 142 | 24 | UInt32 to_max_digits = 0; | 143 | 24 | UInt32 to_precision = 0; | 144 | 24 | 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 | 24 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 24 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 24 | to_precision = to_max_digits; | 160 | 24 | } | 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 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 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_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_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 | 24 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 24 | const auto* from_decimal_type = | 136 | 24 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 24 | from_precision = | 138 | 24 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 24 | from_scale = from_decimal_type->get_scale(); | 140 | 24 | } | 141 | | | 142 | 24 | UInt32 to_max_digits = 0; | 143 | 24 | UInt32 to_precision = 0; | 144 | 24 | 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 | 24 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 24 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 24 | to_precision = to_max_digits; | 160 | 24 | } | 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 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 24 | return narrow_integral || multiply_may_overflow; | 171 | 24 | } | 172 | 0 | return false; | 173 | 24 | }); |
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 | 72 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 72 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 72 | 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 | 72 | return false; | 173 | 72 | }); |
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 | 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_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 | 320 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 320 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 320 | 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 | 320 | return false; | 173 | 320 | }); |
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 | 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_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 120 | 305 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 305 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 305 | 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 | 305 | return false; | 173 | 305 | }); |
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.54k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.54k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.54k | 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.54k | return false; | 173 | 1.54k | }); |
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 | 129 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 129 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 129 | 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 | 129 | return false; | 173 | 129 | }); |
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 | 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_13PrimitiveTypeE4EEEvEEEEbRKT_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_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_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_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_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 | | 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 | }); |
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 | 22 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 22 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 22 | 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 | 22 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 22 | using FromFieldType = typename FromDataType::FieldType; | 130 | 22 | using ToFieldType = typename ToDataType::FieldType; | 131 | 22 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 22 | UInt32 from_scale = 0; | 133 | | | 134 | 22 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 22 | const auto* from_decimal_type = | 136 | 22 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 22 | from_precision = | 138 | 22 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 22 | from_scale = from_decimal_type->get_scale(); | 140 | 22 | } | 141 | | | 142 | 22 | UInt32 to_max_digits = 0; | 143 | 22 | UInt32 to_precision = 0; | 144 | 22 | 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 | 22 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 22 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 22 | to_precision = to_max_digits; | 160 | 22 | } | 161 | | | 162 | 22 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 22 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 22 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 22 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 22 | return narrow_integral || multiply_may_overflow; | 171 | 22 | } | 172 | 0 | return false; | 173 | 22 | }); |
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 | 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 | 24 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 24 | const auto* from_decimal_type = | 136 | 24 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 24 | from_precision = | 138 | 24 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 24 | from_scale = from_decimal_type->get_scale(); | 140 | 24 | } | 141 | | | 142 | 24 | UInt32 to_max_digits = 0; | 143 | 24 | UInt32 to_precision = 0; | 144 | 24 | 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 | 24 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 24 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 24 | to_precision = to_max_digits; | 160 | 24 | } | 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 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 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_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_20EEESE_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 | 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 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 8 | to_precision = to_max_digits; | 160 | 8 | } | 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 | }); |
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 | 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 | 25 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 25 | const auto* from_decimal_type = | 136 | 25 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 25 | from_precision = | 138 | 25 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 25 | from_scale = from_decimal_type->get_scale(); | 140 | 25 | } | 141 | | | 142 | 25 | UInt32 to_max_digits = 0; | 143 | 25 | UInt32 to_precision = 0; | 144 | 25 | 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 | 25 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 25 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 25 | to_precision = to_max_digits; | 160 | 25 | } | 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 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 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_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_35EEESE_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 | 25 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 25 | const auto* from_decimal_type = | 136 | 25 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 25 | from_precision = | 138 | 25 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 25 | from_scale = from_decimal_type->get_scale(); | 140 | 25 | } | 141 | | | 142 | 25 | UInt32 to_max_digits = 0; | 143 | 25 | UInt32 to_precision = 0; | 144 | 25 | 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 | 25 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 25 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 25 | to_precision = to_max_digits; | 160 | 25 | } | 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 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 25 | return narrow_integral || multiply_may_overflow; | 171 | 25 | } | 172 | 0 | return false; | 173 | 25 | }); |
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 | 72 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 72 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 72 | 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 | 72 | return false; | 173 | 72 | }); |
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 | 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_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 | 320 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 320 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 320 | 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 | 320 | return false; | 173 | 320 | }); |
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 | 2.91k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.91k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.91k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 2.91k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 2.91k | return false; | 127 | 2.91k | } | 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.91k | return false; | 173 | 2.91k | }); |
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 | 44 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 44 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 44 | 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 | 44 | return false; | 173 | 44 | }); |
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.52k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 3.52k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 3.52k | 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.52k | return false; | 173 | 3.52k | }); |
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 | 349 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 349 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 349 | 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 | 349 | return false; | 173 | 349 | }); |
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 | 135k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 135k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 135k | 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 | 135k | return false; | 173 | 135k | }); |
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 | 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_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_8EEESE_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_9EEESE_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 | | 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 | 131 | return false; | 173 | 131 | }); |
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 | 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 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 21 | using FromFieldType = typename FromDataType::FieldType; | 130 | 21 | using ToFieldType = typename ToDataType::FieldType; | 131 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 21 | UInt32 from_scale = 0; | 133 | | | 134 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 21 | const auto* from_decimal_type = | 136 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 21 | from_precision = | 138 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 21 | from_scale = from_decimal_type->get_scale(); | 140 | 21 | } | 141 | | | 142 | 21 | UInt32 to_max_digits = 0; | 143 | 21 | UInt32 to_precision = 0; | 144 | 21 | 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 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 21 | to_precision = to_max_digits; | 160 | 21 | } | 161 | | | 162 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 21 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 21 | return narrow_integral || multiply_may_overflow; | 171 | 21 | } | 172 | 0 | return false; | 173 | 21 | }); |
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 | 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 | 37 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 37 | using FromFieldType = typename FromDataType::FieldType; | 130 | 37 | using ToFieldType = typename ToDataType::FieldType; | 131 | 37 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 37 | UInt32 from_scale = 0; | 133 | | | 134 | 37 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 37 | const auto* from_decimal_type = | 136 | 37 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 37 | from_precision = | 138 | 37 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 37 | from_scale = from_decimal_type->get_scale(); | 140 | 37 | } | 141 | | | 142 | 37 | UInt32 to_max_digits = 0; | 143 | 37 | UInt32 to_precision = 0; | 144 | 37 | 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 | 37 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 37 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 37 | to_precision = to_max_digits; | 160 | 37 | } | 161 | | | 162 | 37 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 37 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 37 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 37 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 37 | return narrow_integral || multiply_may_overflow; | 171 | 37 | } | 172 | 0 | return false; | 173 | 37 | }); |
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 | 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 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 8 | to_precision = to_max_digits; | 160 | 8 | } | 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 | }); |
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 | 249 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 249 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 249 | 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 | 249 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 249 | using FromFieldType = typename FromDataType::FieldType; | 130 | 249 | using ToFieldType = typename ToDataType::FieldType; | 131 | 249 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 249 | UInt32 from_scale = 0; | 133 | | | 134 | 249 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 249 | const auto* from_decimal_type = | 136 | 249 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 249 | from_precision = | 138 | 249 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 249 | from_scale = from_decimal_type->get_scale(); | 140 | 249 | } | 141 | | | 142 | 249 | UInt32 to_max_digits = 0; | 143 | 249 | UInt32 to_precision = 0; | 144 | 249 | 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 | 249 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 249 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 249 | to_precision = to_max_digits; | 160 | 249 | } | 161 | | | 162 | 249 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 249 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 249 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 249 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 249 | return narrow_integral || multiply_may_overflow; | 171 | 249 | } | 172 | 0 | return false; | 173 | 249 | }); |
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 | 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 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 21 | using FromFieldType = typename FromDataType::FieldType; | 130 | 21 | using ToFieldType = typename ToDataType::FieldType; | 131 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 21 | UInt32 from_scale = 0; | 133 | | | 134 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 21 | const auto* from_decimal_type = | 136 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 21 | from_precision = | 138 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 21 | from_scale = from_decimal_type->get_scale(); | 140 | 21 | } | 141 | | | 142 | 21 | UInt32 to_max_digits = 0; | 143 | 21 | UInt32 to_precision = 0; | 144 | 21 | 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 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 21 | to_precision = to_max_digits; | 160 | 21 | } | 161 | | | 162 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 21 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 21 | return narrow_integral || multiply_may_overflow; | 171 | 21 | } | 172 | 0 | return false; | 173 | 21 | }); |
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 | 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 | | 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 | 12 | return false; | 173 | 12 | }); |
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 | 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_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 | 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 | | 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 | 276 | return false; | 173 | 276 | }); |
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 | 22.4k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 22.4k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 22.4k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 22.4k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 22.4k | return false; | 127 | 22.4k | } | 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 | 22.4k | return false; | 173 | 22.4k | }); |
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 | 551 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 551 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 551 | 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 | 551 | return false; | 173 | 551 | }); |
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 | 663 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 663 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 663 | 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 | 663 | return false; | 173 | 663 | }); |
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 | 11.9k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 11.9k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 11.9k | 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 | 11.9k | return false; | 173 | 11.9k | }); |
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 | 313 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 313 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 313 | 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 | 313 | return false; | 173 | 313 | }); |
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 | 639 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 639 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 639 | 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 | 639 | return false; | 173 | 639 | }); |
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.34k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.34k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.34k | 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.34k | return false; | 173 | 2.34k | }); |
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 | 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 | 309 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 309 | const auto* from_decimal_type = | 136 | 309 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 309 | from_precision = | 138 | 309 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 309 | from_scale = from_decimal_type->get_scale(); | 140 | 309 | } | 141 | | | 142 | 309 | UInt32 to_max_digits = 0; | 143 | 309 | UInt32 to_precision = 0; | 144 | 309 | 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 | 309 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 309 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 309 | to_precision = to_max_digits; | 160 | 309 | } | 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 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 311 | 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_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_29EEESE_EEEEbSI_ Line | Count | Source | 120 | 315 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 315 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 315 | 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 | 315 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 315 | using FromFieldType = typename FromDataType::FieldType; | 130 | 315 | using ToFieldType = typename ToDataType::FieldType; | 131 | 315 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 315 | UInt32 from_scale = 0; | 133 | | | 134 | 315 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 315 | const auto* from_decimal_type = | 136 | 315 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 315 | from_precision = | 138 | 315 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 315 | from_scale = from_decimal_type->get_scale(); | 140 | 315 | } | 141 | | | 142 | 315 | UInt32 to_max_digits = 0; | 143 | 315 | UInt32 to_precision = 0; | 144 | 315 | 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 | 315 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 315 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 315 | to_precision = to_max_digits; | 160 | 315 | } | 161 | | | 162 | 315 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 315 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 315 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 315 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 317 | return narrow_integral || multiply_may_overflow; | 171 | 315 | } | 172 | 0 | return false; | 173 | 315 | }); |
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 | 304 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 304 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 304 | 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 | 304 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 304 | using FromFieldType = typename FromDataType::FieldType; | 130 | 304 | using ToFieldType = typename ToDataType::FieldType; | 131 | 304 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 304 | UInt32 from_scale = 0; | 133 | | | 134 | 304 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 304 | const auto* from_decimal_type = | 136 | 304 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 304 | from_precision = | 138 | 304 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 304 | from_scale = from_decimal_type->get_scale(); | 140 | 304 | } | 141 | | | 142 | 304 | UInt32 to_max_digits = 0; | 143 | 304 | UInt32 to_precision = 0; | 144 | 304 | 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 | 304 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 304 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 304 | to_precision = to_max_digits; | 160 | 304 | } | 161 | | | 162 | 304 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 304 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 304 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 304 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 304 | return narrow_integral || multiply_may_overflow; | 171 | 304 | } | 172 | 0 | return false; | 173 | 304 | }); |
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 | 745 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 745 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 745 | 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 | 745 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 745 | using FromFieldType = typename FromDataType::FieldType; | 130 | 745 | using ToFieldType = typename ToDataType::FieldType; | 131 | 745 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 745 | UInt32 from_scale = 0; | 133 | | | 134 | 745 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 745 | const auto* from_decimal_type = | 136 | 745 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 745 | from_precision = | 138 | 745 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 745 | from_scale = from_decimal_type->get_scale(); | 140 | 745 | } | 141 | | | 142 | 745 | UInt32 to_max_digits = 0; | 143 | 745 | UInt32 to_precision = 0; | 144 | 745 | 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 | 745 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 745 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 745 | to_precision = to_max_digits; | 160 | 745 | } | 161 | | | 162 | 745 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 745 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 745 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 745 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 745 | return narrow_integral || multiply_may_overflow; | 171 | 745 | } | 172 | 0 | return false; | 173 | 745 | }); |
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 | 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 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 21 | using FromFieldType = typename FromDataType::FieldType; | 130 | 21 | using ToFieldType = typename ToDataType::FieldType; | 131 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 21 | UInt32 from_scale = 0; | 133 | | | 134 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 21 | const auto* from_decimal_type = | 136 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 21 | from_precision = | 138 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 21 | from_scale = from_decimal_type->get_scale(); | 140 | 21 | } | 141 | | | 142 | 21 | UInt32 to_max_digits = 0; | 143 | 21 | UInt32 to_precision = 0; | 144 | 21 | 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 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 21 | to_precision = to_max_digits; | 160 | 21 | } | 161 | | | 162 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 21 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 21 | return narrow_integral || multiply_may_overflow; | 171 | 21 | } | 172 | 0 | return false; | 173 | 21 | }); |
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.24k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.24k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.24k | 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.24k | return false; | 173 | 1.24k | }); |
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.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 | }); |
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 | 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_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 | 22.6k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 22.6k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 22.6k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 22.6k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 22.6k | return false; | 127 | 22.6k | } | 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 | 22.6k | return false; | 173 | 22.6k | }); |
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 | 147 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 147 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 147 | 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 | 147 | return false; | 173 | 147 | }); |
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 | 109 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 109 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 109 | 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 | 109 | return false; | 173 | 109 | }); |
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 | 79 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 79 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 79 | 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 | 79 | return false; | 173 | 79 | }); |
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 | 134 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 134 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 134 | 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 | 134 | return false; | 173 | 134 | }); |
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 | 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 | }); |
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 | 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_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_9EEESE_EEEEbSI_ 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_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_28EEESE_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 | 18 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 18 | using FromFieldType = typename FromDataType::FieldType; | 130 | 18 | using ToFieldType = typename ToDataType::FieldType; | 131 | 18 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 18 | UInt32 from_scale = 0; | 133 | | | 134 | 18 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 18 | const auto* from_decimal_type = | 136 | 18 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 18 | from_precision = | 138 | 18 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 18 | from_scale = from_decimal_type->get_scale(); | 140 | 18 | } | 141 | | | 142 | 18 | UInt32 to_max_digits = 0; | 143 | 18 | UInt32 to_precision = 0; | 144 | 18 | 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 | 18 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 18 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 18 | to_precision = to_max_digits; | 160 | 18 | } | 161 | | | 162 | 18 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 18 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 18 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 18 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 18 | return narrow_integral || multiply_may_overflow; | 171 | 18 | } | 172 | 0 | return false; | 173 | 18 | }); |
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 | 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 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 21 | using FromFieldType = typename FromDataType::FieldType; | 130 | 21 | using ToFieldType = typename ToDataType::FieldType; | 131 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 21 | UInt32 from_scale = 0; | 133 | | | 134 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 21 | const auto* from_decimal_type = | 136 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 21 | from_precision = | 138 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 21 | from_scale = from_decimal_type->get_scale(); | 140 | 21 | } | 141 | | | 142 | 21 | UInt32 to_max_digits = 0; | 143 | 21 | UInt32 to_precision = 0; | 144 | 21 | 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 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 21 | to_precision = to_max_digits; | 160 | 21 | } | 161 | | | 162 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 21 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 21 | return narrow_integral || multiply_may_overflow; | 171 | 21 | } | 172 | 0 | return false; | 173 | 21 | }); |
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 | 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 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 8 | to_precision = to_max_digits; | 160 | 8 | } | 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 | }); |
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 | 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 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 21 | using FromFieldType = typename FromDataType::FieldType; | 130 | 21 | using ToFieldType = typename ToDataType::FieldType; | 131 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 21 | UInt32 from_scale = 0; | 133 | | | 134 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 21 | const auto* from_decimal_type = | 136 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 21 | from_precision = | 138 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 21 | from_scale = from_decimal_type->get_scale(); | 140 | 21 | } | 141 | | | 142 | 21 | UInt32 to_max_digits = 0; | 143 | 21 | UInt32 to_precision = 0; | 144 | 21 | 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 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 21 | to_precision = to_max_digits; | 160 | 21 | } | 161 | | | 162 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 21 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 21 | return narrow_integral || multiply_may_overflow; | 171 | 21 | } | 172 | 0 | return false; | 173 | 21 | }); |
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 | 782 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 782 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 782 | 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 | 782 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 782 | using FromFieldType = typename FromDataType::FieldType; | 130 | 782 | using ToFieldType = typename ToDataType::FieldType; | 131 | 782 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 782 | UInt32 from_scale = 0; | 133 | | | 134 | 782 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 782 | const auto* from_decimal_type = | 136 | 782 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 782 | from_precision = | 138 | 782 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 782 | from_scale = from_decimal_type->get_scale(); | 140 | 782 | } | 141 | | | 142 | 782 | UInt32 to_max_digits = 0; | 143 | 782 | UInt32 to_precision = 0; | 144 | 782 | 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 | 782 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 782 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 782 | to_precision = to_max_digits; | 160 | 782 | } | 161 | | | 162 | 782 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 782 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 782 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 782 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 782 | return narrow_integral || multiply_may_overflow; | 171 | 782 | } | 172 | 0 | return false; | 173 | 782 | }); |
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 | 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 | | 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 | return false; | 173 | 2 | }); |
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 | 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 | | 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 | 16 | return false; | 173 | 16 | }); |
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 | 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_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 | 77.3k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 77.3k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 77.3k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 77.3k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 77.3k | return false; | 127 | 77.3k | } | 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 | 77.3k | return false; | 173 | 77.3k | }); |
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 | 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 | | 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 | return false; | 173 | 2 | }); |
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 | 31 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 31 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 31 | 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 | 31 | return false; | 173 | 31 | }); |
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 | 119 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 119 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 119 | 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 | 119 | return false; | 173 | 119 | }); |
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 | 89 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 89 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 89 | 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 | 89 | return false; | 173 | 89 | }); |
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 | 119 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 119 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 119 | 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 | 119 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 119 | using FromFieldType = typename FromDataType::FieldType; | 130 | 119 | using ToFieldType = typename ToDataType::FieldType; | 131 | 119 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 119 | UInt32 from_scale = 0; | 133 | | | 134 | 119 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 119 | const auto* from_decimal_type = | 136 | 119 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 119 | from_precision = | 138 | 119 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 119 | from_scale = from_decimal_type->get_scale(); | 140 | 119 | } | 141 | | | 142 | 119 | UInt32 to_max_digits = 0; | 143 | 119 | UInt32 to_precision = 0; | 144 | 119 | 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 | 119 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 119 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 119 | to_precision = to_max_digits; | 160 | 119 | } | 161 | | | 162 | 119 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 119 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 119 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 119 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 119 | return narrow_integral || multiply_may_overflow; | 171 | 119 | } | 172 | 0 | return false; | 173 | 119 | }); |
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 | 112 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 112 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 112 | 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 | 112 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 112 | using FromFieldType = typename FromDataType::FieldType; | 130 | 112 | using ToFieldType = typename ToDataType::FieldType; | 131 | 112 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 112 | UInt32 from_scale = 0; | 133 | | | 134 | 112 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 112 | const auto* from_decimal_type = | 136 | 112 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 112 | from_precision = | 138 | 112 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 112 | from_scale = from_decimal_type->get_scale(); | 140 | 112 | } | 141 | | | 142 | 112 | UInt32 to_max_digits = 0; | 143 | 112 | UInt32 to_precision = 0; | 144 | 112 | 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 | 112 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 112 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 112 | to_precision = to_max_digits; | 160 | 112 | } | 161 | | | 162 | 112 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 112 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 112 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 112 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 112 | return narrow_integral || multiply_may_overflow; | 171 | 112 | } | 172 | 0 | return false; | 173 | 112 | }); |
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 | 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_13PrimitiveTypeE8EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_15DataTypeDecimalILSD_30EEESE_EEEEbSI_ Line | Count | Source | 120 | 97 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 97 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 97 | 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 | 97 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 97 | using FromFieldType = typename FromDataType::FieldType; | 130 | 97 | using ToFieldType = typename ToDataType::FieldType; | 131 | 97 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 97 | UInt32 from_scale = 0; | 133 | | | 134 | 97 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 97 | const auto* from_decimal_type = | 136 | 97 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 97 | from_precision = | 138 | 97 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 97 | from_scale = from_decimal_type->get_scale(); | 140 | 97 | } | 141 | | | 142 | 97 | UInt32 to_max_digits = 0; | 143 | 97 | UInt32 to_precision = 0; | 144 | 97 | 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 | 97 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 97 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 97 | to_precision = to_max_digits; | 160 | 97 | } | 161 | | | 162 | 97 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 97 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 97 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 97 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 97 | return narrow_integral || multiply_may_overflow; | 171 | 97 | } | 172 | 0 | return false; | 173 | 97 | }); |
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 | 554 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 554 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 554 | 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 | 554 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 554 | using FromFieldType = typename FromDataType::FieldType; | 130 | 554 | using ToFieldType = typename ToDataType::FieldType; | 131 | 554 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 554 | UInt32 from_scale = 0; | 133 | | | 134 | 554 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 554 | const auto* from_decimal_type = | 136 | 554 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 554 | from_precision = | 138 | 554 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 554 | from_scale = from_decimal_type->get_scale(); | 140 | 554 | } | 141 | | | 142 | 554 | UInt32 to_max_digits = 0; | 143 | 554 | UInt32 to_precision = 0; | 144 | 554 | 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 | 554 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 554 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 554 | to_precision = to_max_digits; | 160 | 554 | } | 161 | | | 162 | 554 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 554 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 554 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 554 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 554 | return narrow_integral || multiply_may_overflow; | 171 | 554 | } | 172 | 0 | return false; | 173 | 554 | }); |
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 | 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 | | 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 | 39 | return false; | 173 | 39 | }); |
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 | 7.78k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 7.78k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 7.78k | 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.78k | return false; | 173 | 7.78k | }); |
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 | 162 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 162 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 162 | 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 | 162 | return false; | 173 | 162 | }); |
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.74k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.74k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.74k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 1.74k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 1.74k | return false; | 127 | 1.74k | } | 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.74k | return false; | 173 | 1.74k | }); |
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 | 306 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 306 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 306 | 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 | 306 | return false; | 173 | 306 | }); |
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 | 887 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 887 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 887 | 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 | 887 | return false; | 173 | 887 | }); |
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.47k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.47k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.47k | 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.47k | return false; | 173 | 1.47k | }); |
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 | 197 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 197 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 197 | 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 | 197 | return false; | 173 | 197 | }); |
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.23k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.23k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.23k | 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.23k | return false; | 173 | 1.23k | }); |
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 | 413 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 413 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 413 | 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 | 413 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 413 | using FromFieldType = typename FromDataType::FieldType; | 130 | 413 | using ToFieldType = typename ToDataType::FieldType; | 131 | 413 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 413 | UInt32 from_scale = 0; | 133 | | | 134 | 413 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 413 | const auto* from_decimal_type = | 136 | 413 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 413 | from_precision = | 138 | 413 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 413 | from_scale = from_decimal_type->get_scale(); | 140 | 413 | } | 141 | | | 142 | 413 | UInt32 to_max_digits = 0; | 143 | 413 | UInt32 to_precision = 0; | 144 | 413 | 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 | 413 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 413 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 413 | to_precision = to_max_digits; | 160 | 413 | } | 161 | | | 162 | 413 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 413 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 413 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 413 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 415 | return narrow_integral || multiply_may_overflow; | 171 | 413 | } | 172 | 0 | return false; | 173 | 413 | }); |
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 | 331 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 331 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 331 | 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 | 331 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 331 | using FromFieldType = typename FromDataType::FieldType; | 130 | 331 | using ToFieldType = typename ToDataType::FieldType; | 131 | 331 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 331 | UInt32 from_scale = 0; | 133 | | | 134 | 331 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 331 | const auto* from_decimal_type = | 136 | 331 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 331 | from_precision = | 138 | 331 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 331 | from_scale = from_decimal_type->get_scale(); | 140 | 331 | } | 141 | | | 142 | 331 | UInt32 to_max_digits = 0; | 143 | 331 | UInt32 to_precision = 0; | 144 | 331 | 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 | 331 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 331 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 331 | to_precision = to_max_digits; | 160 | 331 | } | 161 | | | 162 | 331 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 331 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 331 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 331 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 331 | return narrow_integral || multiply_may_overflow; | 171 | 331 | } | 172 | 0 | return false; | 173 | 331 | }); |
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 | 56 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 56 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 56 | 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 | 56 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 56 | using FromFieldType = typename FromDataType::FieldType; | 130 | 56 | using ToFieldType = typename ToDataType::FieldType; | 131 | 56 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 56 | UInt32 from_scale = 0; | 133 | | | 134 | 56 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 56 | const auto* from_decimal_type = | 136 | 56 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 56 | from_precision = | 138 | 56 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 56 | from_scale = from_decimal_type->get_scale(); | 140 | 56 | } | 141 | | | 142 | 56 | UInt32 to_max_digits = 0; | 143 | 56 | UInt32 to_precision = 0; | 144 | 56 | 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 | 56 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 56 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 56 | to_precision = to_max_digits; | 160 | 56 | } | 161 | | | 162 | 56 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 56 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 56 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 56 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 56 | return narrow_integral || multiply_may_overflow; | 171 | 56 | } | 172 | 0 | return false; | 173 | 56 | }); |
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 | 692 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 692 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 692 | 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 | 692 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 692 | using FromFieldType = typename FromDataType::FieldType; | 130 | 692 | using ToFieldType = typename ToDataType::FieldType; | 131 | 692 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 692 | UInt32 from_scale = 0; | 133 | | | 134 | 692 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 692 | const auto* from_decimal_type = | 136 | 692 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 692 | from_precision = | 138 | 692 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 692 | from_scale = from_decimal_type->get_scale(); | 140 | 692 | } | 141 | | | 142 | 692 | UInt32 to_max_digits = 0; | 143 | 692 | UInt32 to_precision = 0; | 144 | 692 | 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 | 692 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 692 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 692 | to_precision = to_max_digits; | 160 | 692 | } | 161 | | | 162 | 692 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 692 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 692 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 692 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 693 | return narrow_integral || multiply_may_overflow; | 171 | 692 | } | 172 | 0 | return false; | 173 | 692 | }); |
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 | 544 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 544 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 544 | 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 | 544 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 544 | using FromFieldType = typename FromDataType::FieldType; | 130 | 544 | using ToFieldType = typename ToDataType::FieldType; | 131 | 544 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 544 | UInt32 from_scale = 0; | 133 | | | 134 | 544 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 544 | const auto* from_decimal_type = | 136 | 544 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 544 | from_precision = | 138 | 544 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 544 | from_scale = from_decimal_type->get_scale(); | 140 | 544 | } | 141 | | | 142 | 544 | UInt32 to_max_digits = 0; | 143 | 544 | UInt32 to_precision = 0; | 144 | 544 | 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 | 544 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 544 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 544 | to_precision = to_max_digits; | 160 | 544 | } | 161 | | | 162 | 544 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 544 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 544 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 544 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 544 | return narrow_integral || multiply_may_overflow; | 171 | 544 | } | 172 | 0 | return false; | 173 | 544 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_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 | | 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_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 120 | 87 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 87 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 87 | 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 | 87 | return false; | 173 | 87 | }); |
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 | 7.84k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 7.84k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 7.84k | 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.84k | return false; | 173 | 7.84k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_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 | | 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_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 120 | 162 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 162 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 162 | 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 | 162 | return false; | 173 | 162 | }); |
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.41k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 6.41k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 6.41k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 6.41k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 6.41k | return false; | 127 | 6.41k | } | 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.41k | return false; | 173 | 6.41k | }); |
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 | 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 | 19 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 19 | using FromFieldType = typename FromDataType::FieldType; | 130 | 19 | using ToFieldType = typename ToDataType::FieldType; | 131 | 19 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 19 | 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 | 19 | UInt32 to_max_digits = 0; | 143 | 19 | UInt32 to_precision = 0; | 144 | 19 | UInt32 to_scale = 0; | 145 | | | 146 | 19 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 19 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 19 | const auto* to_decimal_type = | 150 | 19 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 19 | to_precision = to_decimal_type->get_precision(); | 152 | 19 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 19 | to_scale = to_decimal_type->get_scale(); | 155 | 19 | ToDataType::check_type_scale(to_scale); | 156 | 19 | } | 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 | 19 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 19 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 19 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 19 | if (to_scale > from_scale) { | 167 | 18 | multiply_may_overflow &= | 168 | 18 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 18 | } | 170 | 19 | return narrow_integral || multiply_may_overflow; | 171 | 19 | } | 172 | 0 | return false; | 173 | 19 | }); |
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 | 482 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 482 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 482 | 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 | 482 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 482 | using FromFieldType = typename FromDataType::FieldType; | 130 | 482 | using ToFieldType = typename ToDataType::FieldType; | 131 | 482 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 482 | 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 | 482 | UInt32 to_max_digits = 0; | 143 | 482 | UInt32 to_precision = 0; | 144 | 482 | UInt32 to_scale = 0; | 145 | | | 146 | 482 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 482 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 482 | const auto* to_decimal_type = | 150 | 482 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 482 | to_precision = to_decimal_type->get_precision(); | 152 | 482 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 482 | to_scale = to_decimal_type->get_scale(); | 155 | 482 | ToDataType::check_type_scale(to_scale); | 156 | 482 | } | 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 | 482 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 482 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 482 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 482 | if (to_scale > from_scale) { | 167 | 279 | multiply_may_overflow &= | 168 | 279 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 279 | } | 170 | 482 | return narrow_integral || multiply_may_overflow; | 171 | 482 | } | 172 | 0 | return false; | 173 | 482 | }); |
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 | 498 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 498 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 498 | 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 | 498 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 498 | using FromFieldType = typename FromDataType::FieldType; | 130 | 498 | using ToFieldType = typename ToDataType::FieldType; | 131 | 498 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 498 | 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 | 498 | UInt32 to_max_digits = 0; | 143 | 498 | UInt32 to_precision = 0; | 144 | 498 | UInt32 to_scale = 0; | 145 | | | 146 | 498 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 498 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 498 | const auto* to_decimal_type = | 150 | 498 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 498 | to_precision = to_decimal_type->get_precision(); | 152 | 498 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 498 | to_scale = to_decimal_type->get_scale(); | 155 | 498 | ToDataType::check_type_scale(to_scale); | 156 | 498 | } | 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 | 498 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 498 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 498 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 498 | if (to_scale > from_scale) { | 167 | 251 | multiply_may_overflow &= | 168 | 251 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 251 | } | 170 | 498 | return narrow_integral || multiply_may_overflow; | 171 | 498 | } | 172 | 0 | return false; | 173 | 498 | }); |
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 | 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 | 552 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 552 | using FromFieldType = typename FromDataType::FieldType; | 130 | 552 | using ToFieldType = typename ToDataType::FieldType; | 131 | 552 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 552 | 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 | 552 | UInt32 to_max_digits = 0; | 143 | 552 | UInt32 to_precision = 0; | 144 | 552 | UInt32 to_scale = 0; | 145 | | | 146 | 552 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 552 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 552 | const auto* to_decimal_type = | 150 | 552 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 552 | to_precision = to_decimal_type->get_precision(); | 152 | 552 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 552 | to_scale = to_decimal_type->get_scale(); | 155 | 552 | ToDataType::check_type_scale(to_scale); | 156 | 552 | } | 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 | 552 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 552 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 552 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 552 | if (to_scale > from_scale) { | 167 | 280 | multiply_may_overflow &= | 168 | 280 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 280 | } | 170 | 552 | return narrow_integral || multiply_may_overflow; | 171 | 552 | } | 172 | 0 | return false; | 173 | 552 | }); |
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 | 612 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 612 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 612 | 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 | 612 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 612 | using FromFieldType = typename FromDataType::FieldType; | 130 | 612 | using ToFieldType = typename ToDataType::FieldType; | 131 | 612 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 612 | 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 | 612 | UInt32 to_max_digits = 0; | 143 | 612 | UInt32 to_precision = 0; | 144 | 612 | UInt32 to_scale = 0; | 145 | | | 146 | 612 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 612 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 612 | const auto* to_decimal_type = | 150 | 612 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 612 | to_precision = to_decimal_type->get_precision(); | 152 | 612 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 612 | to_scale = to_decimal_type->get_scale(); | 155 | 612 | ToDataType::check_type_scale(to_scale); | 156 | 612 | } | 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 | 612 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 612 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 612 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 612 | if (to_scale > from_scale) { | 167 | 266 | multiply_may_overflow &= | 168 | 266 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 266 | } | 170 | 612 | return narrow_integral || multiply_may_overflow; | 171 | 612 | } | 172 | 0 | return false; | 173 | 612 | }); |
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 | 549 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 549 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 549 | 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 | 549 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 549 | using FromFieldType = typename FromDataType::FieldType; | 130 | 549 | using ToFieldType = typename ToDataType::FieldType; | 131 | 549 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 549 | 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 | 549 | UInt32 to_max_digits = 0; | 143 | 549 | UInt32 to_precision = 0; | 144 | 549 | UInt32 to_scale = 0; | 145 | | | 146 | 549 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 549 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 549 | const auto* to_decimal_type = | 150 | 549 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 549 | to_precision = to_decimal_type->get_precision(); | 152 | 549 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 549 | to_scale = to_decimal_type->get_scale(); | 155 | 549 | ToDataType::check_type_scale(to_scale); | 156 | 549 | } | 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 | 549 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 549 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 549 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 549 | if (to_scale > from_scale) { | 167 | 278 | multiply_may_overflow &= | 168 | 278 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 278 | } | 170 | 549 | return narrow_integral || multiply_may_overflow; | 171 | 549 | } | 172 | 0 | return false; | 173 | 549 | }); |
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 | 104 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 104 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 104 | 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 | 104 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 104 | using FromFieldType = typename FromDataType::FieldType; | 130 | 104 | using ToFieldType = typename ToDataType::FieldType; | 131 | 104 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 104 | 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 | 104 | UInt32 to_max_digits = 0; | 143 | 104 | UInt32 to_precision = 0; | 144 | 104 | UInt32 to_scale = 0; | 145 | | | 146 | 104 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 104 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 104 | const auto* to_decimal_type = | 150 | 104 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 104 | to_precision = to_decimal_type->get_precision(); | 152 | 104 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 104 | to_scale = to_decimal_type->get_scale(); | 155 | 104 | ToDataType::check_type_scale(to_scale); | 156 | 104 | } | 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 | 104 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 104 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 104 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 104 | if (to_scale > from_scale) { | 167 | 68 | multiply_may_overflow &= | 168 | 68 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 68 | } | 170 | 104 | return narrow_integral || multiply_may_overflow; | 171 | 104 | } | 172 | 0 | return false; | 173 | 104 | }); |
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 | 308 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 308 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 308 | 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 | 308 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 308 | using FromFieldType = typename FromDataType::FieldType; | 130 | 308 | using ToFieldType = typename ToDataType::FieldType; | 131 | 308 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 308 | 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 | 308 | UInt32 to_max_digits = 0; | 143 | 308 | UInt32 to_precision = 0; | 144 | 308 | UInt32 to_scale = 0; | 145 | | | 146 | 308 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 308 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 308 | const auto* to_decimal_type = | 150 | 308 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 308 | to_precision = to_decimal_type->get_precision(); | 152 | 308 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 308 | to_scale = to_decimal_type->get_scale(); | 155 | 308 | ToDataType::check_type_scale(to_scale); | 156 | 308 | } | 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 | 308 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 308 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 308 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 308 | if (to_scale > from_scale) { | 167 | 258 | multiply_may_overflow &= | 168 | 258 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 258 | } | 170 | 308 | return narrow_integral || multiply_may_overflow; | 171 | 308 | } | 172 | 0 | return false; | 173 | 308 | }); |
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 | 405 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 405 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 405 | 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 | 405 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 405 | using FromFieldType = typename FromDataType::FieldType; | 130 | 405 | using ToFieldType = typename ToDataType::FieldType; | 131 | 405 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 405 | UInt32 from_scale = 0; | 133 | | | 134 | 405 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 405 | const auto* from_decimal_type = | 136 | 405 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 405 | from_precision = | 138 | 405 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 405 | from_scale = from_decimal_type->get_scale(); | 140 | 405 | } | 141 | | | 142 | 405 | UInt32 to_max_digits = 0; | 143 | 405 | UInt32 to_precision = 0; | 144 | 405 | UInt32 to_scale = 0; | 145 | | | 146 | 405 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 405 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 405 | const auto* to_decimal_type = | 150 | 405 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 405 | to_precision = to_decimal_type->get_precision(); | 152 | 405 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 405 | to_scale = to_decimal_type->get_scale(); | 155 | 405 | ToDataType::check_type_scale(to_scale); | 156 | 405 | } | 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 | 405 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 405 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 405 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 405 | if (to_scale > from_scale) { | 167 | 84 | multiply_may_overflow &= | 168 | 84 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 84 | } | 170 | 405 | return narrow_integral || multiply_may_overflow; | 171 | 405 | } | 172 | 0 | return false; | 173 | 405 | }); |
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 | 620 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 620 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 620 | 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 | 620 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 620 | using FromFieldType = typename FromDataType::FieldType; | 130 | 620 | using ToFieldType = typename ToDataType::FieldType; | 131 | 620 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 620 | UInt32 from_scale = 0; | 133 | | | 134 | 620 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 620 | const auto* from_decimal_type = | 136 | 620 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 620 | from_precision = | 138 | 620 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 620 | from_scale = from_decimal_type->get_scale(); | 140 | 620 | } | 141 | | | 142 | 620 | UInt32 to_max_digits = 0; | 143 | 620 | UInt32 to_precision = 0; | 144 | 620 | UInt32 to_scale = 0; | 145 | | | 146 | 620 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 620 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 620 | const auto* to_decimal_type = | 150 | 620 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 620 | to_precision = to_decimal_type->get_precision(); | 152 | 620 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 620 | to_scale = to_decimal_type->get_scale(); | 155 | 620 | ToDataType::check_type_scale(to_scale); | 156 | 620 | } | 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 | 620 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 620 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 620 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 620 | if (to_scale > from_scale) { | 167 | 198 | multiply_may_overflow &= | 168 | 198 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 198 | } | 170 | 620 | return narrow_integral || multiply_may_overflow; | 171 | 620 | } | 172 | 0 | return false; | 173 | 620 | }); |
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 | 254 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 254 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 254 | 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 | 254 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 254 | using FromFieldType = typename FromDataType::FieldType; | 130 | 254 | using ToFieldType = typename ToDataType::FieldType; | 131 | 254 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 254 | UInt32 from_scale = 0; | 133 | | | 134 | 254 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 254 | const auto* from_decimal_type = | 136 | 254 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 254 | from_precision = | 138 | 254 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 254 | from_scale = from_decimal_type->get_scale(); | 140 | 254 | } | 141 | | | 142 | 254 | UInt32 to_max_digits = 0; | 143 | 254 | UInt32 to_precision = 0; | 144 | 254 | UInt32 to_scale = 0; | 145 | | | 146 | 254 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 254 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 254 | const auto* to_decimal_type = | 150 | 254 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 254 | to_precision = to_decimal_type->get_precision(); | 152 | 254 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 254 | to_scale = to_decimal_type->get_scale(); | 155 | 254 | ToDataType::check_type_scale(to_scale); | 156 | 254 | } | 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 | 254 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 254 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 254 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 254 | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 254 | return narrow_integral || multiply_may_overflow; | 171 | 254 | } | 172 | 0 | return false; | 173 | 254 | }); |
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 | 438 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 438 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 438 | 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 | 438 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 438 | using FromFieldType = typename FromDataType::FieldType; | 130 | 438 | using ToFieldType = typename ToDataType::FieldType; | 131 | 438 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 438 | UInt32 from_scale = 0; | 133 | | | 134 | 438 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 438 | const auto* from_decimal_type = | 136 | 438 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 438 | from_precision = | 138 | 438 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 438 | from_scale = from_decimal_type->get_scale(); | 140 | 438 | } | 141 | | | 142 | 438 | UInt32 to_max_digits = 0; | 143 | 438 | UInt32 to_precision = 0; | 144 | 438 | UInt32 to_scale = 0; | 145 | | | 146 | 438 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 438 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 438 | const auto* to_decimal_type = | 150 | 438 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 438 | to_precision = to_decimal_type->get_precision(); | 152 | 438 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 438 | to_scale = to_decimal_type->get_scale(); | 155 | 438 | ToDataType::check_type_scale(to_scale); | 156 | 438 | } | 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 | 438 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 438 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 438 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 438 | if (to_scale > from_scale) { | 167 | 141 | multiply_may_overflow &= | 168 | 141 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 141 | } | 170 | 438 | return narrow_integral || multiply_may_overflow; | 171 | 438 | } | 172 | 0 | return false; | 173 | 438 | }); |
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 | 303 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 303 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 303 | 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 | 303 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 303 | using FromFieldType = typename FromDataType::FieldType; | 130 | 303 | using ToFieldType = typename ToDataType::FieldType; | 131 | 303 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 303 | UInt32 from_scale = 0; | 133 | | | 134 | 303 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 303 | const auto* from_decimal_type = | 136 | 303 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 303 | from_precision = | 138 | 303 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 303 | from_scale = from_decimal_type->get_scale(); | 140 | 303 | } | 141 | | | 142 | 303 | UInt32 to_max_digits = 0; | 143 | 303 | UInt32 to_precision = 0; | 144 | 303 | UInt32 to_scale = 0; | 145 | | | 146 | 303 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 303 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 303 | const auto* to_decimal_type = | 150 | 303 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 303 | to_precision = to_decimal_type->get_precision(); | 152 | 303 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 303 | to_scale = to_decimal_type->get_scale(); | 155 | 303 | ToDataType::check_type_scale(to_scale); | 156 | 303 | } | 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 | 303 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 303 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 303 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 303 | if (to_scale > from_scale) { | 167 | 79 | multiply_may_overflow &= | 168 | 79 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 79 | } | 170 | 303 | return narrow_integral || multiply_may_overflow; | 171 | 303 | } | 172 | 0 | return false; | 173 | 303 | }); |
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 | 2.91k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.91k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.91k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 2.91k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 2.91k | return false; | 127 | 2.91k | } | 128 | 2.91k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2.91k | using FromFieldType = typename FromDataType::FieldType; | 130 | 2.91k | using ToFieldType = typename ToDataType::FieldType; | 131 | 2.91k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2.91k | 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.91k | UInt32 to_max_digits = 0; | 143 | 2.91k | UInt32 to_precision = 0; | 144 | 2.91k | UInt32 to_scale = 0; | 145 | | | 146 | 2.91k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 2.91k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 2.91k | const auto* to_decimal_type = | 150 | 2.91k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 2.91k | to_precision = to_decimal_type->get_precision(); | 152 | 2.91k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 2.91k | to_scale = to_decimal_type->get_scale(); | 155 | 2.91k | ToDataType::check_type_scale(to_scale); | 156 | 2.91k | } | 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.91k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2.91k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2.91k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2.91k | 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.91k | return narrow_integral || multiply_may_overflow; | 171 | 2.91k | } | 172 | 0 | return false; | 173 | 2.91k | }); |
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 | 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 | 17 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 17 | using FromFieldType = typename FromDataType::FieldType; | 130 | 17 | using ToFieldType = typename ToDataType::FieldType; | 131 | 17 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 17 | 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 | 17 | UInt32 to_max_digits = 0; | 143 | 17 | UInt32 to_precision = 0; | 144 | 17 | UInt32 to_scale = 0; | 145 | | | 146 | 17 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 17 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 17 | const auto* to_decimal_type = | 150 | 17 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 17 | to_precision = to_decimal_type->get_precision(); | 152 | 17 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 17 | to_scale = to_decimal_type->get_scale(); | 155 | 17 | ToDataType::check_type_scale(to_scale); | 156 | 17 | } | 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 | 17 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 17 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 17 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 17 | if (to_scale > from_scale) { | 167 | 16 | multiply_may_overflow &= | 168 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 16 | } | 170 | 17 | return narrow_integral || multiply_may_overflow; | 171 | 17 | } | 172 | 0 | return false; | 173 | 17 | }); |
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 | 73 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 73 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 73 | 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 | 73 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 73 | using FromFieldType = typename FromDataType::FieldType; | 130 | 73 | using ToFieldType = typename ToDataType::FieldType; | 131 | 73 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 73 | 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 | 73 | UInt32 to_max_digits = 0; | 143 | 73 | UInt32 to_precision = 0; | 144 | 73 | UInt32 to_scale = 0; | 145 | | | 146 | 73 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 73 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 73 | const auto* to_decimal_type = | 150 | 73 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 73 | to_precision = to_decimal_type->get_precision(); | 152 | 73 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 73 | to_scale = to_decimal_type->get_scale(); | 155 | 73 | ToDataType::check_type_scale(to_scale); | 156 | 73 | } | 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 | 73 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 73 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 73 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 73 | if (to_scale > from_scale) { | 167 | 59 | multiply_may_overflow &= | 168 | 59 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 59 | } | 170 | 73 | return narrow_integral || multiply_may_overflow; | 171 | 73 | } | 172 | 0 | return false; | 173 | 73 | }); |
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 | 49 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 49 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 49 | 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 | 49 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 49 | using FromFieldType = typename FromDataType::FieldType; | 130 | 49 | using ToFieldType = typename ToDataType::FieldType; | 131 | 49 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 49 | 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 | 49 | UInt32 to_max_digits = 0; | 143 | 49 | UInt32 to_precision = 0; | 144 | 49 | UInt32 to_scale = 0; | 145 | | | 146 | 49 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 49 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 49 | const auto* to_decimal_type = | 150 | 49 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 49 | to_precision = to_decimal_type->get_precision(); | 152 | 49 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 49 | to_scale = to_decimal_type->get_scale(); | 155 | 49 | ToDataType::check_type_scale(to_scale); | 156 | 49 | } | 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 | 49 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 49 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 49 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 49 | if (to_scale > from_scale) { | 167 | 38 | multiply_may_overflow &= | 168 | 38 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 38 | } | 170 | 49 | return narrow_integral || multiply_may_overflow; | 171 | 49 | } | 172 | 0 | return false; | 173 | 49 | }); |
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 | 478 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 478 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 478 | 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 | 478 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 478 | using FromFieldType = typename FromDataType::FieldType; | 130 | 478 | using ToFieldType = typename ToDataType::FieldType; | 131 | 478 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 478 | 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 | 478 | UInt32 to_max_digits = 0; | 143 | 478 | UInt32 to_precision = 0; | 144 | 478 | UInt32 to_scale = 0; | 145 | | | 146 | 478 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 478 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 478 | const auto* to_decimal_type = | 150 | 478 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 478 | to_precision = to_decimal_type->get_precision(); | 152 | 478 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 478 | to_scale = to_decimal_type->get_scale(); | 155 | 478 | ToDataType::check_type_scale(to_scale); | 156 | 478 | } | 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 | 478 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 478 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 478 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 478 | if (to_scale > from_scale) { | 167 | 325 | multiply_may_overflow &= | 168 | 325 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 325 | } | 170 | 478 | return narrow_integral || multiply_may_overflow; | 171 | 478 | } | 172 | 0 | return false; | 173 | 478 | }); |
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 | 52 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 52 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 52 | 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 | 52 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 52 | using FromFieldType = typename FromDataType::FieldType; | 130 | 52 | using ToFieldType = typename ToDataType::FieldType; | 131 | 52 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 52 | 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 | 52 | UInt32 to_max_digits = 0; | 143 | 52 | UInt32 to_precision = 0; | 144 | 52 | UInt32 to_scale = 0; | 145 | | | 146 | 52 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 52 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 52 | const auto* to_decimal_type = | 150 | 52 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 52 | to_precision = to_decimal_type->get_precision(); | 152 | 52 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 52 | to_scale = to_decimal_type->get_scale(); | 155 | 52 | ToDataType::check_type_scale(to_scale); | 156 | 52 | } | 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 | 52 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 52 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 52 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 52 | if (to_scale > from_scale) { | 167 | 31 | multiply_may_overflow &= | 168 | 31 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 31 | } | 170 | 52 | return narrow_integral || multiply_may_overflow; | 171 | 52 | } | 172 | 0 | return false; | 173 | 52 | }); |
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 | 65 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 65 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 65 | 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 | 65 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 65 | using FromFieldType = typename FromDataType::FieldType; | 130 | 65 | using ToFieldType = typename ToDataType::FieldType; | 131 | 65 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 65 | 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 | 65 | UInt32 to_max_digits = 0; | 143 | 65 | UInt32 to_precision = 0; | 144 | 65 | UInt32 to_scale = 0; | 145 | | | 146 | 65 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 65 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 65 | const auto* to_decimal_type = | 150 | 65 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 65 | to_precision = to_decimal_type->get_precision(); | 152 | 65 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 65 | to_scale = to_decimal_type->get_scale(); | 155 | 65 | ToDataType::check_type_scale(to_scale); | 156 | 65 | } | 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 | 65 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 65 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 65 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 65 | if (to_scale > from_scale) { | 167 | 39 | multiply_may_overflow &= | 168 | 39 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 39 | } | 170 | 65 | return narrow_integral || multiply_may_overflow; | 171 | 65 | } | 172 | 0 | return false; | 173 | 65 | }); |
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 | 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 | 107 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 107 | using FromFieldType = typename FromDataType::FieldType; | 130 | 107 | using ToFieldType = typename ToDataType::FieldType; | 131 | 107 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 107 | 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 | 107 | UInt32 to_max_digits = 0; | 143 | 107 | UInt32 to_precision = 0; | 144 | 107 | UInt32 to_scale = 0; | 145 | | | 146 | 107 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 107 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 107 | const auto* to_decimal_type = | 150 | 107 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 107 | to_precision = to_decimal_type->get_precision(); | 152 | 107 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 107 | to_scale = to_decimal_type->get_scale(); | 155 | 107 | ToDataType::check_type_scale(to_scale); | 156 | 107 | } | 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 | 107 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 107 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 107 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 107 | if (to_scale > from_scale) { | 167 | 65 | multiply_may_overflow &= | 168 | 65 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 65 | } | 170 | 107 | return narrow_integral || multiply_may_overflow; | 171 | 107 | } | 172 | 0 | return false; | 173 | 107 | }); |
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 | 210 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 210 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 210 | 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 | 210 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 210 | using FromFieldType = typename FromDataType::FieldType; | 130 | 210 | using ToFieldType = typename ToDataType::FieldType; | 131 | 210 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 210 | 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 | 210 | UInt32 to_max_digits = 0; | 143 | 210 | UInt32 to_precision = 0; | 144 | 210 | UInt32 to_scale = 0; | 145 | | | 146 | 210 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 210 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 210 | const auto* to_decimal_type = | 150 | 210 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 210 | to_precision = to_decimal_type->get_precision(); | 152 | 210 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 210 | to_scale = to_decimal_type->get_scale(); | 155 | 210 | ToDataType::check_type_scale(to_scale); | 156 | 210 | } | 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 | 210 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 210 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 210 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 210 | if (to_scale > from_scale) { | 167 | 176 | multiply_may_overflow &= | 168 | 176 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 176 | } | 170 | 210 | return narrow_integral || multiply_may_overflow; | 171 | 210 | } | 172 | 0 | return false; | 173 | 210 | }); |
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.10k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.10k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.10k | 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.10k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.10k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.10k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.10k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.10k | UInt32 from_scale = 0; | 133 | | | 134 | 1.10k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.10k | const auto* from_decimal_type = | 136 | 1.10k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.10k | from_precision = | 138 | 1.10k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.10k | from_scale = from_decimal_type->get_scale(); | 140 | 1.10k | } | 141 | | | 142 | 1.10k | UInt32 to_max_digits = 0; | 143 | 1.10k | UInt32 to_precision = 0; | 144 | 1.10k | UInt32 to_scale = 0; | 145 | | | 146 | 1.10k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.10k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.10k | const auto* to_decimal_type = | 150 | 1.10k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.10k | to_precision = to_decimal_type->get_precision(); | 152 | 1.10k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.10k | to_scale = to_decimal_type->get_scale(); | 155 | 1.10k | ToDataType::check_type_scale(to_scale); | 156 | 1.10k | } | 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.10k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.10k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.10k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.10k | if (to_scale > from_scale) { | 167 | 767 | multiply_may_overflow &= | 168 | 767 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 767 | } | 170 | 1.10k | return narrow_integral || multiply_may_overflow; | 171 | 1.10k | } | 172 | 0 | return false; | 173 | 1.10k | }); |
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.0k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 10.0k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 10.0k | 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.0k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 10.0k | using FromFieldType = typename FromDataType::FieldType; | 130 | 10.0k | using ToFieldType = typename ToDataType::FieldType; | 131 | 10.0k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 10.0k | UInt32 from_scale = 0; | 133 | | | 134 | 10.0k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 10.0k | const auto* from_decimal_type = | 136 | 10.0k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 10.0k | from_precision = | 138 | 10.0k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 10.0k | from_scale = from_decimal_type->get_scale(); | 140 | 10.0k | } | 141 | | | 142 | 10.0k | UInt32 to_max_digits = 0; | 143 | 10.0k | UInt32 to_precision = 0; | 144 | 10.0k | UInt32 to_scale = 0; | 145 | | | 146 | 10.0k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 10.0k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 10.0k | const auto* to_decimal_type = | 150 | 10.0k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 10.0k | to_precision = to_decimal_type->get_precision(); | 152 | 10.0k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 10.0k | to_scale = to_decimal_type->get_scale(); | 155 | 10.0k | ToDataType::check_type_scale(to_scale); | 156 | 10.0k | } | 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.0k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 10.0k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 10.0k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 10.0k | if (to_scale > from_scale) { | 167 | 158 | multiply_may_overflow &= | 168 | 158 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 158 | } | 170 | 10.0k | return narrow_integral || multiply_may_overflow; | 171 | 10.0k | } | 172 | 0 | return false; | 173 | 10.0k | }); |
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 | 310 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 310 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 310 | 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 | 310 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 310 | using FromFieldType = typename FromDataType::FieldType; | 130 | 310 | using ToFieldType = typename ToDataType::FieldType; | 131 | 310 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 310 | UInt32 from_scale = 0; | 133 | | | 134 | 310 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 310 | const auto* from_decimal_type = | 136 | 310 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 310 | from_precision = | 138 | 310 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 310 | from_scale = from_decimal_type->get_scale(); | 140 | 310 | } | 141 | | | 142 | 310 | UInt32 to_max_digits = 0; | 143 | 310 | UInt32 to_precision = 0; | 144 | 310 | UInt32 to_scale = 0; | 145 | | | 146 | 310 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 310 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 310 | const auto* to_decimal_type = | 150 | 310 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 310 | to_precision = to_decimal_type->get_precision(); | 152 | 310 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 310 | to_scale = to_decimal_type->get_scale(); | 155 | 310 | ToDataType::check_type_scale(to_scale); | 156 | 310 | } | 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 | 310 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 310 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 310 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 310 | if (to_scale > from_scale) { | 167 | 50 | multiply_may_overflow &= | 168 | 50 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 50 | } | 170 | 310 | return narrow_integral || multiply_may_overflow; | 171 | 310 | } | 172 | 0 | return false; | 173 | 310 | }); |
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 | 434 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 434 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 434 | 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 | 434 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 434 | using FromFieldType = typename FromDataType::FieldType; | 130 | 434 | using ToFieldType = typename ToDataType::FieldType; | 131 | 434 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 434 | UInt32 from_scale = 0; | 133 | | | 134 | 434 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 434 | const auto* from_decimal_type = | 136 | 434 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 434 | from_precision = | 138 | 434 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 434 | from_scale = from_decimal_type->get_scale(); | 140 | 434 | } | 141 | | | 142 | 434 | UInt32 to_max_digits = 0; | 143 | 434 | UInt32 to_precision = 0; | 144 | 434 | UInt32 to_scale = 0; | 145 | | | 146 | 434 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 434 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 434 | const auto* to_decimal_type = | 150 | 434 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 434 | to_precision = to_decimal_type->get_precision(); | 152 | 434 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 434 | to_scale = to_decimal_type->get_scale(); | 155 | 434 | ToDataType::check_type_scale(to_scale); | 156 | 434 | } | 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 | 434 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 434 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 434 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 434 | if (to_scale > from_scale) { | 167 | 146 | multiply_may_overflow &= | 168 | 146 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 146 | } | 170 | 434 | return narrow_integral || multiply_may_overflow; | 171 | 434 | } | 172 | 0 | return false; | 173 | 434 | }); |
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 | 401 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 401 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 401 | 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 | 401 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 401 | using FromFieldType = typename FromDataType::FieldType; | 130 | 401 | using ToFieldType = typename ToDataType::FieldType; | 131 | 401 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 401 | UInt32 from_scale = 0; | 133 | | | 134 | 401 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 401 | const auto* from_decimal_type = | 136 | 401 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 401 | from_precision = | 138 | 401 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 401 | from_scale = from_decimal_type->get_scale(); | 140 | 401 | } | 141 | | | 142 | 401 | UInt32 to_max_digits = 0; | 143 | 401 | UInt32 to_precision = 0; | 144 | 401 | UInt32 to_scale = 0; | 145 | | | 146 | 401 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 401 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 401 | const auto* to_decimal_type = | 150 | 401 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 401 | to_precision = to_decimal_type->get_precision(); | 152 | 401 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 401 | to_scale = to_decimal_type->get_scale(); | 155 | 401 | ToDataType::check_type_scale(to_scale); | 156 | 401 | } | 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 | 401 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 401 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 401 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 401 | if (to_scale > from_scale) { | 167 | 137 | multiply_may_overflow &= | 168 | 137 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 137 | } | 170 | 401 | return narrow_integral || multiply_may_overflow; | 171 | 401 | } | 172 | 0 | return false; | 173 | 401 | }); |
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 | 7.93k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 7.93k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 7.93k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 7.93k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 7.93k | return false; | 127 | 7.93k | } | 128 | 7.93k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 7.93k | using FromFieldType = typename FromDataType::FieldType; | 130 | 7.93k | using ToFieldType = typename ToDataType::FieldType; | 131 | 7.93k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 7.93k | 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.93k | UInt32 to_max_digits = 0; | 143 | 7.93k | UInt32 to_precision = 0; | 144 | 7.93k | UInt32 to_scale = 0; | 145 | | | 146 | 7.93k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 7.93k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 7.93k | const auto* to_decimal_type = | 150 | 7.93k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 7.93k | to_precision = to_decimal_type->get_precision(); | 152 | 7.93k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 7.93k | to_scale = to_decimal_type->get_scale(); | 155 | 7.93k | ToDataType::check_type_scale(to_scale); | 156 | 7.93k | } | 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.93k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 7.93k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 7.93k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 7.93k | 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.93k | return narrow_integral || multiply_may_overflow; | 171 | 7.93k | } | 172 | 0 | return false; | 173 | 7.93k | }); |
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 | 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 | 20 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 20 | using FromFieldType = typename FromDataType::FieldType; | 130 | 20 | using ToFieldType = typename ToDataType::FieldType; | 131 | 20 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 20 | 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 | 20 | UInt32 to_max_digits = 0; | 143 | 20 | UInt32 to_precision = 0; | 144 | 20 | UInt32 to_scale = 0; | 145 | | | 146 | 20 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 20 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 20 | const auto* to_decimal_type = | 150 | 20 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 20 | to_precision = to_decimal_type->get_precision(); | 152 | 20 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 20 | to_scale = to_decimal_type->get_scale(); | 155 | 20 | ToDataType::check_type_scale(to_scale); | 156 | 20 | } | 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 | 20 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 20 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 20 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 20 | if (to_scale > from_scale) { | 167 | 20 | multiply_may_overflow &= | 168 | 20 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 20 | } | 170 | 20 | return narrow_integral || multiply_may_overflow; | 171 | 20 | } | 172 | 0 | return false; | 173 | 20 | }); |
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 | 15 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 15 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 15 | 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 | 15 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 15 | using FromFieldType = typename FromDataType::FieldType; | 130 | 15 | using ToFieldType = typename ToDataType::FieldType; | 131 | 15 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 15 | 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 | 15 | UInt32 to_max_digits = 0; | 143 | 15 | UInt32 to_precision = 0; | 144 | 15 | UInt32 to_scale = 0; | 145 | | | 146 | 15 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 15 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 15 | const auto* to_decimal_type = | 150 | 15 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 15 | to_precision = to_decimal_type->get_precision(); | 152 | 15 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 15 | to_scale = to_decimal_type->get_scale(); | 155 | 15 | ToDataType::check_type_scale(to_scale); | 156 | 15 | } | 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 | 15 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 15 | 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 | 15 | } | 172 | 0 | return false; | 173 | 15 | }); |
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 | 15 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 15 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 15 | 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 | 15 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 15 | using FromFieldType = typename FromDataType::FieldType; | 130 | 15 | using ToFieldType = typename ToDataType::FieldType; | 131 | 15 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 15 | 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 | 15 | UInt32 to_max_digits = 0; | 143 | 15 | UInt32 to_precision = 0; | 144 | 15 | UInt32 to_scale = 0; | 145 | | | 146 | 15 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 15 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 15 | const auto* to_decimal_type = | 150 | 15 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 15 | to_precision = to_decimal_type->get_precision(); | 152 | 15 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 15 | to_scale = to_decimal_type->get_scale(); | 155 | 15 | ToDataType::check_type_scale(to_scale); | 156 | 15 | } | 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 | 15 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 15 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 15 | if (to_scale > from_scale) { | 167 | 14 | multiply_may_overflow &= | 168 | 14 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 14 | } | 170 | 15 | return narrow_integral || multiply_may_overflow; | 171 | 15 | } | 172 | 0 | return false; | 173 | 15 | }); |
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 | 31 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 31 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 31 | 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 | 31 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 31 | using FromFieldType = typename FromDataType::FieldType; | 130 | 31 | using ToFieldType = typename ToDataType::FieldType; | 131 | 31 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 31 | 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 | 31 | UInt32 to_max_digits = 0; | 143 | 31 | UInt32 to_precision = 0; | 144 | 31 | UInt32 to_scale = 0; | 145 | | | 146 | 31 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 31 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 31 | const auto* to_decimal_type = | 150 | 31 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 31 | to_precision = to_decimal_type->get_precision(); | 152 | 31 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 31 | to_scale = to_decimal_type->get_scale(); | 155 | 31 | ToDataType::check_type_scale(to_scale); | 156 | 31 | } | 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 | 31 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 32 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 31 | 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 | 31 | return narrow_integral || multiply_may_overflow; | 171 | 31 | } | 172 | 0 | return false; | 173 | 31 | }); |
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 | 127 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 127 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 127 | 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 | 127 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 127 | using FromFieldType = typename FromDataType::FieldType; | 130 | 127 | using ToFieldType = typename ToDataType::FieldType; | 131 | 127 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 127 | 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 | 127 | UInt32 to_max_digits = 0; | 143 | 127 | UInt32 to_precision = 0; | 144 | 127 | UInt32 to_scale = 0; | 145 | | | 146 | 127 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 127 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 127 | const auto* to_decimal_type = | 150 | 127 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 127 | to_precision = to_decimal_type->get_precision(); | 152 | 127 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 127 | to_scale = to_decimal_type->get_scale(); | 155 | 127 | ToDataType::check_type_scale(to_scale); | 156 | 127 | } | 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 | 127 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 128 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 127 | 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 | 127 | return narrow_integral || multiply_may_overflow; | 171 | 127 | } | 172 | 0 | return false; | 173 | 127 | }); |
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 | 23 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 23 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 23 | 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 | 23 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 23 | using FromFieldType = typename FromDataType::FieldType; | 130 | 23 | using ToFieldType = typename ToDataType::FieldType; | 131 | 23 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 23 | 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 | 23 | UInt32 to_max_digits = 0; | 143 | 23 | UInt32 to_precision = 0; | 144 | 23 | UInt32 to_scale = 0; | 145 | | | 146 | 23 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 23 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 23 | const auto* to_decimal_type = | 150 | 23 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 23 | to_precision = to_decimal_type->get_precision(); | 152 | 23 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 23 | to_scale = to_decimal_type->get_scale(); | 155 | 23 | ToDataType::check_type_scale(to_scale); | 156 | 23 | } | 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 | 23 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 23 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 23 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 23 | if (to_scale > from_scale) { | 167 | 22 | multiply_may_overflow &= | 168 | 22 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 22 | } | 170 | 23 | return narrow_integral || multiply_may_overflow; | 171 | 23 | } | 172 | 0 | return false; | 173 | 23 | }); |
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 | 179 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 179 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 179 | 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 | 179 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 179 | using FromFieldType = typename FromDataType::FieldType; | 130 | 179 | using ToFieldType = typename ToDataType::FieldType; | 131 | 179 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 179 | 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 | 179 | UInt32 to_max_digits = 0; | 143 | 179 | UInt32 to_precision = 0; | 144 | 179 | UInt32 to_scale = 0; | 145 | | | 146 | 179 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 179 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 179 | const auto* to_decimal_type = | 150 | 179 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 179 | to_precision = to_decimal_type->get_precision(); | 152 | 179 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 179 | to_scale = to_decimal_type->get_scale(); | 155 | 179 | ToDataType::check_type_scale(to_scale); | 156 | 179 | } | 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 | 179 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 179 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 179 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 179 | if (to_scale > from_scale) { | 167 | 128 | multiply_may_overflow &= | 168 | 128 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 128 | } | 170 | 179 | return narrow_integral || multiply_may_overflow; | 171 | 179 | } | 172 | 0 | return false; | 173 | 179 | }); |
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 | 166 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 166 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 166 | 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 | 166 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 166 | using FromFieldType = typename FromDataType::FieldType; | 130 | 166 | using ToFieldType = typename ToDataType::FieldType; | 131 | 166 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 166 | 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 | 166 | UInt32 to_max_digits = 0; | 143 | 166 | UInt32 to_precision = 0; | 144 | 166 | UInt32 to_scale = 0; | 145 | | | 146 | 166 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 166 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 166 | const auto* to_decimal_type = | 150 | 166 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 166 | to_precision = to_decimal_type->get_precision(); | 152 | 166 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 166 | to_scale = to_decimal_type->get_scale(); | 155 | 166 | ToDataType::check_type_scale(to_scale); | 156 | 166 | } | 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 | 166 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 166 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 166 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 166 | if (to_scale > from_scale) { | 167 | 115 | multiply_may_overflow &= | 168 | 115 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 115 | } | 170 | 166 | return narrow_integral || multiply_may_overflow; | 171 | 166 | } | 172 | 0 | return false; | 173 | 166 | }); |
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 | 458 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 458 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 458 | 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 | 458 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 458 | using FromFieldType = typename FromDataType::FieldType; | 130 | 458 | using ToFieldType = typename ToDataType::FieldType; | 131 | 458 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 458 | 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 | 458 | UInt32 to_max_digits = 0; | 143 | 458 | UInt32 to_precision = 0; | 144 | 458 | UInt32 to_scale = 0; | 145 | | | 146 | 458 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 458 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 458 | const auto* to_decimal_type = | 150 | 458 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 458 | to_precision = to_decimal_type->get_precision(); | 152 | 458 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 458 | to_scale = to_decimal_type->get_scale(); | 155 | 458 | ToDataType::check_type_scale(to_scale); | 156 | 458 | } | 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 | 458 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 458 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 458 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 458 | if (to_scale > from_scale) { | 167 | 402 | multiply_may_overflow &= | 168 | 402 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 402 | } | 170 | 458 | return narrow_integral || multiply_may_overflow; | 171 | 458 | } | 172 | 0 | return false; | 173 | 458 | }); |
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.88k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.88k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.88k | 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.88k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2.88k | using FromFieldType = typename FromDataType::FieldType; | 130 | 2.88k | using ToFieldType = typename ToDataType::FieldType; | 131 | 2.88k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2.88k | 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.88k | UInt32 to_max_digits = 0; | 143 | 2.88k | UInt32 to_precision = 0; | 144 | 2.88k | UInt32 to_scale = 0; | 145 | | | 146 | 2.88k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 2.88k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 2.88k | const auto* to_decimal_type = | 150 | 2.88k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 2.88k | to_precision = to_decimal_type->get_precision(); | 152 | 2.88k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 2.88k | to_scale = to_decimal_type->get_scale(); | 155 | 2.88k | ToDataType::check_type_scale(to_scale); | 156 | 2.88k | } | 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.88k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2.88k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2.88k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2.88k | if (to_scale > from_scale) { | 167 | 518 | multiply_may_overflow &= | 168 | 518 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 518 | } | 170 | 2.88k | return narrow_integral || multiply_may_overflow; | 171 | 2.88k | } | 172 | 0 | return false; | 173 | 2.88k | }); |
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 | 364 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 364 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 364 | 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 | 364 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 364 | using FromFieldType = typename FromDataType::FieldType; | 130 | 364 | using ToFieldType = typename ToDataType::FieldType; | 131 | 364 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 364 | 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 | 364 | UInt32 to_max_digits = 0; | 143 | 364 | UInt32 to_precision = 0; | 144 | 364 | UInt32 to_scale = 0; | 145 | | | 146 | 364 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 364 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 364 | const auto* to_decimal_type = | 150 | 364 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 364 | to_precision = to_decimal_type->get_precision(); | 152 | 364 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 364 | to_scale = to_decimal_type->get_scale(); | 155 | 364 | ToDataType::check_type_scale(to_scale); | 156 | 364 | } | 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 | 364 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 364 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 364 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 364 | if (to_scale > from_scale) { | 167 | 195 | multiply_may_overflow &= | 168 | 195 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 195 | } | 170 | 364 | return narrow_integral || multiply_may_overflow; | 171 | 364 | } | 172 | 0 | return false; | 173 | 364 | }); |
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 | 248 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 248 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 248 | 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 | 248 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 248 | using FromFieldType = typename FromDataType::FieldType; | 130 | 248 | using ToFieldType = typename ToDataType::FieldType; | 131 | 248 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 248 | 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 | 248 | UInt32 to_max_digits = 0; | 143 | 248 | UInt32 to_precision = 0; | 144 | 248 | UInt32 to_scale = 0; | 145 | | | 146 | 248 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 248 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 248 | const auto* to_decimal_type = | 150 | 248 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 248 | to_precision = to_decimal_type->get_precision(); | 152 | 248 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 248 | to_scale = to_decimal_type->get_scale(); | 155 | 248 | ToDataType::check_type_scale(to_scale); | 156 | 248 | } | 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 | 248 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 248 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 248 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 248 | if (to_scale > from_scale) { | 167 | 130 | multiply_may_overflow &= | 168 | 130 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 130 | } | 170 | 248 | return narrow_integral || multiply_may_overflow; | 171 | 248 | } | 172 | 0 | return false; | 173 | 248 | }); |
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 | 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 | 379 | multiply_may_overflow &= | 168 | 379 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 379 | } | 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_INSC_ILSD_28EEESE_EEEEbSI_ Line | Count | Source | 120 | 743 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 743 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 743 | 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 | 743 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 743 | using FromFieldType = typename FromDataType::FieldType; | 130 | 743 | using ToFieldType = typename ToDataType::FieldType; | 131 | 743 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 743 | UInt32 from_scale = 0; | 133 | | | 134 | 743 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 743 | const auto* from_decimal_type = | 136 | 743 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 743 | from_precision = | 138 | 743 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 743 | from_scale = from_decimal_type->get_scale(); | 140 | 743 | } | 141 | | | 142 | 743 | UInt32 to_max_digits = 0; | 143 | 743 | UInt32 to_precision = 0; | 144 | 743 | UInt32 to_scale = 0; | 145 | | | 146 | 743 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 743 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 743 | const auto* to_decimal_type = | 150 | 743 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 743 | to_precision = to_decimal_type->get_precision(); | 152 | 743 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 743 | to_scale = to_decimal_type->get_scale(); | 155 | 743 | ToDataType::check_type_scale(to_scale); | 156 | 743 | } | 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 | 743 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 743 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 743 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 743 | if (to_scale > from_scale) { | 167 | 602 | multiply_may_overflow &= | 168 | 602 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 602 | } | 170 | 743 | return narrow_integral || multiply_may_overflow; | 171 | 743 | } | 172 | 0 | return false; | 173 | 743 | }); |
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.05k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.05k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.05k | 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.05k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.05k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.05k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.05k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.05k | UInt32 from_scale = 0; | 133 | | | 134 | 1.05k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.05k | const auto* from_decimal_type = | 136 | 1.05k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.05k | from_precision = | 138 | 1.05k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.05k | from_scale = from_decimal_type->get_scale(); | 140 | 1.05k | } | 141 | | | 142 | 1.05k | UInt32 to_max_digits = 0; | 143 | 1.05k | UInt32 to_precision = 0; | 144 | 1.05k | UInt32 to_scale = 0; | 145 | | | 146 | 1.05k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.05k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.05k | const auto* to_decimal_type = | 150 | 1.05k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.05k | to_precision = to_decimal_type->get_precision(); | 152 | 1.05k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.05k | to_scale = to_decimal_type->get_scale(); | 155 | 1.05k | ToDataType::check_type_scale(to_scale); | 156 | 1.05k | } | 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.05k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.05k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.05k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.05k | if (to_scale > from_scale) { | 167 | 717 | multiply_may_overflow &= | 168 | 717 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 717 | } | 170 | 1.05k | return narrow_integral || multiply_may_overflow; | 171 | 1.05k | } | 172 | 0 | return false; | 173 | 1.05k | }); |
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 | 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 | 338 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 338 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 338 | const auto* to_decimal_type = | 150 | 338 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 338 | to_precision = to_decimal_type->get_precision(); | 152 | 338 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 338 | to_scale = to_decimal_type->get_scale(); | 155 | 338 | ToDataType::check_type_scale(to_scale); | 156 | 338 | } | 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 | 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 | 71 | multiply_may_overflow &= | 168 | 71 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 71 | } | 170 | 338 | 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_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ Line | Count | Source | 120 | 2.15k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.15k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.15k | 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.15k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2.15k | using FromFieldType = typename FromDataType::FieldType; | 130 | 2.15k | using ToFieldType = typename ToDataType::FieldType; | 131 | 2.15k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2.15k | UInt32 from_scale = 0; | 133 | | | 134 | 2.15k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 2.15k | const auto* from_decimal_type = | 136 | 2.15k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 2.15k | from_precision = | 138 | 2.15k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 2.15k | from_scale = from_decimal_type->get_scale(); | 140 | 2.15k | } | 141 | | | 142 | 2.15k | UInt32 to_max_digits = 0; | 143 | 2.15k | UInt32 to_precision = 0; | 144 | 2.15k | UInt32 to_scale = 0; | 145 | | | 146 | 2.15k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 2.15k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 2.15k | const auto* to_decimal_type = | 150 | 2.15k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 2.15k | to_precision = to_decimal_type->get_precision(); | 152 | 2.15k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 2.15k | to_scale = to_decimal_type->get_scale(); | 155 | 2.15k | ToDataType::check_type_scale(to_scale); | 156 | 2.15k | } | 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.15k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2.15k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2.15k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2.15k | if (to_scale > from_scale) { | 167 | 723 | multiply_may_overflow &= | 168 | 723 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 723 | } | 170 | 2.15k | return narrow_integral || multiply_may_overflow; | 171 | 2.15k | } | 172 | 0 | return false; | 173 | 2.15k | }); |
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 | 947 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 947 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 947 | 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 | 947 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 947 | using FromFieldType = typename FromDataType::FieldType; | 130 | 947 | using ToFieldType = typename ToDataType::FieldType; | 131 | 947 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 947 | UInt32 from_scale = 0; | 133 | | | 134 | 947 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 947 | const auto* from_decimal_type = | 136 | 947 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 947 | from_precision = | 138 | 947 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 947 | from_scale = from_decimal_type->get_scale(); | 140 | 947 | } | 141 | | | 142 | 947 | UInt32 to_max_digits = 0; | 143 | 947 | UInt32 to_precision = 0; | 144 | 947 | UInt32 to_scale = 0; | 145 | | | 146 | 947 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 947 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 947 | const auto* to_decimal_type = | 150 | 947 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 947 | to_precision = to_decimal_type->get_precision(); | 152 | 947 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 947 | to_scale = to_decimal_type->get_scale(); | 155 | 947 | ToDataType::check_type_scale(to_scale); | 156 | 947 | } | 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 | 947 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 947 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 947 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 947 | if (to_scale > from_scale) { | 167 | 394 | multiply_may_overflow &= | 168 | 394 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 394 | } | 170 | 947 | return narrow_integral || multiply_may_overflow; | 171 | 947 | } | 172 | 0 | return false; | 173 | 947 | }); |
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 | 174k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 174k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 174k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 174k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 174k | return false; | 127 | 174k | } | 128 | 174k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 174k | using FromFieldType = typename FromDataType::FieldType; | 130 | 174k | using ToFieldType = typename ToDataType::FieldType; | 131 | 174k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 174k | 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 | 174k | UInt32 to_max_digits = 0; | 143 | 174k | UInt32 to_precision = 0; | 144 | 174k | UInt32 to_scale = 0; | 145 | | | 146 | 174k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 174k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 174k | const auto* to_decimal_type = | 150 | 174k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 174k | to_precision = to_decimal_type->get_precision(); | 152 | 174k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 174k | to_scale = to_decimal_type->get_scale(); | 155 | 174k | ToDataType::check_type_scale(to_scale); | 156 | 174k | } | 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 | 174k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 174k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 174k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 174k | if (to_scale > from_scale) { | 167 | 0 | multiply_may_overflow &= | 168 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 0 | } | 170 | 174k | return narrow_integral || multiply_may_overflow; | 171 | 174k | } | 172 | 0 | return false; | 173 | 174k | }); |
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 | 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 | | 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 | UInt32 to_max_digits = 0; | 143 | 7 | UInt32 to_precision = 0; | 144 | 7 | UInt32 to_scale = 0; | 145 | | | 146 | 7 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 7 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 7 | const auto* to_decimal_type = | 150 | 7 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 7 | to_precision = to_decimal_type->get_precision(); | 152 | 7 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 7 | to_scale = to_decimal_type->get_scale(); | 155 | 7 | ToDataType::check_type_scale(to_scale); | 156 | 7 | } | 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 | 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 | 6 | multiply_may_overflow &= | 168 | 6 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 6 | } | 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_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_3EEESE_EEEEbSI_ Line | Count | Source | 120 | 162 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 162 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 162 | 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 | 162 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 162 | using FromFieldType = typename FromDataType::FieldType; | 130 | 162 | using ToFieldType = typename ToDataType::FieldType; | 131 | 162 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 162 | 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 | 162 | UInt32 to_max_digits = 0; | 143 | 162 | UInt32 to_precision = 0; | 144 | 162 | UInt32 to_scale = 0; | 145 | | | 146 | 162 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 162 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 162 | const auto* to_decimal_type = | 150 | 162 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 162 | to_precision = to_decimal_type->get_precision(); | 152 | 162 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 162 | to_scale = to_decimal_type->get_scale(); | 155 | 162 | ToDataType::check_type_scale(to_scale); | 156 | 162 | } | 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 | 162 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 162 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 162 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 162 | if (to_scale > from_scale) { | 167 | 111 | multiply_may_overflow &= | 168 | 111 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 111 | } | 170 | 162 | return narrow_integral || multiply_may_overflow; | 171 | 162 | } | 172 | 0 | return false; | 173 | 162 | }); |
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 | 158 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 158 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 158 | 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 | 158 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 158 | using FromFieldType = typename FromDataType::FieldType; | 130 | 158 | using ToFieldType = typename ToDataType::FieldType; | 131 | 158 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 158 | 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 | 158 | UInt32 to_max_digits = 0; | 143 | 158 | UInt32 to_precision = 0; | 144 | 158 | UInt32 to_scale = 0; | 145 | | | 146 | 158 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 158 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 158 | const auto* to_decimal_type = | 150 | 158 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 158 | to_precision = to_decimal_type->get_precision(); | 152 | 158 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 158 | to_scale = to_decimal_type->get_scale(); | 155 | 158 | ToDataType::check_type_scale(to_scale); | 156 | 158 | } | 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 | 158 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 158 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 158 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 158 | if (to_scale > from_scale) { | 167 | 107 | multiply_may_overflow &= | 168 | 107 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 107 | } | 170 | 158 | return narrow_integral || multiply_may_overflow; | 171 | 158 | } | 172 | 0 | return false; | 173 | 158 | }); |
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 | 176 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 176 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 176 | 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 | 176 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 176 | using FromFieldType = typename FromDataType::FieldType; | 130 | 176 | using ToFieldType = typename ToDataType::FieldType; | 131 | 176 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 176 | 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 | 176 | UInt32 to_max_digits = 0; | 143 | 176 | UInt32 to_precision = 0; | 144 | 176 | UInt32 to_scale = 0; | 145 | | | 146 | 176 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 176 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 176 | const auto* to_decimal_type = | 150 | 176 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 176 | to_precision = to_decimal_type->get_precision(); | 152 | 176 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 176 | to_scale = to_decimal_type->get_scale(); | 155 | 176 | ToDataType::check_type_scale(to_scale); | 156 | 176 | } | 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 | 176 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 176 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 176 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 176 | if (to_scale > from_scale) { | 167 | 120 | multiply_may_overflow &= | 168 | 120 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 120 | } | 170 | 176 | return narrow_integral || multiply_may_overflow; | 171 | 176 | } | 172 | 0 | return false; | 173 | 176 | }); |
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 | 158 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 158 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 158 | 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 | 158 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 158 | using FromFieldType = typename FromDataType::FieldType; | 130 | 158 | using ToFieldType = typename ToDataType::FieldType; | 131 | 158 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 158 | 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 | 158 | UInt32 to_max_digits = 0; | 143 | 158 | UInt32 to_precision = 0; | 144 | 158 | UInt32 to_scale = 0; | 145 | | | 146 | 158 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 158 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 158 | const auto* to_decimal_type = | 150 | 158 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 158 | to_precision = to_decimal_type->get_precision(); | 152 | 158 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 158 | to_scale = to_decimal_type->get_scale(); | 155 | 158 | ToDataType::check_type_scale(to_scale); | 156 | 158 | } | 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 | 158 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 158 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 158 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 158 | if (to_scale > from_scale) { | 167 | 107 | multiply_may_overflow &= | 168 | 107 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 107 | } | 170 | 158 | return narrow_integral || multiply_may_overflow; | 171 | 158 | } | 172 | 0 | return false; | 173 | 158 | }); |
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 | 232 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 232 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 232 | 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 | 232 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 232 | using FromFieldType = typename FromDataType::FieldType; | 130 | 232 | using ToFieldType = typename ToDataType::FieldType; | 131 | 232 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 232 | 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 | 232 | UInt32 to_max_digits = 0; | 143 | 232 | UInt32 to_precision = 0; | 144 | 232 | UInt32 to_scale = 0; | 145 | | | 146 | 232 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 232 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 232 | const auto* to_decimal_type = | 150 | 232 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 232 | to_precision = to_decimal_type->get_precision(); | 152 | 232 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 232 | to_scale = to_decimal_type->get_scale(); | 155 | 232 | ToDataType::check_type_scale(to_scale); | 156 | 232 | } | 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 | 232 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 232 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 232 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 232 | if (to_scale > from_scale) { | 167 | 170 | multiply_may_overflow &= | 168 | 170 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 170 | } | 170 | 232 | return narrow_integral || multiply_may_overflow; | 171 | 232 | } | 172 | 0 | return false; | 173 | 232 | }); |
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 | 224 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 224 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 224 | 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 | 224 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 224 | using FromFieldType = typename FromDataType::FieldType; | 130 | 224 | using ToFieldType = typename ToDataType::FieldType; | 131 | 224 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 224 | 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 | 224 | UInt32 to_max_digits = 0; | 143 | 224 | UInt32 to_precision = 0; | 144 | 224 | UInt32 to_scale = 0; | 145 | | | 146 | 224 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 224 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 224 | const auto* to_decimal_type = | 150 | 224 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 224 | to_precision = to_decimal_type->get_precision(); | 152 | 224 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 224 | to_scale = to_decimal_type->get_scale(); | 155 | 224 | ToDataType::check_type_scale(to_scale); | 156 | 224 | } | 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 | 224 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 224 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 224 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 224 | if (to_scale > from_scale) { | 167 | 126 | multiply_may_overflow &= | 168 | 126 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 126 | } | 170 | 224 | return narrow_integral || multiply_may_overflow; | 171 | 224 | } | 172 | 0 | return false; | 173 | 224 | }); |
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 | 318 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 318 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 318 | 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 | 318 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 318 | using FromFieldType = typename FromDataType::FieldType; | 130 | 318 | using ToFieldType = typename ToDataType::FieldType; | 131 | 318 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 318 | 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 | 318 | UInt32 to_max_digits = 0; | 143 | 318 | UInt32 to_precision = 0; | 144 | 318 | UInt32 to_scale = 0; | 145 | | | 146 | 318 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 318 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 318 | const auto* to_decimal_type = | 150 | 318 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 318 | to_precision = to_decimal_type->get_precision(); | 152 | 318 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 318 | to_scale = to_decimal_type->get_scale(); | 155 | 318 | ToDataType::check_type_scale(to_scale); | 156 | 318 | } | 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 | 318 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 318 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 318 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 318 | if (to_scale > from_scale) { | 167 | 208 | multiply_may_overflow &= | 168 | 208 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 208 | } | 170 | 318 | return narrow_integral || multiply_may_overflow; | 171 | 318 | } | 172 | 0 | return false; | 173 | 318 | }); |
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 | 567 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 567 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 567 | 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 | 567 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 567 | using FromFieldType = typename FromDataType::FieldType; | 130 | 567 | using ToFieldType = typename ToDataType::FieldType; | 131 | 567 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 567 | UInt32 from_scale = 0; | 133 | | | 134 | 567 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 567 | const auto* from_decimal_type = | 136 | 567 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 567 | from_precision = | 138 | 567 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 567 | from_scale = from_decimal_type->get_scale(); | 140 | 567 | } | 141 | | | 142 | 567 | UInt32 to_max_digits = 0; | 143 | 567 | UInt32 to_precision = 0; | 144 | 567 | UInt32 to_scale = 0; | 145 | | | 146 | 567 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 567 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 567 | const auto* to_decimal_type = | 150 | 567 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 567 | to_precision = to_decimal_type->get_precision(); | 152 | 567 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 567 | to_scale = to_decimal_type->get_scale(); | 155 | 567 | ToDataType::check_type_scale(to_scale); | 156 | 567 | } | 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 | 567 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 567 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 567 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 567 | if (to_scale > from_scale) { | 167 | 499 | multiply_may_overflow &= | 168 | 499 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 499 | } | 170 | 567 | return narrow_integral || multiply_may_overflow; | 171 | 567 | } | 172 | 0 | return false; | 173 | 567 | }); |
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 | 921 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 921 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 921 | 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 | 921 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 921 | using FromFieldType = typename FromDataType::FieldType; | 130 | 921 | using ToFieldType = typename ToDataType::FieldType; | 131 | 921 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 921 | UInt32 from_scale = 0; | 133 | | | 134 | 921 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 921 | const auto* from_decimal_type = | 136 | 921 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 921 | from_precision = | 138 | 921 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 921 | from_scale = from_decimal_type->get_scale(); | 140 | 921 | } | 141 | | | 142 | 921 | UInt32 to_max_digits = 0; | 143 | 921 | UInt32 to_precision = 0; | 144 | 921 | UInt32 to_scale = 0; | 145 | | | 146 | 921 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 921 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 921 | const auto* to_decimal_type = | 150 | 921 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 921 | to_precision = to_decimal_type->get_precision(); | 152 | 921 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 921 | to_scale = to_decimal_type->get_scale(); | 155 | 921 | ToDataType::check_type_scale(to_scale); | 156 | 921 | } | 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 | 921 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 921 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 921 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 921 | if (to_scale > from_scale) { | 167 | 794 | multiply_may_overflow &= | 168 | 794 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 794 | } | 170 | 921 | return narrow_integral || multiply_may_overflow; | 171 | 921 | } | 172 | 0 | return false; | 173 | 921 | }); |
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 | 148 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 148 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 148 | 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 | 148 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 148 | using FromFieldType = typename FromDataType::FieldType; | 130 | 148 | using ToFieldType = typename ToDataType::FieldType; | 131 | 148 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 148 | UInt32 from_scale = 0; | 133 | | | 134 | 148 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 148 | const auto* from_decimal_type = | 136 | 148 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 148 | from_precision = | 138 | 148 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 148 | from_scale = from_decimal_type->get_scale(); | 140 | 148 | } | 141 | | | 142 | 148 | UInt32 to_max_digits = 0; | 143 | 148 | UInt32 to_precision = 0; | 144 | 148 | UInt32 to_scale = 0; | 145 | | | 146 | 148 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 148 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 148 | const auto* to_decimal_type = | 150 | 148 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 148 | to_precision = to_decimal_type->get_precision(); | 152 | 148 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 148 | to_scale = to_decimal_type->get_scale(); | 155 | 148 | ToDataType::check_type_scale(to_scale); | 156 | 148 | } | 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 | 148 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 148 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 148 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 148 | if (to_scale > from_scale) { | 167 | 84 | multiply_may_overflow &= | 168 | 84 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 84 | } | 170 | 148 | return narrow_integral || multiply_may_overflow; | 171 | 148 | } | 172 | 0 | return false; | 173 | 148 | }); |
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.20k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 1.20k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 1.20k | 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.20k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 1.20k | using FromFieldType = typename FromDataType::FieldType; | 130 | 1.20k | using ToFieldType = typename ToDataType::FieldType; | 131 | 1.20k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 1.20k | UInt32 from_scale = 0; | 133 | | | 134 | 1.20k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 1.20k | const auto* from_decimal_type = | 136 | 1.20k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 1.20k | from_precision = | 138 | 1.20k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 1.20k | from_scale = from_decimal_type->get_scale(); | 140 | 1.20k | } | 141 | | | 142 | 1.20k | UInt32 to_max_digits = 0; | 143 | 1.20k | UInt32 to_precision = 0; | 144 | 1.20k | UInt32 to_scale = 0; | 145 | | | 146 | 1.20k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 1.20k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 1.20k | const auto* to_decimal_type = | 150 | 1.20k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 1.20k | to_precision = to_decimal_type->get_precision(); | 152 | 1.20k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 1.20k | to_scale = to_decimal_type->get_scale(); | 155 | 1.20k | ToDataType::check_type_scale(to_scale); | 156 | 1.20k | } | 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.20k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 1.20k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 1.20k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 1.20k | if (to_scale > from_scale) { | 167 | 732 | multiply_may_overflow &= | 168 | 732 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 732 | } | 170 | 1.20k | return narrow_integral || multiply_may_overflow; | 171 | 1.20k | } | 172 | 0 | return false; | 173 | 1.20k | }); |
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 | 916 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 916 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 916 | 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 | 916 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 916 | using FromFieldType = typename FromDataType::FieldType; | 130 | 916 | using ToFieldType = typename ToDataType::FieldType; | 131 | 916 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 916 | UInt32 from_scale = 0; | 133 | | | 134 | 916 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 916 | const auto* from_decimal_type = | 136 | 916 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 916 | from_precision = | 138 | 916 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 916 | from_scale = from_decimal_type->get_scale(); | 140 | 916 | } | 141 | | | 142 | 916 | UInt32 to_max_digits = 0; | 143 | 916 | UInt32 to_precision = 0; | 144 | 916 | UInt32 to_scale = 0; | 145 | | | 146 | 916 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 916 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 916 | const auto* to_decimal_type = | 150 | 916 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 916 | to_precision = to_decimal_type->get_precision(); | 152 | 916 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 916 | to_scale = to_decimal_type->get_scale(); | 155 | 916 | ToDataType::check_type_scale(to_scale); | 156 | 916 | } | 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 | 916 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 916 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 916 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 916 | if (to_scale > from_scale) { | 167 | 455 | multiply_may_overflow &= | 168 | 455 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 455 | } | 170 | 916 | return narrow_integral || multiply_may_overflow; | 171 | 916 | } | 172 | 0 | return false; | 173 | 916 | }); |
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 | 5.67k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 5.67k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 5.67k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 5.67k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 5.67k | return false; | 127 | 5.67k | } | 128 | 5.67k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 5.67k | using FromFieldType = typename FromDataType::FieldType; | 130 | 5.67k | using ToFieldType = typename ToDataType::FieldType; | 131 | 5.67k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 5.67k | 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 | 5.67k | UInt32 to_max_digits = 0; | 143 | 5.67k | UInt32 to_precision = 0; | 144 | 5.67k | UInt32 to_scale = 0; | 145 | | | 146 | 5.67k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 5.67k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 5.67k | const auto* to_decimal_type = | 150 | 5.67k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 5.67k | to_precision = to_decimal_type->get_precision(); | 152 | 5.67k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 5.67k | to_scale = to_decimal_type->get_scale(); | 155 | 5.67k | ToDataType::check_type_scale(to_scale); | 156 | 5.67k | } | 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.67k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 5.67k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 5.67k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 5.67k | 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.67k | return narrow_integral || multiply_may_overflow; | 171 | 5.67k | } | 172 | 0 | return false; | 173 | 5.67k | }); |
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 | 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 | }); |
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 | 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 | 28 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 28 | return false; | 127 | 28 | } | 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 | }); |
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 | 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 | }); |
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 | 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 | }); |
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 | 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 | | 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 | 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 | }); |
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 | 185 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 185 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 185 | 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 | 185 | return false; | 173 | 185 | }); |
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 | 238 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 238 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 238 | 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 | 238 | return false; | 173 | 238 | }); |
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 | 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 | | 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 | return false; | 173 | 2 | }); |
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 | 175k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 175k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 175k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 175k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 175k | return false; | 127 | 175k | } | 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 | 175k | return false; | 173 | 175k | }); |
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 | 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 | }); |
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 | 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 | | 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 | 12 | 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_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 | 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_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 | 414 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 414 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 414 | 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 | 414 | return false; | 173 | 414 | }); |
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 | 252 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 252 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 252 | 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 | 252 | return false; | 173 | 252 | }); |
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 | 270 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 270 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 270 | 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 | 270 | return false; | 173 | 270 | }); |
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 | 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_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ 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 | 20 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 20 | return false; | 127 | 20 | } | 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 | }); |
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 | 169k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 169k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 169k | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 169k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 169k | return false; | 127 | 169k | } | 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 | 169k | return false; | 173 | 169k | }); |
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_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ENKUlSG_E_clINSB_INS_18DataTypeDateTimeV2ESC_EEEEbSG_ 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 | 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_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 | 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_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 | 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_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 | 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_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 | 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_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 | 299 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 299 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 299 | using FromDataType = typename Types2::LeftType; | 123 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 299 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 299 | return false; | 127 | 299 | } | 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 | 299 | return false; | 173 | 299 | }); |
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 | 1.30M | }; function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ Line | Count | Source | 110 | 2.49k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 2.49k | using Types = std::decay_t<decltype(types)>; | 112 | 2.49k | 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.49k | return call_on_index_and_data_type< | 120 | 2.49k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 2.49k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 2.49k | using FromDataType = typename Types2::LeftType; | 123 | 2.49k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 2.49k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 2.49k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 2.49k | return false; | 127 | 2.49k | } | 128 | 2.49k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 2.49k | using FromFieldType = typename FromDataType::FieldType; | 130 | 2.49k | using ToFieldType = typename ToDataType::FieldType; | 131 | 2.49k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 2.49k | UInt32 from_scale = 0; | 133 | | | 134 | 2.49k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 2.49k | const auto* from_decimal_type = | 136 | 2.49k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 2.49k | from_precision = | 138 | 2.49k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 2.49k | from_scale = from_decimal_type->get_scale(); | 140 | 2.49k | } | 141 | | | 142 | 2.49k | UInt32 to_max_digits = 0; | 143 | 2.49k | UInt32 to_precision = 0; | 144 | 2.49k | UInt32 to_scale = 0; | 145 | | | 146 | 2.49k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 2.49k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 2.49k | const auto* to_decimal_type = | 150 | 2.49k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 2.49k | to_precision = to_decimal_type->get_precision(); | 152 | 2.49k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 2.49k | to_scale = to_decimal_type->get_scale(); | 155 | 2.49k | ToDataType::check_type_scale(to_scale); | 156 | 2.49k | } | 157 | 2.49k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 2.49k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 2.49k | to_precision = to_max_digits; | 160 | 2.49k | } | 161 | | | 162 | 2.49k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 2.49k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 2.49k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 2.49k | if (to_scale > from_scale) { | 167 | 2.49k | multiply_may_overflow &= | 168 | 2.49k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 2.49k | } | 170 | 2.49k | return narrow_integral || multiply_may_overflow; | 171 | 2.49k | } | 172 | 2.49k | return false; | 173 | 2.49k | }); | 174 | 2.49k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ Line | Count | Source | 110 | 9.87k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 9.87k | using Types = std::decay_t<decltype(types)>; | 112 | 9.87k | 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 | 9.87k | return call_on_index_and_data_type< | 120 | 9.87k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 9.87k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 9.87k | using FromDataType = typename Types2::LeftType; | 123 | 9.87k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 9.87k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 9.87k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 9.87k | return false; | 127 | 9.87k | } | 128 | 9.87k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 9.87k | using FromFieldType = typename FromDataType::FieldType; | 130 | 9.87k | using ToFieldType = typename ToDataType::FieldType; | 131 | 9.87k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 9.87k | UInt32 from_scale = 0; | 133 | | | 134 | 9.87k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 9.87k | const auto* from_decimal_type = | 136 | 9.87k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 9.87k | from_precision = | 138 | 9.87k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 9.87k | from_scale = from_decimal_type->get_scale(); | 140 | 9.87k | } | 141 | | | 142 | 9.87k | UInt32 to_max_digits = 0; | 143 | 9.87k | UInt32 to_precision = 0; | 144 | 9.87k | UInt32 to_scale = 0; | 145 | | | 146 | 9.87k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 9.87k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 9.87k | const auto* to_decimal_type = | 150 | 9.87k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 9.87k | to_precision = to_decimal_type->get_precision(); | 152 | 9.87k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 9.87k | to_scale = to_decimal_type->get_scale(); | 155 | 9.87k | ToDataType::check_type_scale(to_scale); | 156 | 9.87k | } | 157 | 9.87k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 9.87k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 9.87k | to_precision = to_max_digits; | 160 | 9.87k | } | 161 | | | 162 | 9.87k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 9.87k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 9.87k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 9.87k | if (to_scale > from_scale) { | 167 | 9.87k | multiply_may_overflow &= | 168 | 9.87k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 9.87k | } | 170 | 9.87k | return narrow_integral || multiply_may_overflow; | 171 | 9.87k | } | 172 | 9.87k | return false; | 173 | 9.87k | }); | 174 | 9.87k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ Line | Count | Source | 110 | 5.72k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 5.72k | using Types = std::decay_t<decltype(types)>; | 112 | 5.72k | 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.72k | return call_on_index_and_data_type< | 120 | 5.72k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 5.72k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 5.72k | using FromDataType = typename Types2::LeftType; | 123 | 5.72k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 5.72k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 5.72k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 5.72k | return false; | 127 | 5.72k | } | 128 | 5.72k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 5.72k | using FromFieldType = typename FromDataType::FieldType; | 130 | 5.72k | using ToFieldType = typename ToDataType::FieldType; | 131 | 5.72k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 5.72k | UInt32 from_scale = 0; | 133 | | | 134 | 5.72k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 5.72k | const auto* from_decimal_type = | 136 | 5.72k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 5.72k | from_precision = | 138 | 5.72k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 5.72k | from_scale = from_decimal_type->get_scale(); | 140 | 5.72k | } | 141 | | | 142 | 5.72k | UInt32 to_max_digits = 0; | 143 | 5.72k | UInt32 to_precision = 0; | 144 | 5.72k | UInt32 to_scale = 0; | 145 | | | 146 | 5.72k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 5.72k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 5.72k | const auto* to_decimal_type = | 150 | 5.72k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 5.72k | to_precision = to_decimal_type->get_precision(); | 152 | 5.72k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 5.72k | to_scale = to_decimal_type->get_scale(); | 155 | 5.72k | ToDataType::check_type_scale(to_scale); | 156 | 5.72k | } | 157 | 5.72k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 5.72k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 5.72k | to_precision = to_max_digits; | 160 | 5.72k | } | 161 | | | 162 | 5.72k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 5.72k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 5.72k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 5.72k | if (to_scale > from_scale) { | 167 | 5.72k | multiply_may_overflow &= | 168 | 5.72k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 5.72k | } | 170 | 5.72k | return narrow_integral || multiply_may_overflow; | 171 | 5.72k | } | 172 | 5.72k | return false; | 173 | 5.72k | }); | 174 | 5.72k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ Line | Count | Source | 110 | 173k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 173k | using Types = std::decay_t<decltype(types)>; | 112 | 173k | 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 | 173k | return call_on_index_and_data_type< | 120 | 173k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 173k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 173k | using FromDataType = typename Types2::LeftType; | 123 | 173k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 173k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 173k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 173k | return false; | 127 | 173k | } | 128 | 173k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 173k | using FromFieldType = typename FromDataType::FieldType; | 130 | 173k | using ToFieldType = typename ToDataType::FieldType; | 131 | 173k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 173k | UInt32 from_scale = 0; | 133 | | | 134 | 173k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 173k | const auto* from_decimal_type = | 136 | 173k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 173k | from_precision = | 138 | 173k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 173k | from_scale = from_decimal_type->get_scale(); | 140 | 173k | } | 141 | | | 142 | 173k | UInt32 to_max_digits = 0; | 143 | 173k | UInt32 to_precision = 0; | 144 | 173k | UInt32 to_scale = 0; | 145 | | | 146 | 173k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 173k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 173k | const auto* to_decimal_type = | 150 | 173k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 173k | to_precision = to_decimal_type->get_precision(); | 152 | 173k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 173k | to_scale = to_decimal_type->get_scale(); | 155 | 173k | ToDataType::check_type_scale(to_scale); | 156 | 173k | } | 157 | 173k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 173k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 173k | to_precision = to_max_digits; | 160 | 173k | } | 161 | | | 162 | 173k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 173k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 173k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 173k | if (to_scale > from_scale) { | 167 | 173k | multiply_may_overflow &= | 168 | 173k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 173k | } | 170 | 173k | return narrow_integral || multiply_may_overflow; | 171 | 173k | } | 172 | 173k | return false; | 173 | 173k | }); | 174 | 173k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ Line | Count | Source | 110 | 46.3k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 46.3k | using Types = std::decay_t<decltype(types)>; | 112 | 46.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 | 46.3k | return call_on_index_and_data_type< | 120 | 46.3k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 46.3k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 46.3k | using FromDataType = typename Types2::LeftType; | 123 | 46.3k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 46.3k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 46.3k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 46.3k | return false; | 127 | 46.3k | } | 128 | 46.3k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 46.3k | using FromFieldType = typename FromDataType::FieldType; | 130 | 46.3k | using ToFieldType = typename ToDataType::FieldType; | 131 | 46.3k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 46.3k | UInt32 from_scale = 0; | 133 | | | 134 | 46.3k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 46.3k | const auto* from_decimal_type = | 136 | 46.3k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 46.3k | from_precision = | 138 | 46.3k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 46.3k | from_scale = from_decimal_type->get_scale(); | 140 | 46.3k | } | 141 | | | 142 | 46.3k | UInt32 to_max_digits = 0; | 143 | 46.3k | UInt32 to_precision = 0; | 144 | 46.3k | UInt32 to_scale = 0; | 145 | | | 146 | 46.3k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 46.3k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 46.3k | const auto* to_decimal_type = | 150 | 46.3k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 46.3k | to_precision = to_decimal_type->get_precision(); | 152 | 46.3k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 46.3k | to_scale = to_decimal_type->get_scale(); | 155 | 46.3k | ToDataType::check_type_scale(to_scale); | 156 | 46.3k | } | 157 | 46.3k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 46.3k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 46.3k | to_precision = to_max_digits; | 160 | 46.3k | } | 161 | | | 162 | 46.3k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 46.3k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 46.3k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 46.3k | if (to_scale > from_scale) { | 167 | 46.3k | multiply_may_overflow &= | 168 | 46.3k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 46.3k | } | 170 | 46.3k | return narrow_integral || multiply_may_overflow; | 171 | 46.3k | } | 172 | 46.3k | return false; | 173 | 46.3k | }); | 174 | 46.3k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ Line | Count | Source | 110 | 80.3k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 80.3k | using Types = std::decay_t<decltype(types)>; | 112 | 80.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 | 80.3k | return call_on_index_and_data_type< | 120 | 80.3k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 80.3k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 80.3k | using FromDataType = typename Types2::LeftType; | 123 | 80.3k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 80.3k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 80.3k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 80.3k | return false; | 127 | 80.3k | } | 128 | 80.3k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 80.3k | using FromFieldType = typename FromDataType::FieldType; | 130 | 80.3k | using ToFieldType = typename ToDataType::FieldType; | 131 | 80.3k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 80.3k | UInt32 from_scale = 0; | 133 | | | 134 | 80.3k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 80.3k | const auto* from_decimal_type = | 136 | 80.3k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 80.3k | from_precision = | 138 | 80.3k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 80.3k | from_scale = from_decimal_type->get_scale(); | 140 | 80.3k | } | 141 | | | 142 | 80.3k | UInt32 to_max_digits = 0; | 143 | 80.3k | UInt32 to_precision = 0; | 144 | 80.3k | UInt32 to_scale = 0; | 145 | | | 146 | 80.3k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 80.3k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 80.3k | const auto* to_decimal_type = | 150 | 80.3k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 80.3k | to_precision = to_decimal_type->get_precision(); | 152 | 80.3k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 80.3k | to_scale = to_decimal_type->get_scale(); | 155 | 80.3k | ToDataType::check_type_scale(to_scale); | 156 | 80.3k | } | 157 | 80.3k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 80.3k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 80.3k | to_precision = to_max_digits; | 160 | 80.3k | } | 161 | | | 162 | 80.3k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 80.3k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 80.3k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 80.3k | if (to_scale > from_scale) { | 167 | 80.3k | multiply_may_overflow &= | 168 | 80.3k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 80.3k | } | 170 | 80.3k | return narrow_integral || multiply_may_overflow; | 171 | 80.3k | } | 172 | 80.3k | return false; | 173 | 80.3k | }); | 174 | 80.3k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ Line | Count | Source | 110 | 10.9k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 10.9k | using Types = std::decay_t<decltype(types)>; | 112 | 10.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 | 10.9k | return call_on_index_and_data_type< | 120 | 10.9k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 10.9k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 10.9k | using FromDataType = typename Types2::LeftType; | 123 | 10.9k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 10.9k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 10.9k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 10.9k | return false; | 127 | 10.9k | } | 128 | 10.9k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 10.9k | using FromFieldType = typename FromDataType::FieldType; | 130 | 10.9k | using ToFieldType = typename ToDataType::FieldType; | 131 | 10.9k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 10.9k | UInt32 from_scale = 0; | 133 | | | 134 | 10.9k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 10.9k | const auto* from_decimal_type = | 136 | 10.9k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 10.9k | from_precision = | 138 | 10.9k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 10.9k | from_scale = from_decimal_type->get_scale(); | 140 | 10.9k | } | 141 | | | 142 | 10.9k | UInt32 to_max_digits = 0; | 143 | 10.9k | UInt32 to_precision = 0; | 144 | 10.9k | UInt32 to_scale = 0; | 145 | | | 146 | 10.9k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 10.9k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 10.9k | const auto* to_decimal_type = | 150 | 10.9k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 10.9k | to_precision = to_decimal_type->get_precision(); | 152 | 10.9k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 10.9k | to_scale = to_decimal_type->get_scale(); | 155 | 10.9k | ToDataType::check_type_scale(to_scale); | 156 | 10.9k | } | 157 | 10.9k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 10.9k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 10.9k | to_precision = to_max_digits; | 160 | 10.9k | } | 161 | | | 162 | 10.9k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 10.9k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 10.9k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 10.9k | if (to_scale > from_scale) { | 167 | 10.9k | multiply_may_overflow &= | 168 | 10.9k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 10.9k | } | 170 | 10.9k | return narrow_integral || multiply_may_overflow; | 171 | 10.9k | } | 172 | 10.9k | return false; | 173 | 10.9k | }); | 174 | 10.9k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ Line | Count | Source | 110 | 26.8k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 26.8k | using Types = std::decay_t<decltype(types)>; | 112 | 26.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 | 26.8k | return call_on_index_and_data_type< | 120 | 26.8k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 26.8k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 26.8k | using FromDataType = typename Types2::LeftType; | 123 | 26.8k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 26.8k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 26.8k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 26.8k | return false; | 127 | 26.8k | } | 128 | 26.8k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 26.8k | using FromFieldType = typename FromDataType::FieldType; | 130 | 26.8k | using ToFieldType = typename ToDataType::FieldType; | 131 | 26.8k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 26.8k | UInt32 from_scale = 0; | 133 | | | 134 | 26.8k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 26.8k | const auto* from_decimal_type = | 136 | 26.8k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 26.8k | from_precision = | 138 | 26.8k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 26.8k | from_scale = from_decimal_type->get_scale(); | 140 | 26.8k | } | 141 | | | 142 | 26.8k | UInt32 to_max_digits = 0; | 143 | 26.8k | UInt32 to_precision = 0; | 144 | 26.8k | UInt32 to_scale = 0; | 145 | | | 146 | 26.8k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 26.8k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 26.8k | const auto* to_decimal_type = | 150 | 26.8k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 26.8k | to_precision = to_decimal_type->get_precision(); | 152 | 26.8k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 26.8k | to_scale = to_decimal_type->get_scale(); | 155 | 26.8k | ToDataType::check_type_scale(to_scale); | 156 | 26.8k | } | 157 | 26.8k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 26.8k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 26.8k | to_precision = to_max_digits; | 160 | 26.8k | } | 161 | | | 162 | 26.8k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 26.8k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 26.8k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 26.8k | if (to_scale > from_scale) { | 167 | 26.8k | multiply_may_overflow &= | 168 | 26.8k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 26.8k | } | 170 | 26.8k | return narrow_integral || multiply_may_overflow; | 171 | 26.8k | } | 172 | 26.8k | return false; | 173 | 26.8k | }); | 174 | 26.8k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ Line | Count | Source | 110 | 8.07k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 8.07k | using Types = std::decay_t<decltype(types)>; | 112 | 8.07k | 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.07k | return call_on_index_and_data_type< | 120 | 8.07k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 8.07k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 8.07k | using FromDataType = typename Types2::LeftType; | 123 | 8.07k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 8.07k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 8.07k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 8.07k | return false; | 127 | 8.07k | } | 128 | 8.07k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 8.07k | using FromFieldType = typename FromDataType::FieldType; | 130 | 8.07k | using ToFieldType = typename ToDataType::FieldType; | 131 | 8.07k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 8.07k | UInt32 from_scale = 0; | 133 | | | 134 | 8.07k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 8.07k | const auto* from_decimal_type = | 136 | 8.07k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 8.07k | from_precision = | 138 | 8.07k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 8.07k | from_scale = from_decimal_type->get_scale(); | 140 | 8.07k | } | 141 | | | 142 | 8.07k | UInt32 to_max_digits = 0; | 143 | 8.07k | UInt32 to_precision = 0; | 144 | 8.07k | UInt32 to_scale = 0; | 145 | | | 146 | 8.07k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 8.07k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 8.07k | const auto* to_decimal_type = | 150 | 8.07k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 8.07k | to_precision = to_decimal_type->get_precision(); | 152 | 8.07k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 8.07k | to_scale = to_decimal_type->get_scale(); | 155 | 8.07k | ToDataType::check_type_scale(to_scale); | 156 | 8.07k | } | 157 | 8.07k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 8.07k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 8.07k | to_precision = to_max_digits; | 160 | 8.07k | } | 161 | | | 162 | 8.07k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 8.07k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 8.07k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 8.07k | if (to_scale > from_scale) { | 167 | 8.07k | multiply_may_overflow &= | 168 | 8.07k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 8.07k | } | 170 | 8.07k | return narrow_integral || multiply_may_overflow; | 171 | 8.07k | } | 172 | 8.07k | return false; | 173 | 8.07k | }); | 174 | 8.07k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ Line | Count | Source | 110 | 21.3k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 21.3k | using Types = std::decay_t<decltype(types)>; | 112 | 21.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 | 21.3k | return call_on_index_and_data_type< | 120 | 21.3k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 21.3k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 21.3k | using FromDataType = typename Types2::LeftType; | 123 | 21.3k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 21.3k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 21.3k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 21.3k | return false; | 127 | 21.3k | } | 128 | 21.3k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 21.3k | using FromFieldType = typename FromDataType::FieldType; | 130 | 21.3k | using ToFieldType = typename ToDataType::FieldType; | 131 | 21.3k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 21.3k | UInt32 from_scale = 0; | 133 | | | 134 | 21.3k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 21.3k | const auto* from_decimal_type = | 136 | 21.3k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 21.3k | from_precision = | 138 | 21.3k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 21.3k | from_scale = from_decimal_type->get_scale(); | 140 | 21.3k | } | 141 | | | 142 | 21.3k | UInt32 to_max_digits = 0; | 143 | 21.3k | UInt32 to_precision = 0; | 144 | 21.3k | UInt32 to_scale = 0; | 145 | | | 146 | 21.3k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 21.3k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 21.3k | const auto* to_decimal_type = | 150 | 21.3k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 21.3k | to_precision = to_decimal_type->get_precision(); | 152 | 21.3k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 21.3k | to_scale = to_decimal_type->get_scale(); | 155 | 21.3k | ToDataType::check_type_scale(to_scale); | 156 | 21.3k | } | 157 | 21.3k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 21.3k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 21.3k | to_precision = to_max_digits; | 160 | 21.3k | } | 161 | | | 162 | 21.3k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 21.3k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 21.3k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 21.3k | if (to_scale > from_scale) { | 167 | 21.3k | multiply_may_overflow &= | 168 | 21.3k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 21.3k | } | 170 | 21.3k | return narrow_integral || multiply_may_overflow; | 171 | 21.3k | } | 172 | 21.3k | return false; | 173 | 21.3k | }); | 174 | 21.3k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ Line | Count | Source | 110 | 225 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 225 | using Types = std::decay_t<decltype(types)>; | 112 | 225 | 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 | 225 | return call_on_index_and_data_type< | 120 | 225 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 225 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 225 | using FromDataType = typename Types2::LeftType; | 123 | 225 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 225 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 225 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 225 | return false; | 127 | 225 | } | 128 | 225 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 225 | using FromFieldType = typename FromDataType::FieldType; | 130 | 225 | using ToFieldType = typename ToDataType::FieldType; | 131 | 225 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 225 | UInt32 from_scale = 0; | 133 | | | 134 | 225 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 225 | const auto* from_decimal_type = | 136 | 225 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 225 | from_precision = | 138 | 225 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 225 | from_scale = from_decimal_type->get_scale(); | 140 | 225 | } | 141 | | | 142 | 225 | UInt32 to_max_digits = 0; | 143 | 225 | UInt32 to_precision = 0; | 144 | 225 | UInt32 to_scale = 0; | 145 | | | 146 | 225 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 225 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 225 | const auto* to_decimal_type = | 150 | 225 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 225 | to_precision = to_decimal_type->get_precision(); | 152 | 225 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 225 | to_scale = to_decimal_type->get_scale(); | 155 | 225 | ToDataType::check_type_scale(to_scale); | 156 | 225 | } | 157 | 225 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 225 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 225 | to_precision = to_max_digits; | 160 | 225 | } | 161 | | | 162 | 225 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 225 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 225 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 225 | if (to_scale > from_scale) { | 167 | 225 | multiply_may_overflow &= | 168 | 225 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 225 | } | 170 | 225 | return narrow_integral || multiply_may_overflow; | 171 | 225 | } | 172 | 225 | return false; | 173 | 225 | }); | 174 | 225 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ Line | Count | Source | 110 | 185k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 185k | using Types = std::decay_t<decltype(types)>; | 112 | 185k | 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 | 185k | return call_on_index_and_data_type< | 120 | 185k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 185k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 185k | using FromDataType = typename Types2::LeftType; | 123 | 185k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 185k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 185k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 185k | return false; | 127 | 185k | } | 128 | 185k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 185k | using FromFieldType = typename FromDataType::FieldType; | 130 | 185k | using ToFieldType = typename ToDataType::FieldType; | 131 | 185k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 185k | UInt32 from_scale = 0; | 133 | | | 134 | 185k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 185k | const auto* from_decimal_type = | 136 | 185k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 185k | from_precision = | 138 | 185k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 185k | from_scale = from_decimal_type->get_scale(); | 140 | 185k | } | 141 | | | 142 | 185k | UInt32 to_max_digits = 0; | 143 | 185k | UInt32 to_precision = 0; | 144 | 185k | UInt32 to_scale = 0; | 145 | | | 146 | 185k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 185k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 185k | const auto* to_decimal_type = | 150 | 185k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 185k | to_precision = to_decimal_type->get_precision(); | 152 | 185k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 185k | to_scale = to_decimal_type->get_scale(); | 155 | 185k | ToDataType::check_type_scale(to_scale); | 156 | 185k | } | 157 | 185k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 185k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 185k | to_precision = to_max_digits; | 160 | 185k | } | 161 | | | 162 | 185k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 185k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 185k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 185k | if (to_scale > from_scale) { | 167 | 185k | multiply_may_overflow &= | 168 | 185k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 185k | } | 170 | 185k | return narrow_integral || multiply_may_overflow; | 171 | 185k | } | 172 | 185k | return false; | 173 | 185k | }); | 174 | 185k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ Line | Count | Source | 110 | 10.9k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 10.9k | using Types = std::decay_t<decltype(types)>; | 112 | 10.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 | 10.9k | return call_on_index_and_data_type< | 120 | 10.9k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 10.9k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 10.9k | using FromDataType = typename Types2::LeftType; | 123 | 10.9k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 10.9k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 10.9k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 10.9k | return false; | 127 | 10.9k | } | 128 | 10.9k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 10.9k | using FromFieldType = typename FromDataType::FieldType; | 130 | 10.9k | using ToFieldType = typename ToDataType::FieldType; | 131 | 10.9k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 10.9k | UInt32 from_scale = 0; | 133 | | | 134 | 10.9k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 10.9k | const auto* from_decimal_type = | 136 | 10.9k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 10.9k | from_precision = | 138 | 10.9k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 10.9k | from_scale = from_decimal_type->get_scale(); | 140 | 10.9k | } | 141 | | | 142 | 10.9k | UInt32 to_max_digits = 0; | 143 | 10.9k | UInt32 to_precision = 0; | 144 | 10.9k | UInt32 to_scale = 0; | 145 | | | 146 | 10.9k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 10.9k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 10.9k | const auto* to_decimal_type = | 150 | 10.9k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 10.9k | to_precision = to_decimal_type->get_precision(); | 152 | 10.9k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 10.9k | to_scale = to_decimal_type->get_scale(); | 155 | 10.9k | ToDataType::check_type_scale(to_scale); | 156 | 10.9k | } | 157 | 10.9k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 10.9k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 10.9k | to_precision = to_max_digits; | 160 | 10.9k | } | 161 | | | 162 | 10.9k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 10.9k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 10.9k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 10.9k | if (to_scale > from_scale) { | 167 | 10.9k | multiply_may_overflow &= | 168 | 10.9k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 10.9k | } | 170 | 10.9k | return narrow_integral || multiply_may_overflow; | 171 | 10.9k | } | 172 | 10.9k | return false; | 173 | 10.9k | }); | 174 | 10.9k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ Line | Count | Source | 110 | 32 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 32 | using Types = std::decay_t<decltype(types)>; | 112 | 32 | 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 | 32 | return call_on_index_and_data_type< | 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 | 32 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 32 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 32 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 32 | return false; | 127 | 32 | } | 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 | 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 | 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 | 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 | 32 | return false; | 173 | 32 | }); | 174 | 32 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ Line | Count | Source | 110 | 177k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 177k | using Types = std::decay_t<decltype(types)>; | 112 | 177k | 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 | 177k | return call_on_index_and_data_type< | 120 | 177k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 177k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 177k | using FromDataType = typename Types2::LeftType; | 123 | 177k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 177k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 177k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 177k | return false; | 127 | 177k | } | 128 | 177k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 177k | using FromFieldType = typename FromDataType::FieldType; | 130 | 177k | using ToFieldType = typename ToDataType::FieldType; | 131 | 177k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 177k | UInt32 from_scale = 0; | 133 | | | 134 | 177k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 177k | const auto* from_decimal_type = | 136 | 177k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 177k | from_precision = | 138 | 177k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 177k | from_scale = from_decimal_type->get_scale(); | 140 | 177k | } | 141 | | | 142 | 177k | UInt32 to_max_digits = 0; | 143 | 177k | UInt32 to_precision = 0; | 144 | 177k | UInt32 to_scale = 0; | 145 | | | 146 | 177k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 177k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 177k | const auto* to_decimal_type = | 150 | 177k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 177k | to_precision = to_decimal_type->get_precision(); | 152 | 177k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 177k | to_scale = to_decimal_type->get_scale(); | 155 | 177k | ToDataType::check_type_scale(to_scale); | 156 | 177k | } | 157 | 177k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 177k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 177k | to_precision = to_max_digits; | 160 | 177k | } | 161 | | | 162 | 177k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 177k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 177k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 177k | if (to_scale > from_scale) { | 167 | 177k | multiply_may_overflow &= | 168 | 177k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 177k | } | 170 | 177k | return narrow_integral || multiply_may_overflow; | 171 | 177k | } | 172 | 177k | return false; | 173 | 177k | }); | 174 | 177k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ Line | Count | Source | 110 | 170k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 170k | using Types = std::decay_t<decltype(types)>; | 112 | 170k | 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 | 170k | return call_on_index_and_data_type< | 120 | 170k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 170k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 170k | using FromDataType = typename Types2::LeftType; | 123 | 170k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 170k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 170k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 170k | return false; | 127 | 170k | } | 128 | 170k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 170k | using FromFieldType = typename FromDataType::FieldType; | 130 | 170k | using ToFieldType = typename ToDataType::FieldType; | 131 | 170k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 170k | UInt32 from_scale = 0; | 133 | | | 134 | 170k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 170k | const auto* from_decimal_type = | 136 | 170k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 170k | from_precision = | 138 | 170k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 170k | from_scale = from_decimal_type->get_scale(); | 140 | 170k | } | 141 | | | 142 | 170k | UInt32 to_max_digits = 0; | 143 | 170k | UInt32 to_precision = 0; | 144 | 170k | UInt32 to_scale = 0; | 145 | | | 146 | 170k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 170k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 170k | const auto* to_decimal_type = | 150 | 170k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 170k | to_precision = to_decimal_type->get_precision(); | 152 | 170k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 170k | to_scale = to_decimal_type->get_scale(); | 155 | 170k | ToDataType::check_type_scale(to_scale); | 156 | 170k | } | 157 | 170k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 170k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 170k | to_precision = to_max_digits; | 160 | 170k | } | 161 | | | 162 | 170k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 170k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 170k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 170k | if (to_scale > from_scale) { | 167 | 170k | multiply_may_overflow &= | 168 | 170k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 170k | } | 170 | 170k | return narrow_integral || multiply_may_overflow; | 171 | 170k | } | 172 | 170k | return false; | 173 | 170k | }); | 174 | 170k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ Line | Count | Source | 110 | 26 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 26 | using Types = std::decay_t<decltype(types)>; | 112 | 26 | 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 | 26 | return call_on_index_and_data_type< | 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 | 26 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 26 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 26 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 26 | return false; | 127 | 26 | } | 128 | 26 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 26 | using FromFieldType = typename FromDataType::FieldType; | 130 | 26 | using ToFieldType = typename ToDataType::FieldType; | 131 | 26 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 26 | UInt32 from_scale = 0; | 133 | | | 134 | 26 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 26 | const auto* from_decimal_type = | 136 | 26 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 26 | from_precision = | 138 | 26 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 26 | from_scale = from_decimal_type->get_scale(); | 140 | 26 | } | 141 | | | 142 | 26 | UInt32 to_max_digits = 0; | 143 | 26 | UInt32 to_precision = 0; | 144 | 26 | UInt32 to_scale = 0; | 145 | | | 146 | 26 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 26 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 26 | const auto* to_decimal_type = | 150 | 26 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 26 | to_precision = to_decimal_type->get_precision(); | 152 | 26 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 26 | to_scale = to_decimal_type->get_scale(); | 155 | 26 | ToDataType::check_type_scale(to_scale); | 156 | 26 | } | 157 | 26 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 26 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 26 | to_precision = to_max_digits; | 160 | 26 | } | 161 | | | 162 | 26 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 26 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 26 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 26 | if (to_scale > from_scale) { | 167 | 26 | multiply_may_overflow &= | 168 | 26 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 26 | } | 170 | 26 | return narrow_integral || multiply_may_overflow; | 171 | 26 | } | 172 | 26 | return false; | 173 | 26 | }); | 174 | 26 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ Line | Count | Source | 110 | 459 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 459 | using Types = std::decay_t<decltype(types)>; | 112 | 459 | 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 | 459 | return call_on_index_and_data_type< | 120 | 459 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 459 | using Types2 = std::decay_t<decltype(types2)>; | 122 | 459 | using FromDataType = typename Types2::LeftType; | 123 | 459 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 459 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 459 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 459 | return false; | 127 | 459 | } | 128 | 459 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 459 | using FromFieldType = typename FromDataType::FieldType; | 130 | 459 | using ToFieldType = typename ToDataType::FieldType; | 131 | 459 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 459 | UInt32 from_scale = 0; | 133 | | | 134 | 459 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 459 | const auto* from_decimal_type = | 136 | 459 | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 459 | from_precision = | 138 | 459 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 459 | from_scale = from_decimal_type->get_scale(); | 140 | 459 | } | 141 | | | 142 | 459 | UInt32 to_max_digits = 0; | 143 | 459 | UInt32 to_precision = 0; | 144 | 459 | UInt32 to_scale = 0; | 145 | | | 146 | 459 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 459 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 459 | const auto* to_decimal_type = | 150 | 459 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 459 | to_precision = to_decimal_type->get_precision(); | 152 | 459 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 459 | to_scale = to_decimal_type->get_scale(); | 155 | 459 | ToDataType::check_type_scale(to_scale); | 156 | 459 | } | 157 | 459 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 459 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 459 | to_precision = to_max_digits; | 160 | 459 | } | 161 | | | 162 | 459 | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 459 | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 459 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 459 | if (to_scale > from_scale) { | 167 | 459 | multiply_may_overflow &= | 168 | 459 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 459 | } | 170 | 459 | return narrow_integral || multiply_may_overflow; | 171 | 459 | } | 172 | 459 | return false; | 173 | 459 | }); | 174 | 459 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ Line | Count | Source | 110 | 590 | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 590 | using Types = std::decay_t<decltype(types)>; | 112 | 590 | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 590 | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 590 | return false; | 118 | 590 | } | 119 | 0 | return call_on_index_and_data_type< | 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 | 590 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 590 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 590 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 590 | return false; | 127 | 590 | } | 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 | 590 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 590 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 590 | const auto* to_decimal_type = | 150 | 590 | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 590 | to_precision = to_decimal_type->get_precision(); | 152 | 590 | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 590 | to_scale = to_decimal_type->get_scale(); | 155 | 590 | ToDataType::check_type_scale(to_scale); | 156 | 590 | } | 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 | 590 | multiply_may_overflow &= | 168 | 590 | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 590 | } | 170 | 590 | return narrow_integral || multiply_may_overflow; | 171 | 590 | } | 172 | 590 | return false; | 173 | 590 | }); | 174 | 590 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ Line | Count | Source | 110 | 85.5k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 85.5k | using Types = std::decay_t<decltype(types)>; | 112 | 85.5k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 85.5k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 85.5k | return false; | 118 | 85.5k | } | 119 | 0 | return call_on_index_and_data_type< | 120 | 85.5k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 85.5k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 85.5k | using FromDataType = typename Types2::LeftType; | 123 | 85.5k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 85.5k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 85.5k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 85.5k | return false; | 127 | 85.5k | } | 128 | 85.5k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 85.5k | using FromFieldType = typename FromDataType::FieldType; | 130 | 85.5k | using ToFieldType = typename ToDataType::FieldType; | 131 | 85.5k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 85.5k | UInt32 from_scale = 0; | 133 | | | 134 | 85.5k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 85.5k | const auto* from_decimal_type = | 136 | 85.5k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 85.5k | from_precision = | 138 | 85.5k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 85.5k | from_scale = from_decimal_type->get_scale(); | 140 | 85.5k | } | 141 | | | 142 | 85.5k | UInt32 to_max_digits = 0; | 143 | 85.5k | UInt32 to_precision = 0; | 144 | 85.5k | UInt32 to_scale = 0; | 145 | | | 146 | 85.5k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 85.5k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 85.5k | const auto* to_decimal_type = | 150 | 85.5k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 85.5k | to_precision = to_decimal_type->get_precision(); | 152 | 85.5k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 85.5k | to_scale = to_decimal_type->get_scale(); | 155 | 85.5k | ToDataType::check_type_scale(to_scale); | 156 | 85.5k | } | 157 | 85.5k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 85.5k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 85.5k | to_precision = to_max_digits; | 160 | 85.5k | } | 161 | | | 162 | 85.5k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 85.5k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 85.5k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 85.5k | if (to_scale > from_scale) { | 167 | 85.5k | multiply_may_overflow &= | 168 | 85.5k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 85.5k | } | 170 | 85.5k | return narrow_integral || multiply_may_overflow; | 171 | 85.5k | } | 172 | 85.5k | return false; | 173 | 85.5k | }); | 174 | 85.5k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ Line | Count | Source | 110 | 164k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 164k | using Types = std::decay_t<decltype(types)>; | 112 | 164k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 164k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 164k | return false; | 118 | 164k | } | 119 | 0 | return call_on_index_and_data_type< | 120 | 164k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 164k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 164k | using FromDataType = typename Types2::LeftType; | 123 | 164k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 164k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 164k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 164k | return false; | 127 | 164k | } | 128 | 164k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 164k | using FromFieldType = typename FromDataType::FieldType; | 130 | 164k | using ToFieldType = typename ToDataType::FieldType; | 131 | 164k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 164k | UInt32 from_scale = 0; | 133 | | | 134 | 164k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 164k | const auto* from_decimal_type = | 136 | 164k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 164k | from_precision = | 138 | 164k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 164k | from_scale = from_decimal_type->get_scale(); | 140 | 164k | } | 141 | | | 142 | 164k | UInt32 to_max_digits = 0; | 143 | 164k | UInt32 to_precision = 0; | 144 | 164k | UInt32 to_scale = 0; | 145 | | | 146 | 164k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 164k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 164k | const auto* to_decimal_type = | 150 | 164k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 164k | to_precision = to_decimal_type->get_precision(); | 152 | 164k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 164k | to_scale = to_decimal_type->get_scale(); | 155 | 164k | ToDataType::check_type_scale(to_scale); | 156 | 164k | } | 157 | 164k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 164k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 164k | to_precision = to_max_digits; | 160 | 164k | } | 161 | | | 162 | 164k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 164k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 164k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 164k | if (to_scale > from_scale) { | 167 | 164k | multiply_may_overflow &= | 168 | 164k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 164k | } | 170 | 164k | return narrow_integral || multiply_may_overflow; | 171 | 164k | } | 172 | 164k | return false; | 173 | 164k | }); | 174 | 164k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ Line | Count | Source | 110 | 124k | auto make_default_wrapper = [&](const auto& types) -> bool { | 111 | 124k | using Types = std::decay_t<decltype(types)>; | 112 | 124k | using ToDataType = typename Types::LeftType; | 113 | | | 114 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 115 | | IsDatelikeV2Types<ToDataType> || | 116 | 124k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 117 | 124k | return false; | 118 | 124k | } | 119 | 0 | return call_on_index_and_data_type< | 120 | 124k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 121 | 124k | using Types2 = std::decay_t<decltype(types2)>; | 122 | 124k | using FromDataType = typename Types2::LeftType; | 123 | 124k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 124 | 124k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 125 | 124k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 126 | 124k | return false; | 127 | 124k | } | 128 | 124k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 129 | 124k | using FromFieldType = typename FromDataType::FieldType; | 130 | 124k | using ToFieldType = typename ToDataType::FieldType; | 131 | 124k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 132 | 124k | UInt32 from_scale = 0; | 133 | | | 134 | 124k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 135 | 124k | const auto* from_decimal_type = | 136 | 124k | check_and_get_data_type<FromDataType>(from_type.get()); | 137 | 124k | from_precision = | 138 | 124k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 139 | 124k | from_scale = from_decimal_type->get_scale(); | 140 | 124k | } | 141 | | | 142 | 124k | UInt32 to_max_digits = 0; | 143 | 124k | UInt32 to_precision = 0; | 144 | 124k | UInt32 to_scale = 0; | 145 | | | 146 | 124k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 147 | 124k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 148 | | | 149 | 124k | const auto* to_decimal_type = | 150 | 124k | check_and_get_data_type<ToDataType>(to_type.get()); | 151 | 124k | to_precision = to_decimal_type->get_precision(); | 152 | 124k | ToDataType::check_type_precision(to_precision); | 153 | | | 154 | 124k | to_scale = to_decimal_type->get_scale(); | 155 | 124k | ToDataType::check_type_scale(to_scale); | 156 | 124k | } | 157 | 124k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 158 | 124k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 159 | 124k | to_precision = to_max_digits; | 160 | 124k | } | 161 | | | 162 | 124k | bool narrow_integral = context->check_overflow_for_decimal() && | 163 | 124k | (to_precision - to_scale) <= (from_precision - from_scale); | 164 | | | 165 | 124k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 166 | 124k | if (to_scale > from_scale) { | 167 | 124k | multiply_may_overflow &= | 168 | 124k | (from_precision + to_scale - from_scale) >= to_max_digits; | 169 | 124k | } | 170 | 124k | return narrow_integral || multiply_may_overflow; | 171 | 124k | } | 172 | 124k | return false; | 173 | 124k | }); | 174 | 124k | }; |
|
175 | | |
176 | 1.55M | return call_on_index_and_data_type<void>(to_type->get_primitive_type(), make_default_wrapper); |
177 | 1.64M | } |
178 | | |
179 | | WrapperType prepare_remove_nullable(FunctionContext* context, const DataTypePtr& from_type, |
180 | 1.67M | const DataTypePtr& to_type) { |
181 | | /// Determine whether pre-processing and/or post-processing must take place during conversion. |
182 | 1.67M | bool result_is_nullable = to_type->is_nullable(); |
183 | | |
184 | 1.67M | if (result_is_nullable) { |
185 | 1.64M | return [from_type, to_type](FunctionContext* context, Block& block, |
186 | 1.64M | const ColumnNumbers& arguments, uint32_t result, |
187 | 1.64M | size_t input_rows_count, |
188 | 1.64M | const NullMap::value_type* null_map = nullptr) { |
189 | 1.64M | auto from_type_not_nullable = remove_nullable(from_type); |
190 | 1.64M | auto to_type_not_nullable = remove_nullable(to_type); |
191 | | |
192 | 1.64M | bool replace_null_data_to_default = need_replace_null_data_to_default( |
193 | 1.64M | context, from_type_not_nullable, to_type_not_nullable); |
194 | | |
195 | 1.64M | auto nested_result_index = block.columns(); |
196 | 1.64M | block.insert(block.get_by_position(result).unnest_nullable()); |
197 | 1.64M | auto nested_source_index = block.columns(); |
198 | 1.64M | block.insert(block.get_by_position(arguments[0]) |
199 | 1.64M | .unnest_nullable(replace_null_data_to_default)); |
200 | | |
201 | 1.64M | const auto& arg_col = block.get_by_position(arguments[0]); |
202 | 1.64M | const NullMap::value_type* arg_null_map = nullptr; |
203 | 1.64M | if (const auto* nullable = check_and_get_column<ColumnNullable>(*arg_col.column)) { |
204 | 1.59M | arg_null_map = nullable->get_null_map_data().data(); |
205 | 1.59M | } |
206 | 1.64M | RETURN_IF_ERROR(prepare_impl(context, from_type_not_nullable, to_type_not_nullable)( |
207 | 1.64M | context, block, {nested_source_index}, nested_result_index, input_rows_count, |
208 | 1.64M | arg_null_map)); |
209 | | |
210 | 1.61M | block.get_by_position(result).column = |
211 | 1.61M | wrap_in_nullable(block.get_by_position(nested_result_index).column, block, |
212 | 1.61M | arguments, input_rows_count); |
213 | | |
214 | 1.61M | block.erase(nested_source_index); |
215 | 1.61M | block.erase(nested_result_index); |
216 | 1.61M | return Status::OK(); |
217 | 1.64M | }; |
218 | 1.64M | } else { |
219 | 33.0k | return prepare_impl(context, from_type, to_type); |
220 | 33.0k | } |
221 | 1.67M | } |
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 | 1.69M | const DataTypePtr& origin_to_type) { |
227 | 1.69M | auto to_type = get_serialized_type(origin_to_type); |
228 | 1.69M | auto from_type = get_serialized_type(origin_from_type); |
229 | 1.69M | if (from_type->equals(*to_type)) { |
230 | 96.1k | return create_identity_wrapper(from_type); |
231 | 96.1k | } |
232 | | |
233 | | // variant needs to be judged first |
234 | 1.59M | if (to_type->get_primitive_type() == PrimitiveType::TYPE_VARIANT) { |
235 | 11.8k | return create_cast_to_variant_wrapper(from_type, |
236 | 11.8k | static_cast<const DataTypeVariant&>(*to_type)); |
237 | 11.8k | } |
238 | 1.58M | if (from_type->get_primitive_type() == PrimitiveType::TYPE_VARIANT) { |
239 | 19.3k | return create_cast_from_variant_wrapper(static_cast<const DataTypeVariant&>(*from_type), |
240 | 19.3k | to_type); |
241 | 19.3k | } |
242 | | |
243 | 1.56M | if (from_type->get_primitive_type() == PrimitiveType::TYPE_JSONB) { |
244 | 9.31k | return create_cast_from_jsonb_wrapper(static_cast<const DataTypeJsonb&>(*from_type), |
245 | 9.31k | to_type, |
246 | 18.4E | context ? context->jsonb_string_as_string() : false); |
247 | 9.31k | } |
248 | | |
249 | 1.55M | switch (to_type->get_primitive_type()) { |
250 | 1.11k | case PrimitiveType::TYPE_BOOLEAN: |
251 | 1.11k | return create_boolean_wrapper(context, from_type); |
252 | 9.97k | case PrimitiveType::TYPE_TINYINT: |
253 | 15.6k | case PrimitiveType::TYPE_SMALLINT: |
254 | 186k | case PrimitiveType::TYPE_INT: |
255 | 238k | case PrimitiveType::TYPE_BIGINT: |
256 | 318k | case PrimitiveType::TYPE_LARGEINT: |
257 | 318k | return create_int_wrapper(context, from_type, to_type->get_primitive_type()); |
258 | 11.0k | case PrimitiveType::TYPE_FLOAT: |
259 | 41.3k | case PrimitiveType::TYPE_DOUBLE: |
260 | 41.3k | return create_float_wrapper(context, from_type, to_type->get_primitive_type()); |
261 | 32 | case PrimitiveType::TYPE_DATE: |
262 | 58 | case PrimitiveType::TYPE_DATETIME: |
263 | 177k | case PrimitiveType::TYPE_DATEV2: |
264 | 348k | case PrimitiveType::TYPE_DATETIMEV2: |
265 | 349k | case PrimitiveType::TYPE_TIMEV2: |
266 | 349k | return create_datelike_wrapper(context, from_type, to_type->get_primitive_type()); |
267 | 581 | case PrimitiveType::TYPE_TIMESTAMPTZ: |
268 | 581 | return create_timestamptz_wrapper(context, from_type); |
269 | 85.4k | case PrimitiveType::TYPE_IPV4: |
270 | 250k | case PrimitiveType::TYPE_IPV6: |
271 | 250k | return create_ip_wrapper(context, from_type, to_type->get_primitive_type()); |
272 | 291 | case PrimitiveType::TYPE_DECIMALV2: |
273 | 8.45k | case PrimitiveType::TYPE_DECIMAL32: |
274 | 32.6k | case PrimitiveType::TYPE_DECIMAL64: |
275 | 221k | case PrimitiveType::TYPE_DECIMAL128I: |
276 | 232k | case PrimitiveType::TYPE_DECIMAL256: |
277 | 232k | return create_decimal_wrapper(context, from_type, to_type->get_primitive_type()); |
278 | 20 | case PrimitiveType::TYPE_CHAR: |
279 | 11.3k | case PrimitiveType::TYPE_VARCHAR: |
280 | 123k | case PrimitiveType::TYPE_STRING: |
281 | 123k | return create_string_wrapper(from_type); |
282 | 172k | case PrimitiveType::TYPE_ARRAY: |
283 | 172k | return create_array_wrapper(context, from_type, |
284 | 172k | static_cast<const DataTypeArray&>(*to_type)); |
285 | 3.21k | case PrimitiveType::TYPE_STRUCT: |
286 | 3.21k | return create_struct_wrapper(context, from_type, |
287 | 3.21k | static_cast<const DataTypeStruct&>(*to_type)); |
288 | 3.15k | case PrimitiveType::TYPE_MAP: |
289 | 3.15k | 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 | 59.6k | case PrimitiveType::TYPE_JSONB: |
299 | 59.6k | return create_cast_to_jsonb_wrapper(from_type, static_cast<const DataTypeJsonb&>(*to_type), |
300 | 59.6k | 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 | 1.55M | } |
306 | | |
307 | 0 | return create_unsupport_wrapper(from_type->get_name(), to_type->get_name()); |
308 | 1.55M | } |
309 | | |
310 | | } // namespace CastWrapper |
311 | | |
312 | | class PreparedFunctionCast : public PreparedFunctionImpl { |
313 | | public: |
314 | | explicit PreparedFunctionCast(CastWrapper::WrapperType&& wrapper_function_, const char* name_) |
315 | 1.49M | : 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 | 1.49M | uint32_t result, size_t input_rows_count) const override { |
322 | 1.49M | return wrapper_function(context, block, arguments, result, input_rows_count, nullptr); |
323 | 1.49M | } |
324 | | |
325 | 1.49M | bool use_default_implementation_for_nulls() const override { return false; } |
326 | 1.49M | 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 | 1.38M | : name(name_), |
337 | 1.38M | argument_types(std::move(argument_types_)), |
338 | 1.38M | return_type(std::move(return_type_)) {} |
339 | | |
340 | 1.49M | const DataTypes& get_argument_types() const override { return argument_types; } |
341 | 1.49M | 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 | 1.49M | uint32_t /*result*/) const override { |
346 | 1.49M | return std::make_shared<PreparedFunctionCast>( |
347 | 1.49M | CastWrapper::prepare_unpack_dictionaries(context, get_argument_types()[0], |
348 | 1.49M | get_return_type()), |
349 | 1.49M | name); |
350 | 1.49M | } |
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 | 1.38M | static FunctionBuilderPtr create() { return std::make_shared<FunctionBuilderCast>(); } |
367 | | |
368 | 1.38M | FunctionBuilderCast() = default; |
369 | | |
370 | 1 | 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 | 1.37M | const DataTypePtr& return_type) const override { |
379 | 1.37M | DataTypes data_types(arguments.size()); |
380 | | |
381 | 4.14M | for (size_t i = 0; i < arguments.size(); ++i) { |
382 | 2.76M | data_types[i] = arguments[i].type; |
383 | 2.76M | } |
384 | | |
385 | 1.37M | return std::make_shared<FunctionCast>(name, data_types, return_type); |
386 | 1.37M | } |
387 | | |
388 | 1.38M | 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 | 8 | void register_function_cast(SimpleFunctionFactory& factory) { |
397 | 8 | factory.register_function<FunctionBuilderCast>(); |
398 | 8 | } |
399 | | } // namespace doris |