From 1ba3139f9fd8c3a56009b73b226e4558a2f1ac3f Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 5 Aug 2024 14:21:28 +0800 Subject: [PATCH] fix(tsdb): fix during free tsdbread. --- source/dnode/vnode/src/tsdb/tsdbRead2.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index 5d25c0dc9d..51e3672c56 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -164,17 +164,19 @@ static void tRowGetPrimaryKeyDeepCopy(SRow* pRow, SRowKey* pKey) { static int32_t setColumnIdSlotList(SBlockLoadSuppInfo* pSupInfo, SColumnInfo* pCols, const int32_t* pSlotIdList, int32_t numOfCols) { + bool initSucc = true; + pSupInfo->pk.pk = 0; pSupInfo->numOfPks = 0; pSupInfo->pkSrcSlot = -1; pSupInfo->pkDstSlot = -1; - pSupInfo->smaValid = true; pSupInfo->numOfCols = numOfCols; + pSupInfo->colId = taosMemoryMalloc(numOfCols * (sizeof(int16_t) * 2 + POINTER_BYTES)); if (pSupInfo->colId == NULL) { taosMemoryFree(pSupInfo->colId); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pSupInfo->slotId = (int16_t*)((char*)pSupInfo->colId + (sizeof(int16_t) * numOfCols)); @@ -187,7 +189,7 @@ static int32_t setColumnIdSlotList(SBlockLoadSuppInfo* pSupInfo, SColumnInfo* pC pSupInfo->buildBuf[i] = taosMemoryMalloc(pCols[i].bytes); if (pSupInfo->buildBuf[i] == NULL) { tsdbError("failed to prepare memory for set columnId slot list, size:%d, code:out of memory", pCols[i].bytes); - return TSDB_CODE_OUT_OF_MEMORY; + initSucc = false; } } else { pSupInfo->buildBuf[i] = NULL; @@ -201,7 +203,7 @@ static int32_t setColumnIdSlotList(SBlockLoadSuppInfo* pSupInfo, SColumnInfo* pC } } - return TSDB_CODE_SUCCESS; + return (initSucc)? TSDB_CODE_SUCCESS:TSDB_CODE_OUT_OF_MEMORY; } static int32_t updateBlockSMAInfo(STSchema* pSchema, SBlockLoadSuppInfo* pSupInfo) {