blob: 43708f0fe8083188bc558d3532341db7998c2221 [file] [log] [blame]
// 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 IMPALA_EXPRS_OPERATORS_H
#define IMPALA_EXPRS_OPERATORS_H
#include "udf/udf.h"
namespace impala {
using impala_udf::FunctionContext;
using impala_udf::AnyVal;
using impala_udf::BooleanVal;
using impala_udf::TinyIntVal;
using impala_udf::SmallIntVal;
using impala_udf::IntVal;
using impala_udf::BigIntVal;
using impala_udf::FloatVal;
using impala_udf::DoubleVal;
using impala_udf::DateVal;
using impala_udf::TimestampVal;
using impala_udf::StringVal;
using impala_udf::DecimalVal;
/// Operators written against the UDF interface.
class Operators {
public:
static TinyIntVal Bitnot_TinyIntVal(FunctionContext*, const TinyIntVal&);
static SmallIntVal Bitnot_SmallIntVal(FunctionContext*, const SmallIntVal&);
static IntVal Bitnot_IntVal(FunctionContext*, const IntVal&);
static BigIntVal Bitnot_BigIntVal(FunctionContext*, const BigIntVal&);
static BigIntVal Factorial_TinyIntVal(FunctionContext*, const TinyIntVal&);
static BigIntVal Factorial_SmallIntVal(FunctionContext*, const SmallIntVal&);
static BigIntVal Factorial_IntVal(FunctionContext*, const IntVal&);
static BigIntVal Factorial_BigIntVal(FunctionContext*, const BigIntVal&);
static TinyIntVal Add_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Add_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Add_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Add_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static FloatVal Add_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static DoubleVal Add_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static TinyIntVal Subtract_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Subtract_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Subtract_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Subtract_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static FloatVal Subtract_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static DoubleVal Subtract_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static TinyIntVal Multiply_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Multiply_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Multiply_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Multiply_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static FloatVal Multiply_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static DoubleVal Multiply_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static DoubleVal Divide_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static TinyIntVal Int_divide_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Int_divide_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Int_divide_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Int_divide_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static TinyIntVal Mod_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Mod_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Mod_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Mod_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static TinyIntVal Bitand_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Bitand_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Bitand_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Bitand_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static TinyIntVal Bitxor_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Bitxor_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Bitxor_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Bitxor_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static TinyIntVal Bitor_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static SmallIntVal Bitor_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static IntVal Bitor_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BigIntVal Bitor_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal Eq_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal Eq_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal Eq_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal Eq_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal Eq_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal Eq_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal Eq_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal Eq_DateVal_DateVal(FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal Eq_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Eq_Char_Char(FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Eq_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
static BooleanVal Ne_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal Ne_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal Ne_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal Ne_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal Ne_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal Ne_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal Ne_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal Ne_DateVal_DateVal(FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal Ne_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Ne_Char_Char(FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Ne_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
static BooleanVal DistinctFrom_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal DistinctFrom_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal DistinctFrom_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal DistinctFrom_IntVal_IntVal(
FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal DistinctFrom_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal DistinctFrom_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal DistinctFrom_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal DistinctFrom_DateVal_DateVal(
FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal DistinctFrom_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal DistinctFrom_Char_Char(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal DistinctFrom_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
static BooleanVal NotDistinct_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal NotDistinct_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal NotDistinct_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal NotDistinct_IntVal_IntVal(
FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal NotDistinct_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal NotDistinct_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal NotDistinct_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal NotDistinct_DateVal_DateVal(
FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal NotDistinct_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal NotDistinct_Char_Char(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal NotDistinct_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
static BooleanVal Gt_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal Gt_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal Gt_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal Gt_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal Gt_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal Gt_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal Gt_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal Gt_DateVal_DateVal(FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal Gt_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Gt_Char_Char(FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Gt_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
static BooleanVal Lt_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal Lt_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal Lt_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal Lt_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal Lt_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal Lt_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal Lt_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal Lt_DateVal_DateVal(FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal Lt_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Lt_Char_Char(FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Lt_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
static BooleanVal Ge_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal Ge_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal Ge_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal Ge_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal Ge_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal Ge_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal Ge_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal Ge_DateVal_DateVal(FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal Ge_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Ge_Char_Char( FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Ge_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
static BooleanVal Le_BooleanVal_BooleanVal(
FunctionContext*, const BooleanVal&, const BooleanVal&);
static BooleanVal Le_TinyIntVal_TinyIntVal(
FunctionContext*, const TinyIntVal&, const TinyIntVal&);
static BooleanVal Le_SmallIntVal_SmallIntVal(
FunctionContext*, const SmallIntVal&, const SmallIntVal&);
static BooleanVal Le_IntVal_IntVal(FunctionContext*, const IntVal&, const IntVal&);
static BooleanVal Le_BigIntVal_BigIntVal(
FunctionContext*, const BigIntVal&, const BigIntVal&);
static BooleanVal Le_FloatVal_FloatVal(
FunctionContext*, const FloatVal&, const FloatVal&);
static BooleanVal Le_DoubleVal_DoubleVal(
FunctionContext*, const DoubleVal&, const DoubleVal&);
static BooleanVal Le_DateVal_DateVal(FunctionContext*, const DateVal&, const DateVal&);
static BooleanVal Le_StringVal_StringVal(
FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Le_Char_Char(FunctionContext*, const StringVal&, const StringVal&);
static BooleanVal Le_TimestampVal_TimestampVal(
FunctionContext*, const TimestampVal&, const TimestampVal&);
};
} // namespace impala
#endif