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/data_type_variant.h" |
25 | | #include "core/data_type/data_type_variant_v2.h" |
26 | | #include "core/data_type/primitive_type.h" |
27 | | #include "exprs/function/cast/cast_to_array.h" |
28 | | #include "exprs/function/cast/cast_to_jsonb.h" |
29 | | #include "exprs/function/cast/cast_to_map.h" |
30 | | #include "exprs/function/cast/cast_to_struct.h" |
31 | | #include "exprs/function/cast/cast_to_variant.h" |
32 | | #include "exprs/function/cast/cast_wrapper_decls.h" |
33 | | #include "exprs/function/cast/variant_v2/cast_variant_v2.h" |
34 | | #include "exprs/function/simple_function_factory.h" |
35 | | |
36 | | namespace doris { |
37 | | |
38 | | namespace CastWrapper { |
39 | | |
40 | | WrapperType create_hll_wrapper(FunctionContext* context, const DataTypePtr& from_type_untyped, |
41 | 0 | const DataTypeHLL& to_type) { |
42 | | /// Conversion from String through parsing. |
43 | 0 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
44 | 0 | return cast_from_string_to_generic; |
45 | 0 | } |
46 | | |
47 | 0 | return CastWrapper::create_unsupport_wrapper("Cast to HLL only support from String type"); |
48 | 0 | } |
49 | | |
50 | | WrapperType create_bitmap_wrapper(FunctionContext* context, const DataTypePtr& from_type_untyped, |
51 | 1 | const DataTypeBitMap& to_type) { |
52 | | /// Conversion from String through parsing. |
53 | 1 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
54 | 1 | return cast_from_string_to_generic; |
55 | 1 | } |
56 | | |
57 | 0 | return CastWrapper::create_unsupport_wrapper("Cast to BitMap only support from String type"); |
58 | 1 | } |
59 | | |
60 | | WrapperType create_quantile_state_wrapper(FunctionContext* context, |
61 | | const DataTypePtr& from_type_untyped, |
62 | 0 | const DataTypeQuantileState& to_type) { |
63 | | /// Conversion from String through parsing. |
64 | 0 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
65 | 0 | return cast_from_string_to_generic; |
66 | 0 | } |
67 | | |
68 | 0 | return CastWrapper::create_unsupport_wrapper( |
69 | 0 | "Cast to QuantileState only support from String type"); |
70 | 0 | } |
71 | | |
72 | 2 | WrapperType create_varbinary_wrapper(const DataTypePtr& from_type_untyped) { |
73 | | /// Conversion from String through parsing. |
74 | 2 | if (check_and_get_data_type<DataTypeString>(from_type_untyped.get())) { |
75 | 2 | return cast_from_string_to_generic; |
76 | 2 | } |
77 | | |
78 | 0 | return CastWrapper::create_unsupport_wrapper("Cast to Varbinary only support from String type"); |
79 | 2 | } |
80 | | |
81 | | WrapperType prepare_unpack_dictionaries(FunctionContext* context, const DataTypePtr& from_type, |
82 | 379k | const DataTypePtr& to_type) { |
83 | 379k | const auto& from_nested = from_type; |
84 | 379k | const auto& to_nested = to_type; |
85 | | |
86 | 379k | if (from_type->is_null_literal()) { |
87 | 1.26k | if (!to_nested->is_nullable()) { |
88 | 0 | return CastWrapper::create_unsupport_wrapper( |
89 | 0 | "Cannot convert NULL to a non-nullable type"); |
90 | 0 | } |
91 | | |
92 | 1.26k | return [](FunctionContext* context, Block& block, const ColumnNumbers&, uint32_t result, |
93 | 1.26k | size_t input_rows_count, const NullMap::value_type* null_map = nullptr) { |
94 | | /// TODO: remove this in the future. |
95 | 1.26k | auto& res = block.get_by_position(result); |
96 | 1.26k | res.column = res.type->create_column_const_with_default_value(input_rows_count) |
97 | 1.26k | ->convert_to_full_column_if_const(); |
98 | 1.26k | return Status::OK(); |
99 | 1.26k | }; |
100 | 1.26k | } |
101 | | |
102 | 377k | auto wrapper = prepare_remove_nullable(context, from_nested, to_nested); |
103 | | |
104 | 377k | return wrapper; |
105 | 379k | } |
106 | | |
107 | | bool need_replace_null_data_to_default(FunctionContext* context, const DataTypePtr& from_type, |
108 | 353k | const DataTypePtr& to_type) { |
109 | 353k | if (from_type->equals(*to_type)) { |
110 | 71.1k | return false; |
111 | 71.1k | } |
112 | | |
113 | 282k | auto make_default_wrapper = [&](const auto& types) -> bool { |
114 | 208k | using Types = std::decay_t<decltype(types)>; |
115 | 208k | using ToDataType = typename Types::LeftType; |
116 | | |
117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || |
118 | | IsDatelikeV2Types<ToDataType> || |
119 | 26.9k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { |
120 | 26.9k | return false; |
121 | 26.9k | } |
122 | 0 | return call_on_index_and_data_type< |
123 | 208k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { |
124 | 162k | using Types2 = std::decay_t<decltype(types2)>; |
125 | 162k | using FromDataType = typename Types2::LeftType; |
126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || |
127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || |
128 | 86.5k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { |
129 | 86.5k | return false; |
130 | 86.5k | } |
131 | 48.6k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { |
132 | 48.6k | using FromFieldType = typename FromDataType::FieldType; |
133 | 48.6k | using ToFieldType = typename ToDataType::FieldType; |
134 | 48.6k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); |
135 | 48.6k | UInt32 from_scale = 0; |
136 | | |
137 | 48.6k | if constexpr (IsDataTypeDecimal<FromDataType>) { |
138 | 19.1k | const auto* from_decimal_type = |
139 | 19.1k | check_and_get_data_type<FromDataType>(from_type.get()); |
140 | 19.1k | from_precision = |
141 | 19.1k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); |
142 | 19.1k | from_scale = from_decimal_type->get_scale(); |
143 | 19.1k | } |
144 | | |
145 | 48.6k | UInt32 to_max_digits = 0; |
146 | 48.6k | UInt32 to_precision = 0; |
147 | 48.6k | UInt32 to_scale = 0; |
148 | | |
149 | 48.6k | if constexpr (IsDataTypeDecimal<ToDataType>) { |
150 | 42.4k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); |
151 | | |
152 | 42.4k | const auto* to_decimal_type = |
153 | 42.4k | check_and_get_data_type<ToDataType>(to_type.get()); |
154 | 42.4k | to_precision = to_decimal_type->get_precision(); |
155 | 42.4k | ToDataType::check_type_precision(to_precision); |
156 | | |
157 | 42.4k | to_scale = to_decimal_type->get_scale(); |
158 | 42.4k | ToDataType::check_type_scale(to_scale); |
159 | 42.4k | } |
160 | 48.6k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { |
161 | 6.14k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); |
162 | 6.14k | to_precision = to_max_digits; |
163 | 6.14k | } |
164 | | |
165 | 48.6k | bool narrow_integral = context->check_overflow_for_decimal() && |
166 | 48.6k | (to_precision - to_scale) <= (from_precision - from_scale); |
167 | | |
168 | 48.6k | bool multiply_may_overflow = context->check_overflow_for_decimal(); |
169 | 48.6k | if (to_scale > from_scale) { |
170 | 11.6k | multiply_may_overflow &= |
171 | 11.6k | (from_precision + to_scale - from_scale) >= to_max_digits; |
172 | 11.6k | } |
173 | 48.6k | return narrow_integral || multiply_may_overflow; |
174 | 48.6k | } |
175 | 0 | return false; |
176 | 162k | }); 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 | 123 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 20 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 20 | return false; | 176 | 20 | }); |
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 | 123 | 19 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 19 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 19 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 19 | return false; | 176 | 19 | }); |
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 | 123 | 36 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 36 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 36 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 36 | return false; | 176 | 36 | }); |
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 | 123 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 16 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 16 | return false; | 176 | 16 | }); |
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 | 123 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7 | return false; | 176 | 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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2 | return false; | 176 | 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 | 123 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7 | return false; | 176 | 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 | 123 | 10 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 10 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 10 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 10 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 10 | using FromFieldType = typename FromDataType::FieldType; | 133 | 10 | using ToFieldType = typename ToDataType::FieldType; | 134 | 10 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 10 | UInt32 from_scale = 0; | 136 | | | 137 | 10 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 10 | const auto* from_decimal_type = | 139 | 10 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 10 | from_precision = | 141 | 10 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 10 | from_scale = from_decimal_type->get_scale(); | 143 | 10 | } | 144 | | | 145 | 10 | UInt32 to_max_digits = 0; | 146 | 10 | UInt32 to_precision = 0; | 147 | 10 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 10 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 10 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 10 | to_precision = to_max_digits; | 163 | 10 | } | 164 | | | 165 | 10 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 10 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 10 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 10 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 10 | return narrow_integral || multiply_may_overflow; | 174 | 10 | } | 175 | 0 | return false; | 176 | 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 | 123 | 5 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 5 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 5 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 5 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 5 | using FromFieldType = typename FromDataType::FieldType; | 133 | 5 | using ToFieldType = typename ToDataType::FieldType; | 134 | 5 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 5 | UInt32 from_scale = 0; | 136 | | | 137 | 5 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 5 | const auto* from_decimal_type = | 139 | 5 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 5 | from_precision = | 141 | 5 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 5 | from_scale = from_decimal_type->get_scale(); | 143 | 5 | } | 144 | | | 145 | 5 | UInt32 to_max_digits = 0; | 146 | 5 | UInt32 to_precision = 0; | 147 | 5 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 5 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 5 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 5 | to_precision = to_max_digits; | 163 | 5 | } | 164 | | | 165 | 5 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 5 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 5 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 5 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 5 | return narrow_integral || multiply_may_overflow; | 174 | 5 | } | 175 | 0 | return false; | 176 | 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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 2 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 2 | using FromFieldType = typename FromDataType::FieldType; | 133 | 2 | using ToFieldType = typename ToDataType::FieldType; | 134 | 2 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 2 | UInt32 from_scale = 0; | 136 | | | 137 | 2 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 2 | const auto* from_decimal_type = | 139 | 2 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 2 | from_precision = | 141 | 2 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 2 | from_scale = from_decimal_type->get_scale(); | 143 | 2 | } | 144 | | | 145 | 2 | UInt32 to_max_digits = 0; | 146 | 2 | UInt32 to_precision = 0; | 147 | 2 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 2 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 2 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 2 | to_precision = to_max_digits; | 163 | 2 | } | 164 | | | 165 | 2 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 2 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 2 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 2 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 2 | return narrow_integral || multiply_may_overflow; | 174 | 2 | } | 175 | 0 | return false; | 176 | 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 | 123 | 5 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 5 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 5 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 5 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 5 | using FromFieldType = typename FromDataType::FieldType; | 133 | 5 | using ToFieldType = typename ToDataType::FieldType; | 134 | 5 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 5 | UInt32 from_scale = 0; | 136 | | | 137 | 5 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 5 | const auto* from_decimal_type = | 139 | 5 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 5 | from_precision = | 141 | 5 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 5 | from_scale = from_decimal_type->get_scale(); | 143 | 5 | } | 144 | | | 145 | 5 | UInt32 to_max_digits = 0; | 146 | 5 | UInt32 to_precision = 0; | 147 | 5 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 5 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 5 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 5 | to_precision = to_max_digits; | 163 | 5 | } | 164 | | | 165 | 5 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 5 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 5 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 5 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 5 | return narrow_integral || multiply_may_overflow; | 174 | 5 | } | 175 | 0 | return false; | 176 | 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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 2 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 2 | using FromFieldType = typename FromDataType::FieldType; | 133 | 2 | using ToFieldType = typename ToDataType::FieldType; | 134 | 2 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 2 | UInt32 from_scale = 0; | 136 | | | 137 | 2 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 2 | const auto* from_decimal_type = | 139 | 2 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 2 | from_precision = | 141 | 2 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 2 | from_scale = from_decimal_type->get_scale(); | 143 | 2 | } | 144 | | | 145 | 2 | UInt32 to_max_digits = 0; | 146 | 2 | UInt32 to_precision = 0; | 147 | 2 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 2 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 2 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 2 | to_precision = to_max_digits; | 163 | 2 | } | 164 | | | 165 | 2 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 2 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 2 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 2 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 2 | return narrow_integral || multiply_may_overflow; | 174 | 2 | } | 175 | 0 | return false; | 176 | 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 | 123 | 799 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 799 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 799 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 799 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 799 | return false; | 130 | 799 | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 799 | return false; | 176 | 799 | }); |
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 | 123 | 339 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 339 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 339 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 339 | return false; | 176 | 339 | }); |
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 | 123 | 10 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 10 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 10 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 10 | return false; | 176 | 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 | 123 | 127 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 127 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 127 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 127 | return false; | 176 | 127 | }); |
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 | 123 | 177 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 177 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 177 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 177 | return false; | 176 | 177 | }); |
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 | 123 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7 | return false; | 176 | 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 | 123 | 23 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 23 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 23 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 23 | return false; | 176 | 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 | 123 | 30 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 30 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 30 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 30 | return false; | 176 | 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 | 123 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 20 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 20 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 20 | using FromFieldType = typename FromDataType::FieldType; | 133 | 20 | using ToFieldType = typename ToDataType::FieldType; | 134 | 20 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 20 | UInt32 from_scale = 0; | 136 | | | 137 | 20 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 20 | const auto* from_decimal_type = | 139 | 20 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 20 | from_precision = | 141 | 20 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 20 | from_scale = from_decimal_type->get_scale(); | 143 | 20 | } | 144 | | | 145 | 20 | UInt32 to_max_digits = 0; | 146 | 20 | UInt32 to_precision = 0; | 147 | 20 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 20 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 20 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 20 | to_precision = to_max_digits; | 163 | 20 | } | 164 | | | 165 | 20 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 20 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 20 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 20 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 20 | return narrow_integral || multiply_may_overflow; | 174 | 20 | } | 175 | 0 | return false; | 176 | 20 | }); |
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 | 123 | 25 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 25 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 25 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 25 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 25 | using FromFieldType = typename FromDataType::FieldType; | 133 | 25 | using ToFieldType = typename ToDataType::FieldType; | 134 | 25 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 25 | UInt32 from_scale = 0; | 136 | | | 137 | 25 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 25 | const auto* from_decimal_type = | 139 | 25 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 25 | from_precision = | 141 | 25 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 25 | from_scale = from_decimal_type->get_scale(); | 143 | 25 | } | 144 | | | 145 | 25 | UInt32 to_max_digits = 0; | 146 | 25 | UInt32 to_precision = 0; | 147 | 25 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 25 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 25 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 25 | to_precision = to_max_digits; | 163 | 25 | } | 164 | | | 165 | 25 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 25 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 25 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 25 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 25 | return narrow_integral || multiply_may_overflow; | 174 | 25 | } | 175 | 0 | return false; | 176 | 25 | }); |
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 | 123 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 8 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 8 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 8 | using FromFieldType = typename FromDataType::FieldType; | 133 | 8 | using ToFieldType = typename ToDataType::FieldType; | 134 | 8 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 8 | UInt32 from_scale = 0; | 136 | | | 137 | 8 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 8 | const auto* from_decimal_type = | 139 | 8 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 8 | from_precision = | 141 | 8 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 8 | from_scale = from_decimal_type->get_scale(); | 143 | 8 | } | 144 | | | 145 | 8 | UInt32 to_max_digits = 0; | 146 | 8 | UInt32 to_precision = 0; | 147 | 8 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 8 | to_precision = to_max_digits; | 163 | 8 | } | 164 | | | 165 | 8 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 8 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 8 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 8 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 8 | return narrow_integral || multiply_may_overflow; | 174 | 8 | } | 175 | 0 | return false; | 176 | 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 | 123 | 25 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 25 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 25 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 25 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 25 | using FromFieldType = typename FromDataType::FieldType; | 133 | 25 | using ToFieldType = typename ToDataType::FieldType; | 134 | 25 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 25 | UInt32 from_scale = 0; | 136 | | | 137 | 25 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 25 | const auto* from_decimal_type = | 139 | 25 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 25 | from_precision = | 141 | 25 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 25 | from_scale = from_decimal_type->get_scale(); | 143 | 25 | } | 144 | | | 145 | 25 | UInt32 to_max_digits = 0; | 146 | 25 | UInt32 to_precision = 0; | 147 | 25 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 25 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 25 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 25 | to_precision = to_max_digits; | 163 | 25 | } | 164 | | | 165 | 25 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 25 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 25 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 25 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 25 | return narrow_integral || multiply_may_overflow; | 174 | 25 | } | 175 | 0 | return false; | 176 | 25 | }); |
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 | 123 | 25 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 25 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 25 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 25 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 25 | using FromFieldType = typename FromDataType::FieldType; | 133 | 25 | using ToFieldType = typename ToDataType::FieldType; | 134 | 25 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 25 | UInt32 from_scale = 0; | 136 | | | 137 | 25 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 25 | const auto* from_decimal_type = | 139 | 25 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 25 | from_precision = | 141 | 25 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 25 | from_scale = from_decimal_type->get_scale(); | 143 | 25 | } | 144 | | | 145 | 25 | UInt32 to_max_digits = 0; | 146 | 25 | UInt32 to_precision = 0; | 147 | 25 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 25 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 25 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 25 | to_precision = to_max_digits; | 163 | 25 | } | 164 | | | 165 | 25 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 25 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 25 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 25 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 25 | return narrow_integral || multiply_may_overflow; | 174 | 25 | } | 175 | 0 | return false; | 176 | 25 | }); |
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 | 123 | 72 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 72 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 72 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 72 | return false; | 176 | 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 | 123 | 24 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 24 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 24 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 24 | return false; | 176 | 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 | 123 | 320 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 320 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 320 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 320 | return false; | 176 | 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 | 123 | 2.93k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2.93k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2.93k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 2.93k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 2.93k | return false; | 130 | 2.93k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2.93k | return false; | 176 | 2.93k | }); |
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 | 123 | 54 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 54 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 54 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 54 | return false; | 176 | 54 | }); |
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 | 123 | 1.50k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.50k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.50k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.50k | return false; | 176 | 1.50k | }); |
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 | 123 | 129 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 129 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 129 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 129 | return false; | 176 | 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 | 123 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 16 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 16 | return false; | 176 | 16 | }); |
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 | 123 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 20 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 20 | return false; | 176 | 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 | 123 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 21 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 21 | return false; | 176 | 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 | 123 | 25 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 25 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 25 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 25 | return false; | 176 | 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 | 123 | 22 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 22 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 22 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 22 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 22 | using FromFieldType = typename FromDataType::FieldType; | 133 | 22 | using ToFieldType = typename ToDataType::FieldType; | 134 | 22 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 22 | UInt32 from_scale = 0; | 136 | | | 137 | 22 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 22 | const auto* from_decimal_type = | 139 | 22 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 22 | from_precision = | 141 | 22 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 22 | from_scale = from_decimal_type->get_scale(); | 143 | 22 | } | 144 | | | 145 | 22 | UInt32 to_max_digits = 0; | 146 | 22 | UInt32 to_precision = 0; | 147 | 22 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 22 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 22 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 22 | to_precision = to_max_digits; | 163 | 22 | } | 164 | | | 165 | 22 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 22 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 22 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 22 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 22 | return narrow_integral || multiply_may_overflow; | 174 | 22 | } | 175 | 0 | return false; | 176 | 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 | 123 | 24 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 24 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 24 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 24 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 24 | using FromFieldType = typename FromDataType::FieldType; | 133 | 24 | using ToFieldType = typename ToDataType::FieldType; | 134 | 24 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 24 | UInt32 from_scale = 0; | 136 | | | 137 | 24 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 24 | const auto* from_decimal_type = | 139 | 24 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 24 | from_precision = | 141 | 24 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 24 | from_scale = from_decimal_type->get_scale(); | 143 | 24 | } | 144 | | | 145 | 24 | UInt32 to_max_digits = 0; | 146 | 24 | UInt32 to_precision = 0; | 147 | 24 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 24 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 24 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 24 | to_precision = to_max_digits; | 163 | 24 | } | 164 | | | 165 | 24 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 24 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 24 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 24 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 24 | return narrow_integral || multiply_may_overflow; | 174 | 24 | } | 175 | 0 | return false; | 176 | 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 | 123 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 8 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 8 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 8 | using FromFieldType = typename FromDataType::FieldType; | 133 | 8 | using ToFieldType = typename ToDataType::FieldType; | 134 | 8 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 8 | UInt32 from_scale = 0; | 136 | | | 137 | 8 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 8 | const auto* from_decimal_type = | 139 | 8 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 8 | from_precision = | 141 | 8 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 8 | from_scale = from_decimal_type->get_scale(); | 143 | 8 | } | 144 | | | 145 | 8 | UInt32 to_max_digits = 0; | 146 | 8 | UInt32 to_precision = 0; | 147 | 8 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 8 | to_precision = to_max_digits; | 163 | 8 | } | 164 | | | 165 | 8 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 8 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 8 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 8 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 8 | return narrow_integral || multiply_may_overflow; | 174 | 8 | } | 175 | 0 | return false; | 176 | 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 | 123 | 26 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 26 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 26 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 26 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 26 | using FromFieldType = typename FromDataType::FieldType; | 133 | 26 | using ToFieldType = typename ToDataType::FieldType; | 134 | 26 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 26 | UInt32 from_scale = 0; | 136 | | | 137 | 26 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 26 | const auto* from_decimal_type = | 139 | 26 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 26 | from_precision = | 141 | 26 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 26 | from_scale = from_decimal_type->get_scale(); | 143 | 26 | } | 144 | | | 145 | 26 | UInt32 to_max_digits = 0; | 146 | 26 | UInt32 to_precision = 0; | 147 | 26 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 26 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 26 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 26 | to_precision = to_max_digits; | 163 | 26 | } | 164 | | | 165 | 26 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 26 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 26 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 26 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 26 | return narrow_integral || multiply_may_overflow; | 174 | 26 | } | 175 | 0 | return false; | 176 | 26 | }); |
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 | 123 | 26 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 26 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 26 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 26 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 26 | using FromFieldType = typename FromDataType::FieldType; | 133 | 26 | using ToFieldType = typename ToDataType::FieldType; | 134 | 26 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 26 | UInt32 from_scale = 0; | 136 | | | 137 | 26 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 26 | const auto* from_decimal_type = | 139 | 26 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 26 | from_precision = | 141 | 26 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 26 | from_scale = from_decimal_type->get_scale(); | 143 | 26 | } | 144 | | | 145 | 26 | UInt32 to_max_digits = 0; | 146 | 26 | UInt32 to_precision = 0; | 147 | 26 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 26 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 26 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 26 | to_precision = to_max_digits; | 163 | 26 | } | 164 | | | 165 | 26 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 26 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 26 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 26 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 26 | return narrow_integral || multiply_may_overflow; | 174 | 26 | } | 175 | 0 | return false; | 176 | 26 | }); |
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 | 123 | 72 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 72 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 72 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 72 | return false; | 176 | 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 | 123 | 24 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 24 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 24 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 24 | return false; | 176 | 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 | 123 | 320 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 320 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 320 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 320 | return false; | 176 | 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 | 123 | 2.84k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2.84k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2.84k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 2.84k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 2.84k | return false; | 130 | 2.84k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2.84k | return false; | 176 | 2.84k | }); |
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 | 123 | 44 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 44 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 44 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 44 | return false; | 176 | 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 | 123 | 1.50k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.50k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.50k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.50k | return false; | 176 | 1.50k | }); |
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 | 123 | 328 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 328 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 328 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 328 | return false; | 176 | 328 | }); |
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 | 123 | 2.04k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2.04k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2.04k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2.04k | return false; | 176 | 2.04k | }); |
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 | 123 | 13 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 13 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 13 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 13 | return false; | 176 | 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 | 123 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 20 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 20 | return false; | 176 | 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 | 123 | 99 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 99 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 99 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 99 | return false; | 176 | 99 | }); |
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 | 123 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 21 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 21 | using FromFieldType = typename FromDataType::FieldType; | 133 | 21 | using ToFieldType = typename ToDataType::FieldType; | 134 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 21 | UInt32 from_scale = 0; | 136 | | | 137 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 21 | const auto* from_decimal_type = | 139 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 21 | from_precision = | 141 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 21 | from_scale = from_decimal_type->get_scale(); | 143 | 21 | } | 144 | | | 145 | 21 | UInt32 to_max_digits = 0; | 146 | 21 | UInt32 to_precision = 0; | 147 | 21 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 21 | to_precision = to_max_digits; | 163 | 21 | } | 164 | | | 165 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 21 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 21 | return narrow_integral || multiply_may_overflow; | 174 | 21 | } | 175 | 0 | return false; | 176 | 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 | 123 | 37 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 37 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 37 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 37 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 37 | using FromFieldType = typename FromDataType::FieldType; | 133 | 37 | using ToFieldType = typename ToDataType::FieldType; | 134 | 37 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 37 | UInt32 from_scale = 0; | 136 | | | 137 | 37 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 37 | const auto* from_decimal_type = | 139 | 37 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 37 | from_precision = | 141 | 37 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 37 | from_scale = from_decimal_type->get_scale(); | 143 | 37 | } | 144 | | | 145 | 37 | UInt32 to_max_digits = 0; | 146 | 37 | UInt32 to_precision = 0; | 147 | 37 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 37 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 37 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 37 | to_precision = to_max_digits; | 163 | 37 | } | 164 | | | 165 | 37 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 37 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 37 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 37 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 37 | return narrow_integral || multiply_may_overflow; | 174 | 37 | } | 175 | 0 | return false; | 176 | 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 | 123 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 8 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 8 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 8 | using FromFieldType = typename FromDataType::FieldType; | 133 | 8 | using ToFieldType = typename ToDataType::FieldType; | 134 | 8 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 8 | UInt32 from_scale = 0; | 136 | | | 137 | 8 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 8 | const auto* from_decimal_type = | 139 | 8 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 8 | from_precision = | 141 | 8 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 8 | from_scale = from_decimal_type->get_scale(); | 143 | 8 | } | 144 | | | 145 | 8 | UInt32 to_max_digits = 0; | 146 | 8 | UInt32 to_precision = 0; | 147 | 8 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 8 | to_precision = to_max_digits; | 163 | 8 | } | 164 | | | 165 | 8 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 8 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 8 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 8 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 8 | return narrow_integral || multiply_may_overflow; | 174 | 8 | } | 175 | 0 | return false; | 176 | 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 | 123 | 249 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 249 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 249 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 249 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 249 | using FromFieldType = typename FromDataType::FieldType; | 133 | 249 | using ToFieldType = typename ToDataType::FieldType; | 134 | 249 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 249 | UInt32 from_scale = 0; | 136 | | | 137 | 249 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 249 | const auto* from_decimal_type = | 139 | 249 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 249 | from_precision = | 141 | 249 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 249 | from_scale = from_decimal_type->get_scale(); | 143 | 249 | } | 144 | | | 145 | 249 | UInt32 to_max_digits = 0; | 146 | 249 | UInt32 to_precision = 0; | 147 | 249 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 249 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 249 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 249 | to_precision = to_max_digits; | 163 | 249 | } | 164 | | | 165 | 249 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 249 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 249 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 249 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 249 | return narrow_integral || multiply_may_overflow; | 174 | 249 | } | 175 | 0 | return false; | 176 | 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 | 123 | 22 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 22 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 22 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 22 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 22 | using FromFieldType = typename FromDataType::FieldType; | 133 | 22 | using ToFieldType = typename ToDataType::FieldType; | 134 | 22 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 22 | UInt32 from_scale = 0; | 136 | | | 137 | 22 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 22 | const auto* from_decimal_type = | 139 | 22 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 22 | from_precision = | 141 | 22 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 22 | from_scale = from_decimal_type->get_scale(); | 143 | 22 | } | 144 | | | 145 | 22 | UInt32 to_max_digits = 0; | 146 | 22 | UInt32 to_precision = 0; | 147 | 22 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 22 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 22 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 22 | to_precision = to_max_digits; | 163 | 22 | } | 164 | | | 165 | 22 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 22 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 22 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 22 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 22 | return narrow_integral || multiply_may_overflow; | 174 | 22 | } | 175 | 0 | return false; | 176 | 22 | }); |
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 | 123 | 12 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 12 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 12 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 12 | return false; | 176 | 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 | 123 | 24 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 24 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 24 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 24 | return false; | 176 | 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 | 123 | 276 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 276 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 276 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 276 | return false; | 176 | 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 | 123 | 18.8k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 18.8k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 18.8k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 18.8k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 18.8k | return false; | 130 | 18.8k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 18.8k | return false; | 176 | 18.8k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_2EEESE_EEEEbSI_ Line | Count | Source | 123 | 339 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 339 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 339 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 339 | return false; | 176 | 339 | }); |
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 | 123 | 1.37k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.37k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.37k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.37k | return false; | 176 | 1.37k | }); |
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 | 123 | 788 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 788 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 788 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 788 | return false; | 176 | 788 | }); |
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 | 123 | 9.26k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 9.26k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 9.26k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 9.26k | return false; | 176 | 9.26k | }); |
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 | 123 | 313 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 313 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 313 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 313 | return false; | 176 | 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 | 123 | 641 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 641 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 641 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 641 | return false; | 176 | 641 | }); |
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 | 123 | 2.33k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2.33k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2.33k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2.33k | return false; | 176 | 2.33k | }); |
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 | 123 | 311 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 311 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 311 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 311 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 311 | using FromFieldType = typename FromDataType::FieldType; | 133 | 311 | using ToFieldType = typename ToDataType::FieldType; | 134 | 311 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 311 | UInt32 from_scale = 0; | 136 | | | 137 | 311 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 311 | const auto* from_decimal_type = | 139 | 311 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 311 | from_precision = | 141 | 311 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 311 | from_scale = from_decimal_type->get_scale(); | 143 | 311 | } | 144 | | | 145 | 311 | UInt32 to_max_digits = 0; | 146 | 311 | UInt32 to_precision = 0; | 147 | 311 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 311 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 311 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 311 | to_precision = to_max_digits; | 163 | 311 | } | 164 | | | 165 | 311 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 311 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 311 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 311 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 313 | return narrow_integral || multiply_may_overflow; | 174 | 311 | } | 175 | 0 | return false; | 176 | 311 | }); |
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 | 123 | 318 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 318 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 318 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 318 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 318 | using FromFieldType = typename FromDataType::FieldType; | 133 | 318 | using ToFieldType = typename ToDataType::FieldType; | 134 | 318 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 318 | UInt32 from_scale = 0; | 136 | | | 137 | 318 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 318 | const auto* from_decimal_type = | 139 | 318 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 318 | from_precision = | 141 | 318 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 318 | from_scale = from_decimal_type->get_scale(); | 143 | 318 | } | 144 | | | 145 | 318 | UInt32 to_max_digits = 0; | 146 | 318 | UInt32 to_precision = 0; | 147 | 318 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 318 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 318 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 318 | to_precision = to_max_digits; | 163 | 318 | } | 164 | | | 165 | 318 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 318 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 318 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 318 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 318 | return narrow_integral || multiply_may_overflow; | 174 | 318 | } | 175 | 0 | return false; | 176 | 318 | }); |
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 | 123 | 304 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 304 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 304 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 304 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 304 | using FromFieldType = typename FromDataType::FieldType; | 133 | 304 | using ToFieldType = typename ToDataType::FieldType; | 134 | 304 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 304 | UInt32 from_scale = 0; | 136 | | | 137 | 304 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 304 | const auto* from_decimal_type = | 139 | 304 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 304 | from_precision = | 141 | 304 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 304 | from_scale = from_decimal_type->get_scale(); | 143 | 304 | } | 144 | | | 145 | 304 | UInt32 to_max_digits = 0; | 146 | 304 | UInt32 to_precision = 0; | 147 | 304 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 304 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 304 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 304 | to_precision = to_max_digits; | 163 | 304 | } | 164 | | | 165 | 304 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 304 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 304 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 304 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 304 | return narrow_integral || multiply_may_overflow; | 174 | 304 | } | 175 | 0 | return false; | 176 | 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 | 123 | 743 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 743 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 743 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 743 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 743 | using FromFieldType = typename FromDataType::FieldType; | 133 | 743 | using ToFieldType = typename ToDataType::FieldType; | 134 | 743 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 743 | UInt32 from_scale = 0; | 136 | | | 137 | 743 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 743 | const auto* from_decimal_type = | 139 | 743 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 743 | from_precision = | 141 | 743 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 743 | from_scale = from_decimal_type->get_scale(); | 143 | 743 | } | 144 | | | 145 | 743 | UInt32 to_max_digits = 0; | 146 | 743 | UInt32 to_precision = 0; | 147 | 743 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 743 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 743 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 743 | to_precision = to_max_digits; | 163 | 743 | } | 164 | | | 165 | 743 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 743 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 743 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 743 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 743 | return narrow_integral || multiply_may_overflow; | 174 | 743 | } | 175 | 0 | return false; | 176 | 743 | }); |
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 | 123 | 22 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 22 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 22 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 22 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 22 | using FromFieldType = typename FromDataType::FieldType; | 133 | 22 | using ToFieldType = typename ToDataType::FieldType; | 134 | 22 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 22 | UInt32 from_scale = 0; | 136 | | | 137 | 22 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 22 | const auto* from_decimal_type = | 139 | 22 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 22 | from_precision = | 141 | 22 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 22 | from_scale = from_decimal_type->get_scale(); | 143 | 22 | } | 144 | | | 145 | 22 | UInt32 to_max_digits = 0; | 146 | 22 | UInt32 to_precision = 0; | 147 | 22 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 22 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 22 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 22 | to_precision = to_max_digits; | 163 | 22 | } | 164 | | | 165 | 22 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 22 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 22 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 22 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 22 | return narrow_integral || multiply_may_overflow; | 174 | 22 | } | 175 | 0 | return false; | 176 | 22 | }); |
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 | 123 | 1.25k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.25k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.25k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.25k | return false; | 176 | 1.25k | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Line | Count | Source | 123 | 1.25k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.25k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.25k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.25k | return false; | 176 | 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 | 123 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 4 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 4 | return false; | 176 | 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 | 123 | 19.5k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 19.5k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 19.5k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 19.5k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 19.5k | return false; | 130 | 19.5k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 19.5k | return false; | 176 | 19.5k | }); |
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 | 123 | 126 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 126 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 126 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 126 | return false; | 176 | 126 | }); |
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 | 123 | 109 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 109 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 109 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 109 | return false; | 176 | 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 | 123 | 79 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 79 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 79 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 79 | return false; | 176 | 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 | 123 | 135 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 135 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 135 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 135 | return false; | 176 | 135 | }); |
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 | 123 | 519 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 519 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 519 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 519 | return false; | 176 | 519 | }); |
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 | 123 | 9 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 9 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 9 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 9 | return false; | 176 | 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 | 123 | 13 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 13 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 13 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 13 | return false; | 176 | 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 | 123 | 18 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 18 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 18 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 18 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 18 | using FromFieldType = typename FromDataType::FieldType; | 133 | 18 | using ToFieldType = typename ToDataType::FieldType; | 134 | 18 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 18 | UInt32 from_scale = 0; | 136 | | | 137 | 18 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 18 | const auto* from_decimal_type = | 139 | 18 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 18 | from_precision = | 141 | 18 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 18 | from_scale = from_decimal_type->get_scale(); | 143 | 18 | } | 144 | | | 145 | 18 | UInt32 to_max_digits = 0; | 146 | 18 | UInt32 to_precision = 0; | 147 | 18 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 18 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 18 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 18 | to_precision = to_max_digits; | 163 | 18 | } | 164 | | | 165 | 18 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 18 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 18 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 18 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 18 | return narrow_integral || multiply_may_overflow; | 174 | 18 | } | 175 | 0 | return false; | 176 | 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 | 123 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 21 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 21 | using FromFieldType = typename FromDataType::FieldType; | 133 | 21 | using ToFieldType = typename ToDataType::FieldType; | 134 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 21 | UInt32 from_scale = 0; | 136 | | | 137 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 21 | const auto* from_decimal_type = | 139 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 21 | from_precision = | 141 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 21 | from_scale = from_decimal_type->get_scale(); | 143 | 21 | } | 144 | | | 145 | 21 | UInt32 to_max_digits = 0; | 146 | 21 | UInt32 to_precision = 0; | 147 | 21 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 21 | to_precision = to_max_digits; | 163 | 21 | } | 164 | | | 165 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 21 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 21 | return narrow_integral || multiply_may_overflow; | 174 | 21 | } | 175 | 0 | return false; | 176 | 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 | 123 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 8 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 8 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 8 | using FromFieldType = typename FromDataType::FieldType; | 133 | 8 | using ToFieldType = typename ToDataType::FieldType; | 134 | 8 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 8 | UInt32 from_scale = 0; | 136 | | | 137 | 8 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 8 | const auto* from_decimal_type = | 139 | 8 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 8 | from_precision = | 141 | 8 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 8 | from_scale = from_decimal_type->get_scale(); | 143 | 8 | } | 144 | | | 145 | 8 | UInt32 to_max_digits = 0; | 146 | 8 | UInt32 to_precision = 0; | 147 | 8 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 8 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 8 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 8 | to_precision = to_max_digits; | 163 | 8 | } | 164 | | | 165 | 8 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 8 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 8 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 8 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 8 | return narrow_integral || multiply_may_overflow; | 174 | 8 | } | 175 | 0 | return false; | 176 | 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 | 123 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 21 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 21 | using FromFieldType = typename FromDataType::FieldType; | 133 | 21 | using ToFieldType = typename ToDataType::FieldType; | 134 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 21 | UInt32 from_scale = 0; | 136 | | | 137 | 21 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 21 | const auto* from_decimal_type = | 139 | 21 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 21 | from_precision = | 141 | 21 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 21 | from_scale = from_decimal_type->get_scale(); | 143 | 21 | } | 144 | | | 145 | 21 | UInt32 to_max_digits = 0; | 146 | 21 | UInt32 to_precision = 0; | 147 | 21 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 21 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 21 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 21 | to_precision = to_max_digits; | 163 | 21 | } | 164 | | | 165 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 21 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 21 | return narrow_integral || multiply_may_overflow; | 174 | 21 | } | 175 | 0 | return false; | 176 | 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 | 123 | 783 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 783 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 783 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 783 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 783 | using FromFieldType = typename FromDataType::FieldType; | 133 | 783 | using ToFieldType = typename ToDataType::FieldType; | 134 | 783 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 783 | UInt32 from_scale = 0; | 136 | | | 137 | 783 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 783 | const auto* from_decimal_type = | 139 | 783 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 783 | from_precision = | 141 | 783 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 783 | from_scale = from_decimal_type->get_scale(); | 143 | 783 | } | 144 | | | 145 | 783 | UInt32 to_max_digits = 0; | 146 | 783 | UInt32 to_precision = 0; | 147 | 783 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 783 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 783 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 783 | to_precision = to_max_digits; | 163 | 783 | } | 164 | | | 165 | 783 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 783 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 783 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 783 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 783 | return narrow_integral || multiply_may_overflow; | 174 | 783 | } | 175 | 0 | return false; | 176 | 783 | }); |
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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2 | return false; | 176 | 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 | 123 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 16 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 16 | return false; | 176 | 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 | 123 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 4 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 4 | return false; | 176 | 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 | 123 | 2.59k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2.59k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2.59k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 2.59k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 2.59k | return false; | 130 | 2.59k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2.59k | return false; | 176 | 2.59k | }); |
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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2 | return false; | 176 | 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 | 123 | 31 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 31 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 31 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 31 | return false; | 176 | 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 | 123 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 8 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 8 | return false; | 176 | 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 | 123 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 20 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 20 | return false; | 176 | 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 | 123 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 8 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 8 | return false; | 176 | 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 | 123 | 120 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 120 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 120 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 120 | return false; | 176 | 120 | }); |
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 | 123 | 6 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 6 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 6 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 6 | return false; | 176 | 6 | }); |
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 | 123 | 108 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 108 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 108 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 108 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 108 | using FromFieldType = typename FromDataType::FieldType; | 133 | 108 | using ToFieldType = typename ToDataType::FieldType; | 134 | 108 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 108 | UInt32 from_scale = 0; | 136 | | | 137 | 108 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 108 | const auto* from_decimal_type = | 139 | 108 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 108 | from_precision = | 141 | 108 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 108 | from_scale = from_decimal_type->get_scale(); | 143 | 108 | } | 144 | | | 145 | 108 | UInt32 to_max_digits = 0; | 146 | 108 | UInt32 to_precision = 0; | 147 | 108 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 108 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 108 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 108 | to_precision = to_max_digits; | 163 | 108 | } | 164 | | | 165 | 108 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 108 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 108 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 108 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 108 | return narrow_integral || multiply_may_overflow; | 174 | 108 | } | 175 | 0 | return false; | 176 | 108 | }); |
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 | 123 | 112 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 112 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 112 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 112 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 112 | using FromFieldType = typename FromDataType::FieldType; | 133 | 112 | using ToFieldType = typename ToDataType::FieldType; | 134 | 112 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 112 | UInt32 from_scale = 0; | 136 | | | 137 | 112 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 112 | const auto* from_decimal_type = | 139 | 112 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 112 | from_precision = | 141 | 112 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 112 | from_scale = from_decimal_type->get_scale(); | 143 | 112 | } | 144 | | | 145 | 112 | UInt32 to_max_digits = 0; | 146 | 112 | UInt32 to_precision = 0; | 147 | 112 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 112 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 112 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 112 | to_precision = to_max_digits; | 163 | 112 | } | 164 | | | 165 | 112 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 112 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 112 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 112 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 112 | return narrow_integral || multiply_may_overflow; | 174 | 112 | } | 175 | 0 | return false; | 176 | 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 | 123 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 16 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 16 | using FromFieldType = typename FromDataType::FieldType; | 133 | 16 | using ToFieldType = typename ToDataType::FieldType; | 134 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 16 | UInt32 from_scale = 0; | 136 | | | 137 | 16 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 16 | const auto* from_decimal_type = | 139 | 16 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 16 | from_precision = | 141 | 16 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 16 | from_scale = from_decimal_type->get_scale(); | 143 | 16 | } | 144 | | | 145 | 16 | UInt32 to_max_digits = 0; | 146 | 16 | UInt32 to_precision = 0; | 147 | 16 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 16 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 16 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 16 | to_precision = to_max_digits; | 163 | 16 | } | 164 | | | 165 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 16 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 16 | return narrow_integral || multiply_may_overflow; | 174 | 16 | } | 175 | 0 | return false; | 176 | 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 | 123 | 93 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 93 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 93 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 93 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 93 | using FromFieldType = typename FromDataType::FieldType; | 133 | 93 | using ToFieldType = typename ToDataType::FieldType; | 134 | 93 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 93 | UInt32 from_scale = 0; | 136 | | | 137 | 93 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 93 | const auto* from_decimal_type = | 139 | 93 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 93 | from_precision = | 141 | 93 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 93 | from_scale = from_decimal_type->get_scale(); | 143 | 93 | } | 144 | | | 145 | 93 | UInt32 to_max_digits = 0; | 146 | 93 | UInt32 to_precision = 0; | 147 | 93 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 93 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 93 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 93 | to_precision = to_max_digits; | 163 | 93 | } | 164 | | | 165 | 93 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 93 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 93 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 93 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 93 | return narrow_integral || multiply_may_overflow; | 174 | 93 | } | 175 | 0 | return false; | 176 | 93 | }); |
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 | 123 | 554 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 554 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 554 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 554 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 554 | using FromFieldType = typename FromDataType::FieldType; | 133 | 554 | using ToFieldType = typename ToDataType::FieldType; | 134 | 554 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 554 | UInt32 from_scale = 0; | 136 | | | 137 | 554 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 554 | const auto* from_decimal_type = | 139 | 554 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 554 | from_precision = | 141 | 554 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 554 | from_scale = from_decimal_type->get_scale(); | 143 | 554 | } | 144 | | | 145 | 554 | UInt32 to_max_digits = 0; | 146 | 554 | UInt32 to_precision = 0; | 147 | 554 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 554 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 554 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 554 | to_precision = to_max_digits; | 163 | 554 | } | 164 | | | 165 | 554 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 554 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 554 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 554 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 554 | return narrow_integral || multiply_may_overflow; | 174 | 554 | } | 175 | 0 | return false; | 176 | 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 | 123 | 39 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 39 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 39 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 39 | return false; | 176 | 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 | 123 | 7.78k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7.78k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7.78k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7.78k | return false; | 176 | 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 | 123 | 162 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 162 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 162 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 162 | return false; | 176 | 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 | 123 | 1.66k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.66k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.66k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 1.66k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 1.66k | return false; | 130 | 1.66k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.66k | return false; | 176 | 1.66k | }); |
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 | 123 | 268 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 268 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 268 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 268 | return false; | 176 | 268 | }); |
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 | 123 | 448 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 448 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 448 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 448 | return false; | 176 | 448 | }); |
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 | 123 | 894 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 894 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 894 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 894 | return false; | 176 | 894 | }); |
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 | 123 | 1.14k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.14k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.14k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.14k | return false; | 176 | 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 | 123 | 1.24k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.24k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.24k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.24k | return false; | 176 | 1.24k | }); |
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 | 123 | 196 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 196 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 196 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 196 | return false; | 176 | 196 | }); |
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 | 123 | 1.02k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.02k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.02k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1.02k | return false; | 176 | 1.02k | }); |
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 | 123 | 402 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 402 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 402 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 402 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 402 | using FromFieldType = typename FromDataType::FieldType; | 133 | 402 | using ToFieldType = typename ToDataType::FieldType; | 134 | 402 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 402 | UInt32 from_scale = 0; | 136 | | | 137 | 402 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 402 | const auto* from_decimal_type = | 139 | 402 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 402 | from_precision = | 141 | 402 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 402 | from_scale = from_decimal_type->get_scale(); | 143 | 402 | } | 144 | | | 145 | 402 | UInt32 to_max_digits = 0; | 146 | 402 | UInt32 to_precision = 0; | 147 | 402 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 402 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 402 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 402 | to_precision = to_max_digits; | 163 | 402 | } | 164 | | | 165 | 402 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 402 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 402 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 402 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 402 | return narrow_integral || multiply_may_overflow; | 174 | 402 | } | 175 | 0 | return false; | 176 | 402 | }); |
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 | 123 | 345 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 345 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 345 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 345 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 345 | using FromFieldType = typename FromDataType::FieldType; | 133 | 345 | using ToFieldType = typename ToDataType::FieldType; | 134 | 345 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 345 | UInt32 from_scale = 0; | 136 | | | 137 | 345 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 345 | const auto* from_decimal_type = | 139 | 345 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 345 | from_precision = | 141 | 345 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 345 | from_scale = from_decimal_type->get_scale(); | 143 | 345 | } | 144 | | | 145 | 345 | UInt32 to_max_digits = 0; | 146 | 345 | UInt32 to_precision = 0; | 147 | 345 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 345 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 345 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 345 | to_precision = to_max_digits; | 163 | 345 | } | 164 | | | 165 | 345 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 345 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 345 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 345 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 345 | return narrow_integral || multiply_may_overflow; | 174 | 345 | } | 175 | 0 | return false; | 176 | 345 | }); |
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 | 123 | 56 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 56 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 56 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 56 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 56 | using FromFieldType = typename FromDataType::FieldType; | 133 | 56 | using ToFieldType = typename ToDataType::FieldType; | 134 | 56 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 56 | UInt32 from_scale = 0; | 136 | | | 137 | 56 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 56 | const auto* from_decimal_type = | 139 | 56 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 56 | from_precision = | 141 | 56 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 56 | from_scale = from_decimal_type->get_scale(); | 143 | 56 | } | 144 | | | 145 | 56 | UInt32 to_max_digits = 0; | 146 | 56 | UInt32 to_precision = 0; | 147 | 56 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 56 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 56 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 56 | to_precision = to_max_digits; | 163 | 56 | } | 164 | | | 165 | 56 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 56 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 56 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 56 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 56 | return narrow_integral || multiply_may_overflow; | 174 | 56 | } | 175 | 0 | return false; | 176 | 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 | 123 | 780 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 780 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 780 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 780 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 780 | using FromFieldType = typename FromDataType::FieldType; | 133 | 780 | using ToFieldType = typename ToDataType::FieldType; | 134 | 780 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 780 | UInt32 from_scale = 0; | 136 | | | 137 | 780 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 780 | const auto* from_decimal_type = | 139 | 780 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 780 | from_precision = | 141 | 780 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 780 | from_scale = from_decimal_type->get_scale(); | 143 | 780 | } | 144 | | | 145 | 780 | UInt32 to_max_digits = 0; | 146 | 780 | UInt32 to_precision = 0; | 147 | 780 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 780 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 780 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 780 | to_precision = to_max_digits; | 163 | 780 | } | 164 | | | 165 | 780 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 780 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 780 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 780 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 780 | return narrow_integral || multiply_may_overflow; | 174 | 780 | } | 175 | 0 | return false; | 176 | 780 | }); |
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 | 123 | 542 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 542 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 542 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 542 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 542 | using FromFieldType = typename FromDataType::FieldType; | 133 | 542 | using ToFieldType = typename ToDataType::FieldType; | 134 | 542 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 542 | UInt32 from_scale = 0; | 136 | | | 137 | 542 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 542 | const auto* from_decimal_type = | 139 | 542 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 542 | from_precision = | 141 | 542 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 542 | from_scale = from_decimal_type->get_scale(); | 143 | 542 | } | 144 | | | 145 | 542 | UInt32 to_max_digits = 0; | 146 | 542 | UInt32 to_precision = 0; | 147 | 542 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 542 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 542 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 542 | to_precision = to_max_digits; | 163 | 542 | } | 164 | | | 165 | 542 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 542 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 542 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 542 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 542 | return narrow_integral || multiply_may_overflow; | 174 | 542 | } | 175 | 0 | return false; | 176 | 542 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Line | Count | Source | 123 | 57 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 57 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 57 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 57 | return false; | 176 | 57 | }); |
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 | 123 | 7.80k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7.80k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7.80k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7.80k | return false; | 176 | 7.80k | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Line | Count | Source | 123 | 162 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 162 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 162 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 162 | return false; | 176 | 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 | 123 | 6.06k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 6.06k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 6.06k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 6.06k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 6.06k | return false; | 130 | 6.06k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 6.06k | return false; | 176 | 6.06k | }); |
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 | 123 | 19 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 19 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 19 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 19 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 19 | using FromFieldType = typename FromDataType::FieldType; | 133 | 19 | using ToFieldType = typename ToDataType::FieldType; | 134 | 19 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 19 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 19 | UInt32 to_max_digits = 0; | 146 | 19 | UInt32 to_precision = 0; | 147 | 19 | UInt32 to_scale = 0; | 148 | | | 149 | 19 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 19 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 19 | const auto* to_decimal_type = | 153 | 19 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 19 | to_precision = to_decimal_type->get_precision(); | 155 | 19 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 19 | to_scale = to_decimal_type->get_scale(); | 158 | 19 | ToDataType::check_type_scale(to_scale); | 159 | 19 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 19 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 19 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 19 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 19 | if (to_scale > from_scale) { | 170 | 18 | multiply_may_overflow &= | 171 | 18 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 18 | } | 173 | 19 | return narrow_integral || multiply_may_overflow; | 174 | 19 | } | 175 | 0 | return false; | 176 | 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 | 123 | 469 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 469 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 469 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 469 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 469 | using FromFieldType = typename FromDataType::FieldType; | 133 | 469 | using ToFieldType = typename ToDataType::FieldType; | 134 | 469 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 469 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 469 | UInt32 to_max_digits = 0; | 146 | 469 | UInt32 to_precision = 0; | 147 | 469 | UInt32 to_scale = 0; | 148 | | | 149 | 469 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 469 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 469 | const auto* to_decimal_type = | 153 | 469 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 469 | to_precision = to_decimal_type->get_precision(); | 155 | 469 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 469 | to_scale = to_decimal_type->get_scale(); | 158 | 469 | ToDataType::check_type_scale(to_scale); | 159 | 469 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 469 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 469 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 469 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 469 | if (to_scale > from_scale) { | 170 | 266 | multiply_may_overflow &= | 171 | 266 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 266 | } | 173 | 469 | return narrow_integral || multiply_may_overflow; | 174 | 469 | } | 175 | 0 | return false; | 176 | 469 | }); |
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 | 123 | 501 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 501 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 501 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 501 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 501 | using FromFieldType = typename FromDataType::FieldType; | 133 | 501 | using ToFieldType = typename ToDataType::FieldType; | 134 | 501 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 501 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 501 | UInt32 to_max_digits = 0; | 146 | 501 | UInt32 to_precision = 0; | 147 | 501 | UInt32 to_scale = 0; | 148 | | | 149 | 501 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 501 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 501 | const auto* to_decimal_type = | 153 | 501 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 501 | to_precision = to_decimal_type->get_precision(); | 155 | 501 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 501 | to_scale = to_decimal_type->get_scale(); | 158 | 501 | ToDataType::check_type_scale(to_scale); | 159 | 501 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 501 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 501 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 501 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 501 | if (to_scale > from_scale) { | 170 | 252 | multiply_may_overflow &= | 171 | 252 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 252 | } | 173 | 501 | return narrow_integral || multiply_may_overflow; | 174 | 501 | } | 175 | 0 | return false; | 176 | 501 | }); |
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 | 123 | 553 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 553 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 553 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 553 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 553 | using FromFieldType = typename FromDataType::FieldType; | 133 | 553 | using ToFieldType = typename ToDataType::FieldType; | 134 | 553 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 553 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 553 | UInt32 to_max_digits = 0; | 146 | 553 | UInt32 to_precision = 0; | 147 | 553 | UInt32 to_scale = 0; | 148 | | | 149 | 553 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 553 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 553 | const auto* to_decimal_type = | 153 | 553 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 553 | to_precision = to_decimal_type->get_precision(); | 155 | 553 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 553 | to_scale = to_decimal_type->get_scale(); | 158 | 553 | ToDataType::check_type_scale(to_scale); | 159 | 553 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 553 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 553 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 553 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 553 | if (to_scale > from_scale) { | 170 | 280 | multiply_may_overflow &= | 171 | 280 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 280 | } | 173 | 553 | return narrow_integral || multiply_may_overflow; | 174 | 553 | } | 175 | 0 | return false; | 176 | 553 | }); |
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 | 123 | 532 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 532 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 532 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 532 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 532 | using FromFieldType = typename FromDataType::FieldType; | 133 | 532 | using ToFieldType = typename ToDataType::FieldType; | 134 | 532 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 532 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 532 | UInt32 to_max_digits = 0; | 146 | 532 | UInt32 to_precision = 0; | 147 | 532 | UInt32 to_scale = 0; | 148 | | | 149 | 532 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 532 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 532 | const auto* to_decimal_type = | 153 | 532 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 532 | to_precision = to_decimal_type->get_precision(); | 155 | 532 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 532 | to_scale = to_decimal_type->get_scale(); | 158 | 532 | ToDataType::check_type_scale(to_scale); | 159 | 532 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 532 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 532 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 532 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 532 | if (to_scale > from_scale) { | 170 | 266 | multiply_may_overflow &= | 171 | 266 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 266 | } | 173 | 532 | return narrow_integral || multiply_may_overflow; | 174 | 532 | } | 175 | 0 | return false; | 176 | 532 | }); |
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 | 123 | 549 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 549 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 549 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 549 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 549 | using FromFieldType = typename FromDataType::FieldType; | 133 | 549 | using ToFieldType = typename ToDataType::FieldType; | 134 | 549 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 549 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 549 | UInt32 to_max_digits = 0; | 146 | 549 | UInt32 to_precision = 0; | 147 | 549 | UInt32 to_scale = 0; | 148 | | | 149 | 549 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 549 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 549 | const auto* to_decimal_type = | 153 | 549 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 549 | to_precision = to_decimal_type->get_precision(); | 155 | 549 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 549 | to_scale = to_decimal_type->get_scale(); | 158 | 549 | ToDataType::check_type_scale(to_scale); | 159 | 549 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 549 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 549 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 549 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 549 | if (to_scale > from_scale) { | 170 | 278 | multiply_may_overflow &= | 171 | 278 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 278 | } | 173 | 549 | return narrow_integral || multiply_may_overflow; | 174 | 549 | } | 175 | 0 | return false; | 176 | 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 | 123 | 104 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 104 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 104 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 104 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 104 | using FromFieldType = typename FromDataType::FieldType; | 133 | 104 | using ToFieldType = typename ToDataType::FieldType; | 134 | 104 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 104 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 104 | UInt32 to_max_digits = 0; | 146 | 104 | UInt32 to_precision = 0; | 147 | 104 | UInt32 to_scale = 0; | 148 | | | 149 | 104 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 104 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 104 | const auto* to_decimal_type = | 153 | 104 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 104 | to_precision = to_decimal_type->get_precision(); | 155 | 104 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 104 | to_scale = to_decimal_type->get_scale(); | 158 | 104 | ToDataType::check_type_scale(to_scale); | 159 | 104 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 104 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 104 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 104 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 104 | if (to_scale > from_scale) { | 170 | 68 | multiply_may_overflow &= | 171 | 68 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 68 | } | 173 | 104 | return narrow_integral || multiply_may_overflow; | 174 | 104 | } | 175 | 0 | return false; | 176 | 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 | 123 | 304 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 304 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 304 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 304 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 304 | using FromFieldType = typename FromDataType::FieldType; | 133 | 304 | using ToFieldType = typename ToDataType::FieldType; | 134 | 304 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 304 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 304 | UInt32 to_max_digits = 0; | 146 | 304 | UInt32 to_precision = 0; | 147 | 304 | UInt32 to_scale = 0; | 148 | | | 149 | 304 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 304 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 304 | const auto* to_decimal_type = | 153 | 304 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 304 | to_precision = to_decimal_type->get_precision(); | 155 | 304 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 304 | to_scale = to_decimal_type->get_scale(); | 158 | 304 | ToDataType::check_type_scale(to_scale); | 159 | 304 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 304 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 304 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 304 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 304 | if (to_scale > from_scale) { | 170 | 254 | multiply_may_overflow &= | 171 | 254 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 254 | } | 173 | 304 | return narrow_integral || multiply_may_overflow; | 174 | 304 | } | 175 | 0 | return false; | 176 | 304 | }); |
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 | 123 | 390 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 390 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 390 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 390 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 390 | using FromFieldType = typename FromDataType::FieldType; | 133 | 390 | using ToFieldType = typename ToDataType::FieldType; | 134 | 390 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 390 | UInt32 from_scale = 0; | 136 | | | 137 | 390 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 390 | const auto* from_decimal_type = | 139 | 390 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 390 | from_precision = | 141 | 390 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 390 | from_scale = from_decimal_type->get_scale(); | 143 | 390 | } | 144 | | | 145 | 390 | UInt32 to_max_digits = 0; | 146 | 390 | UInt32 to_precision = 0; | 147 | 390 | UInt32 to_scale = 0; | 148 | | | 149 | 390 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 390 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 390 | const auto* to_decimal_type = | 153 | 390 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 390 | to_precision = to_decimal_type->get_precision(); | 155 | 390 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 390 | to_scale = to_decimal_type->get_scale(); | 158 | 390 | ToDataType::check_type_scale(to_scale); | 159 | 390 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 390 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 390 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 390 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 390 | if (to_scale > from_scale) { | 170 | 84 | multiply_may_overflow &= | 171 | 84 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 84 | } | 173 | 390 | return narrow_integral || multiply_may_overflow; | 174 | 390 | } | 175 | 0 | return false; | 176 | 390 | }); |
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 | 123 | 508 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 508 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 508 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 508 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 508 | using FromFieldType = typename FromDataType::FieldType; | 133 | 508 | using ToFieldType = typename ToDataType::FieldType; | 134 | 508 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 508 | UInt32 from_scale = 0; | 136 | | | 137 | 508 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 508 | const auto* from_decimal_type = | 139 | 508 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 508 | from_precision = | 141 | 508 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 508 | from_scale = from_decimal_type->get_scale(); | 143 | 508 | } | 144 | | | 145 | 508 | UInt32 to_max_digits = 0; | 146 | 508 | UInt32 to_precision = 0; | 147 | 508 | UInt32 to_scale = 0; | 148 | | | 149 | 508 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 508 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 508 | const auto* to_decimal_type = | 153 | 508 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 508 | to_precision = to_decimal_type->get_precision(); | 155 | 508 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 508 | to_scale = to_decimal_type->get_scale(); | 158 | 508 | ToDataType::check_type_scale(to_scale); | 159 | 508 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 508 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 508 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 508 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 508 | if (to_scale > from_scale) { | 170 | 86 | multiply_may_overflow &= | 171 | 86 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 86 | } | 173 | 508 | return narrow_integral || multiply_may_overflow; | 174 | 508 | } | 175 | 0 | return false; | 176 | 508 | }); |
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 | 123 | 206 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 206 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 206 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 206 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 206 | using FromFieldType = typename FromDataType::FieldType; | 133 | 206 | using ToFieldType = typename ToDataType::FieldType; | 134 | 206 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 206 | UInt32 from_scale = 0; | 136 | | | 137 | 206 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 206 | const auto* from_decimal_type = | 139 | 206 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 206 | from_precision = | 141 | 206 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 206 | from_scale = from_decimal_type->get_scale(); | 143 | 206 | } | 144 | | | 145 | 206 | UInt32 to_max_digits = 0; | 146 | 206 | UInt32 to_precision = 0; | 147 | 206 | UInt32 to_scale = 0; | 148 | | | 149 | 206 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 206 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 206 | const auto* to_decimal_type = | 153 | 206 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 206 | to_precision = to_decimal_type->get_precision(); | 155 | 206 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 206 | to_scale = to_decimal_type->get_scale(); | 158 | 206 | ToDataType::check_type_scale(to_scale); | 159 | 206 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 206 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 206 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 206 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 206 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 206 | return narrow_integral || multiply_may_overflow; | 174 | 206 | } | 175 | 0 | return false; | 176 | 206 | }); |
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 | 123 | 320 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 320 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 320 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 320 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 320 | using FromFieldType = typename FromDataType::FieldType; | 133 | 320 | using ToFieldType = typename ToDataType::FieldType; | 134 | 320 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 320 | UInt32 from_scale = 0; | 136 | | | 137 | 320 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 320 | const auto* from_decimal_type = | 139 | 320 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 320 | from_precision = | 141 | 320 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 320 | from_scale = from_decimal_type->get_scale(); | 143 | 320 | } | 144 | | | 145 | 320 | UInt32 to_max_digits = 0; | 146 | 320 | UInt32 to_precision = 0; | 147 | 320 | UInt32 to_scale = 0; | 148 | | | 149 | 320 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 320 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 320 | const auto* to_decimal_type = | 153 | 320 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 320 | to_precision = to_decimal_type->get_precision(); | 155 | 320 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 320 | to_scale = to_decimal_type->get_scale(); | 158 | 320 | ToDataType::check_type_scale(to_scale); | 159 | 320 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 320 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 320 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 320 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 320 | if (to_scale > from_scale) { | 170 | 84 | multiply_may_overflow &= | 171 | 84 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 84 | } | 173 | 320 | return narrow_integral || multiply_may_overflow; | 174 | 320 | } | 175 | 0 | return false; | 176 | 320 | }); |
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 | 123 | 303 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 303 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 303 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 303 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 303 | using FromFieldType = typename FromDataType::FieldType; | 133 | 303 | using ToFieldType = typename ToDataType::FieldType; | 134 | 303 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 303 | UInt32 from_scale = 0; | 136 | | | 137 | 303 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 303 | const auto* from_decimal_type = | 139 | 303 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 303 | from_precision = | 141 | 303 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 303 | from_scale = from_decimal_type->get_scale(); | 143 | 303 | } | 144 | | | 145 | 303 | UInt32 to_max_digits = 0; | 146 | 303 | UInt32 to_precision = 0; | 147 | 303 | UInt32 to_scale = 0; | 148 | | | 149 | 303 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 303 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 303 | const auto* to_decimal_type = | 153 | 303 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 303 | to_precision = to_decimal_type->get_precision(); | 155 | 303 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 303 | to_scale = to_decimal_type->get_scale(); | 158 | 303 | ToDataType::check_type_scale(to_scale); | 159 | 303 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 303 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 303 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 303 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 303 | if (to_scale > from_scale) { | 170 | 79 | multiply_may_overflow &= | 171 | 79 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 79 | } | 173 | 303 | return narrow_integral || multiply_may_overflow; | 174 | 303 | } | 175 | 0 | return false; | 176 | 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 | 123 | 2.90k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2.90k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2.90k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 2.90k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 2.90k | return false; | 130 | 2.90k | } | 131 | 2.90k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 2.90k | using FromFieldType = typename FromDataType::FieldType; | 133 | 2.90k | using ToFieldType = typename ToDataType::FieldType; | 134 | 2.90k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 2.90k | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 2.90k | UInt32 to_max_digits = 0; | 146 | 2.90k | UInt32 to_precision = 0; | 147 | 2.90k | UInt32 to_scale = 0; | 148 | | | 149 | 2.90k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 2.90k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 2.90k | const auto* to_decimal_type = | 153 | 2.90k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 2.90k | to_precision = to_decimal_type->get_precision(); | 155 | 2.90k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 2.90k | to_scale = to_decimal_type->get_scale(); | 158 | 2.90k | ToDataType::check_type_scale(to_scale); | 159 | 2.90k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 2.90k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 2.90k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 2.90k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 2.90k | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 2.90k | return narrow_integral || multiply_may_overflow; | 174 | 2.90k | } | 175 | 0 | return false; | 176 | 2.90k | }); |
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 | 123 | 17 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 17 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 17 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 17 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 17 | using FromFieldType = typename FromDataType::FieldType; | 133 | 17 | using ToFieldType = typename ToDataType::FieldType; | 134 | 17 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 17 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 17 | UInt32 to_max_digits = 0; | 146 | 17 | UInt32 to_precision = 0; | 147 | 17 | UInt32 to_scale = 0; | 148 | | | 149 | 17 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 17 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 17 | const auto* to_decimal_type = | 153 | 17 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 17 | to_precision = to_decimal_type->get_precision(); | 155 | 17 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 17 | to_scale = to_decimal_type->get_scale(); | 158 | 17 | ToDataType::check_type_scale(to_scale); | 159 | 17 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 17 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 17 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 17 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 17 | if (to_scale > from_scale) { | 170 | 16 | multiply_may_overflow &= | 171 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 16 | } | 173 | 17 | return narrow_integral || multiply_may_overflow; | 174 | 17 | } | 175 | 0 | return false; | 176 | 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 | 123 | 72 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 72 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 72 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 72 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 72 | using FromFieldType = typename FromDataType::FieldType; | 133 | 72 | using ToFieldType = typename ToDataType::FieldType; | 134 | 72 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 72 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 72 | UInt32 to_max_digits = 0; | 146 | 72 | UInt32 to_precision = 0; | 147 | 72 | UInt32 to_scale = 0; | 148 | | | 149 | 72 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 72 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 72 | const auto* to_decimal_type = | 153 | 72 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 72 | to_precision = to_decimal_type->get_precision(); | 155 | 72 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 72 | to_scale = to_decimal_type->get_scale(); | 158 | 72 | ToDataType::check_type_scale(to_scale); | 159 | 72 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 72 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 72 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 72 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 72 | if (to_scale > from_scale) { | 170 | 59 | multiply_may_overflow &= | 171 | 59 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 59 | } | 173 | 72 | return narrow_integral || multiply_may_overflow; | 174 | 72 | } | 175 | 0 | return false; | 176 | 72 | }); |
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 | 123 | 49 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 49 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 49 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 49 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 49 | using FromFieldType = typename FromDataType::FieldType; | 133 | 49 | using ToFieldType = typename ToDataType::FieldType; | 134 | 49 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 49 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 49 | UInt32 to_max_digits = 0; | 146 | 49 | UInt32 to_precision = 0; | 147 | 49 | UInt32 to_scale = 0; | 148 | | | 149 | 49 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 49 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 49 | const auto* to_decimal_type = | 153 | 49 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 49 | to_precision = to_decimal_type->get_precision(); | 155 | 49 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 49 | to_scale = to_decimal_type->get_scale(); | 158 | 49 | ToDataType::check_type_scale(to_scale); | 159 | 49 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 49 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 49 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 49 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 49 | if (to_scale > from_scale) { | 170 | 38 | multiply_may_overflow &= | 171 | 38 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 38 | } | 173 | 49 | return narrow_integral || multiply_may_overflow; | 174 | 49 | } | 175 | 0 | return false; | 176 | 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 | 123 | 470 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 470 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 470 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 470 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 470 | using FromFieldType = typename FromDataType::FieldType; | 133 | 470 | using ToFieldType = typename ToDataType::FieldType; | 134 | 470 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 470 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 470 | UInt32 to_max_digits = 0; | 146 | 470 | UInt32 to_precision = 0; | 147 | 470 | UInt32 to_scale = 0; | 148 | | | 149 | 470 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 470 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 470 | const auto* to_decimal_type = | 153 | 470 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 470 | to_precision = to_decimal_type->get_precision(); | 155 | 470 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 470 | to_scale = to_decimal_type->get_scale(); | 158 | 470 | ToDataType::check_type_scale(to_scale); | 159 | 470 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 470 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 470 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 470 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 470 | if (to_scale > from_scale) { | 170 | 311 | multiply_may_overflow &= | 171 | 311 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 311 | } | 173 | 470 | return narrow_integral || multiply_may_overflow; | 174 | 470 | } | 175 | 0 | return false; | 176 | 470 | }); |
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 | 123 | 53 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 53 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 53 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 53 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 53 | using FromFieldType = typename FromDataType::FieldType; | 133 | 53 | using ToFieldType = typename ToDataType::FieldType; | 134 | 53 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 53 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 53 | UInt32 to_max_digits = 0; | 146 | 53 | UInt32 to_precision = 0; | 147 | 53 | UInt32 to_scale = 0; | 148 | | | 149 | 53 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 53 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 53 | const auto* to_decimal_type = | 153 | 53 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 53 | to_precision = to_decimal_type->get_precision(); | 155 | 53 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 53 | to_scale = to_decimal_type->get_scale(); | 158 | 53 | ToDataType::check_type_scale(to_scale); | 159 | 53 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 53 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 53 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 53 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 53 | if (to_scale > from_scale) { | 170 | 32 | multiply_may_overflow &= | 171 | 32 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 32 | } | 173 | 53 | return narrow_integral || multiply_may_overflow; | 174 | 53 | } | 175 | 0 | return false; | 176 | 53 | }); |
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 | 123 | 65 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 65 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 65 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 65 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 65 | using FromFieldType = typename FromDataType::FieldType; | 133 | 65 | using ToFieldType = typename ToDataType::FieldType; | 134 | 65 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 65 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 65 | UInt32 to_max_digits = 0; | 146 | 65 | UInt32 to_precision = 0; | 147 | 65 | UInt32 to_scale = 0; | 148 | | | 149 | 65 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 65 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 65 | const auto* to_decimal_type = | 153 | 65 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 65 | to_precision = to_decimal_type->get_precision(); | 155 | 65 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 65 | to_scale = to_decimal_type->get_scale(); | 158 | 65 | ToDataType::check_type_scale(to_scale); | 159 | 65 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 65 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 65 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 65 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 65 | if (to_scale > from_scale) { | 170 | 39 | multiply_may_overflow &= | 171 | 39 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 39 | } | 173 | 65 | return narrow_integral || multiply_may_overflow; | 174 | 65 | } | 175 | 0 | return false; | 176 | 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 | 123 | 107 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 107 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 107 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 107 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 107 | using FromFieldType = typename FromDataType::FieldType; | 133 | 107 | using ToFieldType = typename ToDataType::FieldType; | 134 | 107 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 107 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 107 | UInt32 to_max_digits = 0; | 146 | 107 | UInt32 to_precision = 0; | 147 | 107 | UInt32 to_scale = 0; | 148 | | | 149 | 107 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 107 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 107 | const auto* to_decimal_type = | 153 | 107 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 107 | to_precision = to_decimal_type->get_precision(); | 155 | 107 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 107 | to_scale = to_decimal_type->get_scale(); | 158 | 107 | ToDataType::check_type_scale(to_scale); | 159 | 107 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 107 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 107 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 107 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 107 | if (to_scale > from_scale) { | 170 | 65 | multiply_may_overflow &= | 171 | 65 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 65 | } | 173 | 107 | return narrow_integral || multiply_may_overflow; | 174 | 107 | } | 175 | 0 | return false; | 176 | 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 | 123 | 131 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 131 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 131 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 131 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 131 | using FromFieldType = typename FromDataType::FieldType; | 133 | 131 | using ToFieldType = typename ToDataType::FieldType; | 134 | 131 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 131 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 131 | UInt32 to_max_digits = 0; | 146 | 131 | UInt32 to_precision = 0; | 147 | 131 | UInt32 to_scale = 0; | 148 | | | 149 | 131 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 131 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 131 | const auto* to_decimal_type = | 153 | 131 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 131 | to_precision = to_decimal_type->get_precision(); | 155 | 131 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 131 | to_scale = to_decimal_type->get_scale(); | 158 | 131 | ToDataType::check_type_scale(to_scale); | 159 | 131 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 131 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 131 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 131 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 131 | if (to_scale > from_scale) { | 170 | 98 | multiply_may_overflow &= | 171 | 98 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 98 | } | 173 | 131 | return narrow_integral || multiply_may_overflow; | 174 | 131 | } | 175 | 0 | return false; | 176 | 131 | }); |
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 | 123 | 1.10k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.10k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.10k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 1.10k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 1.10k | using FromFieldType = typename FromDataType::FieldType; | 133 | 1.10k | using ToFieldType = typename ToDataType::FieldType; | 134 | 1.10k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 1.10k | UInt32 from_scale = 0; | 136 | | | 137 | 1.10k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 1.10k | const auto* from_decimal_type = | 139 | 1.10k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 1.10k | from_precision = | 141 | 1.10k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 1.10k | from_scale = from_decimal_type->get_scale(); | 143 | 1.10k | } | 144 | | | 145 | 1.10k | UInt32 to_max_digits = 0; | 146 | 1.10k | UInt32 to_precision = 0; | 147 | 1.10k | UInt32 to_scale = 0; | 148 | | | 149 | 1.10k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 1.10k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 1.10k | const auto* to_decimal_type = | 153 | 1.10k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 1.10k | to_precision = to_decimal_type->get_precision(); | 155 | 1.10k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 1.10k | to_scale = to_decimal_type->get_scale(); | 158 | 1.10k | ToDataType::check_type_scale(to_scale); | 159 | 1.10k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 1.10k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 1.10k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 1.10k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 1.10k | if (to_scale > from_scale) { | 170 | 767 | multiply_may_overflow &= | 171 | 767 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 767 | } | 173 | 1.10k | return narrow_integral || multiply_may_overflow; | 174 | 1.10k | } | 175 | 0 | return false; | 176 | 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 | 123 | 767 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 767 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 767 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 767 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 767 | using FromFieldType = typename FromDataType::FieldType; | 133 | 767 | using ToFieldType = typename ToDataType::FieldType; | 134 | 767 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 767 | UInt32 from_scale = 0; | 136 | | | 137 | 767 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 767 | const auto* from_decimal_type = | 139 | 767 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 767 | from_precision = | 141 | 767 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 767 | from_scale = from_decimal_type->get_scale(); | 143 | 767 | } | 144 | | | 145 | 767 | UInt32 to_max_digits = 0; | 146 | 767 | UInt32 to_precision = 0; | 147 | 767 | UInt32 to_scale = 0; | 148 | | | 149 | 767 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 767 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 767 | const auto* to_decimal_type = | 153 | 767 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 767 | to_precision = to_decimal_type->get_precision(); | 155 | 767 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 767 | to_scale = to_decimal_type->get_scale(); | 158 | 767 | ToDataType::check_type_scale(to_scale); | 159 | 767 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 767 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 767 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 767 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 767 | if (to_scale > from_scale) { | 170 | 158 | multiply_may_overflow &= | 171 | 158 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 158 | } | 173 | 767 | return narrow_integral || multiply_may_overflow; | 174 | 767 | } | 175 | 0 | return false; | 176 | 767 | }); |
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 | 123 | 224 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 224 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 224 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 224 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 224 | using FromFieldType = typename FromDataType::FieldType; | 133 | 224 | using ToFieldType = typename ToDataType::FieldType; | 134 | 224 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 224 | UInt32 from_scale = 0; | 136 | | | 137 | 224 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 224 | const auto* from_decimal_type = | 139 | 224 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 224 | from_precision = | 141 | 224 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 224 | from_scale = from_decimal_type->get_scale(); | 143 | 224 | } | 144 | | | 145 | 224 | UInt32 to_max_digits = 0; | 146 | 224 | UInt32 to_precision = 0; | 147 | 224 | UInt32 to_scale = 0; | 148 | | | 149 | 224 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 224 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 224 | const auto* to_decimal_type = | 153 | 224 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 224 | to_precision = to_decimal_type->get_precision(); | 155 | 224 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 224 | to_scale = to_decimal_type->get_scale(); | 158 | 224 | ToDataType::check_type_scale(to_scale); | 159 | 224 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 224 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 224 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 224 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 224 | if (to_scale > from_scale) { | 170 | 50 | multiply_may_overflow &= | 171 | 50 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 50 | } | 173 | 224 | return narrow_integral || multiply_may_overflow; | 174 | 224 | } | 175 | 0 | return false; | 176 | 224 | }); |
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 | 123 | 433 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 433 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 433 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 433 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 433 | using FromFieldType = typename FromDataType::FieldType; | 133 | 433 | using ToFieldType = typename ToDataType::FieldType; | 134 | 433 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 433 | UInt32 from_scale = 0; | 136 | | | 137 | 433 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 433 | const auto* from_decimal_type = | 139 | 433 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 433 | from_precision = | 141 | 433 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 433 | from_scale = from_decimal_type->get_scale(); | 143 | 433 | } | 144 | | | 145 | 433 | UInt32 to_max_digits = 0; | 146 | 433 | UInt32 to_precision = 0; | 147 | 433 | UInt32 to_scale = 0; | 148 | | | 149 | 433 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 433 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 433 | const auto* to_decimal_type = | 153 | 433 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 433 | to_precision = to_decimal_type->get_precision(); | 155 | 433 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 433 | to_scale = to_decimal_type->get_scale(); | 158 | 433 | ToDataType::check_type_scale(to_scale); | 159 | 433 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 433 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 433 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 433 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 433 | if (to_scale > from_scale) { | 170 | 146 | multiply_may_overflow &= | 171 | 146 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 146 | } | 173 | 433 | return narrow_integral || multiply_may_overflow; | 174 | 433 | } | 175 | 0 | return false; | 176 | 433 | }); |
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 | 123 | 401 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 401 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 401 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 401 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 401 | using FromFieldType = typename FromDataType::FieldType; | 133 | 401 | using ToFieldType = typename ToDataType::FieldType; | 134 | 401 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 401 | UInt32 from_scale = 0; | 136 | | | 137 | 401 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 401 | const auto* from_decimal_type = | 139 | 401 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 401 | from_precision = | 141 | 401 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 401 | from_scale = from_decimal_type->get_scale(); | 143 | 401 | } | 144 | | | 145 | 401 | UInt32 to_max_digits = 0; | 146 | 401 | UInt32 to_precision = 0; | 147 | 401 | UInt32 to_scale = 0; | 148 | | | 149 | 401 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 401 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 401 | const auto* to_decimal_type = | 153 | 401 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 401 | to_precision = to_decimal_type->get_precision(); | 155 | 401 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 401 | to_scale = to_decimal_type->get_scale(); | 158 | 401 | ToDataType::check_type_scale(to_scale); | 159 | 401 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 401 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 401 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 401 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 401 | if (to_scale > from_scale) { | 170 | 137 | multiply_may_overflow &= | 171 | 137 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 137 | } | 173 | 401 | return narrow_integral || multiply_may_overflow; | 174 | 401 | } | 175 | 0 | return false; | 176 | 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 | 123 | 7.90k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7.90k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7.90k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 7.90k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 7.90k | return false; | 130 | 7.90k | } | 131 | 7.90k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 7.90k | using FromFieldType = typename FromDataType::FieldType; | 133 | 7.90k | using ToFieldType = typename ToDataType::FieldType; | 134 | 7.90k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 7.90k | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 7.90k | UInt32 to_max_digits = 0; | 146 | 7.90k | UInt32 to_precision = 0; | 147 | 7.90k | UInt32 to_scale = 0; | 148 | | | 149 | 7.90k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 7.90k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 7.90k | const auto* to_decimal_type = | 153 | 7.90k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 7.90k | to_precision = to_decimal_type->get_precision(); | 155 | 7.90k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 7.90k | to_scale = to_decimal_type->get_scale(); | 158 | 7.90k | ToDataType::check_type_scale(to_scale); | 159 | 7.90k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 7.90k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 7.90k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 7.90k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 7.90k | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 7.90k | return narrow_integral || multiply_may_overflow; | 174 | 7.90k | } | 175 | 0 | return false; | 176 | 7.90k | }); |
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 | 123 | 20 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 20 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 20 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 20 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 20 | using FromFieldType = typename FromDataType::FieldType; | 133 | 20 | using ToFieldType = typename ToDataType::FieldType; | 134 | 20 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 20 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 20 | UInt32 to_max_digits = 0; | 146 | 20 | UInt32 to_precision = 0; | 147 | 20 | UInt32 to_scale = 0; | 148 | | | 149 | 20 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 20 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 20 | const auto* to_decimal_type = | 153 | 20 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 20 | to_precision = to_decimal_type->get_precision(); | 155 | 20 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 20 | to_scale = to_decimal_type->get_scale(); | 158 | 20 | ToDataType::check_type_scale(to_scale); | 159 | 20 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 20 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 20 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 20 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 20 | if (to_scale > from_scale) { | 170 | 20 | multiply_may_overflow &= | 171 | 20 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 20 | } | 173 | 20 | return narrow_integral || multiply_may_overflow; | 174 | 20 | } | 175 | 0 | return false; | 176 | 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 | 123 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 16 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 16 | using FromFieldType = typename FromDataType::FieldType; | 133 | 16 | using ToFieldType = typename ToDataType::FieldType; | 134 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 16 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 16 | UInt32 to_max_digits = 0; | 146 | 16 | UInt32 to_precision = 0; | 147 | 16 | UInt32 to_scale = 0; | 148 | | | 149 | 16 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 16 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 16 | const auto* to_decimal_type = | 153 | 16 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 16 | to_precision = to_decimal_type->get_precision(); | 155 | 16 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 16 | to_scale = to_decimal_type->get_scale(); | 158 | 16 | ToDataType::check_type_scale(to_scale); | 159 | 16 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 16 | if (to_scale > from_scale) { | 170 | 16 | multiply_may_overflow &= | 171 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 16 | } | 173 | 16 | return narrow_integral || multiply_may_overflow; | 174 | 16 | } | 175 | 0 | return false; | 176 | 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 | 123 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 16 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 16 | using FromFieldType = typename FromDataType::FieldType; | 133 | 16 | using ToFieldType = typename ToDataType::FieldType; | 134 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 16 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 16 | UInt32 to_max_digits = 0; | 146 | 16 | UInt32 to_precision = 0; | 147 | 16 | UInt32 to_scale = 0; | 148 | | | 149 | 16 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 16 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 16 | const auto* to_decimal_type = | 153 | 16 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 16 | to_precision = to_decimal_type->get_precision(); | 155 | 16 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 16 | to_scale = to_decimal_type->get_scale(); | 158 | 16 | ToDataType::check_type_scale(to_scale); | 159 | 16 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 16 | if (to_scale > from_scale) { | 170 | 16 | multiply_may_overflow &= | 171 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 16 | } | 173 | 16 | return narrow_integral || multiply_may_overflow; | 174 | 16 | } | 175 | 0 | return false; | 176 | 16 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_5EEESE_EEEEbSI_ Line | Count | Source | 123 | 16 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 16 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 16 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 16 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 16 | using FromFieldType = typename FromDataType::FieldType; | 133 | 16 | using ToFieldType = typename ToDataType::FieldType; | 134 | 16 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 16 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 16 | UInt32 to_max_digits = 0; | 146 | 16 | UInt32 to_precision = 0; | 147 | 16 | UInt32 to_scale = 0; | 148 | | | 149 | 16 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 16 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 16 | const auto* to_decimal_type = | 153 | 16 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 16 | to_precision = to_decimal_type->get_precision(); | 155 | 16 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 16 | to_scale = to_decimal_type->get_scale(); | 158 | 16 | ToDataType::check_type_scale(to_scale); | 159 | 16 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 16 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 16 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 16 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 16 | if (to_scale > from_scale) { | 170 | 16 | multiply_may_overflow &= | 171 | 16 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 16 | } | 173 | 16 | return narrow_integral || multiply_may_overflow; | 174 | 16 | } | 175 | 0 | return false; | 176 | 16 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_6EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_7EEESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_8EEESE_EEEEbSI_ Line | Count | Source | 123 | 32 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 32 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 32 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 32 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 32 | using FromFieldType = typename FromDataType::FieldType; | 133 | 32 | using ToFieldType = typename ToDataType::FieldType; | 134 | 32 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 32 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 32 | UInt32 to_max_digits = 0; | 146 | 32 | UInt32 to_precision = 0; | 147 | 32 | UInt32 to_scale = 0; | 148 | | | 149 | 32 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 32 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 32 | const auto* to_decimal_type = | 153 | 32 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 32 | to_precision = to_decimal_type->get_precision(); | 155 | 32 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 32 | to_scale = to_decimal_type->get_scale(); | 158 | 32 | ToDataType::check_type_scale(to_scale); | 159 | 32 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 32 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 32 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 32 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 32 | if (to_scale > from_scale) { | 170 | 32 | multiply_may_overflow &= | 171 | 32 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 32 | } | 173 | 32 | return narrow_integral || multiply_may_overflow; | 174 | 32 | } | 175 | 0 | return false; | 176 | 32 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeNumberILSD_9EEESE_EEEEbSI_ Line | Count | Source | 123 | 128 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 128 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 128 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 128 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 128 | using FromFieldType = typename FromDataType::FieldType; | 133 | 128 | using ToFieldType = typename ToDataType::FieldType; | 134 | 128 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 128 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 128 | UInt32 to_max_digits = 0; | 146 | 128 | UInt32 to_precision = 0; | 147 | 128 | UInt32 to_scale = 0; | 148 | | | 149 | 128 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 128 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 128 | const auto* to_decimal_type = | 153 | 128 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 128 | to_precision = to_decimal_type->get_precision(); | 155 | 128 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 128 | to_scale = to_decimal_type->get_scale(); | 158 | 128 | ToDataType::check_type_scale(to_scale); | 159 | 128 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 128 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 128 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 128 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 128 | if (to_scale > from_scale) { | 170 | 128 | multiply_may_overflow &= | 171 | 128 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 128 | } | 173 | 128 | return narrow_integral || multiply_may_overflow; | 174 | 128 | } | 175 | 0 | return false; | 176 | 128 | }); |
Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_28EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_29EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_ISE_SE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_30EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INSC_ILSD_35EEESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeDateESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeDateV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_18DataTypeDateTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_16DataTypeDateTimeESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeTimeV2ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_19DataTypeTimeStampTzESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv4ESE_EEEEbSI_ Unexecuted instantiation: function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_12DataTypeIPv6ESE_EEEEbSI_ function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ENKUlSI_E_clINSB_INS_14DataTypeStringESE_EEEEbSI_ Line | Count | Source | 123 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 1 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 1 | return false; | 130 | 1 | } | 131 | 1 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 1 | using FromFieldType = typename FromDataType::FieldType; | 133 | 1 | using ToFieldType = typename ToDataType::FieldType; | 134 | 1 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 1 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 1 | UInt32 to_max_digits = 0; | 146 | 1 | UInt32 to_precision = 0; | 147 | 1 | UInt32 to_scale = 0; | 148 | | | 149 | 1 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 1 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 1 | const auto* to_decimal_type = | 153 | 1 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 1 | to_precision = to_decimal_type->get_precision(); | 155 | 1 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 1 | to_scale = to_decimal_type->get_scale(); | 158 | 1 | ToDataType::check_type_scale(to_scale); | 159 | 1 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 1 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 1 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 1 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 1 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 1 | return narrow_integral || multiply_may_overflow; | 174 | 1 | } | 175 | 0 | return false; | 176 | 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 | 123 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 21 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 21 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 21 | using FromFieldType = typename FromDataType::FieldType; | 133 | 21 | using ToFieldType = typename ToDataType::FieldType; | 134 | 21 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 21 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 21 | UInt32 to_max_digits = 0; | 146 | 21 | UInt32 to_precision = 0; | 147 | 21 | UInt32 to_scale = 0; | 148 | | | 149 | 21 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 21 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 21 | const auto* to_decimal_type = | 153 | 21 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 21 | to_precision = to_decimal_type->get_precision(); | 155 | 21 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 21 | to_scale = to_decimal_type->get_scale(); | 158 | 21 | ToDataType::check_type_scale(to_scale); | 159 | 21 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 21 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 21 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 21 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 21 | if (to_scale > from_scale) { | 170 | 20 | multiply_may_overflow &= | 171 | 20 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 20 | } | 173 | 21 | return narrow_integral || multiply_may_overflow; | 174 | 21 | } | 175 | 0 | return false; | 176 | 21 | }); |
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 | 123 | 179 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 179 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 179 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 179 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 179 | using FromFieldType = typename FromDataType::FieldType; | 133 | 179 | using ToFieldType = typename ToDataType::FieldType; | 134 | 179 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 179 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 179 | UInt32 to_max_digits = 0; | 146 | 179 | UInt32 to_precision = 0; | 147 | 179 | UInt32 to_scale = 0; | 148 | | | 149 | 179 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 179 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 179 | const auto* to_decimal_type = | 153 | 179 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 179 | to_precision = to_decimal_type->get_precision(); | 155 | 179 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 179 | to_scale = to_decimal_type->get_scale(); | 158 | 179 | ToDataType::check_type_scale(to_scale); | 159 | 179 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 179 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 179 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 179 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 179 | if (to_scale > from_scale) { | 170 | 128 | multiply_may_overflow &= | 171 | 128 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 128 | } | 173 | 179 | return narrow_integral || multiply_may_overflow; | 174 | 179 | } | 175 | 0 | return false; | 176 | 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 | 123 | 166 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 166 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 166 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 166 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 166 | using FromFieldType = typename FromDataType::FieldType; | 133 | 166 | using ToFieldType = typename ToDataType::FieldType; | 134 | 166 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 166 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 166 | UInt32 to_max_digits = 0; | 146 | 166 | UInt32 to_precision = 0; | 147 | 166 | UInt32 to_scale = 0; | 148 | | | 149 | 166 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 166 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 166 | const auto* to_decimal_type = | 153 | 166 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 166 | to_precision = to_decimal_type->get_precision(); | 155 | 166 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 166 | to_scale = to_decimal_type->get_scale(); | 158 | 166 | ToDataType::check_type_scale(to_scale); | 159 | 166 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 166 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 166 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 166 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 166 | if (to_scale > from_scale) { | 170 | 115 | multiply_may_overflow &= | 171 | 115 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 115 | } | 173 | 166 | return narrow_integral || multiply_may_overflow; | 174 | 166 | } | 175 | 0 | return false; | 176 | 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 | 123 | 438 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 438 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 438 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 438 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 438 | using FromFieldType = typename FromDataType::FieldType; | 133 | 438 | using ToFieldType = typename ToDataType::FieldType; | 134 | 438 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 438 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 438 | UInt32 to_max_digits = 0; | 146 | 438 | UInt32 to_precision = 0; | 147 | 438 | UInt32 to_scale = 0; | 148 | | | 149 | 438 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 438 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 438 | const auto* to_decimal_type = | 153 | 438 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 438 | to_precision = to_decimal_type->get_precision(); | 155 | 438 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 438 | to_scale = to_decimal_type->get_scale(); | 158 | 438 | ToDataType::check_type_scale(to_scale); | 159 | 438 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 438 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 438 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 438 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 438 | if (to_scale > from_scale) { | 170 | 382 | multiply_may_overflow &= | 171 | 382 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 382 | } | 173 | 438 | return narrow_integral || multiply_may_overflow; | 174 | 438 | } | 175 | 0 | return false; | 176 | 438 | }); |
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 | 123 | 961 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 961 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 961 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 961 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 961 | using FromFieldType = typename FromDataType::FieldType; | 133 | 961 | using ToFieldType = typename ToDataType::FieldType; | 134 | 961 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 961 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 961 | UInt32 to_max_digits = 0; | 146 | 961 | UInt32 to_precision = 0; | 147 | 961 | UInt32 to_scale = 0; | 148 | | | 149 | 961 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 961 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 961 | const auto* to_decimal_type = | 153 | 961 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 961 | to_precision = to_decimal_type->get_precision(); | 155 | 961 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 961 | to_scale = to_decimal_type->get_scale(); | 158 | 961 | ToDataType::check_type_scale(to_scale); | 159 | 961 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 961 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 961 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 961 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 961 | if (to_scale > from_scale) { | 170 | 406 | multiply_may_overflow &= | 171 | 406 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 406 | } | 173 | 961 | return narrow_integral || multiply_may_overflow; | 174 | 961 | } | 175 | 0 | return false; | 176 | 961 | }); |
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 | 123 | 347 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 347 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 347 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 347 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 347 | using FromFieldType = typename FromDataType::FieldType; | 133 | 347 | using ToFieldType = typename ToDataType::FieldType; | 134 | 347 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 347 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 347 | UInt32 to_max_digits = 0; | 146 | 347 | UInt32 to_precision = 0; | 147 | 347 | UInt32 to_scale = 0; | 148 | | | 149 | 347 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 347 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 347 | const auto* to_decimal_type = | 153 | 347 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 347 | to_precision = to_decimal_type->get_precision(); | 155 | 347 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 347 | to_scale = to_decimal_type->get_scale(); | 158 | 347 | ToDataType::check_type_scale(to_scale); | 159 | 347 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 347 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 347 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 347 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 347 | if (to_scale > from_scale) { | 170 | 176 | multiply_may_overflow &= | 171 | 176 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 176 | } | 173 | 347 | return narrow_integral || multiply_may_overflow; | 174 | 347 | } | 175 | 0 | return false; | 176 | 347 | }); |
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 | 123 | 248 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 248 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 248 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 248 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 248 | using FromFieldType = typename FromDataType::FieldType; | 133 | 248 | using ToFieldType = typename ToDataType::FieldType; | 134 | 248 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 248 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 248 | UInt32 to_max_digits = 0; | 146 | 248 | UInt32 to_precision = 0; | 147 | 248 | UInt32 to_scale = 0; | 148 | | | 149 | 248 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 248 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 248 | const auto* to_decimal_type = | 153 | 248 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 248 | to_precision = to_decimal_type->get_precision(); | 155 | 248 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 248 | to_scale = to_decimal_type->get_scale(); | 158 | 248 | ToDataType::check_type_scale(to_scale); | 159 | 248 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 248 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 248 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 248 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 248 | if (to_scale > from_scale) { | 170 | 130 | multiply_may_overflow &= | 171 | 130 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 130 | } | 173 | 248 | return narrow_integral || multiply_may_overflow; | 174 | 248 | } | 175 | 0 | return false; | 176 | 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 | 123 | 278 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 278 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 278 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 278 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 278 | using FromFieldType = typename FromDataType::FieldType; | 133 | 278 | using ToFieldType = typename ToDataType::FieldType; | 134 | 278 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 278 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 278 | UInt32 to_max_digits = 0; | 146 | 278 | UInt32 to_precision = 0; | 147 | 278 | UInt32 to_scale = 0; | 148 | | | 149 | 278 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 278 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 278 | const auto* to_decimal_type = | 153 | 278 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 278 | to_precision = to_decimal_type->get_precision(); | 155 | 278 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 278 | to_scale = to_decimal_type->get_scale(); | 158 | 278 | ToDataType::check_type_scale(to_scale); | 159 | 278 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 278 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 278 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 278 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 278 | if (to_scale > from_scale) { | 170 | 168 | multiply_may_overflow &= | 171 | 168 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 168 | } | 173 | 278 | return narrow_integral || multiply_may_overflow; | 174 | 278 | } | 175 | 0 | return false; | 176 | 278 | }); |
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 | 123 | 743 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 743 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 743 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 743 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 743 | using FromFieldType = typename FromDataType::FieldType; | 133 | 743 | using ToFieldType = typename ToDataType::FieldType; | 134 | 743 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 743 | UInt32 from_scale = 0; | 136 | | | 137 | 743 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 743 | const auto* from_decimal_type = | 139 | 743 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 743 | from_precision = | 141 | 743 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 743 | from_scale = from_decimal_type->get_scale(); | 143 | 743 | } | 144 | | | 145 | 743 | UInt32 to_max_digits = 0; | 146 | 743 | UInt32 to_precision = 0; | 147 | 743 | UInt32 to_scale = 0; | 148 | | | 149 | 743 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 743 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 743 | const auto* to_decimal_type = | 153 | 743 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 743 | to_precision = to_decimal_type->get_precision(); | 155 | 743 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 743 | to_scale = to_decimal_type->get_scale(); | 158 | 743 | ToDataType::check_type_scale(to_scale); | 159 | 743 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 743 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 743 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 743 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 743 | if (to_scale > from_scale) { | 170 | 602 | multiply_may_overflow &= | 171 | 602 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 602 | } | 173 | 743 | return narrow_integral || multiply_may_overflow; | 174 | 743 | } | 175 | 0 | return false; | 176 | 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 | 123 | 1.05k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.05k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.05k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 1.05k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 1.05k | using FromFieldType = typename FromDataType::FieldType; | 133 | 1.05k | using ToFieldType = typename ToDataType::FieldType; | 134 | 1.05k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 1.05k | UInt32 from_scale = 0; | 136 | | | 137 | 1.05k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 1.05k | const auto* from_decimal_type = | 139 | 1.05k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 1.05k | from_precision = | 141 | 1.05k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 1.05k | from_scale = from_decimal_type->get_scale(); | 143 | 1.05k | } | 144 | | | 145 | 1.05k | UInt32 to_max_digits = 0; | 146 | 1.05k | UInt32 to_precision = 0; | 147 | 1.05k | UInt32 to_scale = 0; | 148 | | | 149 | 1.05k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 1.05k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 1.05k | const auto* to_decimal_type = | 153 | 1.05k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 1.05k | to_precision = to_decimal_type->get_precision(); | 155 | 1.05k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 1.05k | to_scale = to_decimal_type->get_scale(); | 158 | 1.05k | ToDataType::check_type_scale(to_scale); | 159 | 1.05k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 1.05k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 1.05k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 1.05k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 1.05k | if (to_scale > from_scale) { | 170 | 717 | multiply_may_overflow &= | 171 | 717 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 717 | } | 173 | 1.05k | return narrow_integral || multiply_may_overflow; | 174 | 1.05k | } | 175 | 0 | return false; | 176 | 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 | 123 | 257 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 257 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 257 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 257 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 257 | using FromFieldType = typename FromDataType::FieldType; | 133 | 257 | using ToFieldType = typename ToDataType::FieldType; | 134 | 257 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 257 | UInt32 from_scale = 0; | 136 | | | 137 | 257 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 257 | const auto* from_decimal_type = | 139 | 257 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 257 | from_precision = | 141 | 257 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 257 | from_scale = from_decimal_type->get_scale(); | 143 | 257 | } | 144 | | | 145 | 257 | UInt32 to_max_digits = 0; | 146 | 257 | UInt32 to_precision = 0; | 147 | 257 | UInt32 to_scale = 0; | 148 | | | 149 | 257 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 257 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 257 | const auto* to_decimal_type = | 153 | 257 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 257 | to_precision = to_decimal_type->get_precision(); | 155 | 257 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 257 | to_scale = to_decimal_type->get_scale(); | 158 | 257 | ToDataType::check_type_scale(to_scale); | 159 | 257 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 257 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 257 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 257 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 257 | if (to_scale > from_scale) { | 170 | 71 | multiply_may_overflow &= | 171 | 71 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 71 | } | 173 | 257 | return narrow_integral || multiply_may_overflow; | 174 | 257 | } | 175 | 0 | return false; | 176 | 257 | }); |
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 | 123 | 1.55k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.55k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.55k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 1.55k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 1.55k | using FromFieldType = typename FromDataType::FieldType; | 133 | 1.55k | using ToFieldType = typename ToDataType::FieldType; | 134 | 1.55k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 1.55k | UInt32 from_scale = 0; | 136 | | | 137 | 1.55k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 1.55k | const auto* from_decimal_type = | 139 | 1.55k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 1.55k | from_precision = | 141 | 1.55k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 1.55k | from_scale = from_decimal_type->get_scale(); | 143 | 1.55k | } | 144 | | | 145 | 1.55k | UInt32 to_max_digits = 0; | 146 | 1.55k | UInt32 to_precision = 0; | 147 | 1.55k | UInt32 to_scale = 0; | 148 | | | 149 | 1.55k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 1.55k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 1.55k | const auto* to_decimal_type = | 153 | 1.55k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 1.55k | to_precision = to_decimal_type->get_precision(); | 155 | 1.55k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 1.55k | to_scale = to_decimal_type->get_scale(); | 158 | 1.55k | ToDataType::check_type_scale(to_scale); | 159 | 1.55k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 1.55k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 1.55k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 1.55k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 1.55k | if (to_scale > from_scale) { | 170 | 703 | multiply_may_overflow &= | 171 | 703 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 703 | } | 173 | 1.55k | return narrow_integral || multiply_may_overflow; | 174 | 1.55k | } | 175 | 0 | return false; | 176 | 1.55k | }); |
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 | 123 | 948 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 948 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 948 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 948 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 948 | using FromFieldType = typename FromDataType::FieldType; | 133 | 948 | using ToFieldType = typename ToDataType::FieldType; | 134 | 948 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 948 | UInt32 from_scale = 0; | 136 | | | 137 | 948 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 948 | const auto* from_decimal_type = | 139 | 948 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 948 | from_precision = | 141 | 948 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 948 | from_scale = from_decimal_type->get_scale(); | 143 | 948 | } | 144 | | | 145 | 948 | UInt32 to_max_digits = 0; | 146 | 948 | UInt32 to_precision = 0; | 147 | 948 | UInt32 to_scale = 0; | 148 | | | 149 | 948 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 948 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 948 | const auto* to_decimal_type = | 153 | 948 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 948 | to_precision = to_decimal_type->get_precision(); | 155 | 948 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 948 | to_scale = to_decimal_type->get_scale(); | 158 | 948 | ToDataType::check_type_scale(to_scale); | 159 | 948 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 948 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 948 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 948 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 948 | if (to_scale > from_scale) { | 170 | 394 | multiply_may_overflow &= | 171 | 394 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 394 | } | 173 | 948 | return narrow_integral || multiply_may_overflow; | 174 | 948 | } | 175 | 0 | return false; | 176 | 948 | }); |
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 | 123 | 4.80k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 4.80k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 4.80k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 4.80k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 4.80k | return false; | 130 | 4.80k | } | 131 | 4.80k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 4.80k | using FromFieldType = typename FromDataType::FieldType; | 133 | 4.80k | using ToFieldType = typename ToDataType::FieldType; | 134 | 4.80k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 4.80k | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 4.80k | UInt32 to_max_digits = 0; | 146 | 4.80k | UInt32 to_precision = 0; | 147 | 4.80k | UInt32 to_scale = 0; | 148 | | | 149 | 4.80k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 4.80k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 4.80k | const auto* to_decimal_type = | 153 | 4.80k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 4.80k | to_precision = to_decimal_type->get_precision(); | 155 | 4.80k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 4.80k | to_scale = to_decimal_type->get_scale(); | 158 | 4.80k | ToDataType::check_type_scale(to_scale); | 159 | 4.80k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 4.80k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 4.80k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 4.80k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 4.80k | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 4.80k | return narrow_integral || multiply_may_overflow; | 174 | 4.80k | } | 175 | 0 | return false; | 176 | 4.80k | }); |
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 | 123 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 7 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 7 | using FromFieldType = typename FromDataType::FieldType; | 133 | 7 | using ToFieldType = typename ToDataType::FieldType; | 134 | 7 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 7 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 7 | UInt32 to_max_digits = 0; | 146 | 7 | UInt32 to_precision = 0; | 147 | 7 | UInt32 to_scale = 0; | 148 | | | 149 | 7 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 7 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 7 | const auto* to_decimal_type = | 153 | 7 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 7 | to_precision = to_decimal_type->get_precision(); | 155 | 7 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 7 | to_scale = to_decimal_type->get_scale(); | 158 | 7 | ToDataType::check_type_scale(to_scale); | 159 | 7 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 7 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 7 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 7 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 7 | if (to_scale > from_scale) { | 170 | 6 | multiply_may_overflow &= | 171 | 6 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 6 | } | 173 | 7 | return narrow_integral || multiply_may_overflow; | 174 | 7 | } | 175 | 0 | return false; | 176 | 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 | 123 | 160 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 160 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 160 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 160 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 160 | using FromFieldType = typename FromDataType::FieldType; | 133 | 160 | using ToFieldType = typename ToDataType::FieldType; | 134 | 160 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 160 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 160 | UInt32 to_max_digits = 0; | 146 | 160 | UInt32 to_precision = 0; | 147 | 160 | UInt32 to_scale = 0; | 148 | | | 149 | 160 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 160 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 160 | const auto* to_decimal_type = | 153 | 160 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 160 | to_precision = to_decimal_type->get_precision(); | 155 | 160 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 160 | to_scale = to_decimal_type->get_scale(); | 158 | 160 | ToDataType::check_type_scale(to_scale); | 159 | 160 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 160 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 160 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 160 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 160 | if (to_scale > from_scale) { | 170 | 109 | multiply_may_overflow &= | 171 | 109 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 109 | } | 173 | 160 | return narrow_integral || multiply_may_overflow; | 174 | 160 | } | 175 | 0 | return false; | 176 | 160 | }); |
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 | 123 | 158 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 158 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 158 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 158 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 158 | using FromFieldType = typename FromDataType::FieldType; | 133 | 158 | using ToFieldType = typename ToDataType::FieldType; | 134 | 158 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 158 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 158 | UInt32 to_max_digits = 0; | 146 | 158 | UInt32 to_precision = 0; | 147 | 158 | UInt32 to_scale = 0; | 148 | | | 149 | 158 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 158 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 158 | const auto* to_decimal_type = | 153 | 158 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 158 | to_precision = to_decimal_type->get_precision(); | 155 | 158 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 158 | to_scale = to_decimal_type->get_scale(); | 158 | 158 | ToDataType::check_type_scale(to_scale); | 159 | 158 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 158 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 158 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 158 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 158 | if (to_scale > from_scale) { | 170 | 107 | multiply_may_overflow &= | 171 | 107 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 107 | } | 173 | 158 | return narrow_integral || multiply_may_overflow; | 174 | 158 | } | 175 | 0 | return false; | 176 | 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 | 123 | 176 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 176 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 176 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 176 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 176 | using FromFieldType = typename FromDataType::FieldType; | 133 | 176 | using ToFieldType = typename ToDataType::FieldType; | 134 | 176 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 176 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 176 | UInt32 to_max_digits = 0; | 146 | 176 | UInt32 to_precision = 0; | 147 | 176 | UInt32 to_scale = 0; | 148 | | | 149 | 176 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 176 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 176 | const auto* to_decimal_type = | 153 | 176 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 176 | to_precision = to_decimal_type->get_precision(); | 155 | 176 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 176 | to_scale = to_decimal_type->get_scale(); | 158 | 176 | ToDataType::check_type_scale(to_scale); | 159 | 176 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 176 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 176 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 176 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 176 | if (to_scale > from_scale) { | 170 | 120 | multiply_may_overflow &= | 171 | 120 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 120 | } | 173 | 176 | return narrow_integral || multiply_may_overflow; | 174 | 176 | } | 175 | 0 | return false; | 176 | 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 | 123 | 158 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 158 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 158 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 158 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 158 | using FromFieldType = typename FromDataType::FieldType; | 133 | 158 | using ToFieldType = typename ToDataType::FieldType; | 134 | 158 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 158 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 158 | UInt32 to_max_digits = 0; | 146 | 158 | UInt32 to_precision = 0; | 147 | 158 | UInt32 to_scale = 0; | 148 | | | 149 | 158 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 158 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 158 | const auto* to_decimal_type = | 153 | 158 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 158 | to_precision = to_decimal_type->get_precision(); | 155 | 158 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 158 | to_scale = to_decimal_type->get_scale(); | 158 | 158 | ToDataType::check_type_scale(to_scale); | 159 | 158 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 158 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 158 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 158 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 158 | if (to_scale > from_scale) { | 170 | 107 | multiply_may_overflow &= | 171 | 107 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 107 | } | 173 | 158 | return narrow_integral || multiply_may_overflow; | 174 | 158 | } | 175 | 0 | return false; | 176 | 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 | 123 | 232 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 232 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 232 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 232 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 232 | using FromFieldType = typename FromDataType::FieldType; | 133 | 232 | using ToFieldType = typename ToDataType::FieldType; | 134 | 232 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 232 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 232 | UInt32 to_max_digits = 0; | 146 | 232 | UInt32 to_precision = 0; | 147 | 232 | UInt32 to_scale = 0; | 148 | | | 149 | 232 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 232 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 232 | const auto* to_decimal_type = | 153 | 232 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 232 | to_precision = to_decimal_type->get_precision(); | 155 | 232 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 232 | to_scale = to_decimal_type->get_scale(); | 158 | 232 | ToDataType::check_type_scale(to_scale); | 159 | 232 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 232 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 232 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 232 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 232 | if (to_scale > from_scale) { | 170 | 170 | multiply_may_overflow &= | 171 | 170 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 170 | } | 173 | 232 | return narrow_integral || multiply_may_overflow; | 174 | 232 | } | 175 | 0 | return false; | 176 | 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 | 123 | 224 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 224 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 224 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 224 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 224 | using FromFieldType = typename FromDataType::FieldType; | 133 | 224 | using ToFieldType = typename ToDataType::FieldType; | 134 | 224 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 224 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 224 | UInt32 to_max_digits = 0; | 146 | 224 | UInt32 to_precision = 0; | 147 | 224 | UInt32 to_scale = 0; | 148 | | | 149 | 224 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 224 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 224 | const auto* to_decimal_type = | 153 | 224 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 224 | to_precision = to_decimal_type->get_precision(); | 155 | 224 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 224 | to_scale = to_decimal_type->get_scale(); | 158 | 224 | ToDataType::check_type_scale(to_scale); | 159 | 224 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 224 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 224 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 224 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 224 | if (to_scale > from_scale) { | 170 | 126 | multiply_may_overflow &= | 171 | 126 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 126 | } | 173 | 224 | return narrow_integral || multiply_may_overflow; | 174 | 224 | } | 175 | 0 | return false; | 176 | 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 | 123 | 234 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 234 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 234 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 234 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 234 | using FromFieldType = typename FromDataType::FieldType; | 133 | 234 | using ToFieldType = typename ToDataType::FieldType; | 134 | 234 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 234 | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 234 | UInt32 to_max_digits = 0; | 146 | 234 | UInt32 to_precision = 0; | 147 | 234 | UInt32 to_scale = 0; | 148 | | | 149 | 234 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 234 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 234 | const auto* to_decimal_type = | 153 | 234 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 234 | to_precision = to_decimal_type->get_precision(); | 155 | 234 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 234 | to_scale = to_decimal_type->get_scale(); | 158 | 234 | ToDataType::check_type_scale(to_scale); | 159 | 234 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 234 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 234 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 234 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 234 | if (to_scale > from_scale) { | 170 | 124 | multiply_may_overflow &= | 171 | 124 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 124 | } | 173 | 234 | return narrow_integral || multiply_may_overflow; | 174 | 234 | } | 175 | 0 | return false; | 176 | 234 | }); |
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 | 123 | 567 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 567 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 567 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 567 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 567 | using FromFieldType = typename FromDataType::FieldType; | 133 | 567 | using ToFieldType = typename ToDataType::FieldType; | 134 | 567 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 567 | UInt32 from_scale = 0; | 136 | | | 137 | 567 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 567 | const auto* from_decimal_type = | 139 | 567 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 567 | from_precision = | 141 | 567 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 567 | from_scale = from_decimal_type->get_scale(); | 143 | 567 | } | 144 | | | 145 | 567 | UInt32 to_max_digits = 0; | 146 | 567 | UInt32 to_precision = 0; | 147 | 567 | UInt32 to_scale = 0; | 148 | | | 149 | 567 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 567 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 567 | const auto* to_decimal_type = | 153 | 567 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 567 | to_precision = to_decimal_type->get_precision(); | 155 | 567 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 567 | to_scale = to_decimal_type->get_scale(); | 158 | 567 | ToDataType::check_type_scale(to_scale); | 159 | 567 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 567 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 567 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 567 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 567 | if (to_scale > from_scale) { | 170 | 499 | multiply_may_overflow &= | 171 | 499 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 499 | } | 173 | 567 | return narrow_integral || multiply_may_overflow; | 174 | 567 | } | 175 | 0 | return false; | 176 | 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 | 123 | 919 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 919 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 919 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 919 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 919 | using FromFieldType = typename FromDataType::FieldType; | 133 | 919 | using ToFieldType = typename ToDataType::FieldType; | 134 | 919 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 919 | UInt32 from_scale = 0; | 136 | | | 137 | 919 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 919 | const auto* from_decimal_type = | 139 | 919 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 919 | from_precision = | 141 | 919 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 919 | from_scale = from_decimal_type->get_scale(); | 143 | 919 | } | 144 | | | 145 | 919 | UInt32 to_max_digits = 0; | 146 | 919 | UInt32 to_precision = 0; | 147 | 919 | UInt32 to_scale = 0; | 148 | | | 149 | 919 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 919 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 919 | const auto* to_decimal_type = | 153 | 919 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 919 | to_precision = to_decimal_type->get_precision(); | 155 | 919 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 919 | to_scale = to_decimal_type->get_scale(); | 158 | 919 | ToDataType::check_type_scale(to_scale); | 159 | 919 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 919 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 919 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 919 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 919 | if (to_scale > from_scale) { | 170 | 792 | multiply_may_overflow &= | 171 | 792 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 792 | } | 173 | 919 | return narrow_integral || multiply_may_overflow; | 174 | 919 | } | 175 | 0 | return false; | 176 | 919 | }); |
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 | 123 | 148 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 148 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 148 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 148 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 148 | using FromFieldType = typename FromDataType::FieldType; | 133 | 148 | using ToFieldType = typename ToDataType::FieldType; | 134 | 148 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 148 | UInt32 from_scale = 0; | 136 | | | 137 | 148 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 148 | const auto* from_decimal_type = | 139 | 148 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 148 | from_precision = | 141 | 148 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 148 | from_scale = from_decimal_type->get_scale(); | 143 | 148 | } | 144 | | | 145 | 148 | UInt32 to_max_digits = 0; | 146 | 148 | UInt32 to_precision = 0; | 147 | 148 | UInt32 to_scale = 0; | 148 | | | 149 | 148 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 148 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 148 | const auto* to_decimal_type = | 153 | 148 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 148 | to_precision = to_decimal_type->get_precision(); | 155 | 148 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 148 | to_scale = to_decimal_type->get_scale(); | 158 | 148 | ToDataType::check_type_scale(to_scale); | 159 | 148 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 148 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 148 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 148 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 148 | if (to_scale > from_scale) { | 170 | 84 | multiply_may_overflow &= | 171 | 84 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 84 | } | 173 | 148 | return narrow_integral || multiply_may_overflow; | 174 | 148 | } | 175 | 0 | return false; | 176 | 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 | 123 | 1.19k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1.19k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1.19k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 1.19k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 1.19k | using FromFieldType = typename FromDataType::FieldType; | 133 | 1.19k | using ToFieldType = typename ToDataType::FieldType; | 134 | 1.19k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 1.19k | UInt32 from_scale = 0; | 136 | | | 137 | 1.19k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 1.19k | const auto* from_decimal_type = | 139 | 1.19k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 1.19k | from_precision = | 141 | 1.19k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 1.19k | from_scale = from_decimal_type->get_scale(); | 143 | 1.19k | } | 144 | | | 145 | 1.19k | UInt32 to_max_digits = 0; | 146 | 1.19k | UInt32 to_precision = 0; | 147 | 1.19k | UInt32 to_scale = 0; | 148 | | | 149 | 1.19k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 1.19k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 1.19k | const auto* to_decimal_type = | 153 | 1.19k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 1.19k | to_precision = to_decimal_type->get_precision(); | 155 | 1.19k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 1.19k | to_scale = to_decimal_type->get_scale(); | 158 | 1.19k | ToDataType::check_type_scale(to_scale); | 159 | 1.19k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 1.19k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 1.19k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 1.19k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 1.19k | if (to_scale > from_scale) { | 170 | 738 | multiply_may_overflow &= | 171 | 738 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 738 | } | 173 | 1.19k | return narrow_integral || multiply_may_overflow; | 174 | 1.19k | } | 175 | 0 | return false; | 176 | 1.19k | }); |
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 | 123 | 925 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 925 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 925 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 925 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 925 | using FromFieldType = typename FromDataType::FieldType; | 133 | 925 | using ToFieldType = typename ToDataType::FieldType; | 134 | 925 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 925 | UInt32 from_scale = 0; | 136 | | | 137 | 925 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 925 | const auto* from_decimal_type = | 139 | 925 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 925 | from_precision = | 141 | 925 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 925 | from_scale = from_decimal_type->get_scale(); | 143 | 925 | } | 144 | | | 145 | 925 | UInt32 to_max_digits = 0; | 146 | 925 | UInt32 to_precision = 0; | 147 | 925 | UInt32 to_scale = 0; | 148 | | | 149 | 925 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 925 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 925 | const auto* to_decimal_type = | 153 | 925 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 925 | to_precision = to_decimal_type->get_precision(); | 155 | 925 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 925 | to_scale = to_decimal_type->get_scale(); | 158 | 925 | ToDataType::check_type_scale(to_scale); | 159 | 925 | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 925 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 925 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 925 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 925 | if (to_scale > from_scale) { | 170 | 451 | multiply_may_overflow &= | 171 | 451 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 451 | } | 173 | 925 | return narrow_integral || multiply_may_overflow; | 174 | 925 | } | 175 | 0 | return false; | 176 | 925 | }); |
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 | 123 | 5.67k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 5.67k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 5.67k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 5.67k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 5.67k | return false; | 130 | 5.67k | } | 131 | 5.67k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 5.67k | using FromFieldType = typename FromDataType::FieldType; | 133 | 5.67k | using ToFieldType = typename ToDataType::FieldType; | 134 | 5.67k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 5.67k | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | 5.67k | UInt32 to_max_digits = 0; | 146 | 5.67k | UInt32 to_precision = 0; | 147 | 5.67k | UInt32 to_scale = 0; | 148 | | | 149 | 5.67k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 5.67k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 5.67k | const auto* to_decimal_type = | 153 | 5.67k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 5.67k | to_precision = to_decimal_type->get_precision(); | 155 | 5.67k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 5.67k | to_scale = to_decimal_type->get_scale(); | 158 | 5.67k | ToDataType::check_type_scale(to_scale); | 159 | 5.67k | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 5.67k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 5.67k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 5.67k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 5.67k | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 5.67k | return narrow_integral || multiply_may_overflow; | 174 | 5.67k | } | 175 | 0 | return false; | 176 | 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 | 123 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1 | return false; | 176 | 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 | 123 | 3 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 3 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 3 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 3 | return false; | 176 | 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 | 123 | 28 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 28 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 28 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 28 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 28 | return false; | 130 | 28 | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 28 | return false; | 176 | 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 | 123 | 10 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 10 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 10 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 10 | return false; | 176 | 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 | 123 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7 | return false; | 176 | 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 | 123 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7 | return false; | 176 | 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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 2 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 2 | using FromFieldType = typename FromDataType::FieldType; | 133 | 2 | using ToFieldType = typename ToDataType::FieldType; | 134 | 2 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 2 | UInt32 from_scale = 0; | 136 | | | 137 | 2 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 2 | const auto* from_decimal_type = | 139 | 2 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 2 | from_precision = | 141 | 2 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 2 | from_scale = from_decimal_type->get_scale(); | 143 | 2 | } | 144 | | | 145 | 2 | UInt32 to_max_digits = 0; | 146 | 2 | UInt32 to_precision = 0; | 147 | 2 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 2 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 2 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 2 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 2 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 2 | return narrow_integral || multiply_may_overflow; | 174 | 2 | } | 175 | 0 | return false; | 176 | 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 | 123 | 81 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 81 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 81 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 81 | return false; | 176 | 81 | }); |
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 | 123 | 220 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 220 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 220 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 220 | return false; | 176 | 220 | }); |
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 | 123 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 1 | return false; | 176 | 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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 2 | return false; | 176 | 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 | 123 | 5.84k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 5.84k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 5.84k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 5.84k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 5.84k | return false; | 130 | 5.84k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 5.84k | return false; | 176 | 5.84k | }); |
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 | 123 | 13 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 13 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 13 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 13 | return false; | 176 | 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 | 123 | 33 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 33 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 33 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 33 | return false; | 176 | 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 | 123 | 12 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 12 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 12 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 12 | return false; | 176 | 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 | 123 | 12 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 12 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 12 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 12 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 12 | using FromFieldType = typename FromDataType::FieldType; | 133 | 12 | using ToFieldType = typename ToDataType::FieldType; | 134 | 12 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 12 | UInt32 from_scale = 0; | 136 | | | 137 | 12 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 12 | const auto* from_decimal_type = | 139 | 12 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 12 | from_precision = | 141 | 12 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 12 | from_scale = from_decimal_type->get_scale(); | 143 | 12 | } | 144 | | | 145 | 12 | UInt32 to_max_digits = 0; | 146 | 12 | UInt32 to_precision = 0; | 147 | 12 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 12 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 12 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 12 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 12 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 12 | return narrow_integral || multiply_may_overflow; | 174 | 12 | } | 175 | 0 | return false; | 176 | 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 | 123 | 4 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 4 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 4 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 4 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 4 | using FromFieldType = typename FromDataType::FieldType; | 133 | 4 | using ToFieldType = typename ToDataType::FieldType; | 134 | 4 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 4 | UInt32 from_scale = 0; | 136 | | | 137 | 4 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 4 | const auto* from_decimal_type = | 139 | 4 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 4 | from_precision = | 141 | 4 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 4 | from_scale = from_decimal_type->get_scale(); | 143 | 4 | } | 144 | | | 145 | 4 | UInt32 to_max_digits = 0; | 146 | 4 | UInt32 to_precision = 0; | 147 | 4 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 4 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 4 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 4 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 4 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 4 | return narrow_integral || multiply_may_overflow; | 174 | 4 | } | 175 | 0 | return false; | 176 | 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 | 123 | 5 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 5 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 5 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 5 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 5 | using FromFieldType = typename FromDataType::FieldType; | 133 | 5 | using ToFieldType = typename ToDataType::FieldType; | 134 | 5 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 5 | UInt32 from_scale = 0; | 136 | | | 137 | 5 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 5 | const auto* from_decimal_type = | 139 | 5 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 5 | from_precision = | 141 | 5 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 5 | from_scale = from_decimal_type->get_scale(); | 143 | 5 | } | 144 | | | 145 | 5 | UInt32 to_max_digits = 0; | 146 | 5 | UInt32 to_precision = 0; | 147 | 5 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | 5 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 5 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 5 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 5 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 5 | return narrow_integral || multiply_may_overflow; | 174 | 5 | } | 175 | 0 | return false; | 176 | 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 | 123 | 412 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 412 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 412 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 412 | return false; | 176 | 412 | }); |
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 | 123 | 243 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 243 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 243 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 243 | return false; | 176 | 243 | }); |
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 | 123 | 92 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 92 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 92 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 92 | return false; | 176 | 92 | }); |
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 | 123 | 6 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 6 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 6 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 6 | return false; | 176 | 6 | }); |
function_cast.cpp:_ZZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ENKUlSG_E_clINSB_INS_19DataTypeTimeStampTzESC_EEEEbSG_ Line | Count | Source | 123 | 43 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 43 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 43 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 43 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 43 | return false; | 130 | 43 | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 43 | return false; | 176 | 43 | }); |
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 | 123 | 3.71k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 3.71k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 3.71k | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 3.71k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 3.71k | return false; | 130 | 3.71k | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 3.71k | return false; | 176 | 3.71k | }); |
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 | 123 | 26 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 26 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 26 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 26 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 26 | return false; | 130 | 26 | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 26 | return false; | 176 | 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 | 123 | 28 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 28 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 28 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 28 | return false; | 176 | 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 | 123 | 21 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 21 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 21 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 21 | return false; | 176 | 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 | 123 | 33 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 33 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 33 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 33 | return false; | 176 | 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 | 123 | 9 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 9 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 9 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 9 | return false; | 176 | 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 | 123 | 3 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 3 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 3 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 3 | return false; | 176 | 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 | 123 | 7 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 7 | return false; | 176 | 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 | 123 | 18 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 18 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 18 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 18 | return false; | 176 | 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 | 123 | 2 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 2 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 2 | using FromFieldType = typename FromDataType::FieldType; | 133 | 2 | using ToFieldType = typename ToDataType::FieldType; | 134 | 2 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 2 | UInt32 from_scale = 0; | 136 | | | 137 | 2 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 2 | const auto* from_decimal_type = | 139 | 2 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 2 | from_precision = | 141 | 2 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 2 | from_scale = from_decimal_type->get_scale(); | 143 | 2 | } | 144 | | | 145 | 2 | UInt32 to_max_digits = 0; | 146 | 2 | UInt32 to_precision = 0; | 147 | 2 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 2 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 2 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 2 | to_precision = to_max_digits; | 163 | 2 | } | 164 | | | 165 | 2 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 2 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 2 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 2 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 2 | return narrow_integral || multiply_may_overflow; | 174 | 2 | } | 175 | 0 | return false; | 176 | 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 | 123 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 1 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 1 | using FromFieldType = typename FromDataType::FieldType; | 133 | 1 | using ToFieldType = typename ToDataType::FieldType; | 134 | 1 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 1 | UInt32 from_scale = 0; | 136 | | | 137 | 1 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 1 | const auto* from_decimal_type = | 139 | 1 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 1 | from_precision = | 141 | 1 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 1 | from_scale = from_decimal_type->get_scale(); | 143 | 1 | } | 144 | | | 145 | 1 | UInt32 to_max_digits = 0; | 146 | 1 | UInt32 to_precision = 0; | 147 | 1 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 1 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 1 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 1 | to_precision = to_max_digits; | 163 | 1 | } | 164 | | | 165 | 1 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 1 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 1 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 1 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 1 | return narrow_integral || multiply_may_overflow; | 174 | 1 | } | 175 | 0 | return false; | 176 | 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 | 123 | 1 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 1 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 1 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 1 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 1 | using FromFieldType = typename FromDataType::FieldType; | 133 | 1 | using ToFieldType = typename ToDataType::FieldType; | 134 | 1 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 1 | UInt32 from_scale = 0; | 136 | | | 137 | 1 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 1 | const auto* from_decimal_type = | 139 | 1 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 1 | from_precision = | 141 | 1 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 1 | from_scale = from_decimal_type->get_scale(); | 143 | 1 | } | 144 | | | 145 | 1 | UInt32 to_max_digits = 0; | 146 | 1 | UInt32 to_precision = 0; | 147 | 1 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 1 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 1 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 1 | to_precision = to_max_digits; | 163 | 1 | } | 164 | | | 165 | 1 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 1 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 1 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 1 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 1 | return narrow_integral || multiply_may_overflow; | 174 | 1 | } | 175 | 0 | return false; | 176 | 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 | 123 | 11 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 11 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 11 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | 11 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 11 | using FromFieldType = typename FromDataType::FieldType; | 133 | 11 | using ToFieldType = typename ToDataType::FieldType; | 134 | 11 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 11 | UInt32 from_scale = 0; | 136 | | | 137 | 11 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 11 | const auto* from_decimal_type = | 139 | 11 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 11 | from_precision = | 141 | 11 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 11 | from_scale = from_decimal_type->get_scale(); | 143 | 11 | } | 144 | | | 145 | 11 | UInt32 to_max_digits = 0; | 146 | 11 | UInt32 to_precision = 0; | 147 | 11 | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | 11 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 11 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 11 | to_precision = to_max_digits; | 163 | 11 | } | 164 | | | 165 | 11 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 11 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 11 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 11 | if (to_scale > from_scale) { | 170 | 0 | multiply_may_overflow &= | 171 | 0 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 0 | } | 173 | 11 | return narrow_integral || multiply_may_overflow; | 174 | 11 | } | 175 | 0 | return false; | 176 | 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 | 123 | 8 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 8 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 8 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 8 | return false; | 176 | 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 | 123 | 19 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 19 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 19 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | | return false; | 130 | | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 19 | return false; | 176 | 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 | 123 | 301 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 301 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 301 | using FromDataType = typename Types2::LeftType; | 126 | | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 301 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 301 | return false; | 130 | 301 | } | 131 | | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | | using FromFieldType = typename FromDataType::FieldType; | 133 | | using ToFieldType = typename ToDataType::FieldType; | 134 | | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | | UInt32 from_scale = 0; | 136 | | | 137 | | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | | const auto* from_decimal_type = | 139 | | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | | from_precision = | 141 | | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | | from_scale = from_decimal_type->get_scale(); | 143 | | } | 144 | | | 145 | | UInt32 to_max_digits = 0; | 146 | | UInt32 to_precision = 0; | 147 | | UInt32 to_scale = 0; | 148 | | | 149 | | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | | const auto* to_decimal_type = | 153 | | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | | to_precision = to_decimal_type->get_precision(); | 155 | | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | | to_scale = to_decimal_type->get_scale(); | 158 | | ToDataType::check_type_scale(to_scale); | 159 | | } | 160 | | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | | to_precision = to_max_digits; | 163 | | } | 164 | | | 165 | | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | | if (to_scale > from_scale) { | 170 | | multiply_may_overflow &= | 171 | | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | | } | 173 | | return narrow_integral || multiply_may_overflow; | 174 | | } | 175 | 301 | return false; | 176 | 301 | }); |
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_ |
177 | 208k | }; function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE2EEEvEEEEbRKT_ Line | Count | Source | 113 | 2.39k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 2.39k | using Types = std::decay_t<decltype(types)>; | 115 | 2.39k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 2.39k | return call_on_index_and_data_type< | 123 | 2.39k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 2.39k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 2.39k | using FromDataType = typename Types2::LeftType; | 126 | 2.39k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 2.39k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 2.39k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 2.39k | return false; | 130 | 2.39k | } | 131 | 2.39k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 2.39k | using FromFieldType = typename FromDataType::FieldType; | 133 | 2.39k | using ToFieldType = typename ToDataType::FieldType; | 134 | 2.39k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 2.39k | UInt32 from_scale = 0; | 136 | | | 137 | 2.39k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 2.39k | const auto* from_decimal_type = | 139 | 2.39k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 2.39k | from_precision = | 141 | 2.39k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 2.39k | from_scale = from_decimal_type->get_scale(); | 143 | 2.39k | } | 144 | | | 145 | 2.39k | UInt32 to_max_digits = 0; | 146 | 2.39k | UInt32 to_precision = 0; | 147 | 2.39k | UInt32 to_scale = 0; | 148 | | | 149 | 2.39k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 2.39k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 2.39k | const auto* to_decimal_type = | 153 | 2.39k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 2.39k | to_precision = to_decimal_type->get_precision(); | 155 | 2.39k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 2.39k | to_scale = to_decimal_type->get_scale(); | 158 | 2.39k | ToDataType::check_type_scale(to_scale); | 159 | 2.39k | } | 160 | 2.39k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 2.39k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 2.39k | to_precision = to_max_digits; | 163 | 2.39k | } | 164 | | | 165 | 2.39k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 2.39k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 2.39k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 2.39k | if (to_scale > from_scale) { | 170 | 2.39k | multiply_may_overflow &= | 171 | 2.39k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 2.39k | } | 173 | 2.39k | return narrow_integral || multiply_may_overflow; | 174 | 2.39k | } | 175 | 2.39k | return false; | 176 | 2.39k | }); | 177 | 2.39k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE3EEEvEEEEbRKT_ Line | Count | Source | 113 | 4.23k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 4.23k | using Types = std::decay_t<decltype(types)>; | 115 | 4.23k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 4.23k | return call_on_index_and_data_type< | 123 | 4.23k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 4.23k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 4.23k | using FromDataType = typename Types2::LeftType; | 126 | 4.23k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 4.23k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 4.23k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 4.23k | return false; | 130 | 4.23k | } | 131 | 4.23k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 4.23k | using FromFieldType = typename FromDataType::FieldType; | 133 | 4.23k | using ToFieldType = typename ToDataType::FieldType; | 134 | 4.23k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 4.23k | UInt32 from_scale = 0; | 136 | | | 137 | 4.23k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 4.23k | const auto* from_decimal_type = | 139 | 4.23k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 4.23k | from_precision = | 141 | 4.23k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 4.23k | from_scale = from_decimal_type->get_scale(); | 143 | 4.23k | } | 144 | | | 145 | 4.23k | UInt32 to_max_digits = 0; | 146 | 4.23k | UInt32 to_precision = 0; | 147 | 4.23k | UInt32 to_scale = 0; | 148 | | | 149 | 4.23k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 4.23k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 4.23k | const auto* to_decimal_type = | 153 | 4.23k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 4.23k | to_precision = to_decimal_type->get_precision(); | 155 | 4.23k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 4.23k | to_scale = to_decimal_type->get_scale(); | 158 | 4.23k | ToDataType::check_type_scale(to_scale); | 159 | 4.23k | } | 160 | 4.23k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 4.23k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 4.23k | to_precision = to_max_digits; | 163 | 4.23k | } | 164 | | | 165 | 4.23k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 4.23k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 4.23k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 4.23k | if (to_scale > from_scale) { | 170 | 4.23k | multiply_may_overflow &= | 171 | 4.23k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 4.23k | } | 173 | 4.23k | return narrow_integral || multiply_may_overflow; | 174 | 4.23k | } | 175 | 4.23k | return false; | 176 | 4.23k | }); | 177 | 4.23k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE4EEEvEEEEbRKT_ Line | Count | Source | 113 | 5.28k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 5.28k | using Types = std::decay_t<decltype(types)>; | 115 | 5.28k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 5.28k | return call_on_index_and_data_type< | 123 | 5.28k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 5.28k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 5.28k | using FromDataType = typename Types2::LeftType; | 126 | 5.28k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 5.28k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 5.28k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 5.28k | return false; | 130 | 5.28k | } | 131 | 5.28k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 5.28k | using FromFieldType = typename FromDataType::FieldType; | 133 | 5.28k | using ToFieldType = typename ToDataType::FieldType; | 134 | 5.28k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 5.28k | UInt32 from_scale = 0; | 136 | | | 137 | 5.28k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 5.28k | const auto* from_decimal_type = | 139 | 5.28k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 5.28k | from_precision = | 141 | 5.28k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 5.28k | from_scale = from_decimal_type->get_scale(); | 143 | 5.28k | } | 144 | | | 145 | 5.28k | UInt32 to_max_digits = 0; | 146 | 5.28k | UInt32 to_precision = 0; | 147 | 5.28k | UInt32 to_scale = 0; | 148 | | | 149 | 5.28k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 5.28k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 5.28k | const auto* to_decimal_type = | 153 | 5.28k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 5.28k | to_precision = to_decimal_type->get_precision(); | 155 | 5.28k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 5.28k | to_scale = to_decimal_type->get_scale(); | 158 | 5.28k | ToDataType::check_type_scale(to_scale); | 159 | 5.28k | } | 160 | 5.28k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 5.28k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 5.28k | to_precision = to_max_digits; | 163 | 5.28k | } | 164 | | | 165 | 5.28k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 5.28k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 5.28k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 5.28k | if (to_scale > from_scale) { | 170 | 5.28k | multiply_may_overflow &= | 171 | 5.28k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 5.28k | } | 173 | 5.28k | return narrow_integral || multiply_may_overflow; | 174 | 5.28k | } | 175 | 5.28k | return false; | 176 | 5.28k | }); | 177 | 5.28k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE5EEEvEEEEbRKT_ Line | Count | Source | 113 | 31.5k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 31.5k | using Types = std::decay_t<decltype(types)>; | 115 | 31.5k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 31.5k | return call_on_index_and_data_type< | 123 | 31.5k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 31.5k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 31.5k | using FromDataType = typename Types2::LeftType; | 126 | 31.5k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 31.5k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 31.5k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 31.5k | return false; | 130 | 31.5k | } | 131 | 31.5k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 31.5k | using FromFieldType = typename FromDataType::FieldType; | 133 | 31.5k | using ToFieldType = typename ToDataType::FieldType; | 134 | 31.5k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 31.5k | UInt32 from_scale = 0; | 136 | | | 137 | 31.5k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 31.5k | const auto* from_decimal_type = | 139 | 31.5k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 31.5k | from_precision = | 141 | 31.5k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 31.5k | from_scale = from_decimal_type->get_scale(); | 143 | 31.5k | } | 144 | | | 145 | 31.5k | UInt32 to_max_digits = 0; | 146 | 31.5k | UInt32 to_precision = 0; | 147 | 31.5k | UInt32 to_scale = 0; | 148 | | | 149 | 31.5k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 31.5k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 31.5k | const auto* to_decimal_type = | 153 | 31.5k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 31.5k | to_precision = to_decimal_type->get_precision(); | 155 | 31.5k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 31.5k | to_scale = to_decimal_type->get_scale(); | 158 | 31.5k | ToDataType::check_type_scale(to_scale); | 159 | 31.5k | } | 160 | 31.5k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 31.5k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 31.5k | to_precision = to_max_digits; | 163 | 31.5k | } | 164 | | | 165 | 31.5k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 31.5k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 31.5k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 31.5k | if (to_scale > from_scale) { | 170 | 31.5k | multiply_may_overflow &= | 171 | 31.5k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 31.5k | } | 173 | 31.5k | return narrow_integral || multiply_may_overflow; | 174 | 31.5k | } | 175 | 31.5k | return false; | 176 | 31.5k | }); | 177 | 31.5k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE6EEEvEEEEbRKT_ Line | Count | Source | 113 | 40.6k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 40.6k | using Types = std::decay_t<decltype(types)>; | 115 | 40.6k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 40.6k | return call_on_index_and_data_type< | 123 | 40.6k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 40.6k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 40.6k | using FromDataType = typename Types2::LeftType; | 126 | 40.6k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 40.6k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 40.6k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 40.6k | return false; | 130 | 40.6k | } | 131 | 40.6k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 40.6k | using FromFieldType = typename FromDataType::FieldType; | 133 | 40.6k | using ToFieldType = typename ToDataType::FieldType; | 134 | 40.6k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 40.6k | UInt32 from_scale = 0; | 136 | | | 137 | 40.6k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 40.6k | const auto* from_decimal_type = | 139 | 40.6k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 40.6k | from_precision = | 141 | 40.6k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 40.6k | from_scale = from_decimal_type->get_scale(); | 143 | 40.6k | } | 144 | | | 145 | 40.6k | UInt32 to_max_digits = 0; | 146 | 40.6k | UInt32 to_precision = 0; | 147 | 40.6k | UInt32 to_scale = 0; | 148 | | | 149 | 40.6k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 40.6k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 40.6k | const auto* to_decimal_type = | 153 | 40.6k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 40.6k | to_precision = to_decimal_type->get_precision(); | 155 | 40.6k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 40.6k | to_scale = to_decimal_type->get_scale(); | 158 | 40.6k | ToDataType::check_type_scale(to_scale); | 159 | 40.6k | } | 160 | 40.6k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 40.6k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 40.6k | to_precision = to_max_digits; | 163 | 40.6k | } | 164 | | | 165 | 40.6k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 40.6k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 40.6k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 40.6k | if (to_scale > from_scale) { | 170 | 40.6k | multiply_may_overflow &= | 171 | 40.6k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 40.6k | } | 173 | 40.6k | return narrow_integral || multiply_may_overflow; | 174 | 40.6k | } | 175 | 40.6k | return false; | 176 | 40.6k | }); | 177 | 40.6k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE7EEEvEEEEbRKT_ Line | Count | Source | 113 | 5.52k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 5.52k | using Types = std::decay_t<decltype(types)>; | 115 | 5.52k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 5.52k | return call_on_index_and_data_type< | 123 | 5.52k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 5.52k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 5.52k | using FromDataType = typename Types2::LeftType; | 126 | 5.52k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 5.52k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 5.52k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 5.52k | return false; | 130 | 5.52k | } | 131 | 5.52k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 5.52k | using FromFieldType = typename FromDataType::FieldType; | 133 | 5.52k | using ToFieldType = typename ToDataType::FieldType; | 134 | 5.52k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 5.52k | UInt32 from_scale = 0; | 136 | | | 137 | 5.52k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 5.52k | const auto* from_decimal_type = | 139 | 5.52k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 5.52k | from_precision = | 141 | 5.52k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 5.52k | from_scale = from_decimal_type->get_scale(); | 143 | 5.52k | } | 144 | | | 145 | 5.52k | UInt32 to_max_digits = 0; | 146 | 5.52k | UInt32 to_precision = 0; | 147 | 5.52k | UInt32 to_scale = 0; | 148 | | | 149 | 5.52k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 5.52k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 5.52k | const auto* to_decimal_type = | 153 | 5.52k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 5.52k | to_precision = to_decimal_type->get_precision(); | 155 | 5.52k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 5.52k | to_scale = to_decimal_type->get_scale(); | 158 | 5.52k | ToDataType::check_type_scale(to_scale); | 159 | 5.52k | } | 160 | 5.52k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 5.52k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 5.52k | to_precision = to_max_digits; | 163 | 5.52k | } | 164 | | | 165 | 5.52k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 5.52k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 5.52k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 5.52k | if (to_scale > from_scale) { | 170 | 5.52k | multiply_may_overflow &= | 171 | 5.52k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 5.52k | } | 173 | 5.52k | return narrow_integral || multiply_may_overflow; | 174 | 5.52k | } | 175 | 5.52k | return false; | 176 | 5.52k | }); | 177 | 5.52k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE8EEEvEEEEbRKT_ Line | Count | Source | 113 | 10.7k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 10.7k | using Types = std::decay_t<decltype(types)>; | 115 | 10.7k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 10.7k | return call_on_index_and_data_type< | 123 | 10.7k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 10.7k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 10.7k | using FromDataType = typename Types2::LeftType; | 126 | 10.7k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 10.7k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 10.7k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 10.7k | return false; | 130 | 10.7k | } | 131 | 10.7k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 10.7k | using FromFieldType = typename FromDataType::FieldType; | 133 | 10.7k | using ToFieldType = typename ToDataType::FieldType; | 134 | 10.7k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 10.7k | UInt32 from_scale = 0; | 136 | | | 137 | 10.7k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 10.7k | const auto* from_decimal_type = | 139 | 10.7k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 10.7k | from_precision = | 141 | 10.7k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 10.7k | from_scale = from_decimal_type->get_scale(); | 143 | 10.7k | } | 144 | | | 145 | 10.7k | UInt32 to_max_digits = 0; | 146 | 10.7k | UInt32 to_precision = 0; | 147 | 10.7k | UInt32 to_scale = 0; | 148 | | | 149 | 10.7k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 10.7k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 10.7k | const auto* to_decimal_type = | 153 | 10.7k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 10.7k | to_precision = to_decimal_type->get_precision(); | 155 | 10.7k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 10.7k | to_scale = to_decimal_type->get_scale(); | 158 | 10.7k | ToDataType::check_type_scale(to_scale); | 159 | 10.7k | } | 160 | 10.7k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 10.7k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 10.7k | to_precision = to_max_digits; | 163 | 10.7k | } | 164 | | | 165 | 10.7k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 10.7k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 10.7k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 10.7k | if (to_scale > from_scale) { | 170 | 10.7k | multiply_may_overflow &= | 171 | 10.7k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 10.7k | } | 173 | 10.7k | return narrow_integral || multiply_may_overflow; | 174 | 10.7k | } | 175 | 10.7k | return false; | 176 | 10.7k | }); | 177 | 10.7k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeNumberILNS_13PrimitiveTypeE9EEEvEEEEbRKT_ Line | Count | Source | 113 | 26.1k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 26.1k | using Types = std::decay_t<decltype(types)>; | 115 | 26.1k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 26.1k | return call_on_index_and_data_type< | 123 | 26.1k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 26.1k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 26.1k | using FromDataType = typename Types2::LeftType; | 126 | 26.1k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 26.1k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 26.1k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 26.1k | return false; | 130 | 26.1k | } | 131 | 26.1k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 26.1k | using FromFieldType = typename FromDataType::FieldType; | 133 | 26.1k | using ToFieldType = typename ToDataType::FieldType; | 134 | 26.1k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 26.1k | UInt32 from_scale = 0; | 136 | | | 137 | 26.1k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 26.1k | const auto* from_decimal_type = | 139 | 26.1k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 26.1k | from_precision = | 141 | 26.1k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 26.1k | from_scale = from_decimal_type->get_scale(); | 143 | 26.1k | } | 144 | | | 145 | 26.1k | UInt32 to_max_digits = 0; | 146 | 26.1k | UInt32 to_precision = 0; | 147 | 26.1k | UInt32 to_scale = 0; | 148 | | | 149 | 26.1k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 26.1k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 26.1k | const auto* to_decimal_type = | 153 | 26.1k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 26.1k | to_precision = to_decimal_type->get_precision(); | 155 | 26.1k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 26.1k | to_scale = to_decimal_type->get_scale(); | 158 | 26.1k | ToDataType::check_type_scale(to_scale); | 159 | 26.1k | } | 160 | 26.1k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 26.1k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 26.1k | to_precision = to_max_digits; | 163 | 26.1k | } | 164 | | | 165 | 26.1k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 26.1k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 26.1k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 26.1k | if (to_scale > from_scale) { | 170 | 26.1k | multiply_may_overflow &= | 171 | 26.1k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 26.1k | } | 173 | 26.1k | return narrow_integral || multiply_may_overflow; | 174 | 26.1k | } | 175 | 26.1k | return false; | 176 | 26.1k | }); | 177 | 26.1k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE28EEEvEEEEbRKT_ Line | Count | Source | 113 | 7.66k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 7.66k | using Types = std::decay_t<decltype(types)>; | 115 | 7.66k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 7.66k | return call_on_index_and_data_type< | 123 | 7.66k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7.66k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7.66k | using FromDataType = typename Types2::LeftType; | 126 | 7.66k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 7.66k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 7.66k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 7.66k | return false; | 130 | 7.66k | } | 131 | 7.66k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 7.66k | using FromFieldType = typename FromDataType::FieldType; | 133 | 7.66k | using ToFieldType = typename ToDataType::FieldType; | 134 | 7.66k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 7.66k | UInt32 from_scale = 0; | 136 | | | 137 | 7.66k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 7.66k | const auto* from_decimal_type = | 139 | 7.66k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 7.66k | from_precision = | 141 | 7.66k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 7.66k | from_scale = from_decimal_type->get_scale(); | 143 | 7.66k | } | 144 | | | 145 | 7.66k | UInt32 to_max_digits = 0; | 146 | 7.66k | UInt32 to_precision = 0; | 147 | 7.66k | UInt32 to_scale = 0; | 148 | | | 149 | 7.66k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 7.66k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 7.66k | const auto* to_decimal_type = | 153 | 7.66k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 7.66k | to_precision = to_decimal_type->get_precision(); | 155 | 7.66k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 7.66k | to_scale = to_decimal_type->get_scale(); | 158 | 7.66k | ToDataType::check_type_scale(to_scale); | 159 | 7.66k | } | 160 | 7.66k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 7.66k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 7.66k | to_precision = to_max_digits; | 163 | 7.66k | } | 164 | | | 165 | 7.66k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 7.66k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 7.66k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 7.66k | if (to_scale > from_scale) { | 170 | 7.66k | multiply_may_overflow &= | 171 | 7.66k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 7.66k | } | 173 | 7.66k | return narrow_integral || multiply_may_overflow; | 174 | 7.66k | } | 175 | 7.66k | return false; | 176 | 7.66k | }); | 177 | 7.66k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE29EEEvEEEEbRKT_ Line | Count | Source | 113 | 11.7k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 11.7k | using Types = std::decay_t<decltype(types)>; | 115 | 11.7k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 11.7k | return call_on_index_and_data_type< | 123 | 11.7k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 11.7k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 11.7k | using FromDataType = typename Types2::LeftType; | 126 | 11.7k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 11.7k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 11.7k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 11.7k | return false; | 130 | 11.7k | } | 131 | 11.7k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 11.7k | using FromFieldType = typename FromDataType::FieldType; | 133 | 11.7k | using ToFieldType = typename ToDataType::FieldType; | 134 | 11.7k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 11.7k | UInt32 from_scale = 0; | 136 | | | 137 | 11.7k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 11.7k | const auto* from_decimal_type = | 139 | 11.7k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 11.7k | from_precision = | 141 | 11.7k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 11.7k | from_scale = from_decimal_type->get_scale(); | 143 | 11.7k | } | 144 | | | 145 | 11.7k | UInt32 to_max_digits = 0; | 146 | 11.7k | UInt32 to_precision = 0; | 147 | 11.7k | UInt32 to_scale = 0; | 148 | | | 149 | 11.7k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 11.7k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 11.7k | const auto* to_decimal_type = | 153 | 11.7k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 11.7k | to_precision = to_decimal_type->get_precision(); | 155 | 11.7k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 11.7k | to_scale = to_decimal_type->get_scale(); | 158 | 11.7k | ToDataType::check_type_scale(to_scale); | 159 | 11.7k | } | 160 | 11.7k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 11.7k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 11.7k | to_precision = to_max_digits; | 163 | 11.7k | } | 164 | | | 165 | 11.7k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 11.7k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 11.7k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 11.7k | if (to_scale > from_scale) { | 170 | 11.7k | multiply_may_overflow &= | 171 | 11.7k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 11.7k | } | 173 | 11.7k | return narrow_integral || multiply_may_overflow; | 174 | 11.7k | } | 175 | 11.7k | return false; | 176 | 11.7k | }); | 177 | 11.7k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE20EEEvEEEEbRKT_ Line | Count | Source | 113 | 229 | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 229 | using Types = std::decay_t<decltype(types)>; | 115 | 229 | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 229 | return call_on_index_and_data_type< | 123 | 229 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 229 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 229 | using FromDataType = typename Types2::LeftType; | 126 | 229 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 229 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 229 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 229 | return false; | 130 | 229 | } | 131 | 229 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 229 | using FromFieldType = typename FromDataType::FieldType; | 133 | 229 | using ToFieldType = typename ToDataType::FieldType; | 134 | 229 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 229 | UInt32 from_scale = 0; | 136 | | | 137 | 229 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 229 | const auto* from_decimal_type = | 139 | 229 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 229 | from_precision = | 141 | 229 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 229 | from_scale = from_decimal_type->get_scale(); | 143 | 229 | } | 144 | | | 145 | 229 | UInt32 to_max_digits = 0; | 146 | 229 | UInt32 to_precision = 0; | 147 | 229 | UInt32 to_scale = 0; | 148 | | | 149 | 229 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 229 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 229 | const auto* to_decimal_type = | 153 | 229 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 229 | to_precision = to_decimal_type->get_precision(); | 155 | 229 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 229 | to_scale = to_decimal_type->get_scale(); | 158 | 229 | ToDataType::check_type_scale(to_scale); | 159 | 229 | } | 160 | 229 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 229 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 229 | to_precision = to_max_digits; | 163 | 229 | } | 164 | | | 165 | 229 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 229 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 229 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 229 | if (to_scale > from_scale) { | 170 | 229 | multiply_may_overflow &= | 171 | 229 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 229 | } | 173 | 229 | return narrow_integral || multiply_may_overflow; | 174 | 229 | } | 175 | 229 | return false; | 176 | 229 | }); | 177 | 229 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE30EEEvEEEEbRKT_ Line | Count | Source | 113 | 12.2k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 12.2k | using Types = std::decay_t<decltype(types)>; | 115 | 12.2k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 12.2k | return call_on_index_and_data_type< | 123 | 12.2k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 12.2k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 12.2k | using FromDataType = typename Types2::LeftType; | 126 | 12.2k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 12.2k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 12.2k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 12.2k | return false; | 130 | 12.2k | } | 131 | 12.2k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 12.2k | using FromFieldType = typename FromDataType::FieldType; | 133 | 12.2k | using ToFieldType = typename ToDataType::FieldType; | 134 | 12.2k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 12.2k | UInt32 from_scale = 0; | 136 | | | 137 | 12.2k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 12.2k | const auto* from_decimal_type = | 139 | 12.2k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 12.2k | from_precision = | 141 | 12.2k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 12.2k | from_scale = from_decimal_type->get_scale(); | 143 | 12.2k | } | 144 | | | 145 | 12.2k | UInt32 to_max_digits = 0; | 146 | 12.2k | UInt32 to_precision = 0; | 147 | 12.2k | UInt32 to_scale = 0; | 148 | | | 149 | 12.2k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 12.2k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 12.2k | const auto* to_decimal_type = | 153 | 12.2k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 12.2k | to_precision = to_decimal_type->get_precision(); | 155 | 12.2k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 12.2k | to_scale = to_decimal_type->get_scale(); | 158 | 12.2k | ToDataType::check_type_scale(to_scale); | 159 | 12.2k | } | 160 | 12.2k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 12.2k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 12.2k | to_precision = to_max_digits; | 163 | 12.2k | } | 164 | | | 165 | 12.2k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 12.2k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 12.2k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 12.2k | if (to_scale > from_scale) { | 170 | 12.2k | multiply_may_overflow &= | 171 | 12.2k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 12.2k | } | 173 | 12.2k | return narrow_integral || multiply_may_overflow; | 174 | 12.2k | } | 175 | 12.2k | return false; | 176 | 12.2k | }); | 177 | 12.2k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_15DataTypeDecimalILNS_13PrimitiveTypeE35EEEvEEEEbRKT_ Line | Count | Source | 113 | 10.7k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 10.7k | using Types = std::decay_t<decltype(types)>; | 115 | 10.7k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 10.7k | return call_on_index_and_data_type< | 123 | 10.7k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 10.7k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 10.7k | using FromDataType = typename Types2::LeftType; | 126 | 10.7k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 10.7k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 10.7k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 10.7k | return false; | 130 | 10.7k | } | 131 | 10.7k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 10.7k | using FromFieldType = typename FromDataType::FieldType; | 133 | 10.7k | using ToFieldType = typename ToDataType::FieldType; | 134 | 10.7k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 10.7k | UInt32 from_scale = 0; | 136 | | | 137 | 10.7k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 10.7k | const auto* from_decimal_type = | 139 | 10.7k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 10.7k | from_precision = | 141 | 10.7k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 10.7k | from_scale = from_decimal_type->get_scale(); | 143 | 10.7k | } | 144 | | | 145 | 10.7k | UInt32 to_max_digits = 0; | 146 | 10.7k | UInt32 to_precision = 0; | 147 | 10.7k | UInt32 to_scale = 0; | 148 | | | 149 | 10.7k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 10.7k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 10.7k | const auto* to_decimal_type = | 153 | 10.7k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 10.7k | to_precision = to_decimal_type->get_precision(); | 155 | 10.7k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 10.7k | to_scale = to_decimal_type->get_scale(); | 158 | 10.7k | ToDataType::check_type_scale(to_scale); | 159 | 10.7k | } | 160 | 10.7k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 10.7k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 10.7k | to_precision = to_max_digits; | 163 | 10.7k | } | 164 | | | 165 | 10.7k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 10.7k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 10.7k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 10.7k | if (to_scale > from_scale) { | 170 | 10.7k | multiply_may_overflow &= | 171 | 10.7k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 10.7k | } | 173 | 10.7k | return narrow_integral || multiply_may_overflow; | 174 | 10.7k | } | 175 | 10.7k | return false; | 176 | 10.7k | }); | 177 | 10.7k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeDateEvEEEEbRKT_ Line | Count | Source | 113 | 32 | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 32 | using Types = std::decay_t<decltype(types)>; | 115 | 32 | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 32 | return call_on_index_and_data_type< | 123 | 32 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 32 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 32 | using FromDataType = typename Types2::LeftType; | 126 | 32 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 32 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 32 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 32 | return false; | 130 | 32 | } | 131 | 32 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 32 | using FromFieldType = typename FromDataType::FieldType; | 133 | 32 | using ToFieldType = typename ToDataType::FieldType; | 134 | 32 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 32 | UInt32 from_scale = 0; | 136 | | | 137 | 32 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 32 | const auto* from_decimal_type = | 139 | 32 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 32 | from_precision = | 141 | 32 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 32 | from_scale = from_decimal_type->get_scale(); | 143 | 32 | } | 144 | | | 145 | 32 | UInt32 to_max_digits = 0; | 146 | 32 | UInt32 to_precision = 0; | 147 | 32 | UInt32 to_scale = 0; | 148 | | | 149 | 32 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 32 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 32 | const auto* to_decimal_type = | 153 | 32 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 32 | to_precision = to_decimal_type->get_precision(); | 155 | 32 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 32 | to_scale = to_decimal_type->get_scale(); | 158 | 32 | ToDataType::check_type_scale(to_scale); | 159 | 32 | } | 160 | 32 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 32 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 32 | to_precision = to_max_digits; | 163 | 32 | } | 164 | | | 165 | 32 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 32 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 32 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 32 | if (to_scale > from_scale) { | 170 | 32 | multiply_may_overflow &= | 171 | 32 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 32 | } | 173 | 32 | return narrow_integral || multiply_may_overflow; | 174 | 32 | } | 175 | 32 | return false; | 176 | 32 | }); | 177 | 32 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeDateV2EvEEEEbRKT_ Line | Count | Source | 113 | 7.09k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 7.09k | using Types = std::decay_t<decltype(types)>; | 115 | 7.09k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 7.09k | return call_on_index_and_data_type< | 123 | 7.09k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 7.09k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 7.09k | using FromDataType = typename Types2::LeftType; | 126 | 7.09k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 7.09k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 7.09k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 7.09k | return false; | 130 | 7.09k | } | 131 | 7.09k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 7.09k | using FromFieldType = typename FromDataType::FieldType; | 133 | 7.09k | using ToFieldType = typename ToDataType::FieldType; | 134 | 7.09k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 7.09k | UInt32 from_scale = 0; | 136 | | | 137 | 7.09k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 7.09k | const auto* from_decimal_type = | 139 | 7.09k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 7.09k | from_precision = | 141 | 7.09k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 7.09k | from_scale = from_decimal_type->get_scale(); | 143 | 7.09k | } | 144 | | | 145 | 7.09k | UInt32 to_max_digits = 0; | 146 | 7.09k | UInt32 to_precision = 0; | 147 | 7.09k | UInt32 to_scale = 0; | 148 | | | 149 | 7.09k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 7.09k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 7.09k | const auto* to_decimal_type = | 153 | 7.09k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 7.09k | to_precision = to_decimal_type->get_precision(); | 155 | 7.09k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 7.09k | to_scale = to_decimal_type->get_scale(); | 158 | 7.09k | ToDataType::check_type_scale(to_scale); | 159 | 7.09k | } | 160 | 7.09k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 7.09k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 7.09k | to_precision = to_max_digits; | 163 | 7.09k | } | 164 | | | 165 | 7.09k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 7.09k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 7.09k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 7.09k | if (to_scale > from_scale) { | 170 | 7.09k | multiply_may_overflow &= | 171 | 7.09k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 7.09k | } | 173 | 7.09k | return narrow_integral || multiply_may_overflow; | 174 | 7.09k | } | 175 | 7.09k | return false; | 176 | 7.09k | }); | 177 | 7.09k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_18DataTypeDateTimeV2EvEEEEbRKT_ Line | Count | Source | 113 | 4.58k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 4.58k | using Types = std::decay_t<decltype(types)>; | 115 | 4.58k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 4.58k | return call_on_index_and_data_type< | 123 | 4.58k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 4.58k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 4.58k | using FromDataType = typename Types2::LeftType; | 126 | 4.58k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 4.58k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 4.58k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 4.58k | return false; | 130 | 4.58k | } | 131 | 4.58k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 4.58k | using FromFieldType = typename FromDataType::FieldType; | 133 | 4.58k | using ToFieldType = typename ToDataType::FieldType; | 134 | 4.58k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 4.58k | UInt32 from_scale = 0; | 136 | | | 137 | 4.58k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 4.58k | const auto* from_decimal_type = | 139 | 4.58k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 4.58k | from_precision = | 141 | 4.58k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 4.58k | from_scale = from_decimal_type->get_scale(); | 143 | 4.58k | } | 144 | | | 145 | 4.58k | UInt32 to_max_digits = 0; | 146 | 4.58k | UInt32 to_precision = 0; | 147 | 4.58k | UInt32 to_scale = 0; | 148 | | | 149 | 4.58k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 4.58k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 4.58k | const auto* to_decimal_type = | 153 | 4.58k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 4.58k | to_precision = to_decimal_type->get_precision(); | 155 | 4.58k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 4.58k | to_scale = to_decimal_type->get_scale(); | 158 | 4.58k | ToDataType::check_type_scale(to_scale); | 159 | 4.58k | } | 160 | 4.58k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 4.58k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 4.58k | to_precision = to_max_digits; | 163 | 4.58k | } | 164 | | | 165 | 4.58k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 4.58k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 4.58k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 4.58k | if (to_scale > from_scale) { | 170 | 4.58k | multiply_may_overflow &= | 171 | 4.58k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 4.58k | } | 173 | 4.58k | return narrow_integral || multiply_may_overflow; | 174 | 4.58k | } | 175 | 4.58k | return false; | 176 | 4.58k | }); | 177 | 4.58k | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_16DataTypeDateTimeEvEEEEbRKT_ Line | Count | Source | 113 | 26 | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 26 | using Types = std::decay_t<decltype(types)>; | 115 | 26 | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 26 | return call_on_index_and_data_type< | 123 | 26 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 26 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 26 | using FromDataType = typename Types2::LeftType; | 126 | 26 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 26 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 26 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 26 | return false; | 130 | 26 | } | 131 | 26 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 26 | using FromFieldType = typename FromDataType::FieldType; | 133 | 26 | using ToFieldType = typename ToDataType::FieldType; | 134 | 26 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 26 | UInt32 from_scale = 0; | 136 | | | 137 | 26 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 26 | const auto* from_decimal_type = | 139 | 26 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 26 | from_precision = | 141 | 26 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 26 | from_scale = from_decimal_type->get_scale(); | 143 | 26 | } | 144 | | | 145 | 26 | UInt32 to_max_digits = 0; | 146 | 26 | UInt32 to_precision = 0; | 147 | 26 | UInt32 to_scale = 0; | 148 | | | 149 | 26 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 26 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 26 | const auto* to_decimal_type = | 153 | 26 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 26 | to_precision = to_decimal_type->get_precision(); | 155 | 26 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 26 | to_scale = to_decimal_type->get_scale(); | 158 | 26 | ToDataType::check_type_scale(to_scale); | 159 | 26 | } | 160 | 26 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 26 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 26 | to_precision = to_max_digits; | 163 | 26 | } | 164 | | | 165 | 26 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 26 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 26 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 26 | if (to_scale > from_scale) { | 170 | 26 | multiply_may_overflow &= | 171 | 26 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 26 | } | 173 | 26 | return narrow_integral || multiply_may_overflow; | 174 | 26 | } | 175 | 26 | return false; | 176 | 26 | }); | 177 | 26 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeTimeV2EvEEEEbRKT_ Line | Count | Source | 113 | 462 | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 462 | using Types = std::decay_t<decltype(types)>; | 115 | 462 | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | | return false; | 121 | | } | 122 | 462 | return call_on_index_and_data_type< | 123 | 462 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 462 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 462 | using FromDataType = typename Types2::LeftType; | 126 | 462 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 462 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 462 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 462 | return false; | 130 | 462 | } | 131 | 462 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 462 | using FromFieldType = typename FromDataType::FieldType; | 133 | 462 | using ToFieldType = typename ToDataType::FieldType; | 134 | 462 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 462 | UInt32 from_scale = 0; | 136 | | | 137 | 462 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 462 | const auto* from_decimal_type = | 139 | 462 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 462 | from_precision = | 141 | 462 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 462 | from_scale = from_decimal_type->get_scale(); | 143 | 462 | } | 144 | | | 145 | 462 | UInt32 to_max_digits = 0; | 146 | 462 | UInt32 to_precision = 0; | 147 | 462 | UInt32 to_scale = 0; | 148 | | | 149 | 462 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 462 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 462 | const auto* to_decimal_type = | 153 | 462 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 462 | to_precision = to_decimal_type->get_precision(); | 155 | 462 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 462 | to_scale = to_decimal_type->get_scale(); | 158 | 462 | ToDataType::check_type_scale(to_scale); | 159 | 462 | } | 160 | 462 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 462 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 462 | to_precision = to_max_digits; | 163 | 462 | } | 164 | | | 165 | 462 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 462 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 462 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 462 | if (to_scale > from_scale) { | 170 | 462 | multiply_may_overflow &= | 171 | 462 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 462 | } | 173 | 462 | return narrow_integral || multiply_may_overflow; | 174 | 462 | } | 175 | 462 | return false; | 176 | 462 | }); | 177 | 462 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_19DataTypeTimeStampTzEvEEEEbRKT_ Line | Count | Source | 113 | 590 | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 590 | using Types = std::decay_t<decltype(types)>; | 115 | 590 | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | 590 | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | 590 | return false; | 121 | 590 | } | 122 | 0 | return call_on_index_and_data_type< | 123 | 590 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 590 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 590 | using FromDataType = typename Types2::LeftType; | 126 | 590 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 590 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 590 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 590 | return false; | 130 | 590 | } | 131 | 590 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 590 | using FromFieldType = typename FromDataType::FieldType; | 133 | 590 | using ToFieldType = typename ToDataType::FieldType; | 134 | 590 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 590 | UInt32 from_scale = 0; | 136 | | | 137 | 590 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 590 | const auto* from_decimal_type = | 139 | 590 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 590 | from_precision = | 141 | 590 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 590 | from_scale = from_decimal_type->get_scale(); | 143 | 590 | } | 144 | | | 145 | 590 | UInt32 to_max_digits = 0; | 146 | 590 | UInt32 to_precision = 0; | 147 | 590 | UInt32 to_scale = 0; | 148 | | | 149 | 590 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 590 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 590 | const auto* to_decimal_type = | 153 | 590 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 590 | to_precision = to_decimal_type->get_precision(); | 155 | 590 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 590 | to_scale = to_decimal_type->get_scale(); | 158 | 590 | ToDataType::check_type_scale(to_scale); | 159 | 590 | } | 160 | 590 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 590 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 590 | to_precision = to_max_digits; | 163 | 590 | } | 164 | | | 165 | 590 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 590 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 590 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 590 | if (to_scale > from_scale) { | 170 | 590 | multiply_may_overflow &= | 171 | 590 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 590 | } | 173 | 590 | return narrow_integral || multiply_may_overflow; | 174 | 590 | } | 175 | 590 | return false; | 176 | 590 | }); | 177 | 590 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv4EvEEEEbRKT_ Line | Count | Source | 113 | 276 | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 276 | using Types = std::decay_t<decltype(types)>; | 115 | 276 | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | 276 | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | 276 | return false; | 121 | 276 | } | 122 | 0 | return call_on_index_and_data_type< | 123 | 276 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 276 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 276 | using FromDataType = typename Types2::LeftType; | 126 | 276 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 276 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 276 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 276 | return false; | 130 | 276 | } | 131 | 276 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 276 | using FromFieldType = typename FromDataType::FieldType; | 133 | 276 | using ToFieldType = typename ToDataType::FieldType; | 134 | 276 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 276 | UInt32 from_scale = 0; | 136 | | | 137 | 276 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 276 | const auto* from_decimal_type = | 139 | 276 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 276 | from_precision = | 141 | 276 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 276 | from_scale = from_decimal_type->get_scale(); | 143 | 276 | } | 144 | | | 145 | 276 | UInt32 to_max_digits = 0; | 146 | 276 | UInt32 to_precision = 0; | 147 | 276 | UInt32 to_scale = 0; | 148 | | | 149 | 276 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 276 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 276 | const auto* to_decimal_type = | 153 | 276 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 276 | to_precision = to_decimal_type->get_precision(); | 155 | 276 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 276 | to_scale = to_decimal_type->get_scale(); | 158 | 276 | ToDataType::check_type_scale(to_scale); | 159 | 276 | } | 160 | 276 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 276 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 276 | to_precision = to_max_digits; | 163 | 276 | } | 164 | | | 165 | 276 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 276 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 276 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 276 | if (to_scale > from_scale) { | 170 | 276 | multiply_may_overflow &= | 171 | 276 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 276 | } | 173 | 276 | return narrow_integral || multiply_may_overflow; | 174 | 276 | } | 175 | 276 | return false; | 176 | 276 | }); | 177 | 276 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_12DataTypeIPv6EvEEEEbRKT_ Line | Count | Source | 113 | 136 | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 136 | using Types = std::decay_t<decltype(types)>; | 115 | 136 | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | 136 | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | 136 | return false; | 121 | 136 | } | 122 | 0 | return call_on_index_and_data_type< | 123 | 136 | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 136 | using Types2 = std::decay_t<decltype(types2)>; | 125 | 136 | using FromDataType = typename Types2::LeftType; | 126 | 136 | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 136 | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 136 | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 136 | return false; | 130 | 136 | } | 131 | 136 | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 136 | using FromFieldType = typename FromDataType::FieldType; | 133 | 136 | using ToFieldType = typename ToDataType::FieldType; | 134 | 136 | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 136 | UInt32 from_scale = 0; | 136 | | | 137 | 136 | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 136 | const auto* from_decimal_type = | 139 | 136 | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 136 | from_precision = | 141 | 136 | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 136 | from_scale = from_decimal_type->get_scale(); | 143 | 136 | } | 144 | | | 145 | 136 | UInt32 to_max_digits = 0; | 146 | 136 | UInt32 to_precision = 0; | 147 | 136 | UInt32 to_scale = 0; | 148 | | | 149 | 136 | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 136 | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 136 | const auto* to_decimal_type = | 153 | 136 | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 136 | to_precision = to_decimal_type->get_precision(); | 155 | 136 | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 136 | to_scale = to_decimal_type->get_scale(); | 158 | 136 | ToDataType::check_type_scale(to_scale); | 159 | 136 | } | 160 | 136 | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 136 | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 136 | to_precision = to_max_digits; | 163 | 136 | } | 164 | | | 165 | 136 | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 136 | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 136 | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 136 | if (to_scale > from_scale) { | 170 | 136 | multiply_may_overflow &= | 171 | 136 | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 136 | } | 173 | 136 | return narrow_integral || multiply_may_overflow; | 174 | 136 | } | 175 | 136 | return false; | 176 | 136 | }); | 177 | 136 | }; |
function_cast.cpp:_ZZN5doris11CastWrapper33need_replace_null_data_to_defaultEPNS_15FunctionContextERKSt10shared_ptrIKNS_9IDataTypeEES8_ENK3$_0clINS_8TypePairINS_14DataTypeStringEvEEEEbRKT_ Line | Count | Source | 113 | 25.9k | auto make_default_wrapper = [&](const auto& types) -> bool { | 114 | 25.9k | using Types = std::decay_t<decltype(types)>; | 115 | 25.9k | using ToDataType = typename Types::LeftType; | 116 | | | 117 | | if constexpr (!(IsDataTypeDecimalOrNumber<ToDataType> || IsDatelikeV1Types<ToDataType> || | 118 | | IsDatelikeV2Types<ToDataType> || | 119 | 25.9k | std::is_same_v<ToDataType, DataTypeTimeV2>)) { | 120 | 25.9k | return false; | 121 | 25.9k | } | 122 | 0 | return call_on_index_and_data_type< | 123 | 25.9k | ToDataType>(from_type->get_primitive_type(), [&](const auto& types2) -> bool { | 124 | 25.9k | using Types2 = std::decay_t<decltype(types2)>; | 125 | 25.9k | using FromDataType = typename Types2::LeftType; | 126 | 25.9k | if constexpr (!(IsDataTypeDecimalOrNumber<FromDataType> || | 127 | 25.9k | IsDatelikeV1Types<FromDataType> || IsDatelikeV2Types<FromDataType> || | 128 | 25.9k | std::is_same_v<FromDataType, DataTypeTimeV2>)) { | 129 | 25.9k | return false; | 130 | 25.9k | } | 131 | 25.9k | if constexpr (IsDataTypeDecimal<FromDataType> || IsDataTypeDecimal<ToDataType>) { | 132 | 25.9k | using FromFieldType = typename FromDataType::FieldType; | 133 | 25.9k | using ToFieldType = typename ToDataType::FieldType; | 134 | 25.9k | UInt32 from_precision = NumberTraits::max_ascii_len<FromFieldType>(); | 135 | 25.9k | UInt32 from_scale = 0; | 136 | | | 137 | 25.9k | if constexpr (IsDataTypeDecimal<FromDataType>) { | 138 | 25.9k | const auto* from_decimal_type = | 139 | 25.9k | check_and_get_data_type<FromDataType>(from_type.get()); | 140 | 25.9k | from_precision = | 141 | 25.9k | NumberTraits::max_ascii_len<typename FromFieldType::NativeType>(); | 142 | 25.9k | from_scale = from_decimal_type->get_scale(); | 143 | 25.9k | } | 144 | | | 145 | 25.9k | UInt32 to_max_digits = 0; | 146 | 25.9k | UInt32 to_precision = 0; | 147 | 25.9k | UInt32 to_scale = 0; | 148 | | | 149 | 25.9k | if constexpr (IsDataTypeDecimal<ToDataType>) { | 150 | 25.9k | to_max_digits = NumberTraits::max_ascii_len<typename ToFieldType::NativeType>(); | 151 | | | 152 | 25.9k | const auto* to_decimal_type = | 153 | 25.9k | check_and_get_data_type<ToDataType>(to_type.get()); | 154 | 25.9k | to_precision = to_decimal_type->get_precision(); | 155 | 25.9k | ToDataType::check_type_precision(to_precision); | 156 | | | 157 | 25.9k | to_scale = to_decimal_type->get_scale(); | 158 | 25.9k | ToDataType::check_type_scale(to_scale); | 159 | 25.9k | } | 160 | 25.9k | if constexpr (IsIntegralV<ToFieldType> || std::is_floating_point_v<ToFieldType>) { | 161 | 25.9k | to_max_digits = NumberTraits::max_ascii_len<ToFieldType>(); | 162 | 25.9k | to_precision = to_max_digits; | 163 | 25.9k | } | 164 | | | 165 | 25.9k | bool narrow_integral = context->check_overflow_for_decimal() && | 166 | 25.9k | (to_precision - to_scale) <= (from_precision - from_scale); | 167 | | | 168 | 25.9k | bool multiply_may_overflow = context->check_overflow_for_decimal(); | 169 | 25.9k | if (to_scale > from_scale) { | 170 | 25.9k | multiply_may_overflow &= | 171 | 25.9k | (from_precision + to_scale - from_scale) >= to_max_digits; | 172 | 25.9k | } | 173 | 25.9k | return narrow_integral || multiply_may_overflow; | 174 | 25.9k | } | 175 | 25.9k | return false; | 176 | 25.9k | }); | 177 | 25.9k | }; |
|
178 | | |
179 | 282k | return call_on_index_and_data_type<void>(to_type->get_primitive_type(), make_default_wrapper); |
180 | 353k | } |
181 | | |
182 | | WrapperType prepare_remove_nullable(FunctionContext* context, const DataTypePtr& from_type, |
183 | 377k | const DataTypePtr& to_type) { |
184 | | /// Determine whether pre-processing and/or post-processing must take place during conversion. |
185 | 377k | bool result_is_nullable = to_type->is_nullable(); |
186 | | |
187 | 377k | if (result_is_nullable) { |
188 | 353k | return [from_type, to_type](FunctionContext* context, Block& block, |
189 | 353k | const ColumnNumbers& arguments, uint32_t result, |
190 | 353k | size_t input_rows_count, |
191 | 353k | const NullMap::value_type* null_map = nullptr) { |
192 | 353k | auto from_type_not_nullable = remove_nullable(from_type); |
193 | 353k | auto to_type_not_nullable = remove_nullable(to_type); |
194 | | |
195 | 353k | bool replace_null_data_to_default = need_replace_null_data_to_default( |
196 | 353k | context, from_type_not_nullable, to_type_not_nullable); |
197 | | |
198 | 353k | NullableColumnInfo source_info; |
199 | 353k | if (block.get_by_position(arguments[0]).type->is_nullable()) { |
200 | 307k | source_info = block.get_by_position(arguments[0]).get_nullable_column_info(); |
201 | 307k | } |
202 | 353k | auto nested_result_index = block.columns(); |
203 | 353k | const auto& result_column = block.get_by_position(result); |
204 | 353k | block.insert({nullptr, to_type_not_nullable, result_column.name}); |
205 | 353k | auto nested_source_index = block.columns(); |
206 | 353k | if (source_info.is_nullable) { |
207 | 308k | block.insert(block.get_by_position(arguments[0]) |
208 | 308k | .unnest_nullable(source_info, replace_null_data_to_default)); |
209 | 308k | } else { |
210 | 45.4k | block.insert(block.get_by_position(arguments[0])); |
211 | 45.4k | } |
212 | | |
213 | 353k | const NullMap::value_type* arg_null_map = nullptr; |
214 | 353k | if (source_info.is_nullable) { |
215 | 308k | arg_null_map = block.get_by_position(arguments[0]) |
216 | 308k | .get_nullable_null_map_column() |
217 | 308k | ->get_data() |
218 | 308k | .data(); |
219 | 308k | } |
220 | 353k | RETURN_IF_ERROR(prepare_impl(context, from_type_not_nullable, to_type_not_nullable)( |
221 | 353k | context, block, {nested_source_index}, nested_result_index, input_rows_count, |
222 | 353k | arg_null_map)); |
223 | | |
224 | 327k | NullableColumnInfos nullable_column_infos(block.columns()); |
225 | 327k | nullable_column_infos[arguments[0]] = std::move(source_info); |
226 | 327k | block.get_by_position(result).column = |
227 | 327k | wrap_in_nullable(block.get_by_position(nested_result_index).column, block, |
228 | 327k | arguments, nullable_column_infos, input_rows_count); |
229 | | |
230 | 327k | block.erase(nested_source_index); |
231 | 327k | block.erase(nested_result_index); |
232 | 327k | return Status::OK(); |
233 | 353k | }; |
234 | 353k | } else { |
235 | 24.5k | return prepare_impl(context, from_type, to_type); |
236 | 24.5k | } |
237 | 377k | } |
238 | | |
239 | | /// 'from_type' and 'to_type' are nested types in case of Nullable. |
240 | | /// 'requested_result_is_nullable' is true if CAST to Nullable type is requested. |
241 | | // NOLINTNEXTLINE(readability-function-size) |
242 | | WrapperType prepare_impl(FunctionContext* context, const DataTypePtr& origin_from_type, |
243 | 391k | const DataTypePtr& origin_to_type) { |
244 | 391k | auto to_type = get_serialized_type(origin_to_type); |
245 | 391k | auto from_type = get_serialized_type(origin_from_type); |
246 | 391k | if (from_type->equals(*to_type)) { |
247 | 77.2k | return create_identity_wrapper(from_type); |
248 | 77.2k | } |
249 | | |
250 | 314k | const auto* from_variant_v1 = |
251 | 314k | dynamic_cast<const DataTypeVariant*>(remove_nullable(from_type).get()); |
252 | 314k | const auto* to_variant_v1 = |
253 | 314k | dynamic_cast<const DataTypeVariant*>(remove_nullable(to_type).get()); |
254 | 314k | const auto* from_variant_v2 = |
255 | 314k | dynamic_cast<const DataTypeVariantV2*>(remove_nullable(from_type).get()); |
256 | 314k | const auto* to_variant_v2 = |
257 | 314k | dynamic_cast<const DataTypeVariantV2*>(remove_nullable(to_type).get()); |
258 | 314k | if ((from_variant_v1 != nullptr && to_variant_v2 != nullptr) || |
259 | 314k | (from_variant_v2 != nullptr && to_variant_v1 != nullptr)) { |
260 | 0 | return CastWrapper::create_unsupport_wrapper( |
261 | 0 | "Cast between legacy Variant and compute-only Variant V2 is not supported"); |
262 | 0 | } |
263 | | |
264 | | // variant needs to be judged first |
265 | 314k | if (to_type->get_primitive_type() == PrimitiveType::TYPE_VARIANT) { |
266 | 5.34k | if (to_variant_v2 != nullptr) { |
267 | 8 | return create_cast_to_variant_v2_wrapper(from_type); |
268 | 8 | } |
269 | 5.33k | DORIS_CHECK(to_variant_v1 != nullptr); |
270 | 5.33k | return create_cast_to_variant_wrapper(from_type, *to_variant_v1); |
271 | 5.34k | } |
272 | 309k | if (from_type->get_primitive_type() == PrimitiveType::TYPE_VARIANT) { |
273 | 15.2k | if (from_variant_v2 != nullptr) { |
274 | 0 | auto wrapper = create_cast_from_variant_v2_wrapper(to_type); |
275 | 0 | return [wrapper = std::move(wrapper)]( |
276 | 0 | FunctionContext* context, Block& block, const ColumnNumbers& arguments, |
277 | 0 | uint32_t result, size_t rows, const NullMap::value_type* null_map) { |
278 | 0 | RETURN_IF_ERROR(wrapper(context, block, arguments, result, rows, null_map)); |
279 | 0 | auto& result_column = block.get_by_position(result).column; |
280 | 0 | if (null_map == nullptr) { |
281 | 0 | const auto* nullable = check_and_get_column<ColumnNullable>(*result_column); |
282 | 0 | if (nullable != nullptr && !nullable->has_null()) { |
283 | 0 | result_column = nullable->get_nested_column_ptr(); |
284 | 0 | } |
285 | 0 | } |
286 | 0 | return Status::OK(); |
287 | 0 | }; |
288 | 0 | } |
289 | 15.2k | DORIS_CHECK(from_variant_v1 != nullptr); |
290 | 15.2k | return create_cast_from_variant_wrapper(*from_variant_v1, to_type); |
291 | 15.2k | } |
292 | | |
293 | 293k | if (from_type->get_primitive_type() == PrimitiveType::TYPE_JSONB) { |
294 | 9.30k | return create_cast_from_jsonb_wrapper(static_cast<const DataTypeJsonb&>(*from_type), |
295 | 9.30k | to_type, |
296 | 9.30k | context ? context->jsonb_string_as_string() : false); |
297 | 9.30k | } |
298 | | |
299 | 284k | switch (to_type->get_primitive_type()) { |
300 | 1.00k | case PrimitiveType::TYPE_BOOLEAN: |
301 | 1.00k | return create_boolean_wrapper(context, from_type); |
302 | 4.33k | case PrimitiveType::TYPE_TINYINT: |
303 | 9.58k | case PrimitiveType::TYPE_SMALLINT: |
304 | 39.6k | case PrimitiveType::TYPE_INT: |
305 | 86.7k | case PrimitiveType::TYPE_BIGINT: |
306 | 91.8k | case PrimitiveType::TYPE_LARGEINT: |
307 | 91.8k | return create_int_wrapper(context, from_type, to_type->get_primitive_type()); |
308 | 10.9k | case PrimitiveType::TYPE_FLOAT: |
309 | 36.7k | case PrimitiveType::TYPE_DOUBLE: |
310 | 36.7k | return create_float_wrapper(context, from_type, to_type->get_primitive_type()); |
311 | 32 | case PrimitiveType::TYPE_DATE: |
312 | 58 | case PrimitiveType::TYPE_DATETIME: |
313 | 7.28k | case PrimitiveType::TYPE_DATEV2: |
314 | 12.2k | case PrimitiveType::TYPE_DATETIMEV2: |
315 | 12.7k | case PrimitiveType::TYPE_TIMEV2: |
316 | 12.7k | return create_datelike_wrapper(context, from_type, to_type->get_primitive_type()); |
317 | 581 | case PrimitiveType::TYPE_TIMESTAMPTZ: |
318 | 581 | return create_timestamptz_wrapper(context, from_type); |
319 | 276 | case PrimitiveType::TYPE_IPV4: |
320 | 416 | case PrimitiveType::TYPE_IPV6: |
321 | 416 | return create_ip_wrapper(context, from_type, to_type->get_primitive_type()); |
322 | 293 | case PrimitiveType::TYPE_DECIMALV2: |
323 | 8.05k | case PrimitiveType::TYPE_DECIMAL32: |
324 | 23.6k | case PrimitiveType::TYPE_DECIMAL64: |
325 | 37.3k | case PrimitiveType::TYPE_DECIMAL128I: |
326 | 48.2k | case PrimitiveType::TYPE_DECIMAL256: |
327 | 48.2k | return create_decimal_wrapper(context, from_type, to_type->get_primitive_type()); |
328 | 19 | case PrimitiveType::TYPE_CHAR: |
329 | 4.41k | case PrimitiveType::TYPE_VARCHAR: |
330 | 22.7k | case PrimitiveType::TYPE_STRING: |
331 | 22.7k | return create_string_wrapper(from_type); |
332 | 6.97k | case PrimitiveType::TYPE_ARRAY: |
333 | 6.97k | return create_array_wrapper(context, from_type, |
334 | 6.97k | static_cast<const DataTypeArray&>(*to_type)); |
335 | 1.93k | case PrimitiveType::TYPE_STRUCT: |
336 | 1.93k | return create_struct_wrapper(context, from_type, |
337 | 1.93k | static_cast<const DataTypeStruct&>(*to_type)); |
338 | 1.30k | case PrimitiveType::TYPE_MAP: |
339 | 1.30k | return create_map_wrapper(context, from_type, static_cast<const DataTypeMap&>(*to_type)); |
340 | 0 | case PrimitiveType::TYPE_HLL: |
341 | 0 | return create_hll_wrapper(context, from_type, static_cast<const DataTypeHLL&>(*to_type)); |
342 | 1 | case PrimitiveType::TYPE_BITMAP: |
343 | 1 | return create_bitmap_wrapper(context, from_type, |
344 | 1 | static_cast<const DataTypeBitMap&>(*to_type)); |
345 | 0 | case PrimitiveType::TYPE_QUANTILE_STATE: |
346 | 0 | return create_quantile_state_wrapper(context, from_type, |
347 | 0 | static_cast<const DataTypeQuantileState&>(*to_type)); |
348 | 60.3k | case PrimitiveType::TYPE_JSONB: |
349 | 60.3k | return create_cast_to_jsonb_wrapper(from_type, static_cast<const DataTypeJsonb&>(*to_type), |
350 | 60.3k | context ? context->string_as_jsonb_string() : false); |
351 | 2 | case PrimitiveType::TYPE_VARBINARY: |
352 | 2 | return create_varbinary_wrapper(from_type); |
353 | 0 | default: |
354 | 0 | break; |
355 | 284k | } |
356 | | |
357 | 0 | return create_unsupport_wrapper(from_type->get_name(), to_type->get_name()); |
358 | 284k | } |
359 | | |
360 | | } // namespace CastWrapper |
361 | | |
362 | | class PreparedFunctionCast : public PreparedFunctionImpl { |
363 | | public: |
364 | | explicit PreparedFunctionCast(CastWrapper::WrapperType&& wrapper_function_, const char* name_) |
365 | 366k | : wrapper_function(std::move(wrapper_function_)), name(name_) {} |
366 | | |
367 | 0 | String get_name() const override { return name; } |
368 | | |
369 | | protected: |
370 | | Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments, |
371 | 365k | uint32_t result, size_t input_rows_count) const override { |
372 | 365k | return wrapper_function(context, block, arguments, result, input_rows_count, nullptr); |
373 | 365k | } |
374 | | |
375 | 366k | bool use_default_implementation_for_nulls() const override { return false; } |
376 | 366k | ColumnNumbers get_arguments_that_are_always_constant() const override { return {1}; } |
377 | | |
378 | | private: |
379 | | CastWrapper::WrapperType wrapper_function; |
380 | | const char* name; |
381 | | }; |
382 | | |
383 | | class FunctionCast final : public IFunctionBase { |
384 | | public: |
385 | | FunctionCast(const char* name_, DataTypes argument_types_, DataTypePtr return_type_) |
386 | 272k | : name(name_), |
387 | 272k | argument_types(std::move(argument_types_)), |
388 | 272k | return_type(std::move(return_type_)) {} |
389 | | |
390 | 366k | const DataTypes& get_argument_types() const override { return argument_types; } |
391 | 366k | const DataTypePtr& get_return_type() const override { return return_type; } |
392 | | |
393 | | PreparedFunctionPtr prepare(FunctionContext* context, const Block& /*sample_block*/, |
394 | | const ColumnNumbers& /*arguments*/, |
395 | 366k | uint32_t /*result*/) const override { |
396 | 366k | return std::make_shared<PreparedFunctionCast>( |
397 | 366k | CastWrapper::prepare_unpack_dictionaries(context, get_argument_types()[0], |
398 | 366k | get_return_type()), |
399 | 366k | name); |
400 | 366k | } |
401 | | |
402 | 0 | String get_name() const override { return name; } |
403 | | |
404 | 0 | bool is_use_default_implementation_for_constants() const override { return true; } |
405 | | |
406 | | private: |
407 | | const char* name = nullptr; |
408 | | |
409 | | DataTypes argument_types; |
410 | | DataTypePtr return_type; |
411 | | }; |
412 | | |
413 | | class FunctionBuilderCast : public FunctionBuilderImpl { |
414 | | public: |
415 | | static constexpr auto name = "CAST"; |
416 | 272k | static FunctionBuilderPtr create() { return std::make_shared<FunctionBuilderCast>(); } |
417 | | |
418 | 272k | FunctionBuilderCast() = default; |
419 | | |
420 | 1 | String get_name() const override { return name; } |
421 | | |
422 | 0 | size_t get_number_of_arguments() const override { return 2; } |
423 | | |
424 | 0 | ColumnNumbers get_arguments_that_are_always_constant() const override { return {1}; } |
425 | | |
426 | | protected: |
427 | | FunctionBasePtr build_impl(const ColumnsWithTypeAndName& arguments, |
428 | 272k | const DataTypePtr& return_type) const override { |
429 | 272k | DataTypes data_types(arguments.size()); |
430 | | |
431 | 816k | for (size_t i = 0; i < arguments.size(); ++i) { |
432 | 544k | data_types[i] = arguments[i].type; |
433 | 544k | } |
434 | | |
435 | 272k | return std::make_shared<FunctionCast>(name, data_types, return_type); |
436 | 272k | } |
437 | | |
438 | 271k | bool skip_return_type_check() const override { return true; } |
439 | 0 | DataTypePtr get_return_type_impl(const ColumnsWithTypeAndName& arguments) const override { |
440 | 0 | return nullptr; |
441 | 0 | } |
442 | | |
443 | 0 | bool use_default_implementation_for_nulls() const override { return false; } |
444 | | }; |
445 | | |
446 | 8 | void register_function_cast(SimpleFunctionFactory& factory) { |
447 | 8 | factory.register_function<FunctionBuilderCast>(); |
448 | 8 | } |
449 | | } // namespace doris |