From 9e24412681e2034d619df759a77e31602016358c Mon Sep 17 00:00:00 2001 From: Patrick LeBlanc <43503225+pleblanc1976@users.noreply.github.com> Date: Fri, 31 Jan 2020 10:44:08 -0600 Subject: [PATCH] Merge pull request #1015 from pleblanc1976/mcol-3716 Mcol-3716: Wrong min/max after cpimport which causes wrong select results --- writeengine/bulk/we_bulkloadbuffer.cpp | 12 ++++++------ writeengine/bulk/we_bulkloadbuffer.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/writeengine/bulk/we_bulkloadbuffer.cpp b/writeengine/bulk/we_bulkloadbuffer.cpp index 1c65c34d3..60a0a457e 100644 --- a/writeengine/bulk/we_bulkloadbuffer.cpp +++ b/writeengine/bulk/we_bulkloadbuffer.cpp @@ -719,7 +719,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, errno = 0; origVal = strtoll(field, 0, 10); - + if (errno == ERANGE) bSatVal = true; } @@ -804,7 +804,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, strcpy(field, "1"); fieldLength = 1; } - + if ( (column.dataType == CalpontSystemCatalog::DECIMAL ) || (column.dataType == CalpontSystemCatalog::UDECIMAL)) { @@ -979,7 +979,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, strcpy(field, "1"); fieldLength = 1; } - + if ( (column.dataType == CalpontSystemCatalog::DECIMAL) || (column.dataType == CalpontSystemCatalog::UDECIMAL)) { @@ -1411,7 +1411,7 @@ void BulkLoadBuffer::convert(char* field, int fieldLength, strcpy(field, "1"); fieldLength = 1; } - + if ( (column.dataType == CalpontSystemCatalog::DECIMAL) || (column.dataType == CalpontSystemCatalog::UDECIMAL)) { @@ -1642,7 +1642,7 @@ int BulkLoadBuffer::parseCol(ColumnInfo& columnInfo) tokenNullFlag = true; } - // convert the data into appropriate format. + // convert the data into appropriate format and update CP values convert(field, tokenLength, tokenNullFlag, buf + i * columnInfo.column.width, columnInfo.column, bufStats); @@ -1673,7 +1673,7 @@ int BulkLoadBuffer::parseCol(ColumnInfo& columnInfo) lastInputRowInExtent += columnInfo.rowsPerExtent(); - if (isUnsigned(columnInfo.column.dataType)) + if (isUnsigned(columnInfo.column.dataType) || isCharType(columnInfo.column.dataType)) { bufStats.minBufferVal = static_cast(MAX_UBIGINT); bufStats.maxBufferVal = static_cast(MIN_UBIGINT); diff --git a/writeengine/bulk/we_bulkloadbuffer.h b/writeengine/bulk/we_bulkloadbuffer.h index 6f2a431fa..2d1094d5a 100644 --- a/writeengine/bulk/we_bulkloadbuffer.h +++ b/writeengine/bulk/we_bulkloadbuffer.h @@ -44,7 +44,7 @@ public: int64_t satCount; BLBufferStats(ColDataType colDataType) : satCount(0) { - if (isUnsigned(colDataType)) + if (isUnsigned(colDataType) || isCharType(colDataType)) { minBufferVal = static_cast(MAX_UBIGINT); maxBufferVal = static_cast(MIN_UBIGINT);