diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 3021c586a364ff61e3b46439cdb2093f4c307287..1ae8dafcf347c2619f26433bef4408900b57eabe 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -509,8 +509,12 @@ SSDataBlock* blockDataExtractBlock(SSDataBlock* pBlock, int32_t startIndex, int3 isNull = colDataIsNull(pColData, pBlock->info.rows, j, pBlock->pBlockAgg[i]); } - char* p = colDataGetData(pColData, j); - colDataAppend(pDstCol, j - startIndex, p, isNull); + if (isNull) { + colDataAppendNULL(pDstCol, j - startIndex); + } else { + char* p = colDataGetData(pColData, j); + colDataAppend(pDstCol, j - startIndex, p, false); + } } } @@ -807,7 +811,9 @@ static int32_t blockDataAssign(SColumnInfoData* pCols, const SSDataBlock* pDataB SColumnInfoData* pSrc = taosArrayGet(pDataBlock->pDataBlock, i); if (IS_VAR_DATA_TYPE(pSrc->info.type)) { - memcpy(pDst->pData, pSrc->pData, pSrc->varmeta.length); + if (pSrc->varmeta.length != 0) { + memcpy(pDst->pData, pSrc->pData, pSrc->varmeta.length); + } pDst->varmeta.length = pSrc->varmeta.length; for (int32_t j = 0; j < pDataBlock->info.rows; ++j) { diff --git a/tests/script/sh/checkAsan.sh b/tests/script/sh/checkAsan.sh index aa0f5b6b7643131aa63e36f764bd5d42142a49cd..7df17b22da1c8a8c3b7cf95315a3aea417d56eae 100755 --- a/tests/script/sh/checkAsan.sh +++ b/tests/script/sh/checkAsan.sh @@ -59,4 +59,4 @@ else fi cat ${LOG_DIR}/*.asan exit 1 -fi \ No newline at end of file +fi