Files
doris/be/src/exprs/operators.h
2022-02-12 15:17:28 +08:00

252 lines
17 KiB
C++

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
#ifndef DORIS_BE_SRC_QUERY_EXPRS_OPERATORS_H
#define DORIS_BE_SRC_QUERY_EXPRS_OPERATORS_H
#include "udf/udf.h"
namespace doris {
/// Operators written against the UDF interface.
class Operators {
public:
// Do nothing, just get its symbols
static void init();
// Bit operator
static TinyIntVal bitnot_tiny_int_val(FunctionContext*, const TinyIntVal&);
static SmallIntVal bitnot_small_int_val(FunctionContext*, const SmallIntVal&);
static IntVal bitnot_int_val(FunctionContext*, const IntVal&);
static BigIntVal bitnot_big_int_val(FunctionContext*, const BigIntVal&);
static LargeIntVal bitnot_large_int_val(FunctionContext*, const LargeIntVal&);
static TinyIntVal bitand_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal bitand_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal bitand_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal bitand_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal bitand_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static TinyIntVal bitxor_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal bitxor_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal bitxor_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal bitxor_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal bitxor_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static TinyIntVal bitor_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal bitor_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal bitor_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal bitor_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal bitor_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
// Arithmetic
static TinyIntVal add_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal add_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal add_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal add_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal add_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static FloatVal add_float_val_float_val(FunctionContext*, const FloatVal&, const FloatVal&);
static DoubleVal add_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static TinyIntVal subtract_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal subtract_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal subtract_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal subtract_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal subtract_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static FloatVal subtract_float_val_float_val(FunctionContext*, const FloatVal&,
const FloatVal&);
static DoubleVal subtract_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static TinyIntVal multiply_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal multiply_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal multiply_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal multiply_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal multiply_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static FloatVal multiply_float_val_float_val(FunctionContext*, const FloatVal&,
const FloatVal&);
static DoubleVal multiply_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static DoubleVal divide_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static TinyIntVal int_divide_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal int_divide_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal int_divide_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal int_divide_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal int_divide_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static TinyIntVal mod_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static SmallIntVal mod_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static IntVal mod_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal mod_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static LargeIntVal mod_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
// Binary predicate
static BooleanVal eq_boolean_val_boolean_val(FunctionContext*, const BooleanVal&,
const BooleanVal&);
static BooleanVal eq_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static BooleanVal eq_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static BooleanVal eq_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal eq_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static BooleanVal eq_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static BooleanVal eq_float_val_float_val(FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal eq_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static BooleanVal eq_string_val_string_val(FunctionContext*, const StringVal&,
const StringVal&);
static BooleanVal eq_datetime_val_datetime_val(FunctionContext*, const DateTimeVal&,
const DateTimeVal&);
static BooleanVal ne_boolean_val_boolean_val(FunctionContext*, const BooleanVal&,
const BooleanVal&);
static BooleanVal ne_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static BooleanVal ne_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static BooleanVal ne_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal ne_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static BooleanVal ne_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static BooleanVal ne_float_val_float_val(FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal ne_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static BooleanVal ne_string_val_string_val(FunctionContext*, const StringVal&,
const StringVal&);
static BooleanVal ne_datetime_val_datetime_val(FunctionContext*, const DateTimeVal&,
const DateTimeVal&);
static BooleanVal gt_boolean_val_boolean_val(FunctionContext*, const BooleanVal&,
const BooleanVal&);
static BooleanVal gt_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static BooleanVal gt_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static BooleanVal gt_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal gt_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static BooleanVal gt_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static BooleanVal gt_float_val_float_val(FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal gt_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static BooleanVal gt_string_val_string_val(FunctionContext*, const StringVal&,
const StringVal&);
static BooleanVal gt_datetime_val_datetime_val(FunctionContext*, const DateTimeVal&,
const DateTimeVal&);
static BooleanVal lt_boolean_val_boolean_val(FunctionContext*, const BooleanVal&,
const BooleanVal&);
static BooleanVal lt_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static BooleanVal lt_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static BooleanVal lt_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal lt_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static BooleanVal lt_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static BooleanVal lt_float_val_float_val(FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal lt_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static BooleanVal lt_string_val_string_val(FunctionContext*, const StringVal&,
const StringVal&);
static BooleanVal lt_datetime_val_datetime_val(FunctionContext*, const DateTimeVal&,
const DateTimeVal&);
static BooleanVal ge_boolean_val_boolean_val(FunctionContext*, const BooleanVal&,
const BooleanVal&);
static BooleanVal ge_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static BooleanVal ge_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static BooleanVal ge_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal ge_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static BooleanVal ge_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static BooleanVal ge_float_val_float_val(FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal ge_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static BooleanVal ge_string_val_string_val(FunctionContext*, const StringVal&,
const StringVal&);
static BooleanVal ge_datetime_val_datetime_val(FunctionContext*, const DateTimeVal&,
const DateTimeVal&);
static BooleanVal le_boolean_val_boolean_val(FunctionContext*, const BooleanVal&,
const BooleanVal&);
static BooleanVal le_tiny_int_val_tiny_int_val(FunctionContext*, const TinyIntVal&,
const TinyIntVal&);
static BooleanVal le_small_int_val_small_int_val(FunctionContext*, const SmallIntVal&,
const SmallIntVal&);
static BooleanVal le_int_val_int_val(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal le_big_int_val_big_int_val(FunctionContext*, const BigIntVal&,
const BigIntVal&);
static BooleanVal le_large_int_val_large_int_val(FunctionContext*, const LargeIntVal&,
const LargeIntVal&);
static BooleanVal le_float_val_float_val(FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal le_double_val_double_val(FunctionContext*, const DoubleVal&,
const DoubleVal&);
static BooleanVal le_string_val_string_val(FunctionContext*, const StringVal&,
const StringVal&);
static BooleanVal le_datetime_val_datetime_val(FunctionContext*, const DateTimeVal&,
const DateTimeVal&);
};
} // namespace doris
#endif