From addd7195240ccb7fa0053e2e21da0d46fd5f5026 Mon Sep 17 00:00:00 2001 From: Andrew Hutchings Date: Wed, 6 Dec 2017 17:08:08 +0000 Subject: [PATCH] MCOL-1083 Fix NULL row init for TEXT/BLOB We should have been initalizing TEXT/BLOB 8 byte tokens for NULL, instead we were initializing the entire length of the TEXT/BLOB which can do a lot of damage. --- utils/rowgroup/rowgroup.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/utils/rowgroup/rowgroup.cpp b/utils/rowgroup/rowgroup.cpp index bcfa3e9eb..48bdd7031 100755 --- a/utils/rowgroup/rowgroup.cpp +++ b/utils/rowgroup/rowgroup.cpp @@ -626,6 +626,7 @@ void Row::initToNull() *((uint64_t *) &data[offsets[i]]) = joblist::DATETIMENULL; break; case CalpontSystemCatalog::CHAR: case CalpontSystemCatalog::VARCHAR: + case CalpontSystemCatalog::TEXT: case CalpontSystemCatalog::STRINT: { if (inStringTable(i)) { setStringField(joblist::CPNULLSTRMARK, i); @@ -652,6 +653,7 @@ void Row::initToNull() break; } case CalpontSystemCatalog::VARBINARY: + case CalpontSystemCatalog::BLOB: *((uint16_t *) &data[offsets[i]]) = 0; break; case CalpontSystemCatalog::DECIMAL: case CalpontSystemCatalog::UDECIMAL: @@ -679,11 +681,6 @@ void Row::initToNull() memset(&data[offsets[i]], 0xFF, getColumnWidth(i)); break; } - case CalpontSystemCatalog::BLOB: - case CalpontSystemCatalog::TEXT: { - memset(&data[offsets[i]], 0xFF, getColumnWidth(i)); - break; - } default: ostringstream os; os << "Row::initToNull(): got bad column type (" << types[i] <<