From d807aaee0a7de36020c53997464c38cdf36d0d65 Mon Sep 17 00:00:00 2001 From: Roman Nozdrin Date: Wed, 5 Dec 2018 13:47:49 -0800 Subject: [PATCH] MCOL-1347 ALTER TABLE ADD COLUMN now creates a column with correct width for a varchar columns. --- writeengine/wrapper/writeengine.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/writeengine/wrapper/writeengine.cpp b/writeengine/wrapper/writeengine.cpp index d163d1f42..368585d63 100644 --- a/writeengine/wrapper/writeengine.cpp +++ b/writeengine/wrapper/writeengine.cpp @@ -562,6 +562,7 @@ int WriteEngineWrapper::fillColumn(const TxnID& txnid, const OID& dataOid, // refColOp.reset(colOpRefCol); // dctnry.reset(dctOp); uint16_t dbRoot = 1; //not to be used + int newDataWidth = dataWidth; //Convert HWM of the reference column for the new column //Bug 1703,1705 bool isToken = false; @@ -584,10 +585,17 @@ int WriteEngineWrapper::fillColumn(const TxnID& txnid, const OID& dataOid, isToken = true; } + newDataWidth = colOpNewCol->getCorrectRowWidth(dataType, dataWidth); + // MCOL-1347 CS doubles the width for ALTER TABLE..ADD COLUMN + if ( dataWidth < 4 && dataType == CalpontSystemCatalog::VARCHAR ) + { + newDataWidth >>= 1; + } + Convertor::convertColType(refColDataType, refColType, isToken); refColOp->setColParam(refCol, 0, refColOp->getCorrectRowWidth(refColDataType, refColWidth), refColDataType, refColType, (FID)refColOID, refCompressionType, dbRoot); - colOpNewCol->setColParam(newCol, 0, colOpNewCol->getCorrectRowWidth(dataType, dataWidth), + colOpNewCol->setColParam(newCol, 0, newDataWidth, dataType, newColType, (FID)dataOid, compressionType, dbRoot); int size = sizeof(Token);