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

Move Functor::timeZone() call that utilizes a lock into a block where

timezone is really used
This commit is contained in:
Roman Nozdrin
2020-12-07 14:35:30 +00:00
parent 5ef444c46e
commit 069b74563f

View File

@ -56,7 +56,7 @@ bool getUIntValFromParm(
const execplan::SPTP& parm, const execplan::SPTP& parm,
uint64_t& value, uint64_t& value,
bool& isNull, bool& isNull,
const string& timeZone, const funcexp::Func& thisFunc,
bool& isBigVal, bool& isBigVal,
int128_t& bigval) int128_t& bigval)
{ {
@ -180,7 +180,7 @@ bool getUIntValFromParm(
int64_t time = parm->data()->getTimestampIntVal(row, isNull); int64_t time = parm->data()->getTimestampIntVal(row, isNull);
TimeStamp dt(time); TimeStamp dt(time);
value = dt.convertToMySQLint(timeZone); value = dt.convertToMySQLint(thisFunc.timeZone());
} }
break; break;
@ -235,8 +235,8 @@ int64_t Func_bitand::getIntVal(Row& row,
bool isBigVal1; bool isBigVal1;
bool isBigVal2; bool isBigVal2;
if (!getUIntValFromParm(row, parm[0], val1, isNull, timeZone(), isBigVal1, bigval1) || if (!getUIntValFromParm(row, parm[0], val1, isNull, *this, isBigVal1, bigval1) ||
!getUIntValFromParm(row, parm[1], val2, isNull, timeZone(), isBigVal2, bigval2)) !getUIntValFromParm(row, parm[1], val2, isNull, *this, isBigVal2, bigval2))
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "bitand: datatype of " << execplan::colDataTypeToString(operationColType.colDataType); oss << "bitand: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -295,8 +295,8 @@ int64_t Func_leftshift::getIntVal(Row& row,
bool isBigVal1; bool isBigVal1;
bool isBigVal2; bool isBigVal2;
if (!getUIntValFromParm(row, parm[0], val1, isNull, timeZone(), isBigVal1, bigval1) || if (!getUIntValFromParm(row, parm[0], val1, isNull, *this, isBigVal1, bigval1) ||
!getUIntValFromParm(row, parm[1], val2, isNull, timeZone(), isBigVal2, bigval2)) !getUIntValFromParm(row, parm[1], val2, isNull, *this, isBigVal2, bigval2))
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "leftshift: datatype of " << execplan::colDataTypeToString(operationColType.colDataType); oss << "leftshift: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -355,8 +355,8 @@ int64_t Func_rightshift::getIntVal(Row& row,
bool isBigVal1; bool isBigVal1;
bool isBigVal2; bool isBigVal2;
if (!getUIntValFromParm(row, parm[0], val1, isNull, timeZone(), isBigVal1, bigval1) || if (!getUIntValFromParm(row, parm[0], val1, isNull, *this, isBigVal1, bigval1) ||
!getUIntValFromParm(row, parm[1], val2, isNull, timeZone(), isBigVal2, bigval2)) !getUIntValFromParm(row, parm[1], val2, isNull, *this, isBigVal2, bigval2))
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "rightshift: datatype of " << execplan::colDataTypeToString(operationColType.colDataType); oss << "rightshift: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -415,8 +415,8 @@ int64_t Func_bitor::getIntVal(Row& row,
bool isBigVal1; bool isBigVal1;
bool isBigVal2; bool isBigVal2;
if (!getUIntValFromParm(row, parm[0], val1, isNull, timeZone(), isBigVal1, bigval1) || if (!getUIntValFromParm(row, parm[0], val1, isNull, *this, isBigVal1, bigval1) ||
!getUIntValFromParm(row, parm[1], val2, isNull, timeZone(), isBigVal2, bigval2)) !getUIntValFromParm(row, parm[1], val2, isNull, *this, isBigVal2, bigval2))
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "bitor: datatype of " << execplan::colDataTypeToString(operationColType.colDataType); oss << "bitor: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -483,8 +483,8 @@ int64_t Func_bitxor::getIntVal(Row& row,
bool isBigVal1; bool isBigVal1;
bool isBigVal2; bool isBigVal2;
if (!getUIntValFromParm(row, parm[0], val1, isNull, timeZone(), isBigVal1, bigval1) || if (!getUIntValFromParm(row, parm[0], val1, isNull, *this, isBigVal1, bigval1) ||
!getUIntValFromParm(row, parm[1], val2, isNull, timeZone(), isBigVal2, bigval2)) !getUIntValFromParm(row, parm[1], val2, isNull, *this, isBigVal2, bigval2))
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "bitxor: datatype of " << execplan::colDataTypeToString(operationColType.colDataType); oss << "bitxor: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);
@ -554,7 +554,7 @@ int64_t Func_bit_count::getIntVal(Row& row,
int128_t bigval = 0; int128_t bigval = 0;
bool isBigVal; bool isBigVal;
if (!getUIntValFromParm(row, parm[0], val, isNull, timeZone(), isBigVal, bigval)) if (!getUIntValFromParm(row, parm[0], val, isNull, *this, isBigVal, bigval))
{ {
std::ostringstream oss; std::ostringstream oss;
oss << "bit_count: datatype of " << execplan::colDataTypeToString(operationColType.colDataType); oss << "bit_count: datatype of " << execplan::colDataTypeToString(operationColType.colDataType);