fix: block data memory issue
This commit is contained in:
parent
c45359c989
commit
6d7912003d
|
@ -135,6 +135,21 @@ static int32_t addBlkToBufCache(struct SOperatorInfo* pOperator, SSDataBlock* pB
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void blockDataDeepCleanup(SSDataBlock* pDataBlock) {
|
||||||
|
size_t numOfCols = taosArrayGetSize(pDataBlock->pDataBlock);
|
||||||
|
for (int32_t i = 0; i < numOfCols; ++i) {
|
||||||
|
SColumnInfoData* p = taosArrayGet(pDataBlock->pDataBlock, i);
|
||||||
|
p->pData = NULL;
|
||||||
|
if (IS_VAR_DATA_TYPE(p->info.type)) {
|
||||||
|
p->varmeta.offset = NULL;
|
||||||
|
p->varmeta.length = 0;
|
||||||
|
p->varmeta.allocLen = 0;
|
||||||
|
} else {
|
||||||
|
p->nullbitmap = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pDataBlock->info.capacity = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t buildGroupCacheBaseBlock(SSDataBlock** ppDst, SSDataBlock* pSrc) {
|
static int32_t buildGroupCacheBaseBlock(SSDataBlock** ppDst, SSDataBlock* pSrc) {
|
||||||
*ppDst = taosMemoryMalloc(sizeof(*pSrc));
|
*ppDst = taosMemoryMalloc(sizeof(*pSrc));
|
||||||
|
@ -147,6 +162,7 @@ static int32_t buildGroupCacheBaseBlock(SSDataBlock** ppDst, SSDataBlock* pSrc)
|
||||||
taosMemoryFree(*ppDst);
|
taosMemoryFree(*ppDst);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
blockDataDeepCleanup(*ppDst);
|
||||||
memcpy(&(*ppDst)->info, &pSrc->info, sizeof(pSrc->info));
|
memcpy(&(*ppDst)->info, &pSrc->info, sizeof(pSrc->info));
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -164,6 +180,7 @@ static int32_t acquireBaseBlockFromList(SGcDownstreamCtx* pCtx, SSDataBlock** pp
|
||||||
}
|
}
|
||||||
|
|
||||||
static void releaseBaseBlockToList(SGcDownstreamCtx* pCtx, SSDataBlock* pBlock) {
|
static void releaseBaseBlockToList(SGcDownstreamCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
|
blockDataDeepCleanup(pBlock);
|
||||||
taosWLockLatch(&pCtx->blkLock);
|
taosWLockLatch(&pCtx->blkLock);
|
||||||
taosArrayPush(pCtx->pFreeBlock, &pBlock);
|
taosArrayPush(pCtx->pFreeBlock, &pBlock);
|
||||||
taosWUnLockLatch(&pCtx->blkLock);
|
taosWUnLockLatch(&pCtx->blkLock);
|
||||||
|
|
Loading…
Reference in New Issue