Coverage Report

Created: 2026-09-29 12:58

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
26
                                size_t) noexcept {
68
26
        current = 1;
69
26
    }
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
16
                                size_t j) noexcept {
78
16
        current = j + 1;
79
16
    }
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
4
                                size_t j) noexcept {
88
4
        ++current;
89
4
    }
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
66
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
_ZN5doris18FunctionArrayIndexINS_19ArrayContainsActionEE6createEv
Line
Count
Source
103
44
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
_ZN5doris18FunctionArrayIndexINS_19ArrayPositionActionEE6createEv
Line
Count
Source
103
16
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
_ZN5doris18FunctionArrayIndexINS_15ArrayCountEqualEE6createEv
Line
Count
Source
103
6
    static FunctionPtr create() { return std::make_shared<FunctionArrayIndex>(); }
104
105
    /// Get function name.
106
8
    String get_name() const override { return name; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE8get_nameB5cxx11Ev
Line
Count
Source
106
4
    String get_name() const override { return name; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE8get_nameB5cxx11Ev
Line
Count
Source
106
2
    String get_name() const override { return name; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE8get_nameB5cxx11Ev
Line
Count
Source
106
2
    String get_name() const override { return name; }
107
108
60
    bool is_variadic() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE11is_variadicEv
Line
Count
Source
108
42
    bool is_variadic() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE11is_variadicEv
Line
Count
Source
108
14
    bool is_variadic() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE11is_variadicEv
Line
Count
Source
108
4
    bool is_variadic() const override { return false; }
109
110
54
    size_t get_number_of_arguments() const override { return 2; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE23get_number_of_argumentsEv
Line
Count
Source
110
40
    size_t get_number_of_arguments() const override { return 2; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE23get_number_of_argumentsEv
Line
Count
Source
110
12
    size_t get_number_of_arguments() const override { return 2; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE23get_number_of_argumentsEv
Line
Count
Source
110
2
    size_t get_number_of_arguments() const override { return 2; }
111
112
90
    bool use_default_implementation_for_nulls() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE36use_default_implementation_for_nullsEv
Line
Count
Source
112
62
    bool use_default_implementation_for_nulls() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE36use_default_implementation_for_nullsEv
Line
Count
Source
112
24
    bool use_default_implementation_for_nulls() const override { return false; }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE36use_default_implementation_for_nullsEv
Line
Count
Source
112
4
    bool use_default_implementation_for_nulls() const override { return false; }
113
114
124
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
124
        if (scope == FunctionContext::THREAD_LOCAL) {
116
72
            return Status::OK();
117
72
        }
118
119
124
        DCHECK(context->get_num_args() >= 1);
120
52
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
52
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
52
        Field field;
124
52
        if (context->get_constant_col(1)) {
125
24
            context->get_constant_col(1)->column_ptr->get(0, field);
126
24
            state->value = field;
127
24
            state->type = context->get_arg_type(1)->get_primitive_type();
128
24
            context->set_function_state(scope, state);
129
24
        }
130
52
        return Status::OK();
131
124
    }
_ZN5doris18FunctionArrayIndexINS_19ArrayContainsActionEE4openEPNS_15FunctionContextENS3_18FunctionStateScopeE
Line
Count
Source
114
96
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
96
        if (scope == FunctionContext::THREAD_LOCAL) {
116
58
            return Status::OK();
117
58
        }
118
119
96
        DCHECK(context->get_num_args() >= 1);
120
38
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
38
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
38
        Field field;
124
38
        if (context->get_constant_col(1)) {
125
20
            context->get_constant_col(1)->column_ptr->get(0, field);
126
20
            state->value = field;
127
20
            state->type = context->get_arg_type(1)->get_primitive_type();
128
20
            context->set_function_state(scope, state);
129
20
        }
130
38
        return Status::OK();
131
96
    }
_ZN5doris18FunctionArrayIndexINS_19ArrayPositionActionEE4openEPNS_15FunctionContextENS3_18FunctionStateScopeE
Line
Count
Source
114
24
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
24
        if (scope == FunctionContext::THREAD_LOCAL) {
116
12
            return Status::OK();
117
12
        }
118
119
24
        DCHECK(context->get_num_args() >= 1);
120
12
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
12
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
12
        Field field;
124
12
        if (context->get_constant_col(1)) {
125
2
            context->get_constant_col(1)->column_ptr->get(0, field);
126
2
            state->value = field;
127
2
            state->type = context->get_arg_type(1)->get_primitive_type();
128
2
            context->set_function_state(scope, state);
129
2
        }
130
12
        return Status::OK();
131
24
    }
_ZN5doris18FunctionArrayIndexINS_15ArrayCountEqualEE4openEPNS_15FunctionContextENS3_18FunctionStateScopeE
Line
Count
Source
114
4
    Status open(FunctionContext* context, FunctionContext::FunctionStateScope scope) override {
115
4
        if (scope == FunctionContext::THREAD_LOCAL) {
116
2
            return Status::OK();
117
2
        }
118
119
4
        DCHECK(context->get_num_args() >= 1);
120
2
        DCHECK_EQ(context->get_arg_type(0)->get_primitive_type(), PrimitiveType::TYPE_ARRAY);
121
        // now we only support same
122
2
        std::shared_ptr<ParamValue> state = std::make_shared<ParamValue>();
123
2
        Field field;
124
2
        if (context->get_constant_col(1)) {
125
2
            context->get_constant_col(1)->column_ptr->get(0, field);
126
2
            state->value = field;
127
2
            state->type = context->get_arg_type(1)->get_primitive_type();
128
2
            context->set_function_state(scope, state);
129
2
        }
130
2
        return Status::OK();
131
4
    }
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
16
            segment_v2::InvertedIndexResultBitmap& bitmap_result) const override {
139
16
        DCHECK(arguments.size() == 1);
140
16
        DCHECK(data_type_with_names.size() == 1);
141
16
        DCHECK(iterators.size() == 1);
142
16
        auto* iter = iterators[0];
143
16
        auto data_type_with_name = data_type_with_names[0];
144
16
        if (iter == nullptr) {
145
0
            return Status::OK();
146
0
        }
147
16
        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
16
        Field param_value;
157
16
        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
16
        if (param_value.is_null()) {
161
0
            return Status::OK();
162
0
        }
163
164
16
        std::shared_ptr<roaring::Roaring> null_bitmap = std::make_shared<roaring::Roaring>();
165
16
        if (iter->has_null()) {
166
16
            segment_v2::InvertedIndexQueryCacheHandle null_bitmap_cache_handle;
167
16
            RETURN_IF_ERROR(iter->read_null_bitmap(&null_bitmap_cache_handle));
168
16
            null_bitmap = null_bitmap_cache_handle.get_bitmap();
169
16
        }
170
16
        InvertedIndexParam param;
171
16
        param.column_name = data_type_with_name.first;
172
16
        param.column_type = data_type_with_name.second;
173
16
        param.query_value = param_value;
174
16
        param.query_type = segment_v2::InvertedIndexQueryType::EQUAL_QUERY;
175
16
        param.num_rows = num_rows;
176
16
        param.roaring = std::make_shared<roaring::Roaring>();
177
16
        param.analyzer_ctx = analyzer_ctx;
178
16
        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
16
        DBUG_EXECUTE_IF("array_func.array_contains", {
181
16
            auto result_bitmap = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
182
16
                    "array_func.array_contains", "result_bitmap", 0);
183
16
            if (result_bitmap < 0) {
184
16
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
185
16
                        "result_bitmap count cannot be negative");
186
16
            }
187
16
            if (param.roaring->cardinality() != result_bitmap) {
188
16
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
189
16
                        "array_contains really filtered {} by inverted index not equal to expected "
190
16
                        "{}",
191
16
                        param.roaring->cardinality(), result_bitmap);
192
16
            }
193
16
        })
194
16
        segment_v2::InvertedIndexResultBitmap result(param.roaring, null_bitmap);
195
16
        bitmap_result = result;
196
16
        bitmap_result.mask_out_null();
197
198
16
        return Status::OK();
199
16
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE23evaluate_inverted_indexERKSt6vectorINS_21ColumnWithTypeAndNameESaIS4_EERKS3_ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrIKNS_9IDataTypeEEESaISK_EES3_IPNS_10segment_v213IndexIteratorESaISR_EEjPKNS_24InvertedIndexAnalyzerCtxERNSP_25InvertedIndexResultBitmapE
Line
Count
Source
138
16
            segment_v2::InvertedIndexResultBitmap& bitmap_result) const override {
139
16
        DCHECK(arguments.size() == 1);
140
16
        DCHECK(data_type_with_names.size() == 1);
141
16
        DCHECK(iterators.size() == 1);
142
16
        auto* iter = iterators[0];
143
16
        auto data_type_with_name = data_type_with_names[0];
144
16
        if (iter == nullptr) {
145
0
            return Status::OK();
146
0
        }
147
16
        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
16
        Field param_value;
157
16
        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
16
        if (param_value.is_null()) {
161
0
            return Status::OK();
162
0
        }
163
164
16
        std::shared_ptr<roaring::Roaring> null_bitmap = std::make_shared<roaring::Roaring>();
165
16
        if (iter->has_null()) {
166
16
            segment_v2::InvertedIndexQueryCacheHandle null_bitmap_cache_handle;
167
16
            RETURN_IF_ERROR(iter->read_null_bitmap(&null_bitmap_cache_handle));
168
16
            null_bitmap = null_bitmap_cache_handle.get_bitmap();
169
16
        }
170
16
        InvertedIndexParam param;
171
16
        param.column_name = data_type_with_name.first;
172
16
        param.column_type = data_type_with_name.second;
173
16
        param.query_value = param_value;
174
16
        param.query_type = segment_v2::InvertedIndexQueryType::EQUAL_QUERY;
175
16
        param.num_rows = num_rows;
176
16
        param.roaring = std::make_shared<roaring::Roaring>();
177
16
        param.analyzer_ctx = analyzer_ctx;
178
16
        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
16
        DBUG_EXECUTE_IF("array_func.array_contains", {
181
16
            auto result_bitmap = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
182
16
                    "array_func.array_contains", "result_bitmap", 0);
183
16
            if (result_bitmap < 0) {
184
16
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
185
16
                        "result_bitmap count cannot be negative");
186
16
            }
187
16
            if (param.roaring->cardinality() != result_bitmap) {
188
16
                return Status::Error<ErrorCode::INTERNAL_ERROR>(
189
16
                        "array_contains really filtered {} by inverted index not equal to expected "
190
16
                        "{}",
191
16
                        param.roaring->cardinality(), result_bitmap);
192
16
            }
193
16
        })
194
16
        segment_v2::InvertedIndexResultBitmap result(param.roaring, null_bitmap);
195
16
        bitmap_result = result;
196
16
        bitmap_result.mask_out_null();
197
198
16
        return Status::OK();
199
16
    }
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
54
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
54
        if (arguments[0]->is_nullable()) {
203
50
            return make_nullable(
204
50
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
50
        } else {
206
4
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
4
        }
208
54
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
201
40
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
40
        if (arguments[0]->is_nullable()) {
203
36
            return make_nullable(
204
36
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
36
        } else {
206
4
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
4
        }
208
40
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
201
12
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
12
        if (arguments[0]->is_nullable()) {
203
12
            return make_nullable(
204
12
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
12
        } else {
206
0
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
0
        }
208
12
    }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
201
2
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
202
2
        if (arguments[0]->is_nullable()) {
203
2
            return make_nullable(
204
2
                    std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>());
205
2
        } else {
206
0
            return std::make_shared<typename PrimitiveTypeTraits<ResultType>::DataType>();
207
0
        }
208
2
    }
209
210
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
211
36
                        uint32_t result, size_t input_rows_count) const override {
212
36
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
36
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
36
                    "array_func.array_contains", "req_id", 0);
215
36
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
36
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
36
                    "with rows: {}",
218
36
                    get_name(), req_id, input_rows_count);
219
36
        });
220
36
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
36
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
211
22
                        uint32_t result, size_t input_rows_count) const override {
212
22
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
22
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
22
                    "array_func.array_contains", "req_id", 0);
215
22
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
22
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
22
                    "with rows: {}",
218
22
                    get_name(), req_id, input_rows_count);
219
22
        });
220
22
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
22
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
211
12
                        uint32_t result, size_t input_rows_count) const override {
212
12
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
12
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
12
                    "array_func.array_contains", "req_id", 0);
215
12
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
12
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
12
                    "with rows: {}",
218
12
                    get_name(), req_id, input_rows_count);
219
12
        });
220
12
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
12
    }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
211
2
                        uint32_t result, size_t input_rows_count) const override {
212
2
        DBUG_EXECUTE_IF("array_func.array_contains", {
213
2
            auto req_id = DebugPoints::instance()->get_debug_param_or_default<int32_t>(
214
2
                    "array_func.array_contains", "req_id", 0);
215
2
            return Status::Error<ErrorCode::INTERNAL_ERROR>(
216
2
                    "{} has already execute inverted index req_id {} , should not execute expr "
217
2
                    "with rows: {}",
218
2
                    get_name(), req_id, input_rows_count);
219
2
        });
220
2
        return _execute_dispatch(block, arguments, result, input_rows_count);
221
2
    }
222
223
    ZoneMapFilterResult evaluate_zonemap_filter(const ZoneMapEvalContext& ctx,
224
32
                                                const VExprSPtrs& arguments) const override {
225
32
        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
32
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE23evaluate_zonemap_filterERKNS_18ZoneMapEvalContextERKSt6vectorISt10shared_ptrINS_5VExprEESaIS9_EE
Line
Count
Source
224
32
                                                const VExprSPtrs& arguments) const override {
225
        if constexpr (!std::is_same_v<ConcreteAction, ArrayContainsAction>) {
226
            return unsupported_zonemap_filter(ctx);
227
        }
228
32
        return expr_zonemap::evaluate_array_contains_zonemap(ctx, arguments);
229
32
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE23evaluate_zonemap_filterERKNS_18ZoneMapEvalContextERKSt6vectorISt10shared_ptrINS_5VExprEESaIS9_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE23evaluate_zonemap_filterERKNS_18ZoneMapEvalContextERKSt6vectorISt10shared_ptrINS_5VExprEESaIS9_EE
230
231
52
    bool can_evaluate_zonemap_filter(const VExprSPtrs& arguments) const override {
232
52
        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
52
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE27can_evaluate_zonemap_filterERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EE
Line
Count
Source
231
52
    bool can_evaluate_zonemap_filter(const VExprSPtrs& arguments) const override {
232
        if constexpr (!std::is_same_v<ConcreteAction, ArrayContainsAction>) {
233
            return false;
234
        }
235
52
        return expr_zonemap::can_evaluate_array_contains_zonemap(arguments);
236
52
    }
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
36
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
36
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
36
        auto& dst_data = dst->get_data();
245
36
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
36
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
206
        for (size_t row = 0; row < array_view.size(); ++row) {
250
128
            if (array_view.is_null_at(row)) {
251
28
                dst_null_data[row] = true;
252
28
                continue;
253
28
            }
254
100
            dst_null_data[row] = false;
255
100
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
100
            const auto array_data = array_view[row];
257
258
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
158
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
2
                    ConcreteAction::apply(res, pos);
261
2
                    if constexpr (!ConcreteAction::resume_execution) {
262
2
                        break;
263
2
                    }
264
2
                }
265
                // some is null while another is not
266
158
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
8
                    continue;
268
8
                }
269
150
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
150
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
44
                    ConcreteAction::apply(res, pos);
274
44
                    if constexpr (!ConcreteAction::resume_execution) {
275
40
                        break;
276
40
                    }
277
44
                }
278
150
            }
279
140
            dst_data[row] = res;
280
140
        }
281
282
78
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
78
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
76
    }
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
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
12
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
16
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
10
                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
10
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
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
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
10
            }
279
8
            dst_data[row] = res;
280
8
        }
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
    }
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
4
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
4
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
4
        auto& dst_data = dst->get_data();
245
4
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
4
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
18
        for (size_t row = 0; row < array_view.size(); ++row) {
250
10
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
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
20
            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
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
12
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
12
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
12
                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
12
            }
279
12
            dst_data[row] = res;
280
12
        }
281
282
8
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
8
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
8
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE13_execute_viewILNS_13PrimitiveTypeE6EEENS_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
12
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
16
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
10
                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
10
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
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
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
10
            }
279
8
            dst_data[row] = res;
280
8
        }
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_13PrimitiveTypeE7EEENS_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
12
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
14
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
8
                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
8
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
8
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
8
                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
8
            }
279
8
            dst_data[row] = res;
280
8
        }
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_13PrimitiveTypeE8EEENS_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
12
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
16
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
10
                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
10
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
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
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
10
            }
279
8
            dst_data[row] = res;
280
8
        }
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_13PrimitiveTypeE9EEENS_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
12
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
16
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
10
                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
10
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
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
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
10
            }
279
8
            dst_data[row] = res;
280
8
        }
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
    }
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
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
14
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
16
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
10
                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
10
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
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
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_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
6
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
6
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
6
        auto& dst_data = dst->get_data();
245
6
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
6
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
38
        for (size_t row = 0; row < array_view.size(); ++row) {
250
24
            if (array_view.is_null_at(row)) {
251
4
                dst_null_data[row] = true;
252
4
                continue;
253
4
            }
254
20
            dst_null_data[row] = false;
255
20
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
20
            const auto array_data = array_view[row];
257
44
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
24
                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
24
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
4
                    continue;
268
4
                }
269
20
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
20
                if (array_data.value_at(pos) == right_view.value_at(row)) {
273
8
                    ConcreteAction::apply(res, pos);
274
8
                    if constexpr (!ConcreteAction::resume_execution) {
275
8
                        break;
276
8
                    }
277
8
                }
278
20
            }
279
28
            dst_data[row] = res;
280
28
        }
281
282
14
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
14
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
14
    }
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
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
12
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
16
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
10
                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
10
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
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
2
                    ConcreteAction::apply(res, pos);
274
2
                    if constexpr (!ConcreteAction::resume_execution) {
275
2
                        break;
276
2
                    }
277
2
                }
278
10
            }
279
8
            dst_data[row] = res;
280
8
        }
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
    }
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
6
                            const ColumnView<PType>& right_view) const {
242
        // prepare return data
243
6
        auto dst = PrimitiveTypeTraits<ResultType>::ColumnType::create(array_view.size(), 0);
244
6
        auto& dst_data = dst->get_data();
245
6
        auto dst_null_column = ColumnUInt8::create(array_view.size(), 0);
246
6
        auto& dst_null_data = dst_null_column->get_data();
247
248
        // process
249
30
        for (size_t row = 0; row < array_view.size(); ++row) {
250
18
            if (array_view.is_null_at(row)) {
251
4
                dst_null_data[row] = true;
252
4
                continue;
253
4
            }
254
14
            dst_null_data[row] = false;
255
14
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
14
            const auto array_data = array_view[row];
257
38
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
24
                if (right_view.is_null_at(row) && array_data.is_null_at(pos)) {
260
2
                    ConcreteAction::apply(res, pos);
261
2
                    if constexpr (!ConcreteAction::resume_execution) {
262
2
                        break;
263
2
                    }
264
2
                }
265
                // some is null while another is not
266
24
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
2
                    continue;
268
2
                }
269
22
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
22
                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
22
            }
279
20
            dst_data[row] = res;
280
20
        }
281
282
12
        if (!array_view.is_nullable()) {
283
0
            return dst;
284
0
        }
285
12
        return ColumnNullable::create(std::move(dst), std::move(dst_null_column));
286
12
    }
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
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
14
        for (size_t row = 0; row < array_view.size(); ++row) {
250
8
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
254
6
            dst_null_data[row] = false;
255
6
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
6
            const auto array_data = array_view[row];
257
16
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
10
                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
10
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
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
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_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
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
16
        for (size_t row = 0; row < array_view.size(); ++row) {
250
10
            if (array_view.is_null_at(row)) {
251
2
                dst_null_data[row] = true;
252
2
                continue;
253
2
            }
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
20
            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
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
12
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
0
                    continue;
268
0
                }
269
12
                if (array_data.is_null_at(pos)) {
270
0
                    continue;
271
0
                }
272
12
                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
12
            }
279
12
            dst_data[row] = res;
280
12
        }
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_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
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
4
        for (size_t row = 0; row < array_view.size(); ++row) {
250
2
            if (array_view.is_null_at(row)) {
251
0
                dst_null_data[row] = true;
252
0
                continue;
253
0
            }
254
2
            dst_null_data[row] = false;
255
2
            typename PrimitiveTypeTraits<ResultType>::CppType res = 0;
256
2
            const auto array_data = array_view[row];
257
10
            for (size_t pos = 0; pos < array_data.size(); ++pos) {
258
                // match null value
259
8
                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
8
                if (right_view.is_null_at(row) != array_data.is_null_at(pos)) {
267
2
                    continue;
268
2
                }
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
4
                    ConcreteAction::apply(res, pos);
274
                    if constexpr (!ConcreteAction::resume_execution) {
275
                        break;
276
                    }
277
4
                }
278
6
            }
279
2
            dst_data[row] = res;
280
2
        }
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_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
36
                             size_t input_rows_count) const {
290
36
        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
36
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
36
        auto left_element_type = remove_nullable(
297
36
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
36
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
36
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
36
        auto right_primitive_type = right_type->get_primitive_type();
302
36
        ColumnPtr return_column = nullptr;
303
36
        if (right_primitive_type == left_element_primitive_type ||
304
36
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
305
36
            auto call = [&](const auto& type) -> bool {
306
36
                using DispatchType = std::decay_t<decltype(type)>;
307
36
                constexpr PrimitiveType PType = DispatchType::PType;
308
36
                auto array_view =
309
36
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
36
                auto right_view =
311
36
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
36
                return_column = _execute_view(array_view, right_view);
313
36
                return true;
314
36
            };
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
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
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE4EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE5EEEEEbSC_
Line
Count
Source
305
4
            auto call = [&](const auto& type) -> bool {
306
4
                using DispatchType = std::decay_t<decltype(type)>;
307
4
                constexpr PrimitiveType PType = DispatchType::PType;
308
4
                auto array_view =
309
4
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
4
                auto right_view =
311
4
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
4
                return_column = _execute_view(array_view, right_view);
313
4
                return true;
314
4
            };
_ZZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE6EEEEEbSC_
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_13PrimitiveTypeE7EEEEEbSC_
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_13PrimitiveTypeE8EEEEEbSC_
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_13PrimitiveTypeE9EEEEEbSC_
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
            };
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
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
            };
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
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
            };
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
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
            };
Unexecuted instantiation: _ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE4EEEEEbSC_
_ZZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjmENKUlRKT_E_clINS_16DispatchDataTypeILNS_13PrimitiveTypeE5EEEEEbSC_
Line
Count
Source
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
            };
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
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
            };
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
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
            };
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
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
            };
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
36
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
36
            } else {
320
36
                dispatch_switch_all(left_element_primitive_type, call);
321
36
            }
322
36
        }
323
324
36
        if (return_column) {
325
36
            block.replace_by_position(result, std::move(return_column));
326
36
            return Status::OK();
327
36
        }
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
36
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayContainsActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
289
22
                             size_t input_rows_count) const {
290
22
        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
22
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
22
        auto left_element_type = remove_nullable(
297
22
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
22
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
22
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
22
        auto right_primitive_type = right_type->get_primitive_type();
302
22
        ColumnPtr return_column = nullptr;
303
22
        if (right_primitive_type == left_element_primitive_type ||
304
22
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
305
22
            auto call = [&](const auto& type) -> bool {
306
22
                using DispatchType = std::decay_t<decltype(type)>;
307
22
                constexpr PrimitiveType PType = DispatchType::PType;
308
22
                auto array_view =
309
22
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
22
                auto right_view =
311
22
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
22
                return_column = _execute_view(array_view, right_view);
313
22
                return true;
314
22
            };
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
22
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
22
            } else {
320
22
                dispatch_switch_all(left_element_primitive_type, call);
321
22
            }
322
22
        }
323
324
22
        if (return_column) {
325
22
            block.replace_by_position(result, std::move(return_column));
326
22
            return Status::OK();
327
22
        }
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
22
    }
_ZNK5doris18FunctionArrayIndexINS_19ArrayPositionActionEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
289
12
                             size_t input_rows_count) const {
290
12
        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
12
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
12
        auto left_element_type = remove_nullable(
297
12
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
12
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
12
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
12
        auto right_primitive_type = right_type->get_primitive_type();
302
12
        ColumnPtr return_column = nullptr;
303
12
        if (right_primitive_type == left_element_primitive_type ||
304
12
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
305
12
            auto call = [&](const auto& type) -> bool {
306
12
                using DispatchType = std::decay_t<decltype(type)>;
307
12
                constexpr PrimitiveType PType = DispatchType::PType;
308
12
                auto array_view =
309
12
                        ColumnArrayView<PType>::create(block.get_by_position(arguments[0]).column);
310
12
                auto right_view =
311
12
                        ColumnView<PType>::create(block.get_by_position(arguments[1]).column);
312
12
                return_column = _execute_view(array_view, right_view);
313
12
                return true;
314
12
            };
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
12
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
12
            } else {
320
12
                dispatch_switch_all(left_element_primitive_type, call);
321
12
            }
322
12
        }
323
324
12
        if (return_column) {
325
12
            block.replace_by_position(result, std::move(return_column));
326
12
            return Status::OK();
327
12
        }
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
12
    }
_ZNK5doris18FunctionArrayIndexINS_15ArrayCountEqualEE17_execute_dispatchERNS_5BlockERKSt6vectorIjSaIjEEjm
Line
Count
Source
289
2
                             size_t input_rows_count) const {
290
2
        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
2
        auto array_type = remove_nullable(block.get_by_position(arguments[0]).type);
296
2
        auto left_element_type = remove_nullable(
297
2
                assert_cast<const DataTypeArray*>(array_type.get())->get_nested_type());
298
2
        auto right_type = remove_nullable(block.get_by_position(arguments[1]).type);
299
300
2
        auto left_element_primitive_type = left_element_type->get_primitive_type();
301
2
        auto right_primitive_type = right_type->get_primitive_type();
302
2
        ColumnPtr return_column = nullptr;
303
2
        if (right_primitive_type == left_element_primitive_type ||
304
2
            (is_string_type(right_primitive_type) && is_string_type(left_element_primitive_type))) {
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
            };
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
2
            if (left_element_primitive_type == TYPE_TIMESTAMP_NS) {
318
0
                call(DispatchDataType<TYPE_TIMESTAMP_NS>());
319
2
            } else {
320
2
                dispatch_switch_all(left_element_primitive_type, call);
321
2
            }
322
2
        }
323
324
2
        if (return_column) {
325
2
            block.replace_by_position(result, std::move(return_column));
326
2
            return Status::OK();
327
2
        }
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
2
    }
333
};
334
335
} // namespace doris