Coverage Report

Created: 2026-10-09 07:20

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/variant_v2/column_variant_v2.h"
32
#include "core/data_type/data_type_nullable.h"
33
#include "core/data_type/data_type_variant_v2.h"
34
#include "core/data_type/define_primitive_type.h"
35
#include "core/data_type/primitive_type.h"
36
#include "exprs/function/function.h"
37
#include "exprs/function_context.h"
38
#include "exprs/vexpr.h"
39
40
namespace doris {
41
class RowDescriptor;
42
class RuntimeState;
43
class TExprNode;
44
45
class Block;
46
} // namespace doris
47
48
namespace doris {
49
50
class VCaseExpr final : public VExpr {
51
    ENABLE_FACTORY_CREATOR(VCaseExpr);
52
53
public:
54
    VCaseExpr(const TExprNode& node);
55
    ~VCaseExpr() override = default;
56
    Status execute_column_impl(VExprContext* context, const Block* block, const Selector* selector,
57
                               size_t count, ColumnPtr& result_column) const override;
58
    Status prepare(RuntimeState* state, const RowDescriptor& desc, VExprContext* context) override;
59
    Status open(RuntimeState* state, VExprContext* context,
60
                FunctionContext::FunctionStateScope scope) override;
61
    void close(VExprContext* context, FunctionContext::FunctionStateScope scope) override;
62
    const std::string& expr_name() const override;
63
    std::string debug_string() const override;
64
0
    bool has_else_expr() const { return _has_else_expr; }
65
1
    Status clone_node(VExprSPtr* cloned_expr) const override {
66
1
        DORIS_CHECK(cloned_expr != nullptr);
67
1
        auto node = clone_texpr_node();
68
1
        TCaseExpr case_node;
69
1
        case_node.__set_has_case_expr(false);
70
1
        case_node.__set_has_else_expr(_has_else_expr);
71
1
        node.__set_case_expr(case_node);
72
1
        *cloned_expr = VCaseExpr::create_shared(node);
73
1
        return Status::OK();
74
1
    }
75
76
private:
77
    template <typename IndexType, typename ColumnType>
78
    ColumnPtr _execute_update_result_impl(const IndexType* then_idx,
79
                                          std::vector<ColumnPtr>& then_columns,
80
2.17k
                                          size_t rows_count) const {
81
2.17k
        auto result_column_ptr = data_type()->create_column();
82
2.17k
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
158
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
158
            if (data_type()->is_nullable()) {
97
86
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
86
                                                                  then_columns, rows_count);
99
86
            } else {
100
72
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
72
                                                                   then_columns, rows_count);
102
72
            }
103
2.02k
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
55
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
55
                                                              then_columns, rows_count);
107
1.96k
        } else {
108
1.96k
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
1.96k
                                                           then_columns, rows_count);
110
1.96k
        }
111
2.17k
        return result_column_ptr;
112
2.17k
    }
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
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
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
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implItNS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEENS_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_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_implItNS_15ColumnVariantV2EEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_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
80
1.48k
                                          size_t rows_count) const {
81
1.48k
        auto result_column_ptr = data_type()->create_column();
82
1.48k
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
1.48k
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
4
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
4
                                                              then_columns, rows_count);
107
1.47k
        } else {
108
1.47k
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
1.47k
                                                           then_columns, rows_count);
110
1.47k
        }
111
1.48k
        return result_column_ptr;
112
1.48k
    }
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
80
24
                                          size_t rows_count) const {
81
24
        auto result_column_ptr = data_type()->create_column();
82
24
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
24
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
24
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
24
                                                              then_columns, rows_count);
107
24
        } else {
108
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
0
                                                           then_columns, rows_count);
110
0
        }
111
24
        return result_column_ptr;
112
24
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE6EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
134
                                          size_t rows_count) const {
81
134
        auto result_column_ptr = data_type()->create_column();
82
134
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
134
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
17
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
17
                                                              then_columns, rows_count);
107
117
        } else {
108
117
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
117
                                                           then_columns, rows_count);
110
117
        }
111
134
        return result_column_ptr;
112
134
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
26
                                          size_t rows_count) const {
81
26
        auto result_column_ptr = data_type()->create_column();
82
26
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
26
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
1
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
1
                                                              then_columns, rows_count);
107
25
        } else {
108
25
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
25
                                                           then_columns, rows_count);
110
25
        }
111
26
        return result_column_ptr;
112
26
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
30
                                          size_t rows_count) const {
81
30
        auto result_column_ptr = data_type()->create_column();
82
30
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
30
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
5
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
5
                                                              then_columns, rows_count);
107
25
        } else {
108
25
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
25
                                                           then_columns, rows_count);
110
25
        }
111
30
        return result_column_ptr;
112
30
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
68
                                          size_t rows_count) const {
81
68
        auto result_column_ptr = data_type()->create_column();
82
68
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
68
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
68
        } else {
108
68
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
68
                                                           then_columns, rows_count);
110
68
        }
111
68
        return result_column_ptr;
112
68
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
1
                                          size_t rows_count) const {
81
1
        auto result_column_ptr = data_type()->create_column();
82
1
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
1
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
1
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
1
                                                              then_columns, rows_count);
107
1
        } else {
108
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
0
                                                           then_columns, rows_count);
110
0
        }
111
1
        return result_column_ptr;
112
1
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_9ColumnStrIjEEEENS_3COWINS_7IColumnEE13immutable_ptrIS5_EEPKT_RSt6vectorIS8_SaIS8_EEm
Line
Count
Source
80
142
                                          size_t rows_count) const {
81
142
        auto result_column_ptr = data_type()->create_column();
82
142
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
142
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
142
            if (data_type()->is_nullable()) {
97
70
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
70
                                                                  then_columns, rows_count);
99
72
            } else {
100
72
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
72
                                                                   then_columns, rows_count);
102
72
            }
103
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
                                                              then_columns, rows_count);
107
        } else {
108
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
                                                           then_columns, rows_count);
110
        }
111
142
        return result_column_ptr;
112
142
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
20
                                          size_t rows_count) const {
81
20
        auto result_column_ptr = data_type()->create_column();
82
20
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
20
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
20
        } else {
108
20
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
20
                                                           then_columns, rows_count);
110
20
        }
111
20
        return result_column_ptr;
112
20
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
21
                                          size_t rows_count) const {
81
21
        auto result_column_ptr = data_type()->create_column();
82
21
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
21
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
3
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
3
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
21
        return result_column_ptr;
112
21
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
18
                                          size_t rows_count) const {
81
18
        auto result_column_ptr = data_type()->create_column();
82
18
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
            if (data_type()->is_nullable()) {
97
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
                                                                  then_columns, rows_count);
99
            } else {
100
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
                                                                   then_columns, rows_count);
102
            }
103
18
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
0
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
0
                                                              then_columns, rows_count);
107
18
        } else {
108
18
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
18
                                                           then_columns, rows_count);
110
18
        }
111
18
        return result_column_ptr;
112
18
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE37EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE44EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
9
                                          size_t rows_count) const {
81
9
        auto result_column_ptr = data_type()->create_column();
82
9
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
9
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
9
            if (data_type()->is_nullable()) {
97
9
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
9
                                                                  then_columns, rows_count);
99
9
            } else {
100
0
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
0
                                                                   then_columns, rows_count);
102
0
            }
103
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
                                                              then_columns, rows_count);
107
        } else {
108
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
                                                           then_columns, rows_count);
110
        }
111
9
        return result_column_ptr;
112
9
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE36EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_11ColumnArrayEEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm
Line
Count
Source
80
1
                                          size_t rows_count) const {
81
1
        auto result_column_ptr = data_type()->create_column();
82
1
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
1
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
1
            if (data_type()->is_nullable()) {
97
1
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
1
                                                                  then_columns, rows_count);
99
1
            } else {
100
0
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
0
                                                                   then_columns, rows_count);
102
0
            }
103
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
                                                              then_columns, rows_count);
107
        } else {
108
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
                                                           then_columns, rows_count);
110
        }
111
1
        return result_column_ptr;
112
1
    }
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
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
80
6
                                          size_t rows_count) const {
81
6
        auto result_column_ptr = data_type()->create_column();
82
6
        result_column_ptr->reserve(rows_count);
83
        if constexpr (std::is_same_v<ColumnType, ColumnString> ||
84
                      std::is_same_v<ColumnType, ColumnBitmap> ||
85
                      std::is_same_v<ColumnType, ColumnArray> ||
86
                      std::is_same_v<ColumnType, ColumnMap> ||
87
                      std::is_same_v<ColumnType, ColumnStruct> ||
88
                      std::is_same_v<ColumnType, ColumnVariantV2> ||
89
                      std::is_same_v<ColumnType, ColumnHLL> ||
90
                      std::is_same_v<ColumnType, ColumnQuantileState> ||
91
                      std::is_same_v<ColumnType, ColumnIPv4> ||
92
                      std::is_same_v<ColumnType, ColumnIPv6> ||
93
6
                      std::is_same_v<ColumnType, ColumnUUID>) {
94
            // result_column and all then_column is not nullable.
95
            // can't simd when type is string.
96
6
            if (data_type()->is_nullable()) {
97
6
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
98
6
                                                                  then_columns, rows_count);
99
6
            } else {
100
0
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
101
0
                                                                   then_columns, rows_count);
102
0
            }
103
        } else if (data_type()->is_nullable()) {
104
            // result_column and all then_column is nullable.
105
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
106
                                                              then_columns, rows_count);
107
        } else {
108
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
109
                                                           then_columns, rows_count);
110
        }
111
6
        return result_column_ptr;
112
6
    }
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
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_15ColumnVariantV2EEENS_3COWINS_7IColumnEE13immutable_ptrIS4_EEPKT_RSt6vectorIS7_SaIS7_EEm
113
114
    template <typename IndexType>
115
    ColumnPtr _execute_update_result(const IndexType* then_idx,
116
                                     std::vector<ColumnPtr>& then_columns,
117
1.89k
                                     size_t rows_count) const {
118
1.89k
#define CASE_TYPE(ptype, coltype) \
119
1.89k
    case PrimitiveType::ptype:    \
120
1.89k
        return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count);
121
122
1.89k
        switch (data_type()->get_primitive_type()) {
123
0
            CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8)
124
1.48k
            CASE_TYPE(TYPE_TINYINT, ColumnInt8)
125
0
            CASE_TYPE(TYPE_SMALLINT, ColumnInt16)
126
24
            CASE_TYPE(TYPE_INT, ColumnInt32)
127
134
            CASE_TYPE(TYPE_BIGINT, ColumnInt64)
128
0
            CASE_TYPE(TYPE_LARGEINT, ColumnInt128)
129
8
            CASE_TYPE(TYPE_FLOAT, ColumnFloat32)
130
12
            CASE_TYPE(TYPE_DOUBLE, ColumnFloat64)
131
0
            CASE_TYPE(TYPE_DECIMAL32, ColumnDecimal32)
132
68
            CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64)
133
1
            CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256)
134
0
            CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3)
135
0
            CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2)
136
30
            CASE_TYPE(TYPE_STRING, ColumnString)
137
0
            CASE_TYPE(TYPE_CHAR, ColumnString)
138
112
            CASE_TYPE(TYPE_VARCHAR, ColumnString)
139
0
            CASE_TYPE(TYPE_JSONB, ColumnString)
140
0
            CASE_TYPE(TYPE_DATE, ColumnDate)
141
0
            CASE_TYPE(TYPE_DATETIME, ColumnDateTime)
142
2
            CASE_TYPE(TYPE_DATEV2, ColumnDateV2)
143
0
            CASE_TYPE(TYPE_DATETIMEV2, ColumnDateTimeV2)
144
3
            CASE_TYPE(TYPE_TIMESTAMP_NS, ColumnTimeStampNs)
145
0
            CASE_TYPE(TYPE_TIMESTAMPTZ, ColumnTimeStampTz)
146
0
            CASE_TYPE(TYPE_IPV6, ColumnIPv6)
147
9
            CASE_TYPE(TYPE_UUID, ColumnUUID)
148
0
            CASE_TYPE(TYPE_IPV4, ColumnIPv4)
149
1
            CASE_TYPE(TYPE_ARRAY, ColumnArray)
150
0
            CASE_TYPE(TYPE_MAP, ColumnMap)
151
0
            CASE_TYPE(TYPE_STRUCT, ColumnStruct)
152
6
            CASE_TYPE(TYPE_BITMAP, ColumnBitmap)
153
0
            CASE_TYPE(TYPE_HLL, ColumnHLL)
154
0
            CASE_TYPE(TYPE_QUANTILE_STATE, ColumnQuantileState)
155
0
        case PrimitiveType::TYPE_VARIANT: {
156
0
            const IDataType* variant_type = remove_nullable(data_type()).get();
157
0
            DORIS_CHECK(dynamic_cast<const DataTypeVariantV2*>(variant_type) != nullptr);
158
0
            return _execute_update_result_impl<IndexType, ColumnVariantV2>(then_idx, then_columns,
159
0
                                                                           rows_count);
160
0
        }
161
0
        default:
162
0
            throw Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "argument_type {} not supported",
163
0
                            data_type()->get_name());
164
1.89k
        }
165
1.89k
#undef CASE_TYPE
166
1.89k
    }
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
117
1.89k
                                     size_t rows_count) const {
118
1.89k
#define CASE_TYPE(ptype, coltype) \
119
1.89k
    case PrimitiveType::ptype:    \
120
1.89k
        return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count);
121
122
1.89k
        switch (data_type()->get_primitive_type()) {
123
0
            CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8)
124
1.48k
            CASE_TYPE(TYPE_TINYINT, ColumnInt8)
125
0
            CASE_TYPE(TYPE_SMALLINT, ColumnInt16)
126
24
            CASE_TYPE(TYPE_INT, ColumnInt32)
127
134
            CASE_TYPE(TYPE_BIGINT, ColumnInt64)
128
0
            CASE_TYPE(TYPE_LARGEINT, ColumnInt128)
129
8
            CASE_TYPE(TYPE_FLOAT, ColumnFloat32)
130
12
            CASE_TYPE(TYPE_DOUBLE, ColumnFloat64)
131
0
            CASE_TYPE(TYPE_DECIMAL32, ColumnDecimal32)
132
68
            CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64)
133
1
            CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256)
134
0
            CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3)
135
0
            CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2)
136
30
            CASE_TYPE(TYPE_STRING, ColumnString)
137
0
            CASE_TYPE(TYPE_CHAR, ColumnString)
138
112
            CASE_TYPE(TYPE_VARCHAR, ColumnString)
139
0
            CASE_TYPE(TYPE_JSONB, ColumnString)
140
0
            CASE_TYPE(TYPE_DATE, ColumnDate)
141
0
            CASE_TYPE(TYPE_DATETIME, ColumnDateTime)
142
2
            CASE_TYPE(TYPE_DATEV2, ColumnDateV2)
143
0
            CASE_TYPE(TYPE_DATETIMEV2, ColumnDateTimeV2)
144
3
            CASE_TYPE(TYPE_TIMESTAMP_NS, ColumnTimeStampNs)
145
0
            CASE_TYPE(TYPE_TIMESTAMPTZ, ColumnTimeStampTz)
146
0
            CASE_TYPE(TYPE_IPV6, ColumnIPv6)
147
9
            CASE_TYPE(TYPE_UUID, ColumnUUID)
148
0
            CASE_TYPE(TYPE_IPV4, ColumnIPv4)
149
1
            CASE_TYPE(TYPE_ARRAY, ColumnArray)
150
0
            CASE_TYPE(TYPE_MAP, ColumnMap)
151
0
            CASE_TYPE(TYPE_STRUCT, ColumnStruct)
152
6
            CASE_TYPE(TYPE_BITMAP, ColumnBitmap)
153
0
            CASE_TYPE(TYPE_HLL, ColumnHLL)
154
0
            CASE_TYPE(TYPE_QUANTILE_STATE, ColumnQuantileState)
155
0
        case PrimitiveType::TYPE_VARIANT: {
156
0
            const IDataType* variant_type = remove_nullable(data_type()).get();
157
0
            DORIS_CHECK(dynamic_cast<const DataTypeVariantV2*>(variant_type) != nullptr);
158
0
            return _execute_update_result_impl<IndexType, ColumnVariantV2>(then_idx, then_columns,
159
0
                                                                           rows_count);
160
0
        }
161
0
        default:
162
0
            throw Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "argument_type {} not supported",
163
0
                            data_type()->get_name());
164
1.89k
        }
165
1.89k
#undef CASE_TYPE
166
1.89k
    }
167
168
    template <typename IndexType, typename ColumnType, bool then_null>
169
    void update_result_normal(MutableColumnPtr& result_column_ptr,
170
                              const IndexType* __restrict then_idx,
171
213
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
213
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
213
        std::vector<uint8_t> is_consts(then_columns.size());
174
213
        std::vector<uint8_t> is_nullable(then_columns.size());
175
699
        for (size_t i = 0; i < then_columns.size(); i++) {
176
486
            if (!then_columns[i]) {
177
59
                continue;
178
59
            }
179
427
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
427
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
427
        }
182
183
213
        auto* raw_result_column = result_column_ptr.get();
184
234k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
234k
            if (!_has_else_expr && !then_idx[row_idx]) {
186
16
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
16
                        ->insert_default();
188
16
                continue;
189
16
            }
190
234k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
234k
            if constexpr (then_null) {
192
133k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
133k
                        result_column_ptr.get());
194
133k
                if (is_nullable[then_idx[row_idx]]) {
195
115k
                    nullable->insert_from_with_type<ColumnType>(
196
115k
                            *raw_then_columns[then_idx[row_idx]], target);
197
115k
                } else {
198
18.3k
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
18.3k
                            nullable->get_nested_column_ptr().get());
200
18.3k
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
18.3k
                    nullable->push_false_to_nullmap(1);
202
18.3k
                }
203
133k
            } else {
204
100k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
100k
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
100k
            }
207
234k
        }
208
213
    }
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_13PrimitiveTypeE43EEELb1EEEvRNS_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_13PrimitiveTypeE44EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_12ColumnVectorILNS_13PrimitiveTypeE44EEELb0EEEvRNS_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_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_normalItNS_15ColumnVariantV2ELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalItNS_15ColumnVariantV2ELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_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
171
4
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
4
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
4
        std::vector<uint8_t> is_consts(then_columns.size());
174
4
        std::vector<uint8_t> is_nullable(then_columns.size());
175
12
        for (size_t i = 0; i < then_columns.size(); i++) {
176
8
            if (!then_columns[i]) {
177
4
                continue;
178
4
            }
179
4
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
4
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
4
        }
182
183
4
        auto* raw_result_column = result_column_ptr.get();
184
10
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
6
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
6
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
6
            if constexpr (then_null) {
192
6
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
6
                        result_column_ptr.get());
194
6
                if (is_nullable[then_idx[row_idx]]) {
195
0
                    nullable->insert_from_with_type<ColumnType>(
196
0
                            *raw_then_columns[then_idx[row_idx]], target);
197
6
                } else {
198
6
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
6
                            nullable->get_nested_column_ptr().get());
200
6
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
6
                    nullable->push_false_to_nullmap(1);
202
6
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
6
        }
208
4
    }
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
171
24
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
24
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
24
        std::vector<uint8_t> is_consts(then_columns.size());
174
24
        std::vector<uint8_t> is_nullable(then_columns.size());
175
51
        for (size_t i = 0; i < then_columns.size(); i++) {
176
27
            if (!then_columns[i]) {
177
0
                continue;
178
0
            }
179
27
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
27
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
27
        }
182
183
24
        auto* raw_result_column = result_column_ptr.get();
184
58
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
34
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
34
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
34
            if constexpr (then_null) {
192
34
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
34
                        result_column_ptr.get());
194
34
                if (is_nullable[then_idx[row_idx]]) {
195
34
                    nullable->insert_from_with_type<ColumnType>(
196
34
                            *raw_then_columns[then_idx[row_idx]], target);
197
34
                } else {
198
0
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
0
                            nullable->get_nested_column_ptr().get());
200
0
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
0
                    nullable->push_false_to_nullmap(1);
202
0
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
34
        }
208
24
    }
_ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE6EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
171
17
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
17
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
17
        std::vector<uint8_t> is_consts(then_columns.size());
174
17
        std::vector<uint8_t> is_nullable(then_columns.size());
175
60
        for (size_t i = 0; i < then_columns.size(); i++) {
176
43
            if (!then_columns[i]) {
177
13
                continue;
178
13
            }
179
30
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
30
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
30
        }
182
183
17
        auto* raw_result_column = result_column_ptr.get();
184
100k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
100k
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
100k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
100k
            if constexpr (then_null) {
192
100k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
100k
                        result_column_ptr.get());
194
100k
                if (is_nullable[then_idx[row_idx]]) {
195
100k
                    nullable->insert_from_with_type<ColumnType>(
196
100k
                            *raw_then_columns[then_idx[row_idx]], target);
197
100k
                } else {
198
0
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
0
                            nullable->get_nested_column_ptr().get());
200
0
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
0
                    nullable->push_false_to_nullmap(1);
202
0
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
100k
        }
208
17
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE7EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
_ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE8EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
171
1
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
1
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
1
        std::vector<uint8_t> is_consts(then_columns.size());
174
1
        std::vector<uint8_t> is_nullable(then_columns.size());
175
4
        for (size_t i = 0; i < then_columns.size(); i++) {
176
3
            if (!then_columns[i]) {
177
1
                continue;
178
1
            }
179
2
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
2
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
2
        }
182
183
1
        auto* raw_result_column = result_column_ptr.get();
184
4
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
3
            if (!_has_else_expr && !then_idx[row_idx]) {
186
1
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
1
                        ->insert_default();
188
1
                continue;
189
1
            }
190
2
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
2
            if constexpr (then_null) {
192
2
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
2
                        result_column_ptr.get());
194
2
                if (is_nullable[then_idx[row_idx]]) {
195
0
                    nullable->insert_from_with_type<ColumnType>(
196
0
                            *raw_then_columns[then_idx[row_idx]], target);
197
2
                } else {
198
2
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
2
                            nullable->get_nested_column_ptr().get());
200
2
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
2
                    nullable->push_false_to_nullmap(1);
202
2
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
2
        }
208
1
    }
_ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE9EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
171
5
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
5
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
5
        std::vector<uint8_t> is_consts(then_columns.size());
174
5
        std::vector<uint8_t> is_nullable(then_columns.size());
175
25
        for (size_t i = 0; i < then_columns.size(); i++) {
176
20
            if (!then_columns[i]) {
177
2
                continue;
178
2
            }
179
18
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
18
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
18
        }
182
183
5
        auto* raw_result_column = result_column_ptr.get();
184
26
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
21
            if (!_has_else_expr && !then_idx[row_idx]) {
186
1
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
1
                        ->insert_default();
188
1
                continue;
189
1
            }
190
20
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
20
            if constexpr (then_null) {
192
20
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
20
                        result_column_ptr.get());
194
20
                if (is_nullable[then_idx[row_idx]]) {
195
7
                    nullable->insert_from_with_type<ColumnType>(
196
7
                            *raw_then_columns[then_idx[row_idx]], target);
197
13
                } else {
198
13
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
13
                            nullable->get_nested_column_ptr().get());
200
13
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
13
                    nullable->push_false_to_nullmap(1);
202
13
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
20
        }
208
5
    }
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
171
1
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
1
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
1
        std::vector<uint8_t> is_consts(then_columns.size());
174
1
        std::vector<uint8_t> is_nullable(then_columns.size());
175
5
        for (size_t i = 0; i < then_columns.size(); i++) {
176
4
            if (!then_columns[i]) {
177
0
                continue;
178
0
            }
179
4
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
4
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
4
        }
182
183
1
        auto* raw_result_column = result_column_ptr.get();
184
4
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
3
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
3
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
3
            if constexpr (then_null) {
192
3
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
3
                        result_column_ptr.get());
194
3
                if (is_nullable[then_idx[row_idx]]) {
195
3
                    nullable->insert_from_with_type<ColumnType>(
196
3
                            *raw_then_columns[then_idx[row_idx]], target);
197
3
                } else {
198
0
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
0
                            nullable->get_nested_column_ptr().get());
200
0
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
0
                    nullable->push_false_to_nullmap(1);
202
0
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
3
        }
208
1
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
_ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnStrIjEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm
Line
Count
Source
171
70
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
70
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
70
        std::vector<uint8_t> is_consts(then_columns.size());
174
70
        std::vector<uint8_t> is_nullable(then_columns.size());
175
226
        for (size_t i = 0; i < then_columns.size(); i++) {
176
156
            if (!then_columns[i]) {
177
39
                continue;
178
39
            }
179
117
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
117
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
117
        }
182
183
70
        auto* raw_result_column = result_column_ptr.get();
184
1.15k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
1.08k
            if (!_has_else_expr && !then_idx[row_idx]) {
186
14
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
14
                        ->insert_default();
188
14
                continue;
189
14
            }
190
1.07k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
1.07k
            if constexpr (then_null) {
192
1.07k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
1.07k
                        result_column_ptr.get());
194
1.07k
                if (is_nullable[then_idx[row_idx]]) {
195
5
                    nullable->insert_from_with_type<ColumnType>(
196
5
                            *raw_then_columns[then_idx[row_idx]], target);
197
1.06k
                } else {
198
1.06k
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
1.06k
                            nullable->get_nested_column_ptr().get());
200
1.06k
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
1.06k
                    nullable->push_false_to_nullmap(1);
202
1.06k
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
1.07k
        }
208
70
    }
_ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnStrIjEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm
Line
Count
Source
171
72
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
72
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
72
        std::vector<uint8_t> is_consts(then_columns.size());
174
72
        std::vector<uint8_t> is_nullable(then_columns.size());
175
237
        for (size_t i = 0; i < then_columns.size(); i++) {
176
165
            if (!then_columns[i]) {
177
0
                continue;
178
0
            }
179
165
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
165
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
165
        }
182
183
72
        auto* raw_result_column = result_column_ptr.get();
184
100k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
100k
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
100k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
            if constexpr (then_null) {
192
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
                        result_column_ptr.get());
194
                if (is_nullable[then_idx[row_idx]]) {
195
                    nullable->insert_from_with_type<ColumnType>(
196
                            *raw_then_columns[then_idx[row_idx]], target);
197
                } else {
198
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
                            nullable->get_nested_column_ptr().get());
200
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
                    nullable->push_false_to_nullmap(1);
202
                }
203
100k
            } else {
204
100k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
100k
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
100k
            }
207
100k
        }
208
72
    }
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
_ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE43EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
171
3
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
3
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
3
        std::vector<uint8_t> is_consts(then_columns.size());
174
3
        std::vector<uint8_t> is_nullable(then_columns.size());
175
14
        for (size_t i = 0; i < then_columns.size(); i++) {
176
11
            if (!then_columns[i]) {
177
0
                continue;
178
0
            }
179
11
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
11
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
11
        }
182
183
3
        auto* raw_result_column = result_column_ptr.get();
184
16
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
13
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
13
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
13
            if constexpr (then_null) {
192
13
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
13
                        result_column_ptr.get());
194
13
                if (is_nullable[then_idx[row_idx]]) {
195
12
                    nullable->insert_from_with_type<ColumnType>(
196
12
                            *raw_then_columns[then_idx[row_idx]], target);
197
12
                } else {
198
1
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
1
                            nullable->get_nested_column_ptr().get());
200
1
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
1
                    nullable->push_false_to_nullmap(1);
202
1
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
13
        }
208
3
    }
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
_ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE44EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
171
9
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
9
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
9
        std::vector<uint8_t> is_consts(then_columns.size());
174
9
        std::vector<uint8_t> is_nullable(then_columns.size());
175
43
        for (size_t i = 0; i < then_columns.size(); i++) {
176
34
            if (!then_columns[i]) {
177
0
                continue;
178
0
            }
179
34
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
34
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
34
        }
182
183
9
        auto* raw_result_column = result_column_ptr.get();
184
32.7k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
32.7k
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
32.7k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
32.7k
            if constexpr (then_null) {
192
32.7k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
32.7k
                        result_column_ptr.get());
194
32.7k
                if (is_nullable[then_idx[row_idx]]) {
195
15.5k
                    nullable->insert_from_with_type<ColumnType>(
196
15.5k
                            *raw_then_columns[then_idx[row_idx]], target);
197
17.2k
                } else {
198
17.2k
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
17.2k
                            nullable->get_nested_column_ptr().get());
200
17.2k
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
17.2k
                    nullable->push_false_to_nullmap(1);
202
17.2k
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
32.7k
        }
208
9
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_12ColumnVectorILNS_13PrimitiveTypeE44EEELb0EEEvRNS_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
_ZNK5doris9VCaseExpr20update_result_normalIhNS_11ColumnArrayELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm
Line
Count
Source
171
1
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
1
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
1
        std::vector<uint8_t> is_consts(then_columns.size());
174
1
        std::vector<uint8_t> is_nullable(then_columns.size());
175
4
        for (size_t i = 0; i < then_columns.size(); i++) {
176
3
            if (!then_columns[i]) {
177
0
                continue;
178
0
            }
179
3
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
3
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
3
        }
182
183
1
        auto* raw_result_column = result_column_ptr.get();
184
4
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
3
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
3
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
3
            if constexpr (then_null) {
192
3
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
3
                        result_column_ptr.get());
194
3
                if (is_nullable[then_idx[row_idx]]) {
195
1
                    nullable->insert_from_with_type<ColumnType>(
196
1
                            *raw_then_columns[then_idx[row_idx]], target);
197
2
                } else {
198
2
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
2
                            nullable->get_nested_column_ptr().get());
200
2
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
2
                    nullable->push_false_to_nullmap(1);
202
2
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
3
        }
208
1
    }
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
_ZNK5doris9VCaseExpr20update_result_normalIhNS_17ColumnComplexTypeILNS_13PrimitiveTypeE22EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
171
6
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
172
6
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
173
6
        std::vector<uint8_t> is_consts(then_columns.size());
174
6
        std::vector<uint8_t> is_nullable(then_columns.size());
175
18
        for (size_t i = 0; i < then_columns.size(); i++) {
176
12
            if (!then_columns[i]) {
177
0
                continue;
178
0
            }
179
12
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
180
12
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
181
12
        }
182
183
6
        auto* raw_result_column = result_column_ptr.get();
184
12
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
185
6
            if (!_has_else_expr && !then_idx[row_idx]) {
186
0
                assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(raw_result_column)
187
0
                        ->insert_default();
188
0
                continue;
189
0
            }
190
6
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
191
6
            if constexpr (then_null) {
192
6
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
193
6
                        result_column_ptr.get());
194
6
                if (is_nullable[then_idx[row_idx]]) {
195
0
                    nullable->insert_from_with_type<ColumnType>(
196
0
                            *raw_then_columns[then_idx[row_idx]], target);
197
6
                } else {
198
6
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
199
6
                            nullable->get_nested_column_ptr().get());
200
6
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
201
6
                    nullable->push_false_to_nullmap(1);
202
6
                }
203
            } else {
204
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
205
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
206
            }
207
6
        }
208
6
    }
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
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_15ColumnVariantV2ELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_15ColumnVariantV2ELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS4_EEPKT_RSt6vectorINS5_13immutable_ptrIS4_EESaISE_EEm
209
210
    template <typename IndexType, typename ColumnType>
211
    void update_result_auto_simd(MutableColumnPtr& result_column_ptr,
212
                                 const IndexType* __restrict then_idx,
213
1.96k
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
13.2k
        for (auto& then_ptr : then_columns) {
215
13.2k
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
13.2k
        }
217
218
1.96k
        result_column_ptr->resize(rows_count);
219
1.96k
        auto* __restrict result_raw_data =
220
1.96k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
1.96k
                        ->get_data()
222
1.96k
                        .data();
223
224
        // set default value
225
508k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
297k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
297k
                result_raw_data[i] = ColumnType::default_value();
233
297k
            } else {
234
209k
                result_raw_data[i] = {};
235
209k
            }
236
506k
        }
237
238
15.2k
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
13.2k
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
13.2k
            const auto* __restrict column_raw_data =
243
13.2k
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
13.2k
                            then_columns[i].get())
245
13.2k
                            ->get_data()
246
13.2k
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
10.5k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
35.9M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
35.9M
                    if (then_idx[row_idx] == i) {
260
404k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
404k
                    }
262
35.9M
                }
263
10.5k
            } else {
264
305k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
302k
                    result_raw_data[row_idx] +=
266
302k
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
302k
                            column_raw_data[row_idx];
268
302k
                }
269
2.71k
            }
270
13.2k
        }
271
1.96k
    }
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
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
                result_raw_data[i] = ColumnType::default_value();
233
24.7k
            } else {
234
24.7k
                result_raw_data[i] = {};
235
24.7k
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
                result_raw_data[i] = ColumnType::default_value();
233
24.7k
            } else {
234
24.7k
                result_raw_data[i] = {};
235
24.7k
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
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
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdItNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
658
        for (auto& then_ptr : then_columns) {
215
658
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
658
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
676
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
658
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
658
            const auto* __restrict column_raw_data =
243
658
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
658
                            then_columns[i].get())
245
658
                            ->get_data()
246
658
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
658
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
658
        }
271
18
    }
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
213
1.47k
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
2.40k
        for (auto& then_ptr : then_columns) {
215
2.40k
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
2.40k
        }
217
218
1.47k
        result_column_ptr->resize(rows_count);
219
1.47k
        auto* __restrict result_raw_data =
220
1.47k
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
1.47k
                        ->get_data()
222
1.47k
                        .data();
223
224
        // set default value
225
2.95k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
                result_raw_data[i] = ColumnType::default_value();
233
1.48k
            } else {
234
1.48k
                result_raw_data[i] = {};
235
1.48k
            }
236
1.48k
        }
237
238
3.88k
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
2.40k
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
2.40k
            const auto* __restrict column_raw_data =
243
2.40k
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
2.40k
                            then_columns[i].get())
245
2.40k
                            ->get_data()
246
2.40k
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
                    if (then_idx[row_idx] == i) {
260
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
                    }
262
                }
263
2.40k
            } else {
264
4.82k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
2.41k
                    result_raw_data[row_idx] +=
266
2.41k
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
2.41k
                            column_raw_data[row_idx];
268
2.41k
                }
269
2.40k
            }
270
2.40k
        }
271
1.47k
    }
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
213
117
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
145
        for (auto& then_ptr : then_columns) {
215
145
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
145
        }
217
218
117
        result_column_ptr->resize(rows_count);
219
117
        auto* __restrict result_raw_data =
220
117
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
117
                        ->get_data()
222
117
                        .data();
223
224
        // set default value
225
100k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
                result_raw_data[i] = ColumnType::default_value();
233
100k
            } else {
234
100k
                result_raw_data[i] = {};
235
100k
            }
236
100k
        }
237
238
262
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
145
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
145
            const auto* __restrict column_raw_data =
243
145
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
145
                            then_columns[i].get())
245
145
                            ->get_data()
246
145
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
                    if (then_idx[row_idx] == i) {
260
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
                    }
262
                }
263
145
            } else {
264
300k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
300k
                    result_raw_data[row_idx] +=
266
300k
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
300k
                            column_raw_data[row_idx];
268
300k
                }
269
145
            }
270
145
        }
271
117
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE7EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE8EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
25
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
675
        for (auto& then_ptr : then_columns) {
215
675
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
675
        }
217
218
25
        result_column_ptr->resize(rows_count);
219
25
        auto* __restrict result_raw_data =
220
25
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
25
                        ->get_data()
222
25
                        .data();
223
224
        // set default value
225
28.9k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
                result_raw_data[i] = ColumnType::default_value();
233
28.8k
            } else {
234
28.8k
                result_raw_data[i] = {};
235
28.8k
            }
236
28.8k
        }
237
238
700
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
675
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
675
            const auto* __restrict column_raw_data =
243
675
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
675
                            then_columns[i].get())
245
675
                            ->get_data()
246
675
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
675
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
28.8k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
28.8k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
675
        }
271
25
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE9EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
25
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
675
        for (auto& then_ptr : then_columns) {
215
675
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
675
        }
217
218
25
        result_column_ptr->resize(rows_count);
219
25
        auto* __restrict result_raw_data =
220
25
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
25
                        ->get_data()
222
25
                        .data();
223
224
        // set default value
225
28.9k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
                result_raw_data[i] = ColumnType::default_value();
233
28.8k
            } else {
234
28.8k
                result_raw_data[i] = {};
235
28.8k
            }
236
28.8k
        }
237
238
700
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
675
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
675
            const auto* __restrict column_raw_data =
243
675
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
675
                            then_columns[i].get())
245
675
                            ->get_data()
246
675
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
675
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.25M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.25M
                    if (then_idx[row_idx] == i) {
260
28.8k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
28.8k
                    }
262
2.25M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
675
        }
271
25
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
68
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
164
        for (auto& then_ptr : then_columns) {
215
164
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
164
        }
217
218
68
        result_column_ptr->resize(rows_count);
219
68
        auto* __restrict result_raw_data =
220
68
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
68
                        ->get_data()
222
68
                        .data();
223
224
        // set default value
225
184
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
                result_raw_data[i] = ColumnType::default_value();
233
116
            } else {
234
116
                result_raw_data[i] = {};
235
116
            }
236
116
        }
237
238
232
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
164
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
164
            const auto* __restrict column_raw_data =
243
164
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
164
                            then_columns[i].get())
245
164
                            ->get_data()
246
164
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
                    if (then_idx[row_idx] == i) {
260
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
                    }
262
                }
263
164
            } else {
264
468
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
304
                    result_raw_data[row_idx] +=
266
304
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
304
                            column_raw_data[row_idx];
268
304
                }
269
164
            }
270
164
        }
271
68
    }
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
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE11EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
654
        for (auto& then_ptr : then_columns) {
215
654
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
654
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
672
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
654
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
654
            const auto* __restrict column_raw_data =
243
654
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
654
                            then_columns[i].get())
245
654
                            ->get_data()
246
654
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
654
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.24M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.23M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.23M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
654
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE12EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
654
        for (auto& then_ptr : then_columns) {
215
654
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
654
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
672
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
654
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
654
            const auto* __restrict column_raw_data =
243
654
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
654
                            then_columns[i].get())
245
654
                            ->get_data()
246
654
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
654
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.24M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.23M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.23M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
654
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
20
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
660
        for (auto& then_ptr : then_columns) {
215
660
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
660
        }
217
218
20
        result_column_ptr->resize(rows_count);
219
20
        auto* __restrict result_raw_data =
220
20
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
20
                        ->get_data()
222
20
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
680
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
660
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
660
            const auto* __restrict column_raw_data =
243
660
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
660
                            then_columns[i].get())
245
660
                            ->get_data()
246
660
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
660
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.24M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.23M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.23M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
660
        }
271
20
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE26EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
654
        for (auto& then_ptr : then_columns) {
215
654
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
654
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
672
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
654
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
654
            const auto* __restrict column_raw_data =
243
654
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
654
                            then_columns[i].get())
245
654
                            ->get_data()
246
654
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
654
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.24M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.23M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.23M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
654
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE43EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
654
        for (auto& then_ptr : then_columns) {
215
654
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
654
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
672
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
654
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
654
            const auto* __restrict column_raw_data =
243
654
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
654
                            then_columns[i].get())
245
654
                            ->get_data()
246
654
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
654
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.24M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.23M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.23M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
654
        }
271
18
    }
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE42EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
213
18
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
214
654
        for (auto& then_ptr : then_columns) {
215
654
            then_ptr = then_ptr->convert_to_full_column_if_const();
216
654
        }
217
218
18
        result_column_ptr->resize(rows_count);
219
18
        auto* __restrict result_raw_data =
220
18
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
221
18
                        ->get_data()
222
18
                        .data();
223
224
        // set default value
225
24.7k
        for (int i = 0; i < rows_count; i++) {
226
            if constexpr (std::is_same_v<ColumnType, ColumnDate> ||
227
                          std::is_same_v<ColumnType, ColumnDateTime> ||
228
                          std::is_same_v<ColumnType, ColumnDateV2> ||
229
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
230
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
231
24.7k
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
232
24.7k
                result_raw_data[i] = ColumnType::default_value();
233
            } else {
234
                result_raw_data[i] = {};
235
            }
236
24.7k
        }
237
238
672
        for (IndexType i = 0; i < then_columns.size(); i++) {
239
654
            if (!then_columns[i]) {
240
0
                continue;
241
0
            }
242
654
            const auto* __restrict column_raw_data =
243
654
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
244
654
                            then_columns[i].get())
245
654
                            ->get_data()
246
654
                            .data();
247
            if constexpr (std::is_same_v<ColumnType, ColumnFloat32> ||
248
                          std::is_same_v<ColumnType, ColumnFloat64> ||
249
                          std::is_same_v<ColumnType, ColumnDate> ||
250
                          std::is_same_v<ColumnType, ColumnDateTime> ||
251
                          std::is_same_v<ColumnType, ColumnDateV2> ||
252
                          std::is_same_v<ColumnType, ColumnDateTimeV2> ||
253
                          std::is_same_v<ColumnType, ColumnTimeStampNs> ||
254
654
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
255
                // Arithmetic masking propagates unselected NaN/Infinity and loses signed zero.
256
                // Conditional stores also let the compiler vectorize without loading from a
257
                // selected source/destination pointer, as a ternary assignment can do.
258
2.24M
                for (size_t row_idx = 0; row_idx < rows_count; row_idx++) {
259
2.23M
                    if (then_idx[row_idx] == i) {
260
24.7k
                        result_raw_data[row_idx] = column_raw_data[row_idx];
261
24.7k
                    }
262
2.23M
                }
263
            } else {
264
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
265
                    result_raw_data[row_idx] +=
266
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
267
                            column_raw_data[row_idx];
268
                }
269
            }
270
654
        }
271
18
    }
272
273
    template <typename IndexType>
274
    ColumnPtr _execute_impl(const std::vector<ColumnPtr>& when_columns,
275
1.89k
                            std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
276
1.89k
        std::vector<IndexType> then_idx(rows_count, 0);
277
1.89k
        IndexType* __restrict then_idx_ptr = then_idx.data();
278
3.21k
        for (IndexType i = 0; i < when_columns.size(); i++) {
279
1.35k
            IndexType column_idx = i + 1;
280
1.35k
            auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]);
281
282
1.35k
            if (is_consts) {
283
30
                if (raw_when_column->get_bool(0)) {
284
993
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
285
963
                        then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx;
286
963
                    }
287
30
                    break;
288
30
                }
289
0
                continue;
290
30
            }
291
292
1.32k
            if (is_column_nullable(*raw_when_column)) {
293
866
                const auto* column_nullable_ptr =
294
866
                        assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>(
295
866
                                raw_when_column.get());
296
866
                const auto* __restrict cond_raw_data =
297
866
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
298
866
                                column_nullable_ptr->get_nested_column_ptr().get())
299
866
                                ->get_data()
300
866
                                .data();
301
866
                if (!column_nullable_ptr->has_null()) {
302
516k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
303
515k
                        then_idx_ptr[row_idx] |=
304
515k
                                (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
305
515k
                    }
306
795
                    continue;
307
795
                }
308
71
                const auto* __restrict cond_raw_nullmap =
309
71
                        column_nullable_ptr->get_null_map_column_ptr()->get_data().data();
310
200k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
311
200k
                    then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] *
312
200k
                                              !cond_raw_nullmap[row_idx]) *
313
200k
                                             column_idx;
314
200k
                }
315
460
            } else {
316
460
                const auto* __restrict cond_raw_data =
317
460
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
318
460
                                raw_when_column.get())
319
460
                                ->get_data()
320
460
                                .data();
321
17.5k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
322
17.0k
                    then_idx_ptr[row_idx] |=
323
17.0k
                            (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
324
17.0k
                }
325
460
            }
326
1.32k
        }
327
328
1.89k
        return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count);
329
1.89k
    }
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
275
1.89k
                            std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
276
1.89k
        std::vector<IndexType> then_idx(rows_count, 0);
277
1.89k
        IndexType* __restrict then_idx_ptr = then_idx.data();
278
3.21k
        for (IndexType i = 0; i < when_columns.size(); i++) {
279
1.35k
            IndexType column_idx = i + 1;
280
1.35k
            auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]);
281
282
1.35k
            if (is_consts) {
283
30
                if (raw_when_column->get_bool(0)) {
284
993
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
285
963
                        then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx;
286
963
                    }
287
30
                    break;
288
30
                }
289
0
                continue;
290
30
            }
291
292
1.32k
            if (is_column_nullable(*raw_when_column)) {
293
866
                const auto* column_nullable_ptr =
294
866
                        assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>(
295
866
                                raw_when_column.get());
296
866
                const auto* __restrict cond_raw_data =
297
866
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
298
866
                                column_nullable_ptr->get_nested_column_ptr().get())
299
866
                                ->get_data()
300
866
                                .data();
301
866
                if (!column_nullable_ptr->has_null()) {
302
516k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
303
515k
                        then_idx_ptr[row_idx] |=
304
515k
                                (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
305
515k
                    }
306
795
                    continue;
307
795
                }
308
71
                const auto* __restrict cond_raw_nullmap =
309
71
                        column_nullable_ptr->get_null_map_column_ptr()->get_data().data();
310
200k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
311
200k
                    then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] *
312
200k
                                              !cond_raw_nullmap[row_idx]) *
313
200k
                                             column_idx;
314
200k
                }
315
460
            } else {
316
460
                const auto* __restrict cond_raw_data =
317
460
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
318
460
                                raw_when_column.get())
319
460
                                ->get_data()
320
460
                                .data();
321
17.5k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
322
17.0k
                    then_idx_ptr[row_idx] |=
323
17.0k
                            (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
324
17.0k
                }
325
460
            }
326
1.32k
        }
327
328
1.89k
        return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count);
329
1.89k
    }
330
331
    bool _has_else_expr;
332
333
    inline static const std::string FUNCTION_NAME = "case";
334
    inline static const std::string EXPR_NAME = "vcase expr";
335
};
336
} // namespace doris