be/src/exprs/vcase_expr.h
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 | | #pragma once |
19 | | |
20 | | #include <string> |
21 | | |
22 | | #include "common/exception.h" |
23 | | #include "common/status.h" |
24 | | #include "core/column/column_array.h" |
25 | | #include "core/column/column_complex.h" |
26 | | #include "core/column/column_const.h" |
27 | | #include "core/column/column_decimal.h" |
28 | | #include "core/column/column_map.h" |
29 | | #include "core/column/column_nullable.h" |
30 | | #include "core/column/column_struct.h" |
31 | | #include "core/column/column_variant.h" |
32 | | #include "core/data_type/define_primitive_type.h" |
33 | | #include "core/data_type/primitive_type.h" |
34 | | #include "exprs/function/function.h" |
35 | | #include "exprs/function_context.h" |
36 | | #include "exprs/vexpr.h" |
37 | | |
38 | | namespace doris { |
39 | | class RowDescriptor; |
40 | | class RuntimeState; |
41 | | class TExprNode; |
42 | | |
43 | | class Block; |
44 | | } // namespace doris |
45 | | |
46 | | namespace doris { |
47 | | |
48 | | class VCaseExpr final : public VExpr { |
49 | | ENABLE_FACTORY_CREATOR(VCaseExpr); |
50 | | |
51 | | public: |
52 | | VCaseExpr(const TExprNode& node); |
53 | | ~VCaseExpr() override = default; |
54 | | Status execute_column(VExprContext* context, const Block* block, Selector* selector, |
55 | | size_t count, ColumnPtr& result_column) const override; |
56 | | Status prepare(RuntimeState* state, const RowDescriptor& desc, VExprContext* context) override; |
57 | | Status open(RuntimeState* state, VExprContext* context, |
58 | | FunctionContext::FunctionStateScope scope) override; |
59 | | void close(VExprContext* context, FunctionContext::FunctionStateScope scope) override; |
60 | | const std::string& expr_name() const override; |
61 | | std::string debug_string() const override; |
62 | | |
63 | | private: |
64 | | template <typename IndexType, typename ColumnType> |
65 | | ColumnPtr _execute_update_result_impl(const IndexType* then_idx, |
66 | | std::vector<ColumnPtr>& then_columns, |
67 | 1.76k | size_t rows_count) const { |
68 | 1.76k | auto result_column_ptr = data_type()->create_column(); |
69 | 1.76k | result_column_ptr->reserve(rows_count); |
70 | | if constexpr (std::is_same_v<ColumnType, ColumnString> || |
71 | | std::is_same_v<ColumnType, ColumnBitmap> || |
72 | | std::is_same_v<ColumnType, ColumnArray> || |
73 | | std::is_same_v<ColumnType, ColumnMap> || |
74 | | std::is_same_v<ColumnType, ColumnStruct> || |
75 | | std::is_same_v<ColumnType, ColumnVariant> || |
76 | | std::is_same_v<ColumnType, ColumnHLL> || |
77 | | std::is_same_v<ColumnType, ColumnQuantileState> || |
78 | | std::is_same_v<ColumnType, ColumnIPv4> || |
79 | 75 | std::is_same_v<ColumnType, ColumnIPv6>) { |
80 | | // result_column and all then_column is not nullable. |
81 | | // can't simd when type is string. |
82 | 75 | if (data_type()->is_nullable()) { |
83 | 24 | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, |
84 | 24 | then_columns, rows_count); |
85 | 51 | } else { |
86 | 51 | update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx, |
87 | 51 | then_columns, rows_count); |
88 | 51 | } |
89 | 1.68k | } else if (data_type()->is_nullable()) { |
90 | | // result_column and all then_column is nullable. |
91 | 15 | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, |
92 | 15 | then_columns, rows_count); |
93 | 1.67k | } else { |
94 | 1.67k | update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx, |
95 | 1.67k | then_columns, rows_count); |
96 | 1.67k | } |
97 | 1.76k | return result_column_ptr; |
98 | 1.76k | } Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_9ColumnStrIjEEEENS_3COWINS_7IColumnEE13immutable_ptrIS5_EEPKT_RSt6vectorIS8_SaIS8_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_11ColumnArrayEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_9ColumnMapEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnStructEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_13ColumnVariantEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Line | Count | Source | 67 | 1.55k | size_t rows_count) const { | 68 | 1.55k | auto result_column_ptr = data_type()->create_column(); | 69 | 1.55k | result_column_ptr->reserve(rows_count); | 70 | | if constexpr (std::is_same_v<ColumnType, ColumnString> || | 71 | | std::is_same_v<ColumnType, ColumnBitmap> || | 72 | | std::is_same_v<ColumnType, ColumnArray> || | 73 | | std::is_same_v<ColumnType, ColumnMap> || | 74 | | std::is_same_v<ColumnType, ColumnStruct> || | 75 | | std::is_same_v<ColumnType, ColumnVariant> || | 76 | | std::is_same_v<ColumnType, ColumnHLL> || | 77 | | std::is_same_v<ColumnType, ColumnQuantileState> || | 78 | | std::is_same_v<ColumnType, ColumnIPv4> || | 79 | | std::is_same_v<ColumnType, ColumnIPv6>) { | 80 | | // result_column and all then_column is not nullable. | 81 | | // can't simd when type is string. | 82 | | if (data_type()->is_nullable()) { | 83 | | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 84 | | then_columns, rows_count); | 85 | | } else { | 86 | | update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx, | 87 | | then_columns, rows_count); | 88 | | } | 89 | 1.55k | } else if (data_type()->is_nullable()) { | 90 | | // result_column and all then_column is nullable. | 91 | 2 | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 92 | 2 | then_columns, rows_count); | 93 | 1.55k | } else { | 94 | 1.55k | update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx, | 95 | 1.55k | then_columns, rows_count); | 96 | 1.55k | } | 97 | 1.55k | return result_column_ptr; | 98 | 1.55k | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Line | Count | Source | 67 | 10 | size_t rows_count) const { | 68 | 10 | auto result_column_ptr = data_type()->create_column(); | 69 | 10 | result_column_ptr->reserve(rows_count); | 70 | | if constexpr (std::is_same_v<ColumnType, ColumnString> || | 71 | | std::is_same_v<ColumnType, ColumnBitmap> || | 72 | | std::is_same_v<ColumnType, ColumnArray> || | 73 | | std::is_same_v<ColumnType, ColumnMap> || | 74 | | std::is_same_v<ColumnType, ColumnStruct> || | 75 | | std::is_same_v<ColumnType, ColumnVariant> || | 76 | | std::is_same_v<ColumnType, ColumnHLL> || | 77 | | std::is_same_v<ColumnType, ColumnQuantileState> || | 78 | | std::is_same_v<ColumnType, ColumnIPv4> || | 79 | | std::is_same_v<ColumnType, ColumnIPv6>) { | 80 | | // result_column and all then_column is not nullable. | 81 | | // can't simd when type is string. | 82 | | if (data_type()->is_nullable()) { | 83 | | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 84 | | then_columns, rows_count); | 85 | | } else { | 86 | | update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx, | 87 | | then_columns, rows_count); | 88 | | } | 89 | 10 | } else if (data_type()->is_nullable()) { | 90 | | // result_column and all then_column is nullable. | 91 | 10 | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 92 | 10 | then_columns, rows_count); | 93 | 10 | } else { | 94 | 0 | update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx, | 95 | 0 | then_columns, rows_count); | 96 | 0 | } | 97 | 10 | return result_column_ptr; | 98 | 10 | } |
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Line | Count | Source | 67 | 118 | size_t rows_count) const { | 68 | 118 | auto result_column_ptr = data_type()->create_column(); | 69 | 118 | result_column_ptr->reserve(rows_count); | 70 | | if constexpr (std::is_same_v<ColumnType, ColumnString> || | 71 | | std::is_same_v<ColumnType, ColumnBitmap> || | 72 | | std::is_same_v<ColumnType, ColumnArray> || | 73 | | std::is_same_v<ColumnType, ColumnMap> || | 74 | | std::is_same_v<ColumnType, ColumnStruct> || | 75 | | std::is_same_v<ColumnType, ColumnVariant> || | 76 | | std::is_same_v<ColumnType, ColumnHLL> || | 77 | | std::is_same_v<ColumnType, ColumnQuantileState> || | 78 | | std::is_same_v<ColumnType, ColumnIPv4> || | 79 | | std::is_same_v<ColumnType, ColumnIPv6>) { | 80 | | // result_column and all then_column is not nullable. | 81 | | // can't simd when type is string. | 82 | | if (data_type()->is_nullable()) { | 83 | | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 84 | | then_columns, rows_count); | 85 | | } else { | 86 | | update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx, | 87 | | then_columns, rows_count); | 88 | | } | 89 | 118 | } else if (data_type()->is_nullable()) { | 90 | | // result_column and all then_column is nullable. | 91 | 0 | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 92 | 0 | then_columns, rows_count); | 93 | 118 | } else { | 94 | 118 | update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx, | 95 | 118 | then_columns, rows_count); | 96 | 118 | } | 97 | 118 | return result_column_ptr; | 98 | 118 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Line | Count | Source | 67 | 3 | size_t rows_count) const { | 68 | 3 | auto result_column_ptr = data_type()->create_column(); | 69 | 3 | result_column_ptr->reserve(rows_count); | 70 | | if constexpr (std::is_same_v<ColumnType, ColumnString> || | 71 | | std::is_same_v<ColumnType, ColumnBitmap> || | 72 | | std::is_same_v<ColumnType, ColumnArray> || | 73 | | std::is_same_v<ColumnType, ColumnMap> || | 74 | | std::is_same_v<ColumnType, ColumnStruct> || | 75 | | std::is_same_v<ColumnType, ColumnVariant> || | 76 | | std::is_same_v<ColumnType, ColumnHLL> || | 77 | | std::is_same_v<ColumnType, ColumnQuantileState> || | 78 | | std::is_same_v<ColumnType, ColumnIPv4> || | 79 | | std::is_same_v<ColumnType, ColumnIPv6>) { | 80 | | // result_column and all then_column is not nullable. | 81 | | // can't simd when type is string. | 82 | | if (data_type()->is_nullable()) { | 83 | | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 84 | | then_columns, rows_count); | 85 | | } else { | 86 | | update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx, | 87 | | then_columns, rows_count); | 88 | | } | 89 | 3 | } else if (data_type()->is_nullable()) { | 90 | | // result_column and all then_column is nullable. | 91 | 3 | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 92 | 3 | then_columns, rows_count); | 93 | 3 | } else { | 94 | 0 | update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx, | 95 | 0 | then_columns, rows_count); | 96 | 0 | } | 97 | 3 | return result_column_ptr; | 98 | 3 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_9ColumnStrIjEEEENS_3COWINS_7IColumnEE13immutable_ptrIS5_EEPKT_RSt6vectorIS8_SaIS8_EEm Line | Count | Source | 67 | 75 | size_t rows_count) const { | 68 | 75 | auto result_column_ptr = data_type()->create_column(); | 69 | 75 | result_column_ptr->reserve(rows_count); | 70 | | if constexpr (std::is_same_v<ColumnType, ColumnString> || | 71 | | std::is_same_v<ColumnType, ColumnBitmap> || | 72 | | std::is_same_v<ColumnType, ColumnArray> || | 73 | | std::is_same_v<ColumnType, ColumnMap> || | 74 | | std::is_same_v<ColumnType, ColumnStruct> || | 75 | | std::is_same_v<ColumnType, ColumnVariant> || | 76 | | std::is_same_v<ColumnType, ColumnHLL> || | 77 | | std::is_same_v<ColumnType, ColumnQuantileState> || | 78 | | std::is_same_v<ColumnType, ColumnIPv4> || | 79 | 75 | std::is_same_v<ColumnType, ColumnIPv6>) { | 80 | | // result_column and all then_column is not nullable. | 81 | | // can't simd when type is string. | 82 | 75 | if (data_type()->is_nullable()) { | 83 | 24 | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 84 | 24 | then_columns, rows_count); | 85 | 51 | } else { | 86 | 51 | update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx, | 87 | 51 | then_columns, rows_count); | 88 | 51 | } | 89 | | } else if (data_type()->is_nullable()) { | 90 | | // result_column and all then_column is nullable. | 91 | | update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx, | 92 | | then_columns, rows_count); | 93 | | } else { | 94 | | update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx, | 95 | | then_columns, rows_count); | 96 | | } | 97 | 75 | return result_column_ptr; | 98 | 75 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_11ColumnArrayEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_9ColumnMapEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnStructEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnVariantEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm |
99 | | |
100 | | template <typename IndexType> |
101 | | ColumnPtr _execute_update_result(const IndexType* then_idx, |
102 | | std::vector<ColumnPtr>& then_columns, |
103 | 1.76k | size_t rows_count) const { |
104 | 1.76k | #define CASE_TYPE(ptype, coltype) \ |
105 | 1.76k | case PrimitiveType::ptype: \ |
106 | 1.76k | return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count); |
107 | | |
108 | 1.76k | switch (data_type()->get_primitive_type()) { |
109 | 0 | CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8) |
110 | 1.55k | CASE_TYPE(TYPE_TINYINT, ColumnInt8) |
111 | 0 | CASE_TYPE(TYPE_SMALLINT, ColumnInt16) |
112 | 10 | CASE_TYPE(TYPE_INT, ColumnInt32) |
113 | 118 | CASE_TYPE(TYPE_BIGINT, ColumnInt64) |
114 | 0 | CASE_TYPE(TYPE_LARGEINT, ColumnInt128) |
115 | 0 | CASE_TYPE(TYPE_FLOAT, ColumnFloat32) |
116 | 3 | CASE_TYPE(TYPE_DOUBLE, ColumnFloat64) |
117 | 0 | CASE_TYPE(TYPE_DECIMAL32, ColumnDecimal32) |
118 | 0 | CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64) |
119 | 0 | CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256) |
120 | 0 | CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3) |
121 | 0 | CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2) |
122 | 2 | CASE_TYPE(TYPE_STRING, ColumnString) |
123 | 0 | CASE_TYPE(TYPE_CHAR, ColumnString) |
124 | 73 | CASE_TYPE(TYPE_VARCHAR, ColumnString) |
125 | 0 | CASE_TYPE(TYPE_JSONB, ColumnString) |
126 | 0 | CASE_TYPE(TYPE_DATE, ColumnDate) |
127 | 0 | CASE_TYPE(TYPE_DATETIME, ColumnDateTime) |
128 | 0 | CASE_TYPE(TYPE_DATEV2, ColumnDateV2) |
129 | 0 | CASE_TYPE(TYPE_DATETIMEV2, ColumnDateTimeV2) |
130 | 0 | CASE_TYPE(TYPE_TIMESTAMPTZ, ColumnTimeStampTz) |
131 | 0 | CASE_TYPE(TYPE_IPV6, ColumnIPv6) |
132 | 0 | CASE_TYPE(TYPE_IPV4, ColumnIPv4) |
133 | 0 | CASE_TYPE(TYPE_ARRAY, ColumnArray) |
134 | 0 | CASE_TYPE(TYPE_MAP, ColumnMap) |
135 | 0 | CASE_TYPE(TYPE_STRUCT, ColumnStruct) |
136 | 0 | CASE_TYPE(TYPE_VARIANT, ColumnVariant) |
137 | 0 | CASE_TYPE(TYPE_BITMAP, ColumnBitmap) |
138 | 0 | CASE_TYPE(TYPE_HLL, ColumnHLL) |
139 | 0 | CASE_TYPE(TYPE_QUANTILE_STATE, ColumnQuantileState) |
140 | 0 | default: |
141 | 0 | throw Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "argument_type {} not supported", |
142 | 0 | data_type()->get_name()); |
143 | 1.76k | } |
144 | 1.76k | #undef CASE_TYPE |
145 | 1.76k | } Unexecuted instantiation: _ZNK5doris9VCaseExpr22_execute_update_resultItEENS_3COWINS_7IColumnEE13immutable_ptrIS3_EEPKT_RSt6vectorIS6_SaIS6_EEm _ZNK5doris9VCaseExpr22_execute_update_resultIhEENS_3COWINS_7IColumnEE13immutable_ptrIS3_EEPKT_RSt6vectorIS6_SaIS6_EEm Line | Count | Source | 103 | 1.76k | size_t rows_count) const { | 104 | 1.76k | #define CASE_TYPE(ptype, coltype) \ | 105 | 1.76k | case PrimitiveType::ptype: \ | 106 | 1.76k | return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count); | 107 | | | 108 | 1.76k | switch (data_type()->get_primitive_type()) { | 109 | 0 | CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8) | 110 | 1.55k | CASE_TYPE(TYPE_TINYINT, ColumnInt8) | 111 | 0 | CASE_TYPE(TYPE_SMALLINT, ColumnInt16) | 112 | 10 | CASE_TYPE(TYPE_INT, ColumnInt32) | 113 | 118 | CASE_TYPE(TYPE_BIGINT, ColumnInt64) | 114 | 0 | CASE_TYPE(TYPE_LARGEINT, ColumnInt128) | 115 | 0 | CASE_TYPE(TYPE_FLOAT, ColumnFloat32) | 116 | 3 | CASE_TYPE(TYPE_DOUBLE, ColumnFloat64) | 117 | 0 | CASE_TYPE(TYPE_DECIMAL32, ColumnDecimal32) | 118 | 0 | CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64) | 119 | 0 | CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256) | 120 | 0 | CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3) | 121 | 0 | CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2) | 122 | 2 | CASE_TYPE(TYPE_STRING, ColumnString) | 123 | 0 | CASE_TYPE(TYPE_CHAR, ColumnString) | 124 | 73 | CASE_TYPE(TYPE_VARCHAR, ColumnString) | 125 | 0 | CASE_TYPE(TYPE_JSONB, ColumnString) | 126 | 0 | CASE_TYPE(TYPE_DATE, ColumnDate) | 127 | 0 | CASE_TYPE(TYPE_DATETIME, ColumnDateTime) | 128 | 0 | CASE_TYPE(TYPE_DATEV2, ColumnDateV2) | 129 | 0 | CASE_TYPE(TYPE_DATETIMEV2, ColumnDateTimeV2) | 130 | 0 | CASE_TYPE(TYPE_TIMESTAMPTZ, ColumnTimeStampTz) | 131 | 0 | CASE_TYPE(TYPE_IPV6, ColumnIPv6) | 132 | 0 | CASE_TYPE(TYPE_IPV4, ColumnIPv4) | 133 | 0 | CASE_TYPE(TYPE_ARRAY, ColumnArray) | 134 | 0 | CASE_TYPE(TYPE_MAP, ColumnMap) | 135 | 0 | CASE_TYPE(TYPE_STRUCT, ColumnStruct) | 136 | 0 | CASE_TYPE(TYPE_VARIANT, ColumnVariant) | 137 | 0 | CASE_TYPE(TYPE_BITMAP, ColumnBitmap) | 138 | 0 | CASE_TYPE(TYPE_HLL, ColumnHLL) | 139 | 0 | CASE_TYPE(TYPE_QUANTILE_STATE, ColumnQuantileState) | 140 | 0 | default: | 141 | 0 | throw Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "argument_type {} not supported", | 142 | 0 | data_type()->get_name()); | 143 | 1.76k | } | 144 | 1.76k | #undef CASE_TYPE | 145 | 1.76k | } |
|
146 | | |
147 | | template <typename IndexType, typename ColumnType, bool then_null> |
148 | | void update_result_normal(MutableColumnPtr& result_column_ptr, |
149 | | const IndexType* __restrict then_idx, |
150 | 91 | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { |
151 | 91 | std::vector<ColumnPtr> raw_then_columns(then_columns.size()); |
152 | 91 | std::vector<uint8_t> is_consts(then_columns.size()); |
153 | 91 | std::vector<uint8_t> is_nullable(then_columns.size()); |
154 | 293 | for (size_t i = 0; i < then_columns.size(); i++) { |
155 | 202 | if (!then_columns[i]) { |
156 | 25 | continue; |
157 | 25 | } |
158 | 177 | std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]); |
159 | 177 | is_nullable[i] = raw_then_columns[i]->is_nullable(); |
160 | 177 | } |
161 | | |
162 | 91 | auto* raw_result_column = result_column_ptr.get(); |
163 | 375 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { |
164 | 284 | if (!_has_else_expr && !then_idx[row_idx]) { |
165 | 11 | assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column) |
166 | 11 | ->insert_default(); |
167 | 11 | continue; |
168 | 11 | } |
169 | 273 | size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx; |
170 | 273 | if constexpr (then_null) { |
171 | 106 | auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>( |
172 | 106 | result_column_ptr.get()); |
173 | 106 | if (is_nullable[then_idx[row_idx]]) { |
174 | 34 | nullable->insert_from_with_type<ColumnType>( |
175 | 34 | *raw_then_columns[then_idx[row_idx]], target); |
176 | 72 | } else { |
177 | 72 | auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( |
178 | 72 | nullable->get_nested_column_ptr().get()); |
179 | 72 | nested->insert_from(*raw_then_columns[then_idx[row_idx]], target); |
180 | 72 | nullable->push_false_to_nullmap(1); |
181 | 72 | } |
182 | 167 | } else { |
183 | 167 | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) |
184 | 167 | ->insert_from(*raw_then_columns[then_idx[row_idx]], target); |
185 | 167 | } |
186 | 273 | } |
187 | 91 | } Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE2EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE3EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE4EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE5EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE6EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE7EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE8EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE9EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_9ColumnStrIjEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_9ColumnStrIjEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE11EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE12EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE25EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE26EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE42EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE37EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE37EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE36EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE36EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_11ColumnArrayELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_11ColumnArrayELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_9ColumnMapELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_9ColumnMapELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnStructELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnStructELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_13ColumnVariantELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_13ColumnVariantELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE2EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE3EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Line | Count | Source | 150 | 2 | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 151 | 2 | std::vector<ColumnPtr> raw_then_columns(then_columns.size()); | 152 | 2 | std::vector<uint8_t> is_consts(then_columns.size()); | 153 | 2 | std::vector<uint8_t> is_nullable(then_columns.size()); | 154 | 6 | for (size_t i = 0; i < then_columns.size(); i++) { | 155 | 4 | if (!then_columns[i]) { | 156 | 2 | continue; | 157 | 2 | } | 158 | 2 | std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]); | 159 | 2 | is_nullable[i] = raw_then_columns[i]->is_nullable(); | 160 | 2 | } | 161 | | | 162 | 2 | auto* raw_result_column = result_column_ptr.get(); | 163 | 5 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 164 | 3 | if (!_has_else_expr && !then_idx[row_idx]) { | 165 | 0 | assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column) | 166 | 0 | ->insert_default(); | 167 | 0 | continue; | 168 | 0 | } | 169 | 3 | size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx; | 170 | 3 | if constexpr (then_null) { | 171 | 3 | auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>( | 172 | 3 | result_column_ptr.get()); | 173 | 3 | if (is_nullable[then_idx[row_idx]]) { | 174 | 0 | nullable->insert_from_with_type<ColumnType>( | 175 | 0 | *raw_then_columns[then_idx[row_idx]], target); | 176 | 3 | } else { | 177 | 3 | auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( | 178 | 3 | nullable->get_nested_column_ptr().get()); | 179 | 3 | nested->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 180 | 3 | nullable->push_false_to_nullmap(1); | 181 | 3 | } | 182 | | } else { | 183 | | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) | 184 | | ->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 185 | | } | 186 | 3 | } | 187 | 2 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE4EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE5EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Line | Count | Source | 150 | 10 | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 151 | 10 | std::vector<ColumnPtr> raw_then_columns(then_columns.size()); | 152 | 10 | std::vector<uint8_t> is_consts(then_columns.size()); | 153 | 10 | std::vector<uint8_t> is_nullable(then_columns.size()); | 154 | 21 | for (size_t i = 0; i < then_columns.size(); i++) { | 155 | 11 | if (!then_columns[i]) { | 156 | 0 | continue; | 157 | 0 | } | 158 | 11 | std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]); | 159 | 11 | is_nullable[i] = raw_then_columns[i]->is_nullable(); | 160 | 11 | } | 161 | | | 162 | 10 | auto* raw_result_column = result_column_ptr.get(); | 163 | 30 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 164 | 20 | if (!_has_else_expr && !then_idx[row_idx]) { | 165 | 0 | assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column) | 166 | 0 | ->insert_default(); | 167 | 0 | continue; | 168 | 0 | } | 169 | 20 | size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx; | 170 | 20 | if constexpr (then_null) { | 171 | 20 | auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>( | 172 | 20 | result_column_ptr.get()); | 173 | 20 | if (is_nullable[then_idx[row_idx]]) { | 174 | 20 | nullable->insert_from_with_type<ColumnType>( | 175 | 20 | *raw_then_columns[then_idx[row_idx]], target); | 176 | 20 | } else { | 177 | 0 | auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( | 178 | 0 | nullable->get_nested_column_ptr().get()); | 179 | 0 | nested->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 180 | 0 | nullable->push_false_to_nullmap(1); | 181 | 0 | } | 182 | | } else { | 183 | | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) | 184 | | ->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 185 | | } | 186 | 20 | } | 187 | 10 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE6EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE7EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE8EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE9EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Line | Count | Source | 150 | 3 | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 151 | 3 | std::vector<ColumnPtr> raw_then_columns(then_columns.size()); | 152 | 3 | std::vector<uint8_t> is_consts(then_columns.size()); | 153 | 3 | std::vector<uint8_t> is_nullable(then_columns.size()); | 154 | 11 | for (size_t i = 0; i < then_columns.size(); i++) { | 155 | 8 | if (!then_columns[i]) { | 156 | 0 | continue; | 157 | 0 | } | 158 | 8 | std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]); | 159 | 8 | is_nullable[i] = raw_then_columns[i]->is_nullable(); | 160 | 8 | } | 161 | | | 162 | 3 | auto* raw_result_column = result_column_ptr.get(); | 163 | 13 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 164 | 10 | if (!_has_else_expr && !then_idx[row_idx]) { | 165 | 0 | assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column) | 166 | 0 | ->insert_default(); | 167 | 0 | continue; | 168 | 0 | } | 169 | 10 | size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx; | 170 | 10 | if constexpr (then_null) { | 171 | 10 | auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>( | 172 | 10 | result_column_ptr.get()); | 173 | 10 | if (is_nullable[then_idx[row_idx]]) { | 174 | 7 | nullable->insert_from_with_type<ColumnType>( | 175 | 7 | *raw_then_columns[then_idx[row_idx]], target); | 176 | 7 | } else { | 177 | 3 | auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( | 178 | 3 | nullable->get_nested_column_ptr().get()); | 179 | 3 | nested->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 180 | 3 | nullable->push_false_to_nullmap(1); | 181 | 3 | } | 182 | | } else { | 183 | | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) | 184 | | ->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 185 | | } | 186 | 10 | } | 187 | 3 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm _ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnStrIjEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm Line | Count | Source | 150 | 24 | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 151 | 24 | std::vector<ColumnPtr> raw_then_columns(then_columns.size()); | 152 | 24 | std::vector<uint8_t> is_consts(then_columns.size()); | 153 | 24 | std::vector<uint8_t> is_nullable(then_columns.size()); | 154 | 81 | for (size_t i = 0; i < then_columns.size(); i++) { | 155 | 57 | if (!then_columns[i]) { | 156 | 23 | continue; | 157 | 23 | } | 158 | 34 | std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]); | 159 | 34 | is_nullable[i] = raw_then_columns[i]->is_nullable(); | 160 | 34 | } | 161 | | | 162 | 24 | auto* raw_result_column = result_column_ptr.get(); | 163 | 108 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 164 | 84 | if (!_has_else_expr && !then_idx[row_idx]) { | 165 | 11 | assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column) | 166 | 11 | ->insert_default(); | 167 | 11 | continue; | 168 | 11 | } | 169 | 73 | size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx; | 170 | 73 | if constexpr (then_null) { | 171 | 73 | auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>( | 172 | 73 | result_column_ptr.get()); | 173 | 73 | if (is_nullable[then_idx[row_idx]]) { | 174 | 7 | nullable->insert_from_with_type<ColumnType>( | 175 | 7 | *raw_then_columns[then_idx[row_idx]], target); | 176 | 66 | } else { | 177 | 66 | auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( | 178 | 66 | nullable->get_nested_column_ptr().get()); | 179 | 66 | nested->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 180 | 66 | nullable->push_false_to_nullmap(1); | 181 | 66 | } | 182 | | } else { | 183 | | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) | 184 | | ->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 185 | | } | 186 | 73 | } | 187 | 24 | } |
_ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnStrIjEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm Line | Count | Source | 150 | 52 | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 151 | 52 | std::vector<ColumnPtr> raw_then_columns(then_columns.size()); | 152 | 52 | std::vector<uint8_t> is_consts(then_columns.size()); | 153 | 52 | std::vector<uint8_t> is_nullable(then_columns.size()); | 154 | 174 | for (size_t i = 0; i < then_columns.size(); i++) { | 155 | 122 | if (!then_columns[i]) { | 156 | 0 | continue; | 157 | 0 | } | 158 | 122 | std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]); | 159 | 122 | is_nullable[i] = raw_then_columns[i]->is_nullable(); | 160 | 122 | } | 161 | | | 162 | 52 | auto* raw_result_column = result_column_ptr.get(); | 163 | 219 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 164 | 167 | if (!_has_else_expr && !then_idx[row_idx]) { | 165 | 0 | assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column) | 166 | 0 | ->insert_default(); | 167 | 0 | continue; | 168 | 0 | } | 169 | 167 | size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx; | 170 | | if constexpr (then_null) { | 171 | | auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>( | 172 | | result_column_ptr.get()); | 173 | | if (is_nullable[then_idx[row_idx]]) { | 174 | | nullable->insert_from_with_type<ColumnType>( | 175 | | *raw_then_columns[then_idx[row_idx]], target); | 176 | | } else { | 177 | | auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( | 178 | | nullable->get_nested_column_ptr().get()); | 179 | | nested->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 180 | | nullable->push_false_to_nullmap(1); | 181 | | } | 182 | 167 | } else { | 183 | 167 | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) | 184 | 167 | ->insert_from(*raw_then_columns[then_idx[row_idx]], target); | 185 | 167 | } | 186 | 167 | } | 187 | 52 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE11EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE12EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE25EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE26EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE42EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE37EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE37EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE36EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE36EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_11ColumnArrayELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_11ColumnArrayELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnMapELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnMapELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnStructELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnStructELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnVariantELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnVariantELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE19EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE24EEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm |
188 | | |
189 | | template <typename IndexType, typename ColumnType> |
190 | | void update_result_auto_simd(MutableColumnPtr& result_column_ptr, |
191 | | const IndexType* __restrict then_idx, |
192 | 1.67k | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { |
193 | 2.47k | for (auto& then_ptr : then_columns) { |
194 | 2.47k | then_ptr = then_ptr->convert_to_full_column_if_const(); |
195 | 2.47k | } |
196 | | |
197 | 1.67k | result_column_ptr->resize(rows_count); |
198 | 1.67k | auto* __restrict result_raw_data = |
199 | 1.67k | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) |
200 | 1.67k | ->get_data() |
201 | 1.67k | .data(); |
202 | | |
203 | | // set default value |
204 | 3.46k | for (int i = 0; i < rows_count; i++) { |
205 | | if constexpr (std::is_same_v<ColumnType, ColumnDate> || |
206 | | std::is_same_v<ColumnType, ColumnDateTime> || |
207 | | std::is_same_v<ColumnType, ColumnDateV2> || |
208 | | std::is_same_v<ColumnType, ColumnDateTimeV2> || |
209 | 0 | std::is_same_v<ColumnType, ColumnTimeStampTz>) { |
210 | 0 | result_raw_data[i] = ColumnType::default_value(); |
211 | 1.79k | } else { |
212 | 1.79k | result_raw_data[i] = {}; |
213 | 1.79k | } |
214 | 1.79k | } |
215 | | |
216 | 4.14k | for (IndexType i = 0; i < then_columns.size(); i++) { |
217 | 2.47k | if (!then_columns[i]) { |
218 | 0 | continue; |
219 | 0 | } |
220 | 2.47k | auto* __restrict column_raw_data = |
221 | 2.47k | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( |
222 | 2.47k | then_columns[i]->assume_mutable().get()) |
223 | 2.47k | ->get_data() |
224 | 2.47k | .data(); |
225 | | if constexpr (std::is_same_v<ColumnType, ColumnDate> || |
226 | | std::is_same_v<ColumnType, ColumnDateTime> || |
227 | | std::is_same_v<ColumnType, ColumnDateV2> || |
228 | | std::is_same_v<ColumnType, ColumnDateTimeV2> || |
229 | 0 | std::is_same_v<ColumnType, ColumnTimeStampTz>) { |
230 | 0 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { |
231 | 0 | result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx] |
232 | 0 | : result_raw_data[row_idx]; |
233 | 0 | } |
234 | 2.47k | } else { |
235 | 5.10k | for (int row_idx = 0; row_idx < rows_count; row_idx++) { |
236 | 2.62k | result_raw_data[row_idx] += |
237 | 2.62k | typename ColumnType::value_type(then_idx[row_idx] == i) * |
238 | 2.62k | column_raw_data[row_idx]; |
239 | 2.62k | } |
240 | 2.47k | } |
241 | 2.47k | } |
242 | 1.67k | } Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE2EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE3EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Line | Count | Source | 192 | 1.55k | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 193 | 2.35k | for (auto& then_ptr : then_columns) { | 194 | 2.35k | then_ptr = then_ptr->convert_to_full_column_if_const(); | 195 | 2.35k | } | 196 | | | 197 | 1.55k | result_column_ptr->resize(rows_count); | 198 | 1.55k | auto* __restrict result_raw_data = | 199 | 1.55k | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) | 200 | 1.55k | ->get_data() | 201 | 1.55k | .data(); | 202 | | | 203 | | // set default value | 204 | 3.11k | for (int i = 0; i < rows_count; i++) { | 205 | | if constexpr (std::is_same_v<ColumnType, ColumnDate> || | 206 | | std::is_same_v<ColumnType, ColumnDateTime> || | 207 | | std::is_same_v<ColumnType, ColumnDateV2> || | 208 | | std::is_same_v<ColumnType, ColumnDateTimeV2> || | 209 | | std::is_same_v<ColumnType, ColumnTimeStampTz>) { | 210 | | result_raw_data[i] = ColumnType::default_value(); | 211 | 1.55k | } else { | 212 | 1.55k | result_raw_data[i] = {}; | 213 | 1.55k | } | 214 | 1.55k | } | 215 | | | 216 | 3.91k | for (IndexType i = 0; i < then_columns.size(); i++) { | 217 | 2.35k | if (!then_columns[i]) { | 218 | 0 | continue; | 219 | 0 | } | 220 | 2.35k | auto* __restrict column_raw_data = | 221 | 2.35k | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( | 222 | 2.35k | then_columns[i]->assume_mutable().get()) | 223 | 2.35k | ->get_data() | 224 | 2.35k | .data(); | 225 | | if constexpr (std::is_same_v<ColumnType, ColumnDate> || | 226 | | std::is_same_v<ColumnType, ColumnDateTime> || | 227 | | std::is_same_v<ColumnType, ColumnDateV2> || | 228 | | std::is_same_v<ColumnType, ColumnDateTimeV2> || | 229 | | std::is_same_v<ColumnType, ColumnTimeStampTz>) { | 230 | | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 231 | | result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx] | 232 | | : result_raw_data[row_idx]; | 233 | | } | 234 | 2.35k | } else { | 235 | 4.71k | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 236 | 2.36k | result_raw_data[row_idx] += | 237 | 2.36k | typename ColumnType::value_type(then_idx[row_idx] == i) * | 238 | 2.36k | column_raw_data[row_idx]; | 239 | 2.36k | } | 240 | 2.35k | } | 241 | 2.35k | } | 242 | 1.55k | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE4EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE5EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Line | Count | Source | 192 | 118 | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 193 | 120 | for (auto& then_ptr : then_columns) { | 194 | 120 | then_ptr = then_ptr->convert_to_full_column_if_const(); | 195 | 120 | } | 196 | | | 197 | 118 | result_column_ptr->resize(rows_count); | 198 | 118 | auto* __restrict result_raw_data = | 199 | 118 | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get()) | 200 | 118 | ->get_data() | 201 | 118 | .data(); | 202 | | | 203 | | // set default value | 204 | 358 | for (int i = 0; i < rows_count; i++) { | 205 | | if constexpr (std::is_same_v<ColumnType, ColumnDate> || | 206 | | std::is_same_v<ColumnType, ColumnDateTime> || | 207 | | std::is_same_v<ColumnType, ColumnDateV2> || | 208 | | std::is_same_v<ColumnType, ColumnDateTimeV2> || | 209 | | std::is_same_v<ColumnType, ColumnTimeStampTz>) { | 210 | | result_raw_data[i] = ColumnType::default_value(); | 211 | 240 | } else { | 212 | 240 | result_raw_data[i] = {}; | 213 | 240 | } | 214 | 240 | } | 215 | | | 216 | 238 | for (IndexType i = 0; i < then_columns.size(); i++) { | 217 | 120 | if (!then_columns[i]) { | 218 | 0 | continue; | 219 | 0 | } | 220 | 120 | auto* __restrict column_raw_data = | 221 | 120 | assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>( | 222 | 120 | then_columns[i]->assume_mutable().get()) | 223 | 120 | ->get_data() | 224 | 120 | .data(); | 225 | | if constexpr (std::is_same_v<ColumnType, ColumnDate> || | 226 | | std::is_same_v<ColumnType, ColumnDateTime> || | 227 | | std::is_same_v<ColumnType, ColumnDateV2> || | 228 | | std::is_same_v<ColumnType, ColumnDateTimeV2> || | 229 | | std::is_same_v<ColumnType, ColumnTimeStampTz>) { | 230 | | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 231 | | result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx] | 232 | | : result_raw_data[row_idx]; | 233 | | } | 234 | 120 | } else { | 235 | 386 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 236 | 266 | result_raw_data[row_idx] += | 237 | 266 | typename ColumnType::value_type(then_idx[row_idx] == i) * | 238 | 266 | column_raw_data[row_idx]; | 239 | 266 | } | 240 | 120 | } | 241 | 120 | } | 242 | 118 | } |
Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm |
243 | | |
244 | | template <typename IndexType> |
245 | | ColumnPtr _execute_impl(const std::vector<ColumnPtr>& when_columns, |
246 | 1.76k | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { |
247 | 1.76k | std::vector<IndexType> then_idx(rows_count, 0); |
248 | 1.76k | IndexType* __restrict then_idx_ptr = then_idx.data(); |
249 | 2.67k | for (IndexType i = 0; i < when_columns.size(); i++) { |
250 | 914 | IndexType column_idx = i + 1; |
251 | 914 | auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]); |
252 | | |
253 | 914 | if (is_consts) { |
254 | 0 | if (raw_when_column->get_bool(0)) { |
255 | 0 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { |
256 | 0 | then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx; |
257 | 0 | } |
258 | 0 | break; |
259 | 0 | } |
260 | 0 | continue; |
261 | 0 | } |
262 | | |
263 | 914 | if (raw_when_column->is_nullable()) { |
264 | 609 | const auto* column_nullable_ptr = |
265 | 609 | assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>( |
266 | 609 | raw_when_column.get()); |
267 | 609 | const auto* __restrict cond_raw_data = |
268 | 609 | assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>( |
269 | 609 | column_nullable_ptr->get_nested_column_ptr().get()) |
270 | 609 | ->get_data() |
271 | 609 | .data(); |
272 | 609 | if (!column_nullable_ptr->has_null()) { |
273 | 1.33k | for (int row_idx = 0; row_idx < rows_count; row_idx++) { |
274 | 751 | then_idx_ptr[row_idx] |= |
275 | 751 | (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx; |
276 | 751 | } |
277 | 581 | continue; |
278 | 581 | } |
279 | 28 | const auto* __restrict cond_raw_nullmap = |
280 | 28 | assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>( |
281 | 28 | column_nullable_ptr->get_null_map_column_ptr().get()) |
282 | 28 | ->get_data() |
283 | 28 | .data(); |
284 | 175 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { |
285 | 147 | then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] * |
286 | 147 | !cond_raw_nullmap[row_idx]) * |
287 | 147 | column_idx; |
288 | 147 | } |
289 | 305 | } else { |
290 | 305 | const auto* __restrict cond_raw_data = |
291 | 305 | assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>( |
292 | 305 | raw_when_column.get()) |
293 | 305 | ->get_data() |
294 | 305 | .data(); |
295 | 656 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { |
296 | 351 | then_idx_ptr[row_idx] |= |
297 | 351 | (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx; |
298 | 351 | } |
299 | 305 | } |
300 | 914 | } |
301 | | |
302 | 1.76k | return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count); |
303 | 1.76k | } Unexecuted instantiation: _ZNK5doris9VCaseExpr13_execute_implItEENS_3COWINS_7IColumnEE13immutable_ptrIS3_EERKSt6vectorIS6_SaIS6_EERS9_m _ZNK5doris9VCaseExpr13_execute_implIhEENS_3COWINS_7IColumnEE13immutable_ptrIS3_EERKSt6vectorIS6_SaIS6_EERS9_m Line | Count | Source | 246 | 1.76k | std::vector<ColumnPtr>& then_columns, size_t rows_count) const { | 247 | 1.76k | std::vector<IndexType> then_idx(rows_count, 0); | 248 | 1.76k | IndexType* __restrict then_idx_ptr = then_idx.data(); | 249 | 2.67k | for (IndexType i = 0; i < when_columns.size(); i++) { | 250 | 914 | IndexType column_idx = i + 1; | 251 | 914 | auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]); | 252 | | | 253 | 914 | if (is_consts) { | 254 | 0 | if (raw_when_column->get_bool(0)) { | 255 | 0 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 256 | 0 | then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx; | 257 | 0 | } | 258 | 0 | break; | 259 | 0 | } | 260 | 0 | continue; | 261 | 0 | } | 262 | | | 263 | 914 | if (raw_when_column->is_nullable()) { | 264 | 609 | const auto* column_nullable_ptr = | 265 | 609 | assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>( | 266 | 609 | raw_when_column.get()); | 267 | 609 | const auto* __restrict cond_raw_data = | 268 | 609 | assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>( | 269 | 609 | column_nullable_ptr->get_nested_column_ptr().get()) | 270 | 609 | ->get_data() | 271 | 609 | .data(); | 272 | 609 | if (!column_nullable_ptr->has_null()) { | 273 | 1.33k | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 274 | 751 | then_idx_ptr[row_idx] |= | 275 | 751 | (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx; | 276 | 751 | } | 277 | 581 | continue; | 278 | 581 | } | 279 | 28 | const auto* __restrict cond_raw_nullmap = | 280 | 28 | assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>( | 281 | 28 | column_nullable_ptr->get_null_map_column_ptr().get()) | 282 | 28 | ->get_data() | 283 | 28 | .data(); | 284 | 175 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 285 | 147 | then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] * | 286 | 147 | !cond_raw_nullmap[row_idx]) * | 287 | 147 | column_idx; | 288 | 147 | } | 289 | 305 | } else { | 290 | 305 | const auto* __restrict cond_raw_data = | 291 | 305 | assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>( | 292 | 305 | raw_when_column.get()) | 293 | 305 | ->get_data() | 294 | 305 | .data(); | 295 | 656 | for (int row_idx = 0; row_idx < rows_count; row_idx++) { | 296 | 351 | then_idx_ptr[row_idx] |= | 297 | 351 | (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx; | 298 | 351 | } | 299 | 305 | } | 300 | 914 | } | 301 | | | 302 | 1.76k | return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count); | 303 | 1.76k | } |
|
304 | | |
305 | | bool _has_else_expr; |
306 | | |
307 | | inline static const std::string FUNCTION_NAME = "case"; |
308 | | inline static const std::string EXPR_NAME = "vcase expr"; |
309 | | }; |
310 | | } // namespace doris |