1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +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

@ -311,10 +311,24 @@ public:
return fFunctor->getTimeIntVal(row, fFunctionParms, isNull, fOperationType);
}
bool fixIfNeeded() override
{
if (fFixed)
return false;
if (fFunctor->fix(*this))
return true;
fFixed = true;
return false;
}
void setFunctor(funcexp::Func* functor)
{
fFunctor = functor;
}
private:
funcexp::FunctionParm fFunctionParms;
funcexp::Func* fFunctor; /// functor to execute this function
funcexp::Func* fDynamicFunctor = NULL; // for rand encode decode
bool fFixed = false;
};
/**

View File

@ -328,6 +328,11 @@ public:
return false;
}
virtual bool fixIfNeeded()
{
return false;
}
protected:
// return all flag set if the other column is outer join column (+)
bool fReturnAll;

View File

@ -37,6 +37,7 @@
#include "dataconvert.h"
#include "columnwidth.h"
#include "mcs_decimal.h"
#include "mcs_int64.h"
namespace messageqcpp
{
@ -264,6 +265,18 @@ public:
{
return fResult.uintVal;
}
datatypes::TUInt64Null toTUInt64Null(rowgroup::Row& row)
{
bool isNull;
uint64_t val = getUintVal(row, isNull);
return datatypes::TUInt64Null(val, isNull);
}
datatypes::TSInt64Null toTSInt64Null(rowgroup::Row& row)
{
bool isNull;
int64_t val = getIntVal(row, isNull);
return datatypes::TSInt64Null(val, isNull);
}
virtual float getFloatVal(rowgroup::Row& row, bool& isNull)
{
return fResult.floatVal;