You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
MCOL-719 Add date/datetime to func_least/greatest
Support was missing and int casting caused unexpected results
This commit is contained in:
@ -159,6 +159,44 @@ IDB_Decimal Func_greatest::getDecimalVal(Row& row,
|
|||||||
return greatestStr;
|
return greatestStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t Func_greatest::getDateIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& ct)
|
||||||
|
{
|
||||||
|
int32_t str = fp[0]->data()->getDateIntVal(row, isNull);
|
||||||
|
|
||||||
|
int32_t greatestStr = str;
|
||||||
|
for (uint32_t i = 1; i < fp.size(); i++)
|
||||||
|
{
|
||||||
|
int32_t str1 = fp[i]->data()->getDateIntVal(row, isNull);
|
||||||
|
|
||||||
|
if ( greatestStr < str1 )
|
||||||
|
greatestStr = str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return greatestStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t Func_greatest::getDatetimeIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& ct)
|
||||||
|
{
|
||||||
|
int64_t str = fp[0]->data()->getDatetimeIntVal(row, isNull);
|
||||||
|
|
||||||
|
int64_t greatestStr = str;
|
||||||
|
for (uint32_t i = 1; i < fp.size(); i++)
|
||||||
|
{
|
||||||
|
int64_t str1 = fp[i]->data()->getDatetimeIntVal(row, isNull);
|
||||||
|
|
||||||
|
if ( greatestStr < str1 )
|
||||||
|
greatestStr = str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return greatestStr;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace funcexp
|
} // namespace funcexp
|
||||||
// vim:ts=4 sw=4:
|
// vim:ts=4 sw=4:
|
||||||
|
|
||||||
|
@ -137,6 +137,44 @@ IDB_Decimal Func_least::getDecimalVal(Row& row,
|
|||||||
return leastStr;
|
return leastStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t Func_least::getDateIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct)
|
||||||
|
{
|
||||||
|
int32_t str = fp[0]->data()->getDateIntVal(row, isNull);
|
||||||
|
|
||||||
|
int32_t leastStr = str;
|
||||||
|
for (uint32_t i = 1; i < fp.size(); i++)
|
||||||
|
{
|
||||||
|
int32_t str1 = fp[i]->data()->getDateIntVal(row, isNull);
|
||||||
|
|
||||||
|
if ( leastStr > str1 )
|
||||||
|
leastStr = str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return leastStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t Func_least::getDatetimeIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct)
|
||||||
|
{
|
||||||
|
int64_t str = fp[0]->data()->getDatetimeIntVal(row, isNull);
|
||||||
|
|
||||||
|
int64_t leastStr = str;
|
||||||
|
for (uint32_t i = 1; i < fp.size(); i++)
|
||||||
|
{
|
||||||
|
int64_t str1 = fp[i]->data()->getDatetimeIntVal(row, isNull);
|
||||||
|
|
||||||
|
if ( leastStr > str1 )
|
||||||
|
leastStr = str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return leastStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace funcexp
|
} // namespace funcexp
|
||||||
|
@ -267,6 +267,16 @@ public:
|
|||||||
FunctionParm& fp,
|
FunctionParm& fp,
|
||||||
bool& isNull,
|
bool& isNull,
|
||||||
execplan::CalpontSystemCatalog::ColType& op_ct);
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
|
|
||||||
|
int32_t getDateIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
|
|
||||||
|
int64_t getDatetimeIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -299,6 +309,16 @@ public:
|
|||||||
FunctionParm& fp,
|
FunctionParm& fp,
|
||||||
bool& isNull,
|
bool& isNull,
|
||||||
execplan::CalpontSystemCatalog::ColType& op_ct);
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
|
|
||||||
|
int32_t getDateIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
|
|
||||||
|
int64_t getDatetimeIntVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user