Coverage Report

Created: 2026-07-14 05:55

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
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_impl(VExprContext* context, const Block* block, const 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
0
    bool has_else_expr() const { return _has_else_expr; }
63
1
    Status clone_node(VExprSPtr* cloned_expr) const override {
64
1
        DORIS_CHECK(cloned_expr != nullptr);
65
1
        auto node = clone_texpr_node();
66
1
        TCaseExpr case_node;
67
1
        case_node.__set_has_case_expr(false);
68
1
        case_node.__set_has_else_expr(_has_else_expr);
69
1
        node.__set_case_expr(case_node);
70
1
        *cloned_expr = VCaseExpr::create_shared(node);
71
1
        return Status::OK();
72
1
    }
73
74
private:
75
    template <typename IndexType, typename ColumnType>
76
    ColumnPtr _execute_update_result_impl(const IndexType* then_idx,
77
                                          std::vector<ColumnPtr>& then_columns,
78
1.92k
                                          size_t rows_count) const {
79
1.92k
        auto result_column_ptr = data_type()->create_column();
80
1.92k
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
215
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
215
            if (data_type()->is_nullable()) {
94
141
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
141
                                                                  then_columns, rows_count);
96
141
            } else {
97
74
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
74
                                                                   then_columns, rows_count);
99
74
            }
100
1.70k
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
18
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
18
                                                              then_columns, rows_count);
104
1.68k
        } else {
105
1.68k
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
1.68k
                                                           then_columns, rows_count);
107
1.68k
        }
108
1.92k
        return result_column_ptr;
109
1.92k
    }
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
78
1.54k
                                          size_t rows_count) const {
79
1.54k
        auto result_column_ptr = data_type()->create_column();
80
1.54k
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
            if (data_type()->is_nullable()) {
94
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
                                                                  then_columns, rows_count);
96
            } else {
97
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
                                                                   then_columns, rows_count);
99
            }
100
1.54k
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
2
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
2
                                                              then_columns, rows_count);
104
1.54k
        } else {
105
1.54k
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
1.54k
                                                           then_columns, rows_count);
107
1.54k
        }
108
1.54k
        return result_column_ptr;
109
1.54k
    }
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
78
10
                                          size_t rows_count) const {
79
10
        auto result_column_ptr = data_type()->create_column();
80
10
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
            if (data_type()->is_nullable()) {
94
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
                                                                  then_columns, rows_count);
96
            } else {
97
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
                                                                   then_columns, rows_count);
99
            }
100
10
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
10
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
10
                                                              then_columns, rows_count);
104
10
        } else {
105
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
0
                                                           then_columns, rows_count);
107
0
        }
108
10
        return result_column_ptr;
109
10
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
78
142
                                          size_t rows_count) const {
79
142
        auto result_column_ptr = data_type()->create_column();
80
142
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
            if (data_type()->is_nullable()) {
94
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
                                                                  then_columns, rows_count);
96
            } else {
97
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
                                                                   then_columns, rows_count);
99
            }
100
142
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
0
                                                              then_columns, rows_count);
104
142
        } else {
105
142
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
142
                                                           then_columns, rows_count);
107
142
        }
108
142
        return result_column_ptr;
109
142
    }
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
78
3
                                          size_t rows_count) const {
79
3
        auto result_column_ptr = data_type()->create_column();
80
3
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
            if (data_type()->is_nullable()) {
94
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
                                                                  then_columns, rows_count);
96
            } else {
97
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
                                                                   then_columns, rows_count);
99
            }
100
3
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
3
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
3
                                                              then_columns, rows_count);
104
3
        } else {
105
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
0
                                                           then_columns, rows_count);
107
0
        }
108
3
        return result_column_ptr;
109
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
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
78
2
                                          size_t rows_count) const {
79
2
        auto result_column_ptr = data_type()->create_column();
80
2
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
            if (data_type()->is_nullable()) {
94
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
                                                                  then_columns, rows_count);
96
            } else {
97
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
                                                                   then_columns, rows_count);
99
            }
100
2
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
2
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
2
                                                              then_columns, rows_count);
104
2
        } else {
105
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
0
                                                           then_columns, rows_count);
107
0
        }
108
2
        return result_column_ptr;
109
2
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
78
1
                                          size_t rows_count) const {
79
1
        auto result_column_ptr = data_type()->create_column();
80
1
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
            if (data_type()->is_nullable()) {
94
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
                                                                  then_columns, rows_count);
96
            } else {
97
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
                                                                   then_columns, rows_count);
99
            }
100
1
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
1
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
1
                                                              then_columns, rows_count);
104
1
        } else {
105
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
0
                                                           then_columns, rows_count);
107
0
        }
108
1
        return result_column_ptr;
109
1
    }
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
78
215
                                          size_t rows_count) const {
79
215
        auto result_column_ptr = data_type()->create_column();
80
215
        result_column_ptr->reserve(rows_count);
81
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
82
                      std::is_same_v<ColumnType, ColumnBitmap> ||
83
                      std::is_same_v<ColumnType, ColumnArray> ||
84
                      std::is_same_v<ColumnType, ColumnMap> ||
85
                      std::is_same_v<ColumnType, ColumnStruct> ||
86
                      std::is_same_v<ColumnType, ColumnVariant> ||
87
                      std::is_same_v<ColumnType, ColumnHLL> ||
88
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
89
                      std::is_same_v<ColumnType, ColumnIPv4> ||
90
215
                      std::is_same_v<ColumnType, ColumnIPv6>) {
91
            // result_column and all then_column is not nullable.
92
            // can't simd when type is string.
93
215
            if (data_type()->is_nullable()) {
94
141
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
95
141
                                                                  then_columns, rows_count);
96
141
            } else {
97
74
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
98
74
                                                                   then_columns, rows_count);
99
74
            }
100
        } else if (data_type()->is_nullable()) {
101
            // result_column and all then_column is nullable.
102
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
103
                                                              then_columns, rows_count);
104
        } else {
105
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
106
                                                           then_columns, rows_count);
107
        }
108
215
        return result_column_ptr;
109
215
    }
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
110
111
    template <typename IndexType>
112
    ColumnPtr _execute_update_result(const IndexType* then_idx,
113
                                     std::vector<ColumnPtr>& then_columns,
114
1.92k
                                     size_t rows_count) const {
115
1.92k
#define CASE_TYPE(ptype, coltype) \
116
1.92k
    case PrimitiveType::ptype:    \
117
1.92k
        return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count);
118
119
1.92k
        switch (data_type()->get_primitive_type()) {
120
0
            CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8)
121
1.54k
            CASE_TYPE(TYPE_TINYINT, ColumnInt8)
122
0
            CASE_TYPE(TYPE_SMALLINT, ColumnInt16)
123
10
            CASE_TYPE(TYPE_INT, ColumnInt32)
124
142
            CASE_TYPE(TYPE_BIGINT, ColumnInt64)
125
0
            CASE_TYPE(TYPE_LARGEINT, ColumnInt128)
126
0
            CASE_TYPE(TYPE_FLOAT, ColumnFloat32)
127
3
            CASE_TYPE(TYPE_DOUBLE, ColumnFloat64)
128
0
            CASE_TYPE(TYPE_DECIMAL32, ColumnDecimal32)
129
0
            CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64)
130
2
            CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256)
131
1
            CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3)
132
0
            CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2)
133
114
            CASE_TYPE(TYPE_STRING, ColumnString)
134
0
            CASE_TYPE(TYPE_CHAR, ColumnString)
135
101
            CASE_TYPE(TYPE_VARCHAR, ColumnString)
136
0
            CASE_TYPE(TYPE_JSONB, ColumnString)
137
0
            CASE_TYPE(TYPE_DATE, ColumnDate)
138
0
            CASE_TYPE(TYPE_DATETIME, ColumnDateTime)
139
0
            CASE_TYPE(TYPE_DATEV2, ColumnDateV2)
140
0
            CASE_TYPE(TYPE_DATETIMEV2, ColumnDateTimeV2)
141
0
            CASE_TYPE(TYPE_TIMESTAMPTZ, ColumnTimeStampTz)
142
0
            CASE_TYPE(TYPE_IPV6, ColumnIPv6)
143
0
            CASE_TYPE(TYPE_IPV4, ColumnIPv4)
144
0
            CASE_TYPE(TYPE_ARRAY, ColumnArray)
145
0
            CASE_TYPE(TYPE_MAP, ColumnMap)
146
0
            CASE_TYPE(TYPE_STRUCT, ColumnStruct)
147
0
            CASE_TYPE(TYPE_VARIANT, ColumnVariant)
148
0
            CASE_TYPE(TYPE_BITMAP, ColumnBitmap)
149
0
            CASE_TYPE(TYPE_HLL, ColumnHLL)
150
0
            CASE_TYPE(TYPE_QUANTILE_STATE, ColumnQuantileState)
151
0
        default:
152
0
            throw Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "argument_type {} not supported",
153
0
                            data_type()->get_name());
154
1.92k
        }
155
1.92k
#undef CASE_TYPE
156
1.92k
    }
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
114
1.92k
                                     size_t rows_count) const {
115
1.92k
#define CASE_TYPE(ptype, coltype) \
116
1.92k
    case PrimitiveType::ptype:    \
117
1.92k
        return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count);
118
119
1.92k
        switch (data_type()->get_primitive_type()) {
120
0
            CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8)
121
1.54k
            CASE_TYPE(TYPE_TINYINT, ColumnInt8)
122
0
            CASE_TYPE(TYPE_SMALLINT, ColumnInt16)
123
10
            CASE_TYPE(TYPE_INT, ColumnInt32)
124
142
            CASE_TYPE(TYPE_BIGINT, ColumnInt64)
125
0
            CASE_TYPE(TYPE_LARGEINT, ColumnInt128)
126
0
            CASE_TYPE(TYPE_FLOAT, ColumnFloat32)
127
3
            CASE_TYPE(TYPE_DOUBLE, ColumnFloat64)
128
0
            CASE_TYPE(TYPE_DECIMAL32, ColumnDecimal32)
129
0
            CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64)
130
2
            CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256)
131
1
            CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3)
132
0
            CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2)
133
114
            CASE_TYPE(TYPE_STRING, ColumnString)
134
0
            CASE_TYPE(TYPE_CHAR, ColumnString)
135
101
            CASE_TYPE(TYPE_VARCHAR, ColumnString)
136
0
            CASE_TYPE(TYPE_JSONB, ColumnString)
137
0
            CASE_TYPE(TYPE_DATE, ColumnDate)
138
0
            CASE_TYPE(TYPE_DATETIME, ColumnDateTime)
139
0
            CASE_TYPE(TYPE_DATEV2, ColumnDateV2)
140
0
            CASE_TYPE(TYPE_DATETIMEV2, ColumnDateTimeV2)
141
0
            CASE_TYPE(TYPE_TIMESTAMPTZ, ColumnTimeStampTz)
142
0
            CASE_TYPE(TYPE_IPV6, ColumnIPv6)
143
0
            CASE_TYPE(TYPE_IPV4, ColumnIPv4)
144
0
            CASE_TYPE(TYPE_ARRAY, ColumnArray)
145
0
            CASE_TYPE(TYPE_MAP, ColumnMap)
146
0
            CASE_TYPE(TYPE_STRUCT, ColumnStruct)
147
0
            CASE_TYPE(TYPE_VARIANT, ColumnVariant)
148
0
            CASE_TYPE(TYPE_BITMAP, ColumnBitmap)
149
0
            CASE_TYPE(TYPE_HLL, ColumnHLL)
150
0
            CASE_TYPE(TYPE_QUANTILE_STATE, ColumnQuantileState)
151
0
        default:
152
0
            throw Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "argument_type {} not supported",
153
0
                            data_type()->get_name());
154
1.92k
        }
155
1.92k
#undef CASE_TYPE
156
1.92k
    }
157
158
    template <typename IndexType, typename ColumnType, bool then_null>
159
    void update_result_normal(MutableColumnPtr& result_column_ptr,
160
                              const IndexType* __restrict then_idx,
161
233
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
233
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
233
        std::vector<uint8_t> is_consts(then_columns.size());
164
233
        std::vector<uint8_t> is_nullable(then_columns.size());
165
751
        for (size_t i = 0; i < then_columns.size(); i++) {
166
518
            if (!then_columns[i]) {
167
28
                continue;
168
28
            }
169
490
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
490
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
490
        }
172
173
233
        auto* raw_result_column = result_column_ptr.get();
174
1.53k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
1.30k
            if (!_has_else_expr && !then_idx[row_idx]) {
176
11
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
11
                        ->insert_default();
178
11
                continue;
179
11
            }
180
1.29k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
1.29k
            if constexpr (then_null) {
182
1.07k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
1.07k
                        result_column_ptr.get());
184
1.07k
                if (is_nullable[then_idx[row_idx]]) {
185
35
                    nullable->insert_from_with_type<ColumnType>(
186
35
                            *raw_then_columns[then_idx[row_idx]], target);
187
1.04k
                } else {
188
1.04k
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
1.04k
                            nullable->get_nested_column_ptr().get());
190
1.04k
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
1.04k
                    nullable->push_false_to_nullmap(1);
192
1.04k
                }
193
1.07k
            } else {
194
214
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
214
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
214
            }
197
1.29k
        }
198
233
    }
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
161
2
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
2
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
2
        std::vector<uint8_t> is_consts(then_columns.size());
164
2
        std::vector<uint8_t> is_nullable(then_columns.size());
165
6
        for (size_t i = 0; i < then_columns.size(); i++) {
166
4
            if (!then_columns[i]) {
167
2
                continue;
168
2
            }
169
2
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
2
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
2
        }
172
173
2
        auto* raw_result_column = result_column_ptr.get();
174
5
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
3
            if (!_has_else_expr && !then_idx[row_idx]) {
176
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
0
                        ->insert_default();
178
0
                continue;
179
0
            }
180
3
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
3
            if constexpr (then_null) {
182
3
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
3
                        result_column_ptr.get());
184
3
                if (is_nullable[then_idx[row_idx]]) {
185
0
                    nullable->insert_from_with_type<ColumnType>(
186
0
                            *raw_then_columns[then_idx[row_idx]], target);
187
3
                } else {
188
3
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
3
                            nullable->get_nested_column_ptr().get());
190
3
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
3
                    nullable->push_false_to_nullmap(1);
192
3
                }
193
            } else {
194
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
            }
197
3
        }
198
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
161
10
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
10
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
10
        std::vector<uint8_t> is_consts(then_columns.size());
164
10
        std::vector<uint8_t> is_nullable(then_columns.size());
165
21
        for (size_t i = 0; i < then_columns.size(); i++) {
166
11
            if (!then_columns[i]) {
167
0
                continue;
168
0
            }
169
11
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
11
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
11
        }
172
173
10
        auto* raw_result_column = result_column_ptr.get();
174
30
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
20
            if (!_has_else_expr && !then_idx[row_idx]) {
176
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
0
                        ->insert_default();
178
0
                continue;
179
0
            }
180
20
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
20
            if constexpr (then_null) {
182
20
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
20
                        result_column_ptr.get());
184
20
                if (is_nullable[then_idx[row_idx]]) {
185
20
                    nullable->insert_from_with_type<ColumnType>(
186
20
                            *raw_then_columns[then_idx[row_idx]], target);
187
20
                } else {
188
0
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
0
                            nullable->get_nested_column_ptr().get());
190
0
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
0
                    nullable->push_false_to_nullmap(1);
192
0
                }
193
            } else {
194
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
            }
197
20
        }
198
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
161
3
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
3
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
3
        std::vector<uint8_t> is_consts(then_columns.size());
164
3
        std::vector<uint8_t> is_nullable(then_columns.size());
165
11
        for (size_t i = 0; i < then_columns.size(); i++) {
166
8
            if (!then_columns[i]) {
167
0
                continue;
168
0
            }
169
8
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
8
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
8
        }
172
173
3
        auto* raw_result_column = result_column_ptr.get();
174
13
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
10
            if (!_has_else_expr && !then_idx[row_idx]) {
176
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
0
                        ->insert_default();
178
0
                continue;
179
0
            }
180
10
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
10
            if constexpr (then_null) {
182
10
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
10
                        result_column_ptr.get());
184
10
                if (is_nullable[then_idx[row_idx]]) {
185
7
                    nullable->insert_from_with_type<ColumnType>(
186
7
                            *raw_then_columns[then_idx[row_idx]], target);
187
7
                } else {
188
3
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
3
                            nullable->get_nested_column_ptr().get());
190
3
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
3
                    nullable->push_false_to_nullmap(1);
192
3
                }
193
            } else {
194
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
            }
197
10
        }
198
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
_ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
161
2
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
2
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
2
        std::vector<uint8_t> is_consts(then_columns.size());
164
2
        std::vector<uint8_t> is_nullable(then_columns.size());
165
8
        for (size_t i = 0; i < then_columns.size(); i++) {
166
6
            if (!then_columns[i]) {
167
0
                continue;
168
0
            }
169
6
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
6
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
6
        }
172
173
2
        auto* raw_result_column = result_column_ptr.get();
174
6
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
4
            if (!_has_else_expr && !then_idx[row_idx]) {
176
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
0
                        ->insert_default();
178
0
                continue;
179
0
            }
180
4
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
4
            if constexpr (then_null) {
182
4
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
4
                        result_column_ptr.get());
184
4
                if (is_nullable[then_idx[row_idx]]) {
185
4
                    nullable->insert_from_with_type<ColumnType>(
186
4
                            *raw_then_columns[then_idx[row_idx]], target);
187
4
                } else {
188
0
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
0
                            nullable->get_nested_column_ptr().get());
190
0
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
0
                    nullable->push_false_to_nullmap(1);
192
0
                }
193
            } else {
194
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
            }
197
4
        }
198
2
    }
_ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
161
1
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
1
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
1
        std::vector<uint8_t> is_consts(then_columns.size());
164
1
        std::vector<uint8_t> is_nullable(then_columns.size());
165
3
        for (size_t i = 0; i < then_columns.size(); i++) {
166
2
            if (!then_columns[i]) {
167
0
                continue;
168
0
            }
169
2
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
2
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
2
        }
172
173
1
        auto* raw_result_column = result_column_ptr.get();
174
2
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
1
            if (!_has_else_expr && !then_idx[row_idx]) {
176
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
0
                        ->insert_default();
178
0
                continue;
179
0
            }
180
1
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
1
            if constexpr (then_null) {
182
1
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
1
                        result_column_ptr.get());
184
1
                if (is_nullable[then_idx[row_idx]]) {
185
1
                    nullable->insert_from_with_type<ColumnType>(
186
1
                            *raw_then_columns[then_idx[row_idx]], target);
187
1
                } else {
188
0
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
0
                            nullable->get_nested_column_ptr().get());
190
0
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
0
                    nullable->push_false_to_nullmap(1);
192
0
                }
193
            } else {
194
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
            }
197
1
        }
198
1
    }
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
161
141
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
141
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
141
        std::vector<uint8_t> is_consts(then_columns.size());
164
141
        std::vector<uint8_t> is_nullable(then_columns.size());
165
458
        for (size_t i = 0; i < then_columns.size(); i++) {
166
317
            if (!then_columns[i]) {
167
26
                continue;
168
26
            }
169
291
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
291
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
291
        }
172
173
141
        auto* raw_result_column = result_column_ptr.get();
174
1.19k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
1.05k
            if (!_has_else_expr && !then_idx[row_idx]) {
176
11
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
11
                        ->insert_default();
178
11
                continue;
179
11
            }
180
1.04k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
1.04k
            if constexpr (then_null) {
182
1.04k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
1.04k
                        result_column_ptr.get());
184
1.04k
                if (is_nullable[then_idx[row_idx]]) {
185
3
                    nullable->insert_from_with_type<ColumnType>(
186
3
                            *raw_then_columns[then_idx[row_idx]], target);
187
1.03k
                } else {
188
1.03k
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
1.03k
                            nullable->get_nested_column_ptr().get());
190
1.03k
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
1.03k
                    nullable->push_false_to_nullmap(1);
192
1.03k
                }
193
            } else {
194
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
            }
197
1.04k
        }
198
141
    }
_ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnStrIjEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm
Line
Count
Source
161
74
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
162
74
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
163
74
        std::vector<uint8_t> is_consts(then_columns.size());
164
74
        std::vector<uint8_t> is_nullable(then_columns.size());
165
244
        for (size_t i = 0; i < then_columns.size(); i++) {
166
170
            if (!then_columns[i]) {
167
0
                continue;
168
0
            }
169
170
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
170
170
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
171
170
        }
172
173
74
        auto* raw_result_column = result_column_ptr.get();
174
288
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
175
214
            if (!_has_else_expr && !then_idx[row_idx]) {
176
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
177
0
                        ->insert_default();
178
0
                continue;
179
0
            }
180
214
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
181
            if constexpr (then_null) {
182
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
183
                        result_column_ptr.get());
184
                if (is_nullable[then_idx[row_idx]]) {
185
                    nullable->insert_from_with_type<ColumnType>(
186
                            *raw_then_columns[then_idx[row_idx]], target);
187
                } else {
188
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
189
                            nullable->get_nested_column_ptr().get());
190
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
191
                    nullable->push_false_to_nullmap(1);
192
                }
193
214
            } else {
194
214
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
195
214
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
196
214
            }
197
214
        }
198
74
    }
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
199
200
    template <typename IndexType, typename ColumnType>
201
    void update_result_auto_simd(MutableColumnPtr& result_column_ptr,
202
                                 const IndexType* __restrict then_idx,
203
1.68k
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
204
2.58k
        for (auto& then_ptr : then_columns) {
205
2.58k
            then_ptr = then_ptr->convert_to_full_column_if_const();
206
2.58k
        }
207
208
1.68k
        result_column_ptr->resize(rows_count);
209
1.68k
        auto* __restrict result_raw_data =
210
1.68k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
211
1.68k
                        ->get_data()
212
1.68k
                        .data();
213
214
        // set default value
215
3.63k
        for (int i = 0; i < rows_count; i++) {
216
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
217
                          std::is_same_v<ColumnType, ColumnDateTime> ||
218
                          std::is_same_v<ColumnType, ColumnDateV2> ||
219
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
220
0
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
221
0
                result_raw_data[i] = ColumnType::default_value();
222
1.94k
            } else {
223
1.94k
                result_raw_data[i] = {};
224
1.94k
            }
225
1.94k
        }
226
227
4.26k
        for (IndexType i = 0; i < then_columns.size(); i++) {
228
2.58k
            if (!then_columns[i]) {
229
0
                continue;
230
0
            }
231
2.58k
            const auto* __restrict column_raw_data =
232
2.58k
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
233
2.58k
                            then_columns[i].get())
234
2.58k
                            ->get_data()
235
2.58k
                            .data();
236
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
237
                          std::is_same_v<ColumnType, ColumnDateTime> ||
238
                          std::is_same_v<ColumnType, ColumnDateV2> ||
239
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
240
0
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
241
0
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
242
0
                    result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx]
243
0
                                                                        : result_raw_data[row_idx];
244
0
                }
245
2.58k
            } else {
246
5.88k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
247
3.29k
                    result_raw_data[row_idx] +=
248
3.29k
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
249
3.29k
                            column_raw_data[row_idx];
250
3.29k
                }
251
2.58k
            }
252
2.58k
        }
253
1.68k
    }
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
203
1.54k
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
204
2.37k
        for (auto& then_ptr : then_columns) {
205
2.37k
            then_ptr = then_ptr->convert_to_full_column_if_const();
206
2.37k
        }
207
208
1.54k
        result_column_ptr->resize(rows_count);
209
1.54k
        auto* __restrict result_raw_data =
210
1.54k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
211
1.54k
                        ->get_data()
212
1.54k
                        .data();
213
214
        // set default value
215
3.18k
        for (int i = 0; i < rows_count; i++) {
216
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
217
                          std::is_same_v<ColumnType, ColumnDateTime> ||
218
                          std::is_same_v<ColumnType, ColumnDateV2> ||
219
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
220
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
221
                result_raw_data[i] = ColumnType::default_value();
222
1.64k
            } else {
223
1.64k
                result_raw_data[i] = {};
224
1.64k
            }
225
1.64k
        }
226
227
3.91k
        for (IndexType i = 0; i < then_columns.size(); i++) {
228
2.37k
            if (!then_columns[i]) {
229
0
                continue;
230
0
            }
231
2.37k
            const auto* __restrict column_raw_data =
232
2.37k
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
233
2.37k
                            then_columns[i].get())
234
2.37k
                            ->get_data()
235
2.37k
                            .data();
236
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
237
                          std::is_same_v<ColumnType, ColumnDateTime> ||
238
                          std::is_same_v<ColumnType, ColumnDateV2> ||
239
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
240
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
241
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
242
                    result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx]
243
                                                                        : result_raw_data[row_idx];
244
                }
245
2.37k
            } else {
246
5.11k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
247
2.74k
                    result_raw_data[row_idx] +=
248
2.74k
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
249
2.74k
                            column_raw_data[row_idx];
250
2.74k
                }
251
2.37k
            }
252
2.37k
        }
253
1.54k
    }
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
203
142
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
204
209
        for (auto& then_ptr : then_columns) {
205
209
            then_ptr = then_ptr->convert_to_full_column_if_const();
206
209
        }
207
208
142
        result_column_ptr->resize(rows_count);
209
142
        auto* __restrict result_raw_data =
210
142
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
211
142
                        ->get_data()
212
142
                        .data();
213
214
        // set default value
215
449
        for (int i = 0; i < rows_count; i++) {
216
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
217
                          std::is_same_v<ColumnType, ColumnDateTime> ||
218
                          std::is_same_v<ColumnType, ColumnDateV2> ||
219
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
220
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
221
                result_raw_data[i] = ColumnType::default_value();
222
307
            } else {
223
307
                result_raw_data[i] = {};
224
307
            }
225
307
        }
226
227
351
        for (IndexType i = 0; i < then_columns.size(); i++) {
228
209
            if (!then_columns[i]) {
229
0
                continue;
230
0
            }
231
209
            const auto* __restrict column_raw_data =
232
209
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
233
209
                            then_columns[i].get())
234
209
                            ->get_data()
235
209
                            .data();
236
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
237
                          std::is_same_v<ColumnType, ColumnDateTime> ||
238
                          std::is_same_v<ColumnType, ColumnDateV2> ||
239
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
240
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
241
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
242
                    result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx]
243
                                                                        : result_raw_data[row_idx];
244
                }
245
209
            } else {
246
768
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
247
559
                    result_raw_data[row_idx] +=
248
559
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
249
559
                            column_raw_data[row_idx];
250
559
                }
251
209
            }
252
209
        }
253
142
    }
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
254
255
    template <typename IndexType>
256
    ColumnPtr _execute_impl(const std::vector<ColumnPtr>& when_columns,
257
1.92k
                            std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
258
1.92k
        std::vector<IndexType> then_idx(rows_count, 0);
259
1.92k
        IndexType* __restrict then_idx_ptr = then_idx.data();
260
2.96k
        for (IndexType i = 0; i < when_columns.size(); i++) {
261
1.15k
            IndexType column_idx = i + 1;
262
1.15k
            auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]);
263
264
1.15k
            if (is_consts) {
265
114
                if (raw_when_column->get_bool(0)) {
266
1.07k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
267
963
                        then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx;
268
963
                    }
269
114
                    break;
270
114
                }
271
0
                continue;
272
114
            }
273
274
1.04k
            if (is_column_nullable(*raw_when_column)) {
275
740
                const auto* column_nullable_ptr =
276
740
                        assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>(
277
740
                                raw_when_column.get());
278
740
                const auto* __restrict cond_raw_data =
279
740
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
280
740
                                column_nullable_ptr->get_nested_column_ptr().get())
281
740
                                ->get_data()
282
740
                                .data();
283
740
                if (!column_nullable_ptr->has_null()) {
284
1.88k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
285
1.20k
                        then_idx_ptr[row_idx] |=
286
1.20k
                                (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
287
1.20k
                    }
288
685
                    continue;
289
685
                }
290
55
                const auto* __restrict cond_raw_nullmap =
291
55
                        column_nullable_ptr->get_null_map_column_ptr()->get_data().data();
292
367
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
293
312
                    then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] *
294
312
                                              !cond_raw_nullmap[row_idx]) *
295
312
                                             column_idx;
296
312
                }
297
300
            } else {
298
300
                const auto* __restrict cond_raw_data =
299
300
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
300
300
                                raw_when_column.get())
301
300
                                ->get_data()
302
300
                                .data();
303
676
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
304
376
                    then_idx_ptr[row_idx] |=
305
376
                            (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
306
376
                }
307
300
            }
308
1.04k
        }
309
310
1.92k
        return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count);
311
1.92k
    }
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
257
1.92k
                            std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
258
1.92k
        std::vector<IndexType> then_idx(rows_count, 0);
259
1.92k
        IndexType* __restrict then_idx_ptr = then_idx.data();
260
2.96k
        for (IndexType i = 0; i < when_columns.size(); i++) {
261
1.15k
            IndexType column_idx = i + 1;
262
1.15k
            auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]);
263
264
1.15k
            if (is_consts) {
265
114
                if (raw_when_column->get_bool(0)) {
266
1.07k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
267
963
                        then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx;
268
963
                    }
269
114
                    break;
270
114
                }
271
0
                continue;
272
114
            }
273
274
1.04k
            if (is_column_nullable(*raw_when_column)) {
275
740
                const auto* column_nullable_ptr =
276
740
                        assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>(
277
740
                                raw_when_column.get());
278
740
                const auto* __restrict cond_raw_data =
279
740
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
280
740
                                column_nullable_ptr->get_nested_column_ptr().get())
281
740
                                ->get_data()
282
740
                                .data();
283
740
                if (!column_nullable_ptr->has_null()) {
284
1.88k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
285
1.20k
                        then_idx_ptr[row_idx] |=
286
1.20k
                                (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
287
1.20k
                    }
288
685
                    continue;
289
685
                }
290
55
                const auto* __restrict cond_raw_nullmap =
291
55
                        column_nullable_ptr->get_null_map_column_ptr()->get_data().data();
292
367
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
293
312
                    then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] *
294
312
                                              !cond_raw_nullmap[row_idx]) *
295
312
                                             column_idx;
296
312
                }
297
300
            } else {
298
300
                const auto* __restrict cond_raw_data =
299
300
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
300
300
                                raw_when_column.get())
301
300
                                ->get_data()
302
300
                                .data();
303
676
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
304
376
                    then_idx_ptr[row_idx] |=
305
376
                            (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
306
376
                }
307
300
            }
308
1.04k
        }
309
310
1.92k
        return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count);
311
1.92k
    }
312
313
    bool _has_else_expr;
314
315
    inline static const std::string FUNCTION_NAME = "case";
316
    inline static const std::string EXPR_NAME = "vcase expr";
317
};
318
} // namespace doris