1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-27 21:01:50 +03:00

MCOL-4741 in/like/equal(=) operations differ in results

This is due to signedness in the string range comparison in extentmap
and unsignedness everywhere else.
This commit is contained in:
Sergey Zefirov
2021-06-22 14:13:27 +03:00
parent 6dc356ed60
commit c58136a32d
5 changed files with 48 additions and 8 deletions

View File

@ -893,18 +893,18 @@ void ExtentMap::mergeExtentsMaxMin(CPMaxMinMergeMap_t& cpMap, bool useLock)
// Swap byte order to do binary string comparison
if (isCharType(it->second.type))
{
int64_t newMinVal =
static_cast<int64_t>( uint64ToStr(
uint64_t newMinVal =
static_cast<uint64_t>( uint64ToStr(
static_cast<uint64_t>(it->second.min)));
int64_t newMaxVal =
static_cast<int64_t>( uint64ToStr(
uint64_t newMaxVal =
static_cast<uint64_t>( uint64ToStr(
static_cast<uint64_t>(it->second.max)));
int64_t oldMinVal =
static_cast<int64_t>( uint64ToStr(
uint64_t oldMinVal =
static_cast<uint64_t>( uint64ToStr(
static_cast<uint64_t>(
fExtentMap[i].partition.cprange.loVal)) );
int64_t oldMaxVal =
static_cast<int64_t>( uint64ToStr(
uint64_t oldMaxVal =
static_cast<uint64_t>( uint64ToStr(
static_cast<uint64_t>(
fExtentMap[i].partition.cprange.hiVal)) );