Coverage Report

Created: 2026-04-14 17:06

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/function/array/function_array_range.cpp
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
#include <glog/logging.h>
19
20
#include <algorithm>
21
#include <boost/iterator/iterator_facade.hpp>
22
#include <cstddef>
23
#include <memory>
24
#include <utility>
25
26
#include "common/status.h"
27
#include "core/assert_cast.h"
28
#include "core/block/block.h"
29
#include "core/block/column_numbers.h"
30
#include "core/block/column_with_type_and_name.h"
31
#include "core/column/column.h"
32
#include "core/column/column_array.h"
33
#include "core/column/column_nullable.h"
34
#include "core/column/column_vector.h"
35
#include "core/data_type/data_type.h"
36
#include "core/data_type/data_type_array.h"
37
#include "core/data_type/data_type_date_or_datetime_v2.h"
38
#include "core/data_type/data_type_date_time.h"
39
#include "core/data_type/data_type_nullable.h"
40
#include "core/data_type/define_primitive_type.h"
41
#include "core/pod_array_fwd.h"
42
#include "core/types.h"
43
#include "core/value/vdatetime_value.h"
44
#include "exprs/aggregate/aggregate_function.h"
45
#include "exprs/function/function.h"
46
#include "exprs/function/function_date_or_datetime_computation.h"
47
#include "exprs/function/simple_function_factory.h"
48
49
namespace doris {
50
class FunctionContext;
51
} // namespace doris
52
53
namespace doris {
54
55
template <typename Impl>
56
class FunctionArrayRange : public IFunction {
57
public:
58
    static constexpr auto name = Impl::name;
59
60
24
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_12RangeOneImplILNS_13PrimitiveTypeE5EvEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE5EvEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE26EvEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE5EvEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_9EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_8EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_7EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_6EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_5EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_4EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_3EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
_ZN5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_2EEEEE6createEv
Line
Count
Source
60
2
    static FunctionPtr create() { return std::make_shared<FunctionArrayRange>(); }
61
62
    /// Get function name.
63
0
    String get_name() const override { return name; }
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeOneImplILNS_13PrimitiveTypeE5EvEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE5EvEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE26EvEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE5EvEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_9EEEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_8EEEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_7EEEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_6EEEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_5EEEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_4EEEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_3EEEEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_2EEEEE8get_nameB5cxx11Ev
64
65
12
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_12RangeOneImplILNS_13PrimitiveTypeE5EvEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE5EvEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE26EvEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE5EvEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_9EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_8EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_7EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_6EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_5EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_4EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_3EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_2EEEEE11is_variadicEv
Line
Count
Source
65
1
    bool is_variadic() const override { return true; }
66
67
0
    size_t get_number_of_arguments() const override {
68
0
        return get_variadic_argument_types_impl().size();
69
0
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeOneImplILNS_13PrimitiveTypeE5EvEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE5EvEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE26EvEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE5EvEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_9EEEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_8EEEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_7EEEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_6EEEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_5EEEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_4EEEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_3EEEEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_2EEEEE23get_number_of_argumentsEv
70
71
12
    DataTypes get_variadic_argument_types_impl() const override {
72
12
        return Impl::get_variadic_argument_types();
73
12
    }
_ZNK5doris18FunctionArrayRangeINS_12RangeOneImplILNS_13PrimitiveTypeE5EvEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE5EvEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE26EvEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE5EvEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_9EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_8EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_7EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_6EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_5EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_4EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_3EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
_ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_2EEEEE32get_variadic_argument_types_implEv
Line
Count
Source
71
1
    DataTypes get_variadic_argument_types_impl() const override {
72
1
        return Impl::get_variadic_argument_types();
73
1
    }
74
75
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
76
0
        auto nested_type = make_nullable(Impl::get_data_type());
77
0
        auto res = std::make_shared<DataTypeArray>(nested_type);
78
0
        return make_nullable(res);
79
0
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeOneImplILNS_13PrimitiveTypeE5EvEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE5EvEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE26EvEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE5EvEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS9_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_9EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_8EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_7EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_6EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_5EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_4EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_3EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_2EEEEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EE
80
81
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
82
0
                        uint32_t result, size_t input_rows_count) const override {
83
0
        return Impl::execute_impl(context, block, arguments, result, input_rows_count);
84
0
    }
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeOneImplILNS_13PrimitiveTypeE5EvEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE5EvEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_12RangeTwoImplILNS_13PrimitiveTypeE26EvEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE5EvEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_9EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_8EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_7EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_6EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_5EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_4EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_3EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris18FunctionArrayRangeINS_14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS4_2EEEEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
85
};
86
87
template <PrimitiveType SourceDataPType, typename TimeUnitOrVoid = void>
88
struct RangeImplUtil {
89
    using SourceDataType = typename PrimitiveTypeTraits<SourceDataPType>::CppType;
90
    using DataType = typename PrimitiveTypeTraits<SourceDataPType>::DataType;
91
92
0
    static DataTypePtr get_data_type() { return std::make_shared<DataType>(); }
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE5EvE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26EvE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_9EEE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_8EEE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_7EEE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_6EEE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_5EEE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_4EEE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_3EEE13get_data_typeEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_2EEE13get_data_typeEv
93
94
0
    static constexpr const char* get_function_name() {
95
0
        if constexpr (std::is_same_v<SourceDataType, DateV2Value<DateTimeV2ValueType>> &&
96
0
                      !std::is_same_v<TimeUnitOrVoid, void>) {
97
0
            if constexpr (std::is_same_v<TimeUnitOrVoid,
98
0
                                         std::integral_constant<TimeUnit, TimeUnit::YEAR>>) {
99
0
                return "array_range_year_unit";
100
0
            } else if constexpr (std::is_same_v<
101
0
                                         TimeUnitOrVoid,
102
0
                                         std::integral_constant<TimeUnit, TimeUnit::QUARTER>>) {
103
0
                return "array_range_quarter_unit";
104
0
            } else if constexpr (std::is_same_v<
105
0
                                         TimeUnitOrVoid,
106
0
                                         std::integral_constant<TimeUnit, TimeUnit::MONTH>>) {
107
0
                return "array_range_month_unit";
108
0
            } else if constexpr (std::is_same_v<TimeUnitOrVoid,
109
0
                                                std::integral_constant<TimeUnit, TimeUnit::WEEK>>) {
110
0
                return "array_range_week_unit";
111
0
            } else if constexpr (std::is_same_v<TimeUnitOrVoid,
112
0
                                                std::integral_constant<TimeUnit, TimeUnit::DAY>>) {
113
0
                return "array_range_day_unit";
114
0
            } else if constexpr (std::is_same_v<TimeUnitOrVoid,
115
0
                                                std::integral_constant<TimeUnit, TimeUnit::HOUR>>) {
116
0
                return "array_range_hour_unit";
117
0
            } else if constexpr (std::is_same_v<
118
0
                                         TimeUnitOrVoid,
119
0
                                         std::integral_constant<TimeUnit, TimeUnit::MINUTE>>) {
120
0
                return "array_range_minute_unit";
121
0
            } else if constexpr (std::is_same_v<
122
0
                                         TimeUnitOrVoid,
123
0
                                         std::integral_constant<TimeUnit, TimeUnit::SECOND>>) {
124
0
                return "array_range_second_unit";
125
0
            }
126
0
        } else {
127
0
            return "array_range";
128
0
        }
129
0
    }
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE5EvE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26EvE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_9EEE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_8EEE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_7EEE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_6EEE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_5EEE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_4EEE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_3EEE17get_function_nameEv
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_2EEE17get_function_nameEv
130
131
    static constexpr auto name = get_function_name();
132
133
    static Status range_execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
134
0
                                size_t input_rows_count) {
135
0
        DCHECK_EQ(arguments.size(), 3);
136
0
        auto return_nested_type = make_nullable(std::make_shared<DataType>());
137
0
        auto dest_array_column_ptr = ColumnArray::create(return_nested_type->create_column(),
138
0
                                                         ColumnArray::ColumnOffsets::create());
139
0
        IColumn* dest_nested_column = &dest_array_column_ptr->get_data();
140
0
        auto* dest_nested_nullable_col = assert_cast<ColumnNullable*>(dest_nested_column);
141
0
        dest_nested_column = dest_nested_nullable_col->get_nested_column_ptr().get();
142
0
        auto& dest_nested_null_map = dest_nested_nullable_col->get_null_map_column().get_data();
143
144
0
        auto args_null_map = ColumnUInt8::create(input_rows_count, 0);
145
0
        ColumnPtr argument_columns[3];
146
0
        for (int i = 0; i < 3; ++i) {
147
0
            argument_columns[i] =
148
0
                    block.get_by_position(arguments[i]).column->convert_to_full_column_if_const();
149
0
        }
150
0
        auto start_column =
151
0
                assert_cast<const ColumnVector<SourceDataPType>*>(argument_columns[0].get());
152
0
        auto end_column =
153
0
                assert_cast<const ColumnVector<SourceDataPType>*>(argument_columns[1].get());
154
0
        const auto* step_column = assert_cast<const ColumnInt32*>(argument_columns[2].get());
155
156
0
        DCHECK(dest_nested_column != nullptr);
157
0
        auto& dest_offsets = dest_array_column_ptr->get_offsets();
158
0
        auto nested_column = reinterpret_cast<ColumnVector<SourceDataPType>*>(dest_nested_column);
159
0
        dest_offsets.reserve(input_rows_count);
160
0
        dest_nested_column->reserve(input_rows_count);
161
0
        dest_nested_null_map.reserve(input_rows_count);
162
163
0
        RETURN_IF_ERROR(vector(start_column->get_data(), end_column->get_data(),
164
0
                               step_column->get_data(), args_null_map->get_data(),
165
0
                               nested_column->get_data(), dest_nested_null_map, dest_offsets));
166
167
0
        block.get_by_position(result).column =
168
0
                ColumnNullable::create(std::move(dest_array_column_ptr), std::move(args_null_map));
169
0
        return Status::OK();
170
0
    }
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE5EvE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26EvE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_9EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_8EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_7EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_6EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_5EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_4EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_3EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_2EEE13range_executeERNS_5BlockERKSt6vectorIjSaIjEEjm
171
172
private:
173
    static Status vector(const PaddedPODArray<SourceDataType>& start,
174
                         const PaddedPODArray<SourceDataType>& end,
175
                         const PaddedPODArray<Int32>& step, NullMap& args_null_map,
176
                         PaddedPODArray<SourceDataType>& nested_column,
177
                         PaddedPODArray<UInt8>& dest_nested_null_map,
178
0
                         ColumnArray::Offsets64& dest_offsets) {
179
0
        size_t rows = start.size();
180
0
        for (auto row = 0; row < rows; ++row) {
181
0
            auto idx = start[row];
182
0
            auto end_row = end[row];
183
0
            auto step_row = step[row];
184
0
            auto args_null_map_row = args_null_map[row];
185
0
            if constexpr (std::is_same_v<SourceDataType, Int32>) {
186
0
                if (args_null_map_row || idx < 0 || end_row < 0 || step_row <= 0) {
187
0
                    args_null_map[row] = 1;
188
0
                    dest_offsets.push_back(dest_offsets.back());
189
0
                    continue;
190
0
                } else {
191
0
                    if (idx < end_row && step_row > 0 &&
192
0
                        ((static_cast<__int128_t>(end_row) - static_cast<__int128_t>(idx) - 1) /
193
0
                                 static_cast<__int128_t>(step_row) +
194
0
                         1) > max_array_size_as_field) {
195
0
                        return Status::InvalidArgument("Array size exceeds the limit {}",
196
0
                                                       max_array_size_as_field);
197
0
                    }
198
0
                    size_t offset = dest_offsets.back();
199
0
                    while (idx < end[row]) {
200
0
                        nested_column.push_back(idx);
201
0
                        dest_nested_null_map.push_back(0);
202
0
                        offset++;
203
0
                        idx = idx + step_row;
204
0
                    }
205
0
                    dest_offsets.push_back(offset);
206
0
                }
207
0
            } else {
208
0
                const auto& idx_0 = reinterpret_cast<const DateV2Value<DateTimeV2ValueType>&>(idx);
209
0
                const auto& end_row_cast =
210
0
                        reinterpret_cast<const DateV2Value<DateTimeV2ValueType>&>(end_row);
211
0
                bool is_null = !idx_0.is_valid_date();
212
0
                bool is_end_row_invalid = !end_row_cast.is_valid_date();
213
0
                if (args_null_map_row || step_row <= 0 || is_null || is_end_row_invalid) {
214
0
                    args_null_map[row] = 1;
215
0
                    dest_offsets.push_back(dest_offsets.back());
216
0
                    continue;
217
0
                } else {
218
0
                    size_t offset = dest_offsets.back();
219
0
                    using UNIT = std::conditional_t<std::is_same_v<TimeUnitOrVoid, void>,
220
0
                                                    std::integral_constant<TimeUnit, TimeUnit::DAY>,
221
0
                                                    TimeUnitOrVoid>;
222
0
                    int move = 0;
223
0
                    while (doris::datetime_diff<UNIT::value, DateTimeV2ValueType,
224
0
                                                DateTimeV2ValueType>(idx, end_row) > 0) {
225
0
                        if (move > max_array_size_as_field) {
226
0
                            return Status::InvalidArgument("Array size exceeds the limit {}",
227
0
                                                           max_array_size_as_field);
228
0
                        }
229
0
                        nested_column.push_back(idx);
230
0
                        dest_nested_null_map.push_back(0);
231
0
                        offset++;
232
0
                        move++;
233
0
                        idx = doris::date_time_add<UNIT::value, TYPE_DATETIMEV2, Int32>(idx,
234
0
                                                                                        step_row);
235
0
                    }
236
0
                    dest_offsets.push_back(offset);
237
0
                }
238
0
            }
239
0
        }
240
0
        return Status::OK();
241
0
    }
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE5EvE6vectorERKNS_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEES9_S9_RNS3_IhLm4096ES6_Lm16ELm15EEERS7_SB_RNS3_ImLm4096ES6_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26EvE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESC_RKNS3_IiLm4096ES9_Lm16ELm15EEERNS3_IhLm4096ES9_Lm16ELm15EEERSA_SH_RNS3_ImLm4096ES9_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_9EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_8EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_7EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_6EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_5EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_4EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_3EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
Unexecuted instantiation: _ZN5doris13RangeImplUtilILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_2EEE6vectorERKNS_8PODArrayINS_11DateV2ValueINS_19DateTimeV2ValueTypeEEELm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEESF_RKNS6_IiLm4096ESC_Lm16ELm15EEERNS6_IhLm4096ESC_Lm16ELm15EEERSD_SK_RNS6_ImLm4096ESC_Lm16ELm15EEE
242
};
243
244
template <PrimitiveType SourceDataPType, typename TimeUnitOrVoid = void>
245
struct RangeOneImpl : public RangeImplUtil<SourceDataPType, TimeUnitOrVoid> {
246
1
    static DataTypes get_variadic_argument_types() {
247
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>()};
248
1
    }
249
250
    static Status execute_impl(FunctionContext* context, Block& block,
251
                               const ColumnNumbers& arguments, uint32_t result,
252
0
                               size_t input_rows_count) {
253
0
        using ColumnType =
254
0
                std::conditional_t<SourceDataPType == TYPE_INT, ColumnInt32, ColumnDateTimeV2>;
255
0
        auto start_column = ColumnType::create(input_rows_count, 0);
256
0
        auto step_column = ColumnInt32::create(input_rows_count, 1);
257
0
        block.insert({std::move(start_column),
258
0
                      std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
259
0
                      "start_column"});
260
0
        block.insert({std::move(step_column), std::make_shared<DataTypeInt32>(), "step_column"});
261
0
        ColumnNumbers temp_arguments = {block.columns() - 2, arguments[0], block.columns() - 1};
262
0
        return (RangeImplUtil<SourceDataPType, TimeUnitOrVoid>::range_execute)(
263
0
                block, temp_arguments, result, input_rows_count);
264
0
    }
265
};
266
267
template <PrimitiveType SourceDataPType, typename TimeUnitOrVoid = void>
268
struct RangeTwoImpl : public RangeImplUtil<SourceDataPType, TimeUnitOrVoid> {
269
2
    static DataTypes get_variadic_argument_types() {
270
2
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
271
2
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>()};
272
2
    }
_ZN5doris12RangeTwoImplILNS_13PrimitiveTypeE5EvE27get_variadic_argument_typesEv
Line
Count
Source
269
1
    static DataTypes get_variadic_argument_types() {
270
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
271
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>()};
272
1
    }
_ZN5doris12RangeTwoImplILNS_13PrimitiveTypeE26EvE27get_variadic_argument_typesEv
Line
Count
Source
269
1
    static DataTypes get_variadic_argument_types() {
270
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
271
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>()};
272
1
    }
273
274
    static Status execute_impl(FunctionContext* context, Block& block,
275
                               const ColumnNumbers& arguments, uint32_t result,
276
0
                               size_t input_rows_count) {
277
0
        auto step_column = ColumnInt32::create(input_rows_count, 1);
278
0
        block.insert({std::move(step_column), std::make_shared<DataTypeInt32>(), "step_column"});
279
0
        ColumnNumbers temp_arguments = {arguments[0], arguments[1], block.columns() - 1};
280
0
        return (RangeImplUtil<SourceDataPType, TimeUnitOrVoid>::range_execute)(
281
0
                block, temp_arguments, result, input_rows_count);
282
0
    }
Unexecuted instantiation: _ZN5doris12RangeTwoImplILNS_13PrimitiveTypeE5EvE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris12RangeTwoImplILNS_13PrimitiveTypeE26EvE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
283
};
284
285
template <PrimitiveType SourceDataPType, typename TimeUnitOrVoid = void>
286
struct RangeThreeImpl : public RangeImplUtil<SourceDataPType, TimeUnitOrVoid> {
287
9
    static DataTypes get_variadic_argument_types() {
288
9
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
9
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
9
                std::make_shared<DataTypeInt32>()};
291
9
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE5EvE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_9EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_8EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_7EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_6EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_5EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_4EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_3EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
_ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_2EEE27get_variadic_argument_typesEv
Line
Count
Source
287
1
    static DataTypes get_variadic_argument_types() {
288
1
        return {std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
289
1
                std::make_shared<typename RangeImplUtil<SourceDataPType>::DataType>(),
290
1
                std::make_shared<DataTypeInt32>()};
291
1
    }
292
293
    static Status execute_impl(FunctionContext* context, Block& block,
294
                               const ColumnNumbers& arguments, uint32_t result,
295
0
                               size_t input_rows_count) {
296
0
        return (RangeImplUtil<SourceDataPType, TimeUnitOrVoid>::range_execute)(
297
0
                block, arguments, result, input_rows_count);
298
0
    }
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE5EvE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_9EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_8EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_7EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_6EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_5EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_4EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_3EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZN5doris14RangeThreeImplILNS_13PrimitiveTypeE26ESt17integral_constantINS_8TimeUnitELS3_2EEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
299
};
300
301
1
void register_function_array_range(SimpleFunctionFactory& factory) {
302
    /// One argument, just for Int32
303
1
    factory.register_function<FunctionArrayRange<RangeOneImpl<TYPE_INT>>>();
304
305
    /// Two arguments, for Int32 and DateTimeV2 without Interval
306
1
    factory.register_function<FunctionArrayRange<RangeTwoImpl<TYPE_INT>>>();
307
1
    factory.register_function<FunctionArrayRange<RangeTwoImpl<TYPE_DATETIMEV2>>>();
308
309
    /// Three arguments, for Int32 and DateTimeV2 with YEAR to SECOND Interval
310
1
    factory.register_function<FunctionArrayRange<RangeThreeImpl<TYPE_INT>>>();
311
1
    factory.register_function<FunctionArrayRange<
312
1
            RangeThreeImpl<TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::YEAR>>>>();
313
1
    factory.register_function<FunctionArrayRange<RangeThreeImpl<
314
1
            TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::QUARTER>>>>();
315
1
    factory.register_function<FunctionArrayRange<
316
1
            RangeThreeImpl<TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::MONTH>>>>();
317
1
    factory.register_function<FunctionArrayRange<
318
1
            RangeThreeImpl<TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::WEEK>>>>();
319
1
    factory.register_function<FunctionArrayRange<
320
1
            RangeThreeImpl<TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::DAY>>>>();
321
1
    factory.register_function<FunctionArrayRange<
322
1
            RangeThreeImpl<TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::HOUR>>>>();
323
1
    factory.register_function<FunctionArrayRange<
324
1
            RangeThreeImpl<TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::MINUTE>>>>();
325
1
    factory.register_function<FunctionArrayRange<
326
1
            RangeThreeImpl<TYPE_DATETIMEV2, std::integral_constant<TimeUnit, TimeUnit::SECOND>>>>();
327
328
    // alias
329
1
    factory.register_alias("array_range", "sequence");
330
1
}
331
332
} // namespace doris