You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-01 06:46:55 +03:00
MCOL-1647 Fix TIME regressions
Fixes the following: * Read past buffer end in intToDatetime / intToTime * Allow intToTime to convert datetime * Allow intToTime to convert shortened time values * Allow stringToTime to convert datetime and int time values * Fix saturation / bad values in intToTime and stringToTime * Fix TIME return in STR_TO_DATE() * Fix NULL return on type inequality for TIMEDIFF() * Fix zero day calculation error in ADDTIME()/SUBTIME() * Fix DATETIME to int calculation error in aggregate bit operations * Make the new harderning flags optional with -DSECURITY_HARDENED_NEW
This commit is contained in:
@ -1547,9 +1547,9 @@ void RowAggregation::doBitOp(const Row& rowIn, int64_t colIn, int64_t colOut, in
|
||||
case execplan::CalpontSystemCatalog::DATETIME:
|
||||
{
|
||||
uint64_t dtm = rowIn.getUintField(colIn);
|
||||
valIn = ((dtm >> 48) * 10000000000000000LL) + (((dtm >> 44) & 0xF) * 100000000000000) +
|
||||
(((dtm >> 38) & 077) * 1000000000000) + (((dtm >> 32) & 077) * 10000000000) +
|
||||
(((dtm >> 26) & 077) * 100000000) + (((dtm >> 20) & 077) * 1000000) + (dtm & 0xfffff);
|
||||
valIn = ((dtm >> 48) * 10000000000LL) + (((dtm >> 44) & 0xF) * 100000000) +
|
||||
(((dtm >> 38) & 077) * 1000000) + (((dtm >> 32) & 077) * 10000) +
|
||||
(((dtm >> 26) & 077) * 100) + ((dtm >> 20) & 077);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1565,8 +1565,8 @@ void RowAggregation::doBitOp(const Row& rowIn, int64_t colIn, int64_t colOut, in
|
||||
}
|
||||
|
||||
hour |= ((dtm >> 40) & 0xfff);
|
||||
valIn = (hour * 10000000000) +
|
||||
(((dtm >> 32) & 0xff) * 100000000) + (((dtm >> 24) & 0xff) * 1000000) + (dtm & 0xffffff);
|
||||
valIn = (hour * 10000) +
|
||||
(((dtm >> 32) & 0xff) * 100) + ((dtm >> 24) & 0xff);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user