Coverage Report

Created: 2026-03-15 22:45

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