1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

MCOL-265 Add support for TIMESTAMP data type

This commit is contained in:
Gagan Goel
2019-03-17 14:14:03 -04:00
parent 8a7ccd7d93
commit e89d1ac3cf
167 changed files with 4346 additions and 250 deletions

View File

@ -55,7 +55,8 @@ bool getUIntValFromParm(
Row& row,
const execplan::SPTP& parm,
uint64_t& value,
bool& isNull)
bool& isNull,
const string& timeZone)
{
switch (parm->data()->resultType().colDataType)
{
@ -143,6 +144,15 @@ bool getUIntValFromParm(
}
break;
case execplan::CalpontSystemCatalog::TIMESTAMP:
{
int64_t time = parm->data()->getTimestampIntVal(row, isNull);
TimeStamp dt(time);
value = dt.convertToMySQLint(timeZone);
}
break;
case execplan::CalpontSystemCatalog::TIME:
{
int64_t time = parm->data()->getTimeIntVal(row, isNull);
@ -189,8 +199,8 @@ int64_t Func_bitand::getIntVal(Row& row,
uint64_t val1 = 0;
uint64_t val2 = 0;
if (!getUIntValFromParm(row, parm[0], val1, isNull) ||
!getUIntValFromParm(row, parm[1], val2, isNull))
if (!getUIntValFromParm(row, parm[0], val1, isNull, fTimeZone) ||
!getUIntValFromParm(row, parm[1], val2, isNull, fTimeZone))
{
std::ostringstream oss;
oss << "bitand: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -225,8 +235,8 @@ int64_t Func_leftshift::getIntVal(Row& row,
uint64_t val1 = 0;
uint64_t val2 = 0;
if (!getUIntValFromParm(row, parm[0], val1, isNull) ||
!getUIntValFromParm(row, parm[1], val2, isNull))
if (!getUIntValFromParm(row, parm[0], val1, isNull, fTimeZone) ||
!getUIntValFromParm(row, parm[1], val2, isNull, fTimeZone))
{
std::ostringstream oss;
oss << "leftshift: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -261,8 +271,8 @@ int64_t Func_rightshift::getIntVal(Row& row,
uint64_t val1 = 0;
uint64_t val2 = 0;
if (!getUIntValFromParm(row, parm[0], val1, isNull) ||
!getUIntValFromParm(row, parm[1], val2, isNull))
if (!getUIntValFromParm(row, parm[0], val1, isNull, fTimeZone) ||
!getUIntValFromParm(row, parm[1], val2, isNull, fTimeZone))
{
std::ostringstream oss;
oss << "rightshift: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -297,8 +307,8 @@ int64_t Func_bitor::getIntVal(Row& row,
uint64_t val1 = 0;
uint64_t val2 = 0;
if (!getUIntValFromParm(row, parm[0], val1, isNull) ||
!getUIntValFromParm(row, parm[1], val2, isNull))
if (!getUIntValFromParm(row, parm[0], val1, isNull, fTimeZone) ||
!getUIntValFromParm(row, parm[1], val2, isNull, fTimeZone))
{
std::ostringstream oss;
oss << "bitor: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -341,8 +351,8 @@ int64_t Func_bitxor::getIntVal(Row& row,
uint64_t val1 = 0;
uint64_t val2 = 0;
if (!getUIntValFromParm(row, parm[0], val1, isNull) ||
!getUIntValFromParm(row, parm[1], val2, isNull))
if (!getUIntValFromParm(row, parm[0], val1, isNull, fTimeZone) ||
!getUIntValFromParm(row, parm[1], val2, isNull, fTimeZone))
{
std::ostringstream oss;
oss << "bitxor: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);