1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

MCOL-4464 Bitwise operations not like in MariaDB

This commit is contained in:
Alexander Barkov
2020-12-19 16:06:58 +04:00
parent 0e6778378d
commit 4abbe90302
10 changed files with 751 additions and 423 deletions

View File

@ -45,6 +45,7 @@ class Row;
namespace execplan
{
class FunctionColumn;
extern const std::string colDataTypeToString(CalpontSystemCatalog::ColDataType cdt);
}
@ -83,6 +84,11 @@ public:
fTimeZone = timeZone;
}
virtual bool fix(execplan::FunctionColumn &col) const
{
return false;
}
virtual execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType) = 0;
virtual int64_t getIntVal(rowgroup::Row& row,
@ -221,6 +227,58 @@ private:
};
class ParmTSInt64: public datatypes::TSInt64Null
{
public:
ParmTSInt64() { }
ParmTSInt64(rowgroup::Row& row,
const execplan::SPTP& parm,
const funcexp::Func& thisFunc)
:TSInt64Null(parm->data()->toTSInt64Null(row))
{ }
};
class ParmTUInt64: public datatypes::TUInt64Null
{
public:
ParmTUInt64() { }
ParmTUInt64(rowgroup::Row& row,
const execplan::SPTP& parm,
const funcexp::Func& thisFunc)
:TUInt64Null(parm->data()->toTUInt64Null(row))
{ }
};
template<class TA, class TB> class Arg2Lazy
{
public:
TA a;
TB b;
Arg2Lazy(rowgroup::Row& row,
FunctionParm& parm,
const Func& thisFunc)
:a(row, parm[0], thisFunc),
b(a.isNull() ? TB() : TB(row, parm[1], thisFunc))
{ }
};
template<class TA, class TB> class Arg2Eager
{
public:
TA a;
TB b;
Arg2Eager(rowgroup::Row& row,
FunctionParm& parm,
const Func& thisFunc)
:a(row, parm[0], thisFunc),
b(row, parm[1], thisFunc)
{ }
};
}
#endif