Coverage Report

Created: 2025-06-13 16:38

/root/doris/be/src/vec/functions/multiply.cpp
Line
Count
Source (jump to first uncovered line)
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/Multiply.cpp
19
// and modified by Doris
20
21
#include <stddef.h>
22
23
#include "runtime/decimalv2_value.h"
24
#include "vec/common/arithmetic_overflow.h"
25
#include "vec/core/types.h"
26
#include "vec/data_types/number_traits.h"
27
#include "vec/functions/function_binary_arithmetic.h"
28
#include "vec/functions/simple_function_factory.h"
29
30
namespace doris::vectorized {
31
32
template <PrimitiveType TypeA, PrimitiveType TypeB>
33
struct MultiplyImpl {
34
    using A = typename PrimitiveTypeTraits<TypeA>::CppNativeType;
35
    using B = typename PrimitiveTypeTraits<TypeB>::CppNativeType;
36
    static constexpr PrimitiveType ResultType =
37
            NumberTraits::ResultOfAdditionMultiplication<A, B>::Type;
38
    static const constexpr bool allow_decimal = true;
39
40
    template <PrimitiveType Result = ResultType>
41
0
    static inline typename PrimitiveTypeTraits<Result>::CppNativeType apply(A a, B b) {
42
0
        return static_cast<typename PrimitiveTypeTraits<Result>::CppNativeType>(a) * b;
43
0
    }
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_2EE5applyILS2_5EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEbb
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_3EE5applyILS2_4EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEba
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_4EE5applyILS2_5EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEbs
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_5EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEbi
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_6EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEbl
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_7EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEbn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEbf
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE2ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEbd
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE28ELS2_28EE5applyILS2_28EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEii
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE29ELS2_29EE5applyILS2_29EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEll
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE20ELS2_20EE5applyILS2_20EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE30ELS2_30EE5applyILS2_30EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE35ELS2_35EE5applyILS2_35EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEN4wide7integerILm256EiEESA_
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE20ELS2_20EE5applyILS2_35EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE30ELS2_30EE5applyILS2_35EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_2EE5applyILS2_4EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEab
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_3EE5applyILS2_4EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEaa
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_4EE5applyILS2_5EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEas
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_5EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEai
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_6EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEal
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_7EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEan
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEaf
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE3ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEad
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_2EE5applyILS2_5EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEsb
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_3EE5applyILS2_5EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEsa
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_4EE5applyILS2_5EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEss
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_5EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEsi
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_6EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEsl
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_7EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEsn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEsf
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE4ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEsd
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_2EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEib
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_3EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEia
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_4EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEis
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_5EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEii
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_6EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEil
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_7EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEin
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEif
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE5ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEid
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_2EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeElb
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_3EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEla
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_4EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEls
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_5EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEli
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_6EE5applyILS2_6EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEll
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_7EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEln
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeElf
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE6ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEld
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_2EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnb
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_3EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEna
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_4EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEns
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_5EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEni
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_6EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnl
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_7EE5applyILS2_7EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnf
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE7ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEnd
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_2EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEfb
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_3EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEfa
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_4EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEfs
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_5EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEfi
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_6EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEfl
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_7EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEfn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEff
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE8ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEfd
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_2EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEdb
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_3EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEda
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_4EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEds
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_5EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEdi
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_6EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEdl
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_7EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEdn
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_8EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEdf
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE9ELS2_9EE5applyILS2_9EEENS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeEdd
44
45
    template <PrimitiveType Result = TYPE_DECIMALV2>
46
0
    static inline DecimalV2Value apply(const DecimalV2Value& a, const DecimalV2Value& b) {
47
0
        return a * b;
48
0
    }
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE28ELS2_28EE5applyILS2_20EEENS_14DecimalV2ValueERKS5_S7_
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE29ELS2_29EE5applyILS2_20EEENS_14DecimalV2ValueERKS5_S7_
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE20ELS2_20EE5applyILS2_20EEENS_14DecimalV2ValueERKS5_S7_
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE30ELS2_30EE5applyILS2_20EEENS_14DecimalV2ValueERKS5_S7_
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE35ELS2_35EE5applyILS2_20EEENS_14DecimalV2ValueERKS5_S7_
49
50
    /*
51
    select 999999999999999999999999999 * 999999999999999999999999999;
52
    999999999999999999999999998000000000.000000000000000001 54 digits
53
    */
54
    template <bool check_overflow>
55
    static void vector_vector(const ColumnDecimal128V2::Container::value_type* __restrict a,
56
                              const ColumnDecimal128V2::Container::value_type* __restrict b,
57
0
                              ColumnDecimal128V2::Container::value_type* c, size_t size) {
58
0
        auto sng_uptr = std::unique_ptr<int8[]>(new int8[size]);
59
0
        int8* sgn = sng_uptr.get();
60
0
        auto max = DecimalV2Value::get_max_decimal();
61
0
        auto min = DecimalV2Value::get_min_decimal();
62
63
0
        for (int i = 0; i < size; i++) {
64
0
            sgn[i] = ((DecimalV2Value(a[i]).value() > 0) && (DecimalV2Value(b[i]).value() > 0)) ||
65
0
                                     ((DecimalV2Value(a[i]).value() < 0) &&
66
0
                                      (DecimalV2Value(b[i]).value() < 0))
67
0
                             ? 1
68
0
                     : ((DecimalV2Value(a[i]).value() == 0) || (DecimalV2Value(b[i]).value() == 0))
69
0
                             ? 0
70
0
                             : -1;
71
0
        }
72
73
0
        for (int i = 0; i < size; i++) {
74
0
            if constexpr (check_overflow) {
75
0
                int128_t i128_mul_result;
76
0
                if (common::mul_overflow(DecimalV2Value(a[i]).value(), DecimalV2Value(b[i]).value(),
77
0
                                         i128_mul_result)) {
78
0
                    THROW_DECIMAL_BINARY_OP_OVERFLOW_EXCEPTION(
79
0
                            DecimalV2Value(a[i]).to_string(), "multiply",
80
0
                            DecimalV2Value(b[i]).to_string(),
81
0
                            DecimalV2Value(i128_mul_result).to_string(), "decimalv2");
82
0
                }
83
0
                c[i] = (i128_mul_result - sgn[i]) / DecimalV2Value::ONE_BILLION + sgn[i];
84
0
                if (c[i].value > max.value() || c[i].value < min.value()) {
85
0
                    THROW_DECIMAL_BINARY_OP_OVERFLOW_EXCEPTION(
86
0
                            DecimalV2Value(a[i]).to_string(), "multiply",
87
0
                            DecimalV2Value(b[i]).to_string(),
88
0
                            DecimalV2Value(i128_mul_result).to_string(), "decimalv2");
89
0
                }
90
0
            } else {
91
0
                c[i] = (DecimalV2Value(a[i]).value() * DecimalV2Value(b[i]).value() - sgn[i]) /
92
0
                               DecimalV2Value::ONE_BILLION +
93
0
                       sgn[i];
94
0
            }
95
0
        }
96
0
    }
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE20ELS2_20EE13vector_vectorILb1EEEvPKNS0_7DecimalInEES8_PS6_m
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE20ELS2_20EE13vector_vectorILb0EEEvPKNS0_7DecimalInEES8_PS6_m
97
98
    /// Apply operation and check overflow. It's used for Decimal operations. @returns true if overflowed, false otherwise.
99
    template <PrimitiveType Result = ResultType>
100
0
    static inline bool apply(A a, B b, typename PrimitiveTypeTraits<Result>::CppNativeType& c) {
101
0
        return common::mul_overflow(
102
0
                static_cast<typename PrimitiveTypeTraits<Result>::CppNativeType>(a), b, c);
103
0
    }
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE28ELS2_28EE5applyILS2_28EEEbiiRNS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeE
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE29ELS2_29EE5applyILS2_29EEEbllRNS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeE
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE20ELS2_20EE5applyILS2_20EEEbnnRNS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeE
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE30ELS2_30EE5applyILS2_30EEEbnnRNS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeE
Unexecuted instantiation: _ZN5doris10vectorized12MultiplyImplILNS_13PrimitiveTypeE35ELS2_35EE5applyILS2_35EEEbN4wide7integerILm256EiEES7_RNS_19PrimitiveTypeTraitsIXT_EE13CppNativeTypeE
104
};
105
106
struct NameMultiply {
107
    static constexpr auto name = "multiply";
108
};
109
using FunctionMultiply = FunctionBinaryArithmetic<MultiplyImpl, NameMultiply, false>;
110
111
1
void register_function_multiply(SimpleFunctionFactory& factory) {
112
1
    factory.register_function<FunctionMultiply>();
113
1
}
114
115
} // namespace doris::vectorized