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

MCOL-807 HOUR() is always positive

It is undocumented but when MariaDB gets a negative time in the HOUR()
function it always returns a positive value. This does the same for us.
This commit is contained in:
Andrew Hutchings
2018-06-04 15:17:56 +01:00
parent 51afdc98fc
commit f850f8b0d0

View File

@ -127,22 +127,13 @@ int64_t Func_hour::getIntVal(rowgroup::Row& row,
if (isTime)
{
// If negative, mask so it doesn't turn positive
bool isNeg = false;
// HOUR() is always positive in MariaDB, even for negative time
int64_t mask = 0;
if ((val >> 40) & 0x800)
mask = 0xfffffffffffff000;
if (!mask && (val >> 63))
{
isNeg = true;
}
val = mask | ((val >> 40) & 0xfff);
if (isNeg)
val *= -1;
val = abs(mask | ((val >> 40) & 0xfff));
}
else
{