mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-04-23 07:05:36 +03:00
807 lines
21 KiB
C++
807 lines
21 KiB
C++
/* Copyright (C) 2014 InfiniDB, Inc.
|
|
Copyright (C) 2019 MariaDB Corporation
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; version 2 of
|
|
the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
MA 02110-1301, USA. */
|
|
|
|
// $Id: functor_int.h 3642 2013-03-18 19:09:53Z bpaul $
|
|
|
|
/** @file */
|
|
|
|
#pragma once
|
|
|
|
#include "functor.h"
|
|
|
|
namespace funcexp
|
|
{
|
|
/** @brief Func_Int class
|
|
* For function that returns a integer result.
|
|
* Must implement getIntVal()
|
|
* Implement any other methods that behave differently from the default.
|
|
*/
|
|
class Func_Int : public Func
|
|
{
|
|
public:
|
|
Func_Int()
|
|
{
|
|
}
|
|
Func_Int(const std::string& funcName) : Func(funcName)
|
|
{
|
|
}
|
|
virtual ~Func_Int()
|
|
{
|
|
}
|
|
|
|
/*
|
|
int64_t getIntVal(rowgroup::Row& row,
|
|
FunctionParm& fp,
|
|
bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct) = 0;
|
|
*/
|
|
|
|
double getDoubleVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct)
|
|
{
|
|
return ((double)getIntVal(row, fp, isNull, op_ct));
|
|
}
|
|
|
|
long double getLongDoubleVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct)
|
|
{
|
|
return ((long double)getIntVal(row, fp, isNull, op_ct));
|
|
}
|
|
|
|
std::string getStrVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct)
|
|
{
|
|
return intToString(getIntVal(row, fp, isNull, op_ct));
|
|
}
|
|
};
|
|
|
|
class Func_BitOp : public Func_Int
|
|
{
|
|
public:
|
|
Func_BitOp(const std::string& funcName) : Func_Int(funcName)
|
|
{
|
|
}
|
|
execplan::CalpontSystemCatalog::ColType operationType(
|
|
FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType) override
|
|
{
|
|
return resultType;
|
|
}
|
|
bool validateArgCount(execplan::FunctionColumn& col, uint expected) const;
|
|
void setFunctorByParm(execplan::FunctionColumn& col, const execplan::SPTP& parm,
|
|
Func_Int& return_uint64_from_uint64, Func_Int& return_uint64_from_sint64,
|
|
Func_Int& return_uint64_from_generic) const;
|
|
// Fix for << and >>
|
|
bool fixForBitShift(execplan::FunctionColumn& col, Func_Int& return_uint64_from_uint64,
|
|
Func_Int& return_uint64_from_sint64, Func_Int& return_uint64_from_generic) const;
|
|
// Fix for & | ^
|
|
bool fixForBitOp2(execplan::FunctionColumn& col, Func_Int& return_uint64_from_uint64_uint64,
|
|
Func_Int& return_uint64_from_sint64_sint64,
|
|
Func_Int& return_uint64_from_generic_generic) const;
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct) override
|
|
{
|
|
isNull = true;
|
|
return 0;
|
|
}
|
|
};
|
|
|
|
/** @brief Func_instr class
|
|
*/
|
|
class Func_instr : public Func_Int
|
|
{
|
|
public:
|
|
Func_instr() : Func_Int("instr")
|
|
{
|
|
}
|
|
virtual ~Func_instr()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_length class
|
|
*/
|
|
class Func_length : public Func_Int
|
|
{
|
|
public:
|
|
Func_length() : Func_Int("length")
|
|
{
|
|
}
|
|
virtual ~Func_length()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_sign class
|
|
*/
|
|
class Func_sign : public Func_Int
|
|
{
|
|
public:
|
|
Func_sign() : Func_Int("sign")
|
|
{
|
|
}
|
|
virtual ~Func_sign()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
|
|
std::string getStrVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_day class
|
|
*/
|
|
class Func_day : public Func_Int
|
|
{
|
|
public:
|
|
Func_day() : Func_Int("day")
|
|
{
|
|
}
|
|
virtual ~Func_day()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_minute class
|
|
*/
|
|
class Func_minute : public Func_Int
|
|
{
|
|
public:
|
|
Func_minute() : Func_Int("minute")
|
|
{
|
|
}
|
|
virtual ~Func_minute()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_month class
|
|
*/
|
|
class Func_month : public Func_Int
|
|
{
|
|
public:
|
|
Func_month() : Func_Int("month")
|
|
{
|
|
}
|
|
virtual ~Func_month()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_week class
|
|
*/
|
|
class Func_week : public Func_Int
|
|
{
|
|
public:
|
|
Func_week() : Func_Int("week")
|
|
{
|
|
}
|
|
virtual ~Func_week()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_year class
|
|
*/
|
|
class Func_year : public Func_Int
|
|
{
|
|
public:
|
|
Func_year() : Func_Int("year")
|
|
{
|
|
}
|
|
virtual ~Func_year()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_to_days class
|
|
*/
|
|
class Func_to_days : public Func_Int
|
|
{
|
|
public:
|
|
Func_to_days() : Func_Int("to_days")
|
|
{
|
|
}
|
|
virtual ~Func_to_days()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_char_length class
|
|
*/
|
|
class Func_char_length : public Func_Int
|
|
{
|
|
public:
|
|
Func_char_length() : Func_Int("length")
|
|
{
|
|
}
|
|
virtual ~Func_char_length()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_extract class
|
|
*/
|
|
class Func_extract : public Func_Int
|
|
{
|
|
public:
|
|
Func_extract() : Func_Int("extract")
|
|
{
|
|
}
|
|
virtual ~Func_extract()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_cast_signed class
|
|
*/
|
|
class Func_cast_signed : public Func_Int
|
|
{
|
|
public:
|
|
Func_cast_signed() : Func_Int("cast_signed")
|
|
{
|
|
}
|
|
virtual ~Func_cast_signed()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_cast_unsigned class
|
|
*/
|
|
class Func_cast_unsigned : public Func_Int
|
|
{
|
|
public:
|
|
Func_cast_unsigned() : Func_Int("cast_unsigned")
|
|
{
|
|
}
|
|
virtual ~Func_cast_unsigned()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct)
|
|
{
|
|
return (int64_t)(getUintVal(row, fp, isNull, op_ct));
|
|
}
|
|
|
|
uint64_t getUintVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_bitand class
|
|
*/
|
|
class Func_bitand : public Func_BitOp
|
|
{
|
|
public:
|
|
Func_bitand() : Func_BitOp("bitand")
|
|
{
|
|
}
|
|
virtual ~Func_bitand()
|
|
{
|
|
}
|
|
bool fix(execplan::FunctionColumn& col) const override;
|
|
};
|
|
|
|
/** @brief Func_bitor class
|
|
*/
|
|
class Func_bitor : public Func_BitOp
|
|
{
|
|
public:
|
|
Func_bitor() : Func_BitOp("bitor")
|
|
{
|
|
}
|
|
virtual ~Func_bitor()
|
|
{
|
|
}
|
|
|
|
bool fix(execplan::FunctionColumn& col) const override;
|
|
|
|
uint64_t getUintVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct) override;
|
|
};
|
|
|
|
/** @brief Func_bitxor class
|
|
*/
|
|
class Func_bitxor : public Func_BitOp
|
|
{
|
|
public:
|
|
Func_bitxor() : Func_BitOp("bitxor")
|
|
{
|
|
}
|
|
virtual ~Func_bitxor()
|
|
{
|
|
}
|
|
bool fix(execplan::FunctionColumn& col) const override;
|
|
};
|
|
|
|
/** @brief Func_bit_count class
|
|
*/
|
|
class Func_bit_count : public Func_BitOp
|
|
{
|
|
public:
|
|
Func_bit_count() : Func_BitOp("bit_count")
|
|
{
|
|
}
|
|
virtual ~Func_bit_count()
|
|
{
|
|
}
|
|
bool fix(execplan::FunctionColumn& col) const override;
|
|
};
|
|
|
|
/** @brief Func_hour class
|
|
*/
|
|
class Func_hour : public Func_Int
|
|
{
|
|
public:
|
|
Func_hour() : Func_Int("hour")
|
|
{
|
|
}
|
|
virtual ~Func_hour()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_second class
|
|
*/
|
|
class Func_second : public Func_Int
|
|
{
|
|
public:
|
|
Func_second() : Func_Int("second")
|
|
{
|
|
}
|
|
virtual ~Func_second()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_dayofweek class
|
|
*/
|
|
class Func_dayofweek : public Func_Int
|
|
{
|
|
public:
|
|
Func_dayofweek() : Func_Int("dayofweek")
|
|
{
|
|
}
|
|
virtual ~Func_dayofweek()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_dayofyear class
|
|
*/
|
|
class Func_dayofyear : public Func_Int
|
|
{
|
|
public:
|
|
Func_dayofyear() : Func_Int("dayofyear")
|
|
{
|
|
}
|
|
virtual ~Func_dayofyear()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_leftshift class
|
|
*/
|
|
class Func_leftshift : public Func_BitOp
|
|
{
|
|
public:
|
|
Func_leftshift() : Func_BitOp("leftshift")
|
|
{
|
|
}
|
|
virtual ~Func_leftshift()
|
|
{
|
|
}
|
|
bool fix(execplan::FunctionColumn& col) const override;
|
|
};
|
|
|
|
/** @brief Func_rightshift class
|
|
*/
|
|
class Func_rightshift : public Func_BitOp
|
|
{
|
|
public:
|
|
Func_rightshift() : Func_BitOp("rightshift")
|
|
{
|
|
}
|
|
virtual ~Func_rightshift()
|
|
{
|
|
}
|
|
bool fix(execplan::FunctionColumn& col) const override;
|
|
};
|
|
|
|
/** @brief Func_quarter class
|
|
*/
|
|
class Func_quarter : public Func_Int
|
|
{
|
|
public:
|
|
Func_quarter() : Func_Int("quarter")
|
|
{
|
|
}
|
|
virtual ~Func_quarter()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_ascii class
|
|
*/
|
|
class Func_ascii : public Func_Int
|
|
{
|
|
public:
|
|
Func_ascii() : Func_Int("ascii")
|
|
{
|
|
}
|
|
virtual ~Func_ascii()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_dayname class
|
|
*/
|
|
class Func_dayname : public Func_Int
|
|
{
|
|
public:
|
|
Func_dayname() : Func_Int("dayname")
|
|
{
|
|
}
|
|
virtual ~Func_dayname()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
|
|
std::string getStrVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_weekday class
|
|
*/
|
|
class Func_weekday : public Func_Int
|
|
{
|
|
public:
|
|
Func_weekday() : Func_Int("weekday")
|
|
{
|
|
}
|
|
virtual ~Func_weekday()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_yearweek class
|
|
*/
|
|
class Func_yearweek : public Func_Int
|
|
{
|
|
public:
|
|
Func_yearweek() : Func_Int("yearweek")
|
|
{
|
|
}
|
|
virtual ~Func_yearweek()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_last_day class
|
|
*/
|
|
class Func_last_day : public Func_Int
|
|
{
|
|
public:
|
|
Func_last_day() : Func_Int("last_day")
|
|
{
|
|
}
|
|
virtual ~Func_last_day()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_time_to_sec class
|
|
*/
|
|
class Func_time_to_sec : public Func_Int
|
|
{
|
|
public:
|
|
Func_time_to_sec() : Func_Int("time_to_sec")
|
|
{
|
|
}
|
|
virtual ~Func_time_to_sec()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_microsecond class
|
|
*/
|
|
class Func_microsecond : public Func_Int
|
|
{
|
|
public:
|
|
Func_microsecond() : Func_Int("microsecond")
|
|
{
|
|
}
|
|
virtual ~Func_microsecond()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_crc32 class
|
|
*/
|
|
class Func_crc32 : public Func_Int
|
|
{
|
|
public:
|
|
Func_crc32() : Func_Int("crc32")
|
|
{
|
|
}
|
|
virtual ~Func_crc32()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_period_add class
|
|
*/
|
|
class Func_period_add : public Func_Int
|
|
{
|
|
public:
|
|
Func_period_add() : Func_Int("period_add")
|
|
{
|
|
}
|
|
virtual ~Func_period_add()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_period_diff class
|
|
*/
|
|
class Func_period_diff : public Func_Int
|
|
{
|
|
public:
|
|
Func_period_diff() : Func_Int("period_diff")
|
|
{
|
|
}
|
|
virtual ~Func_period_diff()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_strcmp class
|
|
*/
|
|
class Func_strcmp : public Func_Int
|
|
{
|
|
public:
|
|
Func_strcmp() : Func_Int("strcmp")
|
|
{
|
|
}
|
|
virtual ~Func_strcmp()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
|
|
std::string getStrVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_unix_timestamp class
|
|
*/
|
|
class Func_unix_timestamp : public Func_Int
|
|
{
|
|
public:
|
|
Func_unix_timestamp() : Func_Int("unix_timestamp")
|
|
{
|
|
}
|
|
virtual ~Func_unix_timestamp()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
|
|
std::string getStrVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
/** @brief Func_strcmp class
|
|
*/
|
|
class Func_find_in_set : public Func_Int
|
|
{
|
|
public:
|
|
Func_find_in_set() : Func_Int("find_in_set")
|
|
{
|
|
}
|
|
virtual ~Func_find_in_set()
|
|
{
|
|
}
|
|
|
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp,
|
|
execplan::CalpontSystemCatalog::ColType& resultType);
|
|
|
|
int64_t getIntVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
|
|
std::string getStrVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
double getDoubleVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
execplan::IDB_Decimal getDecimalVal(rowgroup::Row& row, FunctionParm& fp, bool& isNull,
|
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
|
};
|
|
|
|
} // namespace funcexp
|