Coverage Report

Created: 2026-06-24 04:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/vcase_expr.h
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
#pragma once
19
20
#include <string>
21
22
#include "common/exception.h"
23
#include "common/status.h"
24
#include "core/column/column_array.h"
25
#include "core/column/column_complex.h"
26
#include "core/column/column_const.h"
27
#include "core/column/column_decimal.h"
28
#include "core/column/column_map.h"
29
#include "core/column/column_nullable.h"
30
#include "core/column/column_struct.h"
31
#include "core/column/column_variant.h"
32
#include "core/data_type/define_primitive_type.h"
33
#include "core/data_type/primitive_type.h"
34
#include "exprs/function/function.h"
35
#include "exprs/function_context.h"
36
#include "exprs/vexpr.h"
37
38
namespace doris {
39
class RowDescriptor;
40
class RuntimeState;
41
class TExprNode;
42
43
class Block;
44
} // namespace doris
45
46
namespace doris {
47
48
class VCaseExpr final : public VExpr {
49
    ENABLE_FACTORY_CREATOR(VCaseExpr);
50
51
public:
52
    VCaseExpr(const TExprNode& node);
53
    ~VCaseExpr() override = default;
54
    Status execute_column_impl(VExprContext* context, const Block* block, const Selector* selector,
55
                               size_t count, ColumnPtr& result_column) const override;
56
    Status prepare(RuntimeState* state, const RowDescriptor& desc, VExprContext* context) override;
57
    Status open(RuntimeState* state, VExprContext* context,
58
                FunctionContext::FunctionStateScope scope) override;
59
    void close(VExprContext* context, FunctionContext::FunctionStateScope scope) override;
60
    const std::string& expr_name() const override;
61
    std::string debug_string() const override;
62
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
446
                                          size_t rows_count) const {
68
446
        auto result_column_ptr = data_type()->create_column();
69
446
        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
226
                      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
226
            if (data_type()->is_nullable()) {
83
142
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
84
142
                                                                  then_columns, rows_count);
85
142
            } else {
86
84
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
87
84
                                                                   then_columns, rows_count);
88
84
            }
89
226
        } else if (data_type()->is_nullable()) {
90
            // result_column and all then_column is nullable.
91
19
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
92
19
                                                              then_columns, rows_count);
93
201
        } else {
94
201
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
95
201
                                                           then_columns, rows_count);
96
201
        }
97
446
        return result_column_ptr;
98
446
    }
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
22
                                          size_t rows_count) const {
68
22
        auto result_column_ptr = data_type()->create_column();
69
22
        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
22
        } 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
19
        } else {
94
19
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
95
19
                                                           then_columns, rows_count);
96
19
        }
97
22
        return result_column_ptr;
98
22
    }
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
112
                                          size_t rows_count) const {
68
112
        auto result_column_ptr = data_type()->create_column();
69
112
        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
112
        } 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
112
        } else {
94
112
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
95
112
                                                           then_columns, rows_count);
96
112
        }
97
112
        return result_column_ptr;
98
112
    }
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
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
67
68
                                          size_t rows_count) const {
68
68
        auto result_column_ptr = data_type()->create_column();
69
68
        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
68
        } 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
68
        } else {
94
68
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
95
68
                                                           then_columns, rows_count);
96
68
        }
97
68
        return result_column_ptr;
98
68
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
67
2
                                          size_t rows_count) const {
68
2
        auto result_column_ptr = data_type()->create_column();
69
2
        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
2
        } 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
2
        } else {
94
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
95
0
                                                           then_columns, rows_count);
96
0
        }
97
2
        return result_column_ptr;
98
2
    }
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
67
1
                                          size_t rows_count) const {
68
1
        auto result_column_ptr = data_type()->create_column();
69
1
        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
        } else if (data_type()->is_nullable()) {
90
            // result_column and all then_column is nullable.
91
1
            update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
92
1
                                                              then_columns, rows_count);
93
1
        } else {
94
0
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
95
0
                                                           then_columns, rows_count);
96
0
        }
97
1
        return result_column_ptr;
98
1
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_9ColumnStrIjEEEENS_3COWINS_7IColumnEE13immutable_ptrIS5_EEPKT_RSt6vectorIS8_SaIS8_EEm
Line
Count
Source
67
226
                                          size_t rows_count) const {
68
226
        auto result_column_ptr = data_type()->create_column();
69
226
        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
226
                      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
226
            if (data_type()->is_nullable()) {
83
142
                update_result_normal<IndexType, ColumnType, true>(result_column_ptr, then_idx,
84
142
                                                                  then_columns, rows_count);
85
142
            } else {
86
84
                update_result_normal<IndexType, ColumnType, false>(result_column_ptr, then_idx,
87
84
                                                                   then_columns, rows_count);
88
84
            }
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
226
        return result_column_ptr;
98
226
    }
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
_ZNK5doris9VCaseExpr27_execute_update_result_implIhNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EEPKT_RSt6vectorIS9_SaIS9_EEm
Line
Count
Source
67
2
                                          size_t rows_count) const {
68
2
        auto result_column_ptr = data_type()->create_column();
69
2
        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
2
        } 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
2
        } else {
94
2
            update_result_auto_simd<IndexType, ColumnType>(result_column_ptr, then_idx,
95
2
                                                           then_columns, rows_count);
96
2
        }
97
2
        return result_column_ptr;
98
2
    }
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
446
                                     size_t rows_count) const {
104
446
#define CASE_TYPE(ptype, coltype) \
105
446
    case PrimitiveType::ptype:    \
106
446
        return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count);
107
108
446
        switch (data_type()->get_primitive_type()) {
109
0
            CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8)
110
22
            CASE_TYPE(TYPE_TINYINT, ColumnInt8)
111
0
            CASE_TYPE(TYPE_SMALLINT, ColumnInt16)
112
10
            CASE_TYPE(TYPE_INT, ColumnInt32)
113
112
            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
68
            CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64)
119
2
            CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256)
120
1
            CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3)
121
0
            CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2)
122
116
            CASE_TYPE(TYPE_STRING, ColumnString)
123
0
            CASE_TYPE(TYPE_CHAR, ColumnString)
124
110
            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
2
            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
446
        }
144
446
#undef CASE_TYPE
145
446
    }
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
446
                                     size_t rows_count) const {
104
446
#define CASE_TYPE(ptype, coltype) \
105
446
    case PrimitiveType::ptype:    \
106
446
        return _execute_update_result_impl<IndexType, coltype>(then_idx, then_columns, rows_count);
107
108
446
        switch (data_type()->get_primitive_type()) {
109
0
            CASE_TYPE(TYPE_BOOLEAN, ColumnUInt8)
110
22
            CASE_TYPE(TYPE_TINYINT, ColumnInt8)
111
0
            CASE_TYPE(TYPE_SMALLINT, ColumnInt16)
112
10
            CASE_TYPE(TYPE_INT, ColumnInt32)
113
112
            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
68
            CASE_TYPE(TYPE_DECIMAL64, ColumnDecimal64)
119
2
            CASE_TYPE(TYPE_DECIMAL256, ColumnDecimal256)
120
1
            CASE_TYPE(TYPE_DECIMAL128I, ColumnDecimal128V3)
121
0
            CASE_TYPE(TYPE_DECIMALV2, ColumnDecimal128V2)
122
116
            CASE_TYPE(TYPE_STRING, ColumnString)
123
0
            CASE_TYPE(TYPE_CHAR, ColumnString)
124
110
            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
2
            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
446
        }
144
446
#undef CASE_TYPE
145
446
    }
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
245
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
151
245
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
152
245
        std::vector<uint8_t> is_consts(then_columns.size());
153
245
        std::vector<uint8_t> is_nullable(then_columns.size());
154
791
        for (size_t i = 0; i < then_columns.size(); i++) {
155
546
            if (!then_columns[i]) {
156
29
                continue;
157
29
            }
158
517
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
159
517
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
160
517
        }
161
162
245
        auto* raw_result_column = result_column_ptr.get();
163
1.57k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
164
1.32k
            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
1.31k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
170
1.31k
            if constexpr (then_null) {
171
1.08k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
172
1.08k
                        result_column_ptr.get());
173
1.08k
                if (is_nullable[then_idx[row_idx]]) {
174
40
                    nullable->insert_from_with_type<ColumnType>(
175
40
                            *raw_then_columns[then_idx[row_idx]], target);
176
1.04k
                } else {
177
1.04k
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
178
1.04k
                            nullable->get_nested_column_ptr().get());
179
1.04k
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
180
1.04k
                    nullable->push_false_to_nullmap(1);
181
1.04k
                }
182
1.08k
            } else {
183
234
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
184
234
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
185
234
            }
186
1.31k
        }
187
245
    }
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
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
10
        for (size_t i = 0; i < then_columns.size(); i++) {
155
7
            if (!then_columns[i]) {
156
3
                continue;
157
3
            }
158
4
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
159
4
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
160
4
        }
161
162
3
        auto* raw_result_column = result_column_ptr.get();
163
8
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
164
5
            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
5
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
170
5
            if constexpr (then_null) {
171
5
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
172
5
                        result_column_ptr.get());
173
5
                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
5
                } else {
177
5
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
178
5
                            nullable->get_nested_column_ptr().get());
179
5
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
180
5
                    nullable->push_false_to_nullmap(1);
181
5
                }
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
5
        }
187
3
    }
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] = is_column_nullable(*raw_then_columns[i]);
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] = is_column_nullable(*raw_then_columns[i]);
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
_ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE35EEELb1EEEvRNS_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
8
        for (size_t i = 0; i < then_columns.size(); i++) {
155
6
            if (!then_columns[i]) {
156
0
                continue;
157
0
            }
158
6
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
159
6
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
160
6
        }
161
162
2
        auto* raw_result_column = result_column_ptr.get();
163
6
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
164
4
            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
4
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
170
4
            if constexpr (then_null) {
171
4
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
172
4
                        result_column_ptr.get());
173
4
                if (is_nullable[then_idx[row_idx]]) {
174
4
                    nullable->insert_from_with_type<ColumnType>(
175
4
                            *raw_then_columns[then_idx[row_idx]], target);
176
4
                } 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
4
        }
187
2
    }
_ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE30EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
150
1
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
151
1
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
152
1
        std::vector<uint8_t> is_consts(then_columns.size());
153
1
        std::vector<uint8_t> is_nullable(then_columns.size());
154
3
        for (size_t i = 0; i < then_columns.size(); i++) {
155
2
            if (!then_columns[i]) {
156
0
                continue;
157
0
            }
158
2
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
159
2
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
160
2
        }
161
162
1
        auto* raw_result_column = result_column_ptr.get();
163
2
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
164
1
            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
1
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
170
1
            if constexpr (then_null) {
171
1
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
172
1
                        result_column_ptr.get());
173
1
                if (is_nullable[then_idx[row_idx]]) {
174
1
                    nullable->insert_from_with_type<ColumnType>(
175
1
                            *raw_then_columns[then_idx[row_idx]], target);
176
1
                } 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
1
        }
187
1
    }
Unexecuted instantiation: _ZNK5doris9VCaseExpr20update_result_normalIhNS_13ColumnDecimalILNS_13PrimitiveTypeE20EEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
_ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnStrIjEELb1EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm
Line
Count
Source
150
142
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
151
142
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
152
142
        std::vector<uint8_t> is_consts(then_columns.size());
153
142
        std::vector<uint8_t> is_nullable(then_columns.size());
154
460
        for (size_t i = 0; i < then_columns.size(); i++) {
155
318
            if (!then_columns[i]) {
156
26
                continue;
157
26
            }
158
292
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
159
292
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
160
292
        }
161
162
142
        auto* raw_result_column = result_column_ptr.get();
163
1.19k
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
164
1.05k
            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
1.04k
            size_t target = is_consts[then_idx[row_idx]] ? 0 : row_idx;
170
1.04k
            if constexpr (then_null) {
171
1.04k
                auto* nullable = assert_cast<ColumnNullable*, TypeCheckOnRelease::DISABLE>(
172
1.04k
                        result_column_ptr.get());
173
1.04k
                if (is_nullable[then_idx[row_idx]]) {
174
8
                    nullable->insert_from_with_type<ColumnType>(
175
8
                            *raw_then_columns[then_idx[row_idx]], target);
176
1.03k
                } else {
177
1.03k
                    auto* nested = assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(
178
1.03k
                            nullable->get_nested_column_ptr().get());
179
1.03k
                    nested->insert_from(*raw_then_columns[then_idx[row_idx]], target);
180
1.03k
                    nullable->push_false_to_nullmap(1);
181
1.03k
                }
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
1.04k
        }
187
142
    }
_ZNK5doris9VCaseExpr20update_result_normalIhNS_9ColumnStrIjEELb0EEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS5_EEPKT_RSt6vectorINS6_13immutable_ptrIS5_EESaISF_EEm
Line
Count
Source
150
84
                              std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
151
84
        std::vector<ColumnPtr> raw_then_columns(then_columns.size());
152
84
        std::vector<uint8_t> is_consts(then_columns.size());
153
84
        std::vector<uint8_t> is_nullable(then_columns.size());
154
278
        for (size_t i = 0; i < then_columns.size(); i++) {
155
194
            if (!then_columns[i]) {
156
0
                continue;
157
0
            }
158
194
            std::tie(raw_then_columns[i], is_consts[i]) = unpack_if_const(then_columns[i]);
159
194
            is_nullable[i] = is_column_nullable(*raw_then_columns[i]);
160
194
        }
161
162
84
        auto* raw_result_column = result_column_ptr.get();
163
318
        for (int row_idx = 0; row_idx < rows_count; row_idx++) {
164
234
            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
234
            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
234
            } else {
183
234
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
184
234
                        ->insert_from(*raw_then_columns[then_idx[row_idx]], target);
185
234
            }
186
234
        }
187
84
    }
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
201
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
193
343
        for (auto& then_ptr : then_columns) {
194
343
            then_ptr = then_ptr->convert_to_full_column_if_const();
195
343
        }
196
197
201
        result_column_ptr->resize(rows_count);
198
201
        auto* __restrict result_raw_data =
199
201
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
200
201
                        ->get_data()
201
201
                        .data();
202
203
        // set default value
204
689
        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
10
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
210
10
                result_raw_data[i] = ColumnType::default_value();
211
478
            } else {
212
478
                result_raw_data[i] = {};
213
478
            }
214
488
        }
215
216
544
        for (IndexType i = 0; i < then_columns.size(); i++) {
217
343
            if (!then_columns[i]) {
218
0
                continue;
219
0
            }
220
343
            const auto* __restrict column_raw_data =
221
343
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
222
343
                            then_columns[i].get())
223
343
                            ->get_data()
224
343
                            .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
6
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
230
36
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
231
30
                    result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx]
232
30
                                                                        : result_raw_data[row_idx];
233
30
                }
234
337
            } else {
235
1.36k
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
236
1.02k
                    result_raw_data[row_idx] +=
237
1.02k
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
238
1.02k
                            column_raw_data[row_idx];
239
1.02k
                }
240
337
            }
241
343
        }
242
201
    }
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
19
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
193
59
        for (auto& then_ptr : then_columns) {
194
59
            then_ptr = then_ptr->convert_to_full_column_if_const();
195
59
        }
196
197
19
        result_column_ptr->resize(rows_count);
198
19
        auto* __restrict result_raw_data =
199
19
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
200
19
                        ->get_data()
201
19
                        .data();
202
203
        // set default value
204
141
        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
122
            } else {
212
122
                result_raw_data[i] = {};
213
122
            }
214
122
        }
215
216
78
        for (IndexType i = 0; i < then_columns.size(); i++) {
217
59
            if (!then_columns[i]) {
218
0
                continue;
219
0
            }
220
59
            const auto* __restrict column_raw_data =
221
59
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
222
59
                            then_columns[i].get())
223
59
                            ->get_data()
224
59
                            .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
59
            } else {
235
514
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
236
455
                    result_raw_data[row_idx] +=
237
455
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
238
455
                            column_raw_data[row_idx];
239
455
                }
240
59
            }
241
59
        }
242
19
    }
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
112
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
193
114
        for (auto& then_ptr : then_columns) {
194
114
            then_ptr = then_ptr->convert_to_full_column_if_const();
195
114
        }
196
197
112
        result_column_ptr->resize(rows_count);
198
112
        auto* __restrict result_raw_data =
199
112
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
200
112
                        ->get_data()
201
112
                        .data();
202
203
        // set default value
204
352
        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
226
        for (IndexType i = 0; i < then_columns.size(); i++) {
217
114
            if (!then_columns[i]) {
218
0
                continue;
219
0
            }
220
114
            const auto* __restrict column_raw_data =
221
114
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
222
114
                            then_columns[i].get())
223
114
                            ->get_data()
224
114
                            .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
114
            } else {
235
380
                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
114
            }
241
114
        }
242
112
    }
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
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
192
68
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
193
164
        for (auto& then_ptr : then_columns) {
194
164
            then_ptr = then_ptr->convert_to_full_column_if_const();
195
164
        }
196
197
68
        result_column_ptr->resize(rows_count);
198
68
        auto* __restrict result_raw_data =
199
68
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
200
68
                        ->get_data()
201
68
                        .data();
202
203
        // set default value
204
184
        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
116
            } else {
212
116
                result_raw_data[i] = {};
213
116
            }
214
116
        }
215
216
232
        for (IndexType i = 0; i < then_columns.size(); i++) {
217
164
            if (!then_columns[i]) {
218
0
                continue;
219
0
            }
220
164
            const auto* __restrict column_raw_data =
221
164
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
222
164
                            then_columns[i].get())
223
164
                            ->get_data()
224
164
                            .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
164
            } else {
235
468
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
236
304
                    result_raw_data[row_idx] +=
237
304
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
238
304
                            column_raw_data[row_idx];
239
304
                }
240
164
            }
241
164
        }
242
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
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
_ZNK5doris9VCaseExpr23update_result_auto_simdIhNS_12ColumnVectorILNS_13PrimitiveTypeE25EEEEEvRNS_3COWINS_7IColumnEE11mutable_ptrIS6_EEPKT_RSt6vectorINS7_13immutable_ptrIS6_EESaISG_EEm
Line
Count
Source
192
2
                                 std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
193
6
        for (auto& then_ptr : then_columns) {
194
6
            then_ptr = then_ptr->convert_to_full_column_if_const();
195
6
        }
196
197
2
        result_column_ptr->resize(rows_count);
198
2
        auto* __restrict result_raw_data =
199
2
                assert_cast<ColumnType*, TypeCheckOnRelease::DISABLE>(result_column_ptr.get())
200
2
                        ->get_data()
201
2
                        .data();
202
203
        // set default value
204
12
        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
10
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
210
10
                result_raw_data[i] = ColumnType::default_value();
211
            } else {
212
                result_raw_data[i] = {};
213
            }
214
10
        }
215
216
8
        for (IndexType i = 0; i < then_columns.size(); i++) {
217
6
            if (!then_columns[i]) {
218
0
                continue;
219
0
            }
220
6
            const auto* __restrict column_raw_data =
221
6
                    assert_cast<const ColumnType*, TypeCheckOnRelease::DISABLE>(
222
6
                            then_columns[i].get())
223
6
                            ->get_data()
224
6
                            .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
6
                          std::is_same_v<ColumnType, ColumnTimeStampTz>) {
230
36
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
231
30
                    result_raw_data[row_idx] = (then_idx[row_idx] == i) ? column_raw_data[row_idx]
232
30
                                                                        : result_raw_data[row_idx];
233
30
                }
234
            } else {
235
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
236
                    result_raw_data[row_idx] +=
237
                            typename ColumnType::value_type(then_idx[row_idx] == i) *
238
                            column_raw_data[row_idx];
239
                }
240
            }
241
6
        }
242
2
    }
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
446
                            std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
247
446
        std::vector<IndexType> then_idx(rows_count, 0);
248
446
        IndexType* __restrict then_idx_ptr = then_idx.data();
249
751
        for (IndexType i = 0; i < when_columns.size(); i++) {
250
419
            IndexType column_idx = i + 1;
251
419
            auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]);
252
253
419
            if (is_consts) {
254
114
                if (raw_when_column->get_bool(0)) {
255
1.07k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
256
963
                        then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx;
257
963
                    }
258
114
                    break;
259
114
                }
260
0
                continue;
261
114
            }
262
263
305
            if (is_column_nullable(*raw_when_column)) {
264
236
                const auto* column_nullable_ptr =
265
236
                        assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>(
266
236
                                raw_when_column.get());
267
236
                const auto* __restrict cond_raw_data =
268
236
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
269
236
                                column_nullable_ptr->get_nested_column_ptr().get())
270
236
                                ->get_data()
271
236
                                .data();
272
236
                if (!column_nullable_ptr->has_null()) {
273
830
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
274
655
                        then_idx_ptr[row_idx] |=
275
655
                                (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
276
655
                    }
277
175
                    continue;
278
175
                }
279
61
                const auto* __restrict cond_raw_nullmap =
280
61
                        column_nullable_ptr->get_null_map_column_ptr()->get_data().data();
281
378
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
282
317
                    then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] *
283
317
                                              !cond_raw_nullmap[row_idx]) *
284
317
                                             column_idx;
285
317
                }
286
69
            } else {
287
69
                const auto* __restrict cond_raw_data =
288
69
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
289
69
                                raw_when_column.get())
290
69
                                ->get_data()
291
69
                                .data();
292
244
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
293
175
                    then_idx_ptr[row_idx] |=
294
175
                            (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
295
175
                }
296
69
            }
297
305
        }
298
299
446
        return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count);
300
446
    }
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
446
                            std::vector<ColumnPtr>& then_columns, size_t rows_count) const {
247
446
        std::vector<IndexType> then_idx(rows_count, 0);
248
446
        IndexType* __restrict then_idx_ptr = then_idx.data();
249
751
        for (IndexType i = 0; i < when_columns.size(); i++) {
250
419
            IndexType column_idx = i + 1;
251
419
            auto [raw_when_column, is_consts] = unpack_if_const(when_columns[i]);
252
253
419
            if (is_consts) {
254
114
                if (raw_when_column->get_bool(0)) {
255
1.07k
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
256
963
                        then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx]) * column_idx;
257
963
                    }
258
114
                    break;
259
114
                }
260
0
                continue;
261
114
            }
262
263
305
            if (is_column_nullable(*raw_when_column)) {
264
236
                const auto* column_nullable_ptr =
265
236
                        assert_cast<const ColumnNullable*, TypeCheckOnRelease::DISABLE>(
266
236
                                raw_when_column.get());
267
236
                const auto* __restrict cond_raw_data =
268
236
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
269
236
                                column_nullable_ptr->get_nested_column_ptr().get())
270
236
                                ->get_data()
271
236
                                .data();
272
236
                if (!column_nullable_ptr->has_null()) {
273
830
                    for (int row_idx = 0; row_idx < rows_count; row_idx++) {
274
655
                        then_idx_ptr[row_idx] |=
275
655
                                (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
276
655
                    }
277
175
                    continue;
278
175
                }
279
61
                const auto* __restrict cond_raw_nullmap =
280
61
                        column_nullable_ptr->get_null_map_column_ptr()->get_data().data();
281
378
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
282
317
                    then_idx_ptr[row_idx] |= (!then_idx_ptr[row_idx] * cond_raw_data[row_idx] *
283
317
                                              !cond_raw_nullmap[row_idx]) *
284
317
                                             column_idx;
285
317
                }
286
69
            } else {
287
69
                const auto* __restrict cond_raw_data =
288
69
                        assert_cast<const ColumnUInt8*, TypeCheckOnRelease::DISABLE>(
289
69
                                raw_when_column.get())
290
69
                                ->get_data()
291
69
                                .data();
292
244
                for (int row_idx = 0; row_idx < rows_count; row_idx++) {
293
175
                    then_idx_ptr[row_idx] |=
294
175
                            (!then_idx_ptr[row_idx]) * cond_raw_data[row_idx] * column_idx;
295
175
                }
296
69
            }
297
305
        }
298
299
446
        return _execute_update_result<IndexType>(then_idx_ptr, then_columns, rows_count);
300
446
    }
301
302
    bool _has_else_expr;
303
304
    inline static const std::string FUNCTION_NAME = "case";
305
    inline static const std::string EXPR_NAME = "vcase expr";
306
};
307
} // namespace doris