Coverage Report

Created: 2026-09-07 13:55

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/function/array/function_array_index.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
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/array/arrayIndex.h
19
// and modified by Doris
20
#pragma once
21
22
#include <stddef.h>
23
24
#include <memory>
25
#include <type_traits>
26
#include <utility>
27
28
#include "common/status.h"
29
#include "core/assert_cast.h"
30
#include "core/block/block.h"
31
#include "core/block/column_numbers.h"
32
#include "core/block/column_with_type_and_name.h"
33
#include "core/call_on_type_index.h"
34
#include "core/column/column.h"
35
#include "core/column/column_array.h"
36
#include "core/column/column_array_view.h"
37
#include "core/column/column_nullable.h"
38
#include "core/column/column_string.h"
39
#include "core/column/column_vector.h"
40
#include "core/data_type/data_type.h"
41
#include "core/data_type/data_type_array.h"
42
#include "core/data_type/data_type_nullable.h"
43
#include "core/data_type/data_type_number.h" // IWYU pragma: keep
44
#include "core/data_type/define_primitive_type.h"
45
#include "core/data_type/primitive_type.h"
46
#include "core/field.h"
47
#include "core/string_ref.h"
48
#include "core/types.h"
49
#include "exprs/expr_zonemap_filter.h"
50
#include "exprs/function/function.h"
51
#include "storage/index/index_reader_helper.h"
52
#include "storage/index/inverted/inverted_index_query_type.h"
53
#include "storage/index/inverted/inverted_index_reader.h"
54
#include "storage/predicate/column_predicate.h"
55
56
namespace doris {
57
class FunctionContext;
58
} // namespace doris
59
60
namespace doris {
61
62
struct ArrayContainsAction {
63
    static constexpr auto ResultType = PrimitiveType::TYPE_BOOLEAN;
64
    static constexpr auto name = "array_contains";
65
    static constexpr const bool resume_execution = false;
66
    static constexpr void apply(typename PrimitiveTypeTraits<ResultType>::CppType& current,
67
13
                                size_t) noexcept {
68
13
        current = 1;
69
13
    }
70
};
71
72
struct ArrayPositionAction {
73
    static constexpr auto ResultType = PrimitiveType::TYPE_BIGINT;
74
    static constexpr auto name = "array_position";
75
    static constexpr const bool resume_execution = false;
76
    static constexpr void apply(typename PrimitiveTypeTraits<ResultType>::CppType& current,
77
8
                                size_t j) noexcept {
78
8
        current = j + 1;
79
8
    }
80
};
81
82
struct ArrayCountEqual {
83
    static constexpr auto ResultType = PrimitiveType::TYPE_BIGINT;
84
    static constexpr auto name = "countequal";
85
    static constexpr const bool resume_execution = true;
86
    static constexpr void apply(typename PrimitiveTypeTraits<ResultType>::CppType& current,
87
2
                                size_t j) noexcept {
88
2
        ++current;
89
2
    }
90
};
91
92
struct ParamValue {
93
    PrimitiveType type;
94
    Field value;
95
};
96
97
template <typename ConcreteAction>
98
class FunctionArrayIndex : public IFunction {
99
public:
100
    static constexpr auto ResultType = ConcreteAction::ResultType;
101
102
    static constexpr auto name = ConcreteAction::name;
103
33
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
_ZN5doris18FunctionArrayIndexINS_19ArrayContainsActionEE6createEv
Line
Count
Source
103
22
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
_ZN5doris18FunctionArrayIndexINS_19ArrayPositionActionEE6createEv
Line
Count
Source
103
8
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
_ZN5doris18FunctionArrayIndexINS_15ArrayCountEqualEE6createEv
Line
Count
Source
103
3
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
104
105
    /// Get function name.
106
4
    String get_name() const override { return name; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE8get_nameB5cxx11Ev
Line
Count
Source
106
2
    String get_name() const override { return name; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE8get_nameB5cxx11Ev
Line
Count
Source
106
1
    String get_name() const override { return name; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE8get_nameB5cxx11Ev
Line
Count
Source
106
1
    String get_name() const override { return name; }
107
108
30
    bool is_variadic() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE11is_variadicEv
Line
Count
Source
108
21
    bool is_variadic() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE11is_variadicEv
Line
Count
Source
108
7
    bool is_variadic() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE11is_variadicEv
Line
Count
Source
108
2
    bool is_variadic() const override { return false; }
109
110
27
    size_t get_number_of_arguments() const override { return 2; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE23get_number_of_argumentsEv
Line
Count
Source
110
20
    size_t get_number_of_arguments() const override { return 2; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE23get_number_of_argumentsEv
Line
Count
Source
110
6
    size_t get_number_of_arguments() const override { return 2; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE23get_number_of_argumentsEv
Line
Count
Source
110
1
    size_t get_number_of_arguments() const override { return 2; }
111
112
45
    bool use_default_implementation_for_nulls() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE36use_default_implementation_for_nullsEv
Line
Count
Source
112
31
    bool use_default_implementation_for_nulls() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE36use_default_implementation_for_nullsEv
Line
Count
Source
112
12
    bool use_default_implementation_for_nulls() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE36use_default_implementation_for_nullsEv
Line
Count
Source
112
2
    bool use_default_implementation_for_nulls() const override { return false; }
113
114
62
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
62
        if (scope == FunctionContext::THREAD_LOCAL) {
116
36
            return Status::OK();
117
36
        }
118
119
62
        DCHECK(context->get_num_args() >= 1);
120
26
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
26
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
26
        Field field;
124
26
        if (context->get_constant_col(1)) {
125
12
            context->get_constant_col(1)->column_ptr->get(0, field);
126
12
            state->value = field;
127
12
            state->type = context->get_arg_type(1)->get_primitive_type();
128
12
            context->set_function_state(scope, state);
129
12
        }
130
26
        return Status::OK();
131
62
    }
_ZN5doris18FunctionArrayIndexINS_19ArrayContainsActionEE4openEPNS_15FunctionContextENS3_18FunctionStateScopeE
Line
Count
Source
114
48
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
48
        if (scope == FunctionContext::THREAD_LOCAL) {
116
29
            return Status::OK();
117
29
        }
118
119
48
        DCHECK(context->get_num_args() >= 1);
120
19
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
19
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
19
        Field field;
124
19
        if (context->get_constant_col(1)) {
125
10
            context->get_constant_col(1)->column_ptr->get(0, field);
126
10
            state->value = field;
127
10
            state->type = context->get_arg_type(1)->get_primitive_type();
128
10
            context->set_function_state(scope, state);
129
10
        }
130
19
        return Status::OK();
131
48
    }
_ZN5doris18FunctionArrayIndexINS_19ArrayPositionActionEE4openEPNS_15FunctionContextENS3_18FunctionStateScopeE
Line
Count
Source
114
12
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
12
        if (scope == FunctionContext::THREAD_LOCAL) {
116
6
            return Status::OK();
117
6
        }
118
119
12
        DCHECK(context->get_num_args() >= 1);
120
6
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
6
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
6
        Field field;
124
6
        if (context->get_constant_col(1)) {
125
1
            context->get_constant_col(1)->column_ptr->get(0, field);
126
1
            state->value = field;
127
1
            state->type = context->get_arg_type(1)->get_primitive_type();
128
1
            context->set_function_state(scope, state);
129
1
        }
130
6
        return Status::OK();
131
12
    }
_ZN5doris18FunctionArrayIndexINS_15ArrayCountEqualEE4openEPNS_15FunctionContextENS3_18FunctionStateScopeE
Line
Count
Source
114
2
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
2
        if (scope == FunctionContext::THREAD_LOCAL) {
116
1
            return Status::OK();
117
1
        }
118
119
2
        DCHECK(context->get_num_args() >= 1);
120
1
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
1
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
1
        Field field;
124
1
        if (context->get_constant_col(1)) {
125
1
            context->get_constant_col(1)->column_ptr->get(0, field);
126
1
            state->value = field;
127
1
            state->type = context->get_arg_type(1)->get_primitive_type();
128
1
            context->set_function_state(scope, state);
129
1
        }
130
1
        return Status::OK();
131
2
    }
132
133
    Status evaluate_inverted_index(
134
            const ColumnsWithTypeAndName& arguments,
135
            const std::vector<IndexFieldNameAndTypePair>& data_type_with_names,
136
            std::vector<segment_v2::IndexIterator*> iterators, uint32_t num_rows,
137
            const InvertedIndexAnalyzerCtx* analyzer_ctx,
138
8
            segment_v2::InvertedIndexResultBitmap& bitmap_result) const override {
139
8
        DCHECK(arguments.size() == 1);
140
8
        DCHECK(data_type_with_names.size() == 1);
141
8
        DCHECK(iterators.size() == 1);
142
8
        auto* iter = iterators[0];
143
8
        auto data_type_with_name = data_type_with_names[0];
144
8
        if (iter == nullptr) {
145
0
            return Status::OK();
146
0
        }
147
8
        if (!segment_v2::IndexReaderHelper::has_string_or_bkd_index(iter)) {
148
            // parser is not none we can not make sure the result is correct in expr combination
149
            // for example, filter: !array_index(array, 'tall:120cm, weight: 35kg')
150
            // here we have rows [tall:120cm, weight: 35kg, hobbies: reading book] which be tokenized
151
            // but query is also tokenized, and FULLTEXT reader will catch this row as matched,
152
            // so array_index(array, 'tall:120cm, weight: 35kg') return this rowid,
153
            // but we expect it to be filtered, because we want row is equal to 'tall:120cm, weight: 35kg'
154
0
            return Status::OK();
155
0
        }
156
8
        Field param_value;
157
8
        arguments[0].column->get(0, param_value);
158
        // The current implementation for the inverted index of arrays cannot handle cases where the array contains null values,
159
        // meaning an item in the array is null.
160
8
        if (param_value.is_null()) {
161
0
            return Status::OK();
162
0
        }
163
164
8
        std::shared_ptr<roaring::Roaring> null_bitmap = std::make_shared<roaring::Roaring>();
165
8
        if (iter->has_null()) {
166
8
            segment_v2::InvertedIndexQueryCacheHandle null_bitmap_cache_handle;
167
8
            RETURN_IF_ERROR(iter->read_null_bitmap(&null_bitmap_cache_handle));
168
8
            null_bitmap = null_bitmap_cache_handle.get_bitmap();
169
8
        }
170
8
        InvertedIndexParam param;
171
8
        param.column_name = data_type_with_name.first;
172
8
        param.column_type = data_type_with_name.second;
173
8
        param.query_value = param_value;
174
8
        param.query_type = segment_v2::InvertedIndexQueryType::EQUAL_QUERY;
175
8
        param.num_rows = num_rows;
176
8
        param.roaring = std::make_shared<roaring::Roaring>();
177
8
        param.analyzer_ctx = analyzer_ctx;
178
8
        RETURN_IF_ERROR(iter->read_from_index(segment_v2::IndexParam {&param}));
179
        // here debug for check array_contains function really filter rows by inverted index correctly
180
8
        DBUG_EXECUTE_IF("array_func.array_contains", {
181
8
            auto result_bitmap = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
182
8
                    "array_func.array_contains", "result_bitmap", 0);
183
8
            if (result_bitmap < 0) {
184
8
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
185
8
                        "result_bitmap count cannot be negative");
186
8
            }
187
8
            if (param.roaring->cardinality() != result_bitmap) {
188
8
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
189
8
                        "array_contains really filtered {} by inverted index not equal to expected "
190
8
                        "{}",
191
8
                        param.roaring->cardinality(), result_bitmap);
192
8
            }
193
8
        })
194
8
        segment_v2::InvertedIndexResultBitmap result(param.roaring, null_bitmap);
195
8
        bitmap_result = result;
196
8
        bitmap_result.mask_out_null();
197
198
8
        return Status::OK();
199
8
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE23evaluate_inverted_indexERKSt6vectorINS_21ColumnWithTypeAndNameESaIS4_EERKS3_ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrIKNS_9IDataTypeEEESaISK_EES3_IPNS_10segment_v213IndexIteratorESaISR_EEjPKNS_24InvertedIndexAnalyzerCtxERNSP_25InvertedIndexResultBitmapE
Line
Count
Source
138
8
            segment_v2::InvertedIndexResultBitmap& bitmap_result) const override {
139
8
        DCHECK(arguments.size() == 1);
140
8
        DCHECK(data_type_with_names.size() == 1);
141
8
        DCHECK(iterators.size() == 1);
142
8
        auto* iter = iterators[0];
143
8
        auto data_type_with_name = data_type_with_names[0];
144
8
        if (iter == nullptr) {
145
0
            return Status::OK();
146
0
        }
147
8
        if (!segment_v2::IndexReaderHelper::has_string_or_bkd_index(iter)) {
148
            // parser is not none we can not make sure the result is correct in expr combination
149
            // for example, filter: !array_index(array, 'tall:120cm, weight: 35kg')
150
            // here we have rows [tall:120cm, weight: 35kg, hobbies: reading book] which be tokenized
151
            // but query is also tokenized, and FULLTEXT reader will catch this row as matched,
152
            // so array_index(array, 'tall:120cm, weight: 35kg') return this rowid,
153
            // but we expect it to be filtered, because we want row is equal to 'tall:120cm, weight: 35kg'
154
0
            return Status::OK();
155
0
        }
156
8
        Field param_value;
157
8
        arguments[0].column->get(0, param_value);
158
        // The current implementation for the inverted index of arrays cannot handle cases where the array contains null values,
159
        // meaning an item in the array is null.
160
8
        if (param_value.is_null()) {
161
0
            return Status::OK();
162
0
        }
163
164
8
        std::shared_ptr<roaring::Roaring> null_bitmap = std::make_shared<roaring::Roaring>();
165
8
        if (iter->has_null()) {
166
8
            segment_v2::InvertedIndexQueryCacheHandle null_bitmap_cache_handle;
167
8
            RETURN_IF_ERROR(iter->read_null_bitmap(&null_bitmap_cache_handle));
168
8
            null_bitmap = null_bitmap_cache_handle.get_bitmap();
169
8
        }
170
8
        InvertedIndexParam param;
171
8
        param.column_name = data_type_with_name.first;
172
8
        param.column_type = data_type_with_name.second;
173
8
        param.query_value = param_value;
174
8
        param.query_type = segment_v2::InvertedIndexQueryType::EQUAL_QUERY;
175
8
        param.num_rows = num_rows;
176
8
        param.roaring = std::make_shared<roaring::Roaring>();
177
8
        param.analyzer_ctx = analyzer_ctx;
178
8
        RETURN_IF_ERROR(iter->read_from_index(segment_v2::IndexParam {&param}));
179
        // here debug for check array_contains function really filter rows by inverted index correctly
180
8
        DBUG_EXECUTE_IF("array_func.array_contains", {
181
8
            auto result_bitmap = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
182
8
                    "array_func.array_contains", "result_bitmap", 0);
183
8
            if (result_bitmap < 0) {
184
8
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
185
8
                        "result_bitmap count cannot be negative");
186
8
            }
187
8
            if (param.roaring->cardinality() != result_bitmap) {
188
8
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
189
8
                        "array_contains really filtered {} by inverted index not equal to expected "
190
8
                        "{}",
191
8
                        param.roaring->cardinality(), result_bitmap);
192
8
            }
193
8
        })
194
8
        segment_v2::InvertedIndexResultBitmap result(param.roaring, null_bitmap);
195
8
        bitmap_result = result;
196
8
        bitmap_result.mask_out_null();
197
198
8
        return Status::OK();
199
8
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE23evaluate_inverted_indexERKSt6vectorINS_21ColumnWithTypeAndNameESaIS4_EERKS3_ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrIKNS_9IDataTypeEEESaISK_EES3_IPNS_10segment_v213IndexIteratorESaISR_EEjPKNS_24InvertedIndexAnalyzerCtxERNSP_25InvertedIndexResultBitmapE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE23evaluate_inverted_indexERKSt6vectorINS_21ColumnWithTypeAndNameESaIS4_EERKS3_ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrIKNS_9IDataTypeEEESaISK_EES3_IPNS_10segment_v213IndexIteratorESaISR_EEjPKNS_24InvertedIndexAnalyzerCtxERNSP_25InvertedIndexResultBitmapE
200
201
27
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
27
        if (arguments[0]->is_nullable()) {
203
25
            return make_nullable(
204
25
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
25
        } else {
206
2
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
2
        }
208
27
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
201
20
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
20
        if (arguments[0]->is_nullable()) {
203
18
            return make_nullable(
204
18
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
18
        } else {
206
2
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
2
        }
208
20
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
201
6
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
6
        if (arguments[0]->is_nullable()) {
203
6
            return make_nullable(
204
6
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
6
        } else {
206
0
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
0
        }
208
6
    }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
201
1
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
1
        if (arguments[0]->is_nullable()) {
203
1
            return make_nullable(
204
1
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
1
        } else {
206
0
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
0
        }
208
1
    }
209
210
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
211
18
                        uint32_t result, size_t input_rows_count) const override {
212
18
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
18
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
18
                    "array_func.array_contains", "req_id", 0);
215
18
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
18
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
18
                    "with rows: {}",
218
18
                    get_name(), req_id, input_rows_count);
219
18
        });
220
18
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
18
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
211
11
                        uint32_t result, size_t input_rows_count) const override {
212
11
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
11
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
11
                    "array_func.array_contains", "req_id", 0);
215
11
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
11
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
11
                    "with rows: {}",
218
11
                    get_name(), req_id, input_rows_count);
219
11
        });
220
11
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
11
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
211
6
                        uint32_t result, size_t input_rows_count) const override {
212
6
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
6
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
6
                    "array_func.array_contains", "req_id", 0);
215
6
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
6
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
6
                    "with rows: {}",
218
6
                    get_name(), req_id, input_rows_count);
219
6
        });
220
6
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
6
    }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
211
1
                        uint32_t result, size_t input_rows_count) const override {
212
1
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
1
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
1
                    "array_func.array_contains", "req_id", 0);
215
1
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
1
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
1
                    "with rows: {}",
218
1
                    get_name(), req_id, input_rows_count);
219
1
        });
220
1
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
1
    }
222
223
    ZoneMapFilterResult evaluate_zonemap_filter(const ZoneMapEvalContext& ctx,
224
16
                                                const VExprSPtrs& arguments) const override {
225
16
        if constexpr (!std::is_same_v<ConcreteAction, ArrayContainsAction>) {
226
0
            return unsupported_zonemap_filter(ctx);
227
0
        }
228
0
        return expr_zonemap::evaluate_array_contains_zonemap(ctx, arguments);
229
16
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE23evaluate_zonemap_filterERKNS_18ZoneMapEvalContextERKSt6vectorISt10shared_ptrINS_5VExprEESaIS9_EE
Line
Count
Source
224
16
                                                const VExprSPtrs& arguments) const override {
225
        if constexpr (!std::is_same_v<ConcreteAction, ArrayContainsAction>) {
226
            return unsupported_zonemap_filter(ctx);
227
        }
228
16
        return expr_zonemap::evaluate_array_contains_zonemap(ctx, arguments);
229
16
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE23evaluate_zonemap_filterERKNS_18ZoneMapEvalContextERKSt6vectorISt10shared_ptrINS_5VExprEESaIS9_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE23evaluate_zonemap_filterERKNS_18ZoneMapEvalContextERKSt6vectorISt10shared_ptrINS_5VExprEESaIS9_EE
230
231
26
    bool can_evaluate_zonemap_filter(const VExprSPtrs& arguments) const override {
232
26
        if constexpr (!std::is_same_v<ConcreteAction, ArrayContainsAction>) {
233
0
            return false;
234
0
        }
235
0
        return expr_zonemap::can_evaluate_array_contains_zonemap(arguments);
236
26
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE27can_evaluate_zonemap_filterERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EE
Line
Count
Source
231
26
    bool can_evaluate_zonemap_filter(const VExprSPtrs& arguments) const override {
232
        if constexpr (!std::is_same_v<ConcreteAction, ArrayContainsAction>) {
233
            return false;
234
        }
235
26
        return expr_zonemap::can_evaluate_array_contains_zonemap(arguments);
236
26
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE27can_evaluate_zonemap_filterERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE27can_evaluate_zonemap_filterERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EE
237
238
private:
239
    template <PrimitiveType PType>
240
    ColumnPtr _execute_view(const ColumnArrayView<PType>& array_view,
241
18
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
18
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
18
        auto& dst_data = dst->get_data();
245
18
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
18
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
103
        for (size_t row = 0; row < array_view.size(); ++row) {
250
64
            if (array_view.is_null_at(row)) {
251
16
                dst_null_data[row] = true;
252
16
                continue;
253
16
            }
254
48
            dst_null_data[row] = false;
255
48
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
48
            const auto array_data = array_view[row];
257
126
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
78
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
1
                    ConcreteAction::apply(res, pos);
261
1
                    if constexpr (!ConcreteAction::resume_execution) {
262
1
                        break;
263
1
                    }
264
1
                }
265
                // some is null while another is not
266
78
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
3
                    continue;
268
3
                }
269
75
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
75
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
22
                    ConcreteAction::apply(res, pos);
274
22
                    if constexpr (!ConcreteAction::resume_execution) {
275
20
                        break;
276
20
                    }
277
22
                }
278
75
            }
279
68
            dst_data[row] = res;
280
68
        }
281
282
39
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
39
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
38
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE43EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE2EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE3EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
6
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
8
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
5
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
5
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
5
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
5
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
1
                    ConcreteAction::apply(res, pos);
274
1
                    if constexpr (!ConcreteAction::resume_execution) {
275
1
                        break;
276
1
                    }
277
1
                }
278
5
            }
279
4
            dst_data[row] = res;
280
4
        }
281
282
2
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
2
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
2
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE4EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE5EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
2
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
2
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
2
        auto& dst_data = dst->get_data();
245
2
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
2
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
9
        for (size_t row = 0; row < array_view.size(); ++row) {
250
5
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
4
            dst_null_data[row] = false;
255
4
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
4
            const auto array_data = array_view[row];
257
10
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
6
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
6
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
6
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
6
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
6
            }
279
6
            dst_data[row] = res;
280
6
        }
281
282
4
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
4
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
4
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE6EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
6
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
8
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
5
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
5
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
5
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
5
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
1
                    ConcreteAction::apply(res, pos);
274
1
                    if constexpr (!ConcreteAction::resume_execution) {
275
1
                        break;
276
1
                    }
277
1
                }
278
5
            }
279
4
            dst_data[row] = res;
280
4
        }
281
282
2
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
2
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
2
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE7EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
6
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
7
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
4
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
4
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
4
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
4
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
1
                    ConcreteAction::apply(res, pos);
274
1
                    if constexpr (!ConcreteAction::resume_execution) {
275
1
                        break;
276
1
                    }
277
1
                }
278
4
            }
279
4
            dst_data[row] = res;
280
4
        }
281
282
2
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
2
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
2
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE8EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
6
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
8
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
5
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
5
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
5
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
5
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
1
                    ConcreteAction::apply(res, pos);
274
1
                    if constexpr (!ConcreteAction::resume_execution) {
275
1
                        break;
276
1
                    }
277
1
                }
278
5
            }
279
4
            dst_data[row] = res;
280
4
        }
281
282
2
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
2
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
2
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE9EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
6
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
8
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
5
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
5
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
5
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
5
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
1
                    ConcreteAction::apply(res, pos);
274
1
                    if constexpr (!ConcreteAction::resume_execution) {
275
1
                        break;
276
1
                    }
277
1
                }
278
5
            }
279
4
            dst_data[row] = res;
280
4
        }
281
282
2
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
2
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
2
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE28EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE29EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE20EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
7
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
8
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
5
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
5
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
5
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
5
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
5
            }
279
5
            dst_data[row] = res;
280
5
        }
281
282
3
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
3
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
3
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE30EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE35EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE11EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE25EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE26EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE12EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE27EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE42EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE36EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE37EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE23EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
3
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
3
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
3
        auto& dst_data = dst->get_data();
245
3
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
3
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
19
        for (size_t row = 0; row < array_view.size(); ++row) {
250
12
            if (array_view.is_null_at(row)) {
251
4
                dst_null_data[row] = true;
252
4
                continue;
253
4
            }
254
8
            dst_null_data[row] = false;
255
8
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
8
            const auto array_data = array_view[row];
257
19
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
11
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
11
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
1
                    continue;
268
1
                }
269
10
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
10
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
4
                    ConcreteAction::apply(res, pos);
274
4
                    if constexpr (!ConcreteAction::resume_execution) {
275
4
                        break;
276
4
                    }
277
4
                }
278
10
            }
279
12
            dst_data[row] = res;
280
12
        }
281
282
7
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
7
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
7
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE43EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE2EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE3EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
6
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
8
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
5
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
5
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
5
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
5
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
1
                    ConcreteAction::apply(res, pos);
274
1
                    if constexpr (!ConcreteAction::resume_execution) {
275
1
                        break;
276
1
                    }
277
1
                }
278
5
            }
279
4
            dst_data[row] = res;
280
4
        }
281
282
2
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
2
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
2
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE4EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE5EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
3
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
3
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
3
        auto& dst_data = dst->get_data();
245
3
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
3
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
15
        for (size_t row = 0; row < array_view.size(); ++row) {
250
9
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
7
            dst_null_data[row] = false;
255
7
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
7
            const auto array_data = array_view[row];
257
19
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
12
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
1
                    ConcreteAction::apply(res, pos);
261
1
                    if constexpr (!ConcreteAction::resume_execution) {
262
1
                        break;
263
1
                    }
264
1
                }
265
                // some is null while another is not
266
12
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
1
                    continue;
268
1
                }
269
11
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
11
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
11
            }
279
10
            dst_data[row] = res;
280
10
        }
281
282
6
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
6
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
6
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE6EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE7EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE8EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE9EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE28EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE29EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE20EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
7
        for (size_t row = 0; row < array_view.size(); ++row) {
250
4
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
3
            dst_null_data[row] = false;
255
3
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
3
            const auto array_data = array_view[row];
257
8
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
5
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
5
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
5
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
5
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
5
            }
279
5
            dst_data[row] = res;
280
5
        }
281
282
3
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
3
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
3
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE30EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE35EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE11EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE25EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE26EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE12EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE27EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE42EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE36EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE37EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE13_execute_viewILNS_13PrimitiveTypeE23EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
8
        for (size_t row = 0; row < array_view.size(); ++row) {
250
5
            if (array_view.is_null_at(row)) {
251
1
                dst_null_data[row] = true;
252
1
                continue;
253
1
            }
254
4
            dst_null_data[row] = false;
255
4
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
4
            const auto array_data = array_view[row];
257
10
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
6
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
0
                    if constexpr (!ConcreteAction::resume_execution) {
262
0
                        break;
263
0
                    }
264
0
                }
265
                // some is null while another is not
266
6
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
6
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
6
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
6
            }
279
6
            dst_data[row] = res;
280
6
        }
281
282
3
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
3
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
3
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE43EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE2EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE3EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE4EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE5EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Line
Count
Source
241
1
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
1
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
1
        auto& dst_data = dst->get_data();
245
1
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
1
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
2
        for (size_t row = 0; row < array_view.size(); ++row) {
250
1
            if (array_view.is_null_at(row)) {
251
0
                dst_null_data[row] = true;
252
0
                continue;
253
0
            }
254
1
            dst_null_data[row] = false;
255
1
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
1
            const auto array_data = array_view[row];
257
5
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
4
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
0
                    ConcreteAction::apply(res, pos);
261
                    if constexpr (!ConcreteAction::resume_execution) {
262
                        break;
263
                    }
264
0
                }
265
                // some is null while another is not
266
4
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
1
                    continue;
268
1
                }
269
3
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
3
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
2
                    ConcreteAction::apply(res, pos);
274
                    if constexpr (!ConcreteAction::resume_execution) {
275
                        break;
276
                    }
277
2
                }
278
3
            }
279
1
            dst_data[row] = res;
280
1
        }
281
282
1
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
1
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
1
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE6EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE7EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE8EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE9EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE28EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE29EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE20EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE30EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE35EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE11EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE25EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE26EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE12EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE27EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE42EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE36EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE37EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE13_execute_viewILNS_13PrimitiveTypeE23EEENS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKNS_15ColumnArrayViewIXT_EEERKNS_10ColumnViewIXT_EEE
287
288
    Status _execute_dispatch(Block& block, const ColumnNumbers& arguments, uint32_t result,
289
18
                             size_t input_rows_count) const {
290
18
        if (block.get_by_position(arguments[0]).type->get_primitive_type() != TYPE_ARRAY) {
291
0
            return Status::InvalidArgument(get_name() + " first argument must be array, but got " +
292
0
                                           block.get_by_position(arguments[0]).type->get_name());
293
0
        }
294
        // execute
295
18
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
18
        auto left_element_type = remove_nullable(
297
18
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
18
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
18
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
18
        auto right_primitive_type = right_type->get_primitive_type();
302
18
        ColumnPtr return_column = nullptr;
303
18
        if (right_primitive_type == left_element_primitive_type ||
304
18
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
305
18
            auto call = [&](const auto& type) -> bool {
306
18
                using DispatchType = std::decay_t<decltype(type)>;
307
18
                constexpr PrimitiveType PType = DispatchType::PType;
308
18
                auto array_view =
309
18
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
18
                auto right_view =
311
18
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
18
                return_column = _execute_view(array_view, right_view);
313
18
                return true;
314
18
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE43EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE2EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE3EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE4EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE5EEEEEbSC_
Line
Count
Source
305
2
            auto call = [&](const auto& type) -> bool {
306
2
                using DispatchType = std::decay_t<decltype(type)>;
307
2
                constexpr PrimitiveType PType = DispatchType::PType;
308
2
                auto array_view =
309
2
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
2
                auto right_view =
311
2
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
2
                return_column = _execute_view(array_view, right_view);
313
2
                return true;
314
2
            };
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE6EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE7EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE8EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE9EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE28EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE29EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE20EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE30EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE35EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE11EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE25EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE26EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE12EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE27EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE42EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE36EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE37EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE23EEEEEbSC_
Line
Count
Source
305
3
            auto call = [&](const auto& type) -> bool {
306
3
                using DispatchType = std::decay_t<decltype(type)>;
307
3
                constexpr PrimitiveType PType = DispatchType::PType;
308
3
                auto array_view =
309
3
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
3
                auto right_view =
311
3
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
3
                return_column = _execute_view(array_view, right_view);
313
3
                return true;
314
3
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE43EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE2EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE3EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE4EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE5EEEEEbSC_
Line
Count
Source
305
3
            auto call = [&](const auto& type) -> bool {
306
3
                using DispatchType = std::decay_t<decltype(type)>;
307
3
                constexpr PrimitiveType PType = DispatchType::PType;
308
3
                auto array_view =
309
3
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
3
                auto right_view =
311
3
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
3
                return_column = _execute_view(array_view, right_view);
313
3
                return true;
314
3
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE6EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE7EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE8EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE9EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE28EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE29EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE20EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE30EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE35EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE11EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE25EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE26EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE12EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE27EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE42EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE36EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE37EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE23EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE43EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE2EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE3EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE4EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE5EEEEEbSC_
Line
Count
Source
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE6EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE7EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE8EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE9EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE28EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE29EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE20EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE30EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE35EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE11EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE25EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE26EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE12EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE27EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE42EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE36EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE37EEEEEbSC_
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE23EEEEEbSC_
315
            // Keep nano dispatch local: the shared scalar dispatcher is also used by
316
            // arithmetic-only templates that cannot be instantiated for datetime values.
317
18
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
18
            } else {
320
18
                dispatch_switch_all(left_element_primitive_type, call);
321
18
            }
322
18
        }
323
324
18
        if (return_column) {
325
18
            block.replace_by_position(result, std::move(return_column));
326
18
            return Status::OK();
327
18
        }
328
0
        return Status::RuntimeError("execute failed or unsupported types for function {}({}, {})",
329
0
                                    get_name(),
330
0
                                    block.get_by_position(arguments[0]).type->get_name(),
331
0
                                    block.get_by_position(arguments[1]).type->get_name());
332
18
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
289
11
                             size_t input_rows_count) const {
290
11
        if (block.get_by_position(arguments[0]).type->get_primitive_type() != TYPE_ARRAY) {
291
0
            return Status::InvalidArgument(get_name() + " first argument must be array, but got " +
292
0
                                           block.get_by_position(arguments[0]).type->get_name());
293
0
        }
294
        // execute
295
11
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
11
        auto left_element_type = remove_nullable(
297
11
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
11
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
11
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
11
        auto right_primitive_type = right_type->get_primitive_type();
302
11
        ColumnPtr return_column = nullptr;
303
11
        if (right_primitive_type == left_element_primitive_type ||
304
11
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
305
11
            auto call = [&](const auto& type) -> bool {
306
11
                using DispatchType = std::decay_t<decltype(type)>;
307
11
                constexpr PrimitiveType PType = DispatchType::PType;
308
11
                auto array_view =
309
11
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
11
                auto right_view =
311
11
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
11
                return_column = _execute_view(array_view, right_view);
313
11
                return true;
314
11
            };
315
            // Keep nano dispatch local: the shared scalar dispatcher is also used by
316
            // arithmetic-only templates that cannot be instantiated for datetime values.
317
11
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
11
            } else {
320
11
                dispatch_switch_all(left_element_primitive_type, call);
321
11
            }
322
11
        }
323
324
11
        if (return_column) {
325
11
            block.replace_by_position(result, std::move(return_column));
326
11
            return Status::OK();
327
11
        }
328
0
        return Status::RuntimeError("execute failed or unsupported types for function {}({}, {})",
329
0
                                    get_name(),
330
0
                                    block.get_by_position(arguments[0]).type->get_name(),
331
0
                                    block.get_by_position(arguments[1]).type->get_name());
332
11
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
289
6
                             size_t input_rows_count) const {
290
6
        if (block.get_by_position(arguments[0]).type->get_primitive_type() != TYPE_ARRAY) {
291
0
            return Status::InvalidArgument(get_name() + " first argument must be array, but got " +
292
0
                                           block.get_by_position(arguments[0]).type->get_name());
293
0
        }
294
        // execute
295
6
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
6
        auto left_element_type = remove_nullable(
297
6
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
6
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
6
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
6
        auto right_primitive_type = right_type->get_primitive_type();
302
6
        ColumnPtr return_column = nullptr;
303
6
        if (right_primitive_type == left_element_primitive_type ||
304
6
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
305
6
            auto call = [&](const auto& type) -> bool {
306
6
                using DispatchType = std::decay_t<decltype(type)>;
307
6
                constexpr PrimitiveType PType = DispatchType::PType;
308
6
                auto array_view =
309
6
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
6
                auto right_view =
311
6
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
6
                return_column = _execute_view(array_view, right_view);
313
6
                return true;
314
6
            };
315
            // Keep nano dispatch local: the shared scalar dispatcher is also used by
316
            // arithmetic-only templates that cannot be instantiated for datetime values.
317
6
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
6
            } else {
320
6
                dispatch_switch_all(left_element_primitive_type, call);
321
6
            }
322
6
        }
323
324
6
        if (return_column) {
325
6
            block.replace_by_position(result, std::move(return_column));
326
6
            return Status::OK();
327
6
        }
328
0
        return Status::RuntimeError("execute failed or unsupported types for function {}({}, {})",
329
0
                                    get_name(),
330
0
                                    block.get_by_position(arguments[0]).type->get_name(),
331
0
                                    block.get_by_position(arguments[1]).type->get_name());
332
6
    }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
289
1
                             size_t input_rows_count) const {
290
1
        if (block.get_by_position(arguments[0]).type->get_primitive_type() != TYPE_ARRAY) {
291
0
            return Status::InvalidArgument(get_name() + " first argument must be array, but got " +
292
0
                                           block.get_by_position(arguments[0]).type->get_name());
293
0
        }
294
        // execute
295
1
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
1
        auto left_element_type = remove_nullable(
297
1
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
1
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
1
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
1
        auto right_primitive_type = right_type->get_primitive_type();
302
1
        ColumnPtr return_column = nullptr;
303
1
        if (right_primitive_type == left_element_primitive_type ||
304
1
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
305
1
            auto call = [&](const auto& type) -> bool {
306
1
                using DispatchType = std::decay_t<decltype(type)>;
307
1
                constexpr PrimitiveType PType = DispatchType::PType;
308
1
                auto array_view =
309
1
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
1
                auto right_view =
311
1
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
1
                return_column = _execute_view(array_view, right_view);
313
1
                return true;
314
1
            };
315
            // Keep nano dispatch local: the shared scalar dispatcher is also used by
316
            // arithmetic-only templates that cannot be instantiated for datetime values.
317
1
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
1
            } else {
320
1
                dispatch_switch_all(left_element_primitive_type, call);
321
1
            }
322
1
        }
323
324
1
        if (return_column) {
325
1
            block.replace_by_position(result, std::move(return_column));
326
1
            return Status::OK();
327
1
        }
328
0
        return Status::RuntimeError("execute failed or unsupported types for function {}({}, {})",
329
0
                                    get_name(),
330
0
                                    block.get_by_position(arguments[0]).type->get_name(),
331
0
                                    block.get_by_position(arguments[1]).type->get_name());
332
1
    }
333
};
334
335
} // namespace doris