fix: meory leak
This commit is contained in:
parent
cb41739c22
commit
6ca92a3d92
|
@ -1040,7 +1040,7 @@ static int32_t sortBlocksToExtSource(SSortHandle* pHandle, SArray* aBlk, SBlockO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static SSDataBlock* getBlockWithinLimit(const SSortHandle* pHandle, SSHashObj* mTableNumRows, SSDataBlock* pOrigBlk) {
|
static SSDataBlock* getRowsBlockWithinMergeLimit(const SSortHandle* pHandle, SSHashObj* mTableNumRows, SSDataBlock* pOrigBlk, bool* pExtractedBlock) {
|
||||||
int64_t keepRows = pOrigBlk->info.rows;
|
int64_t keepRows = pOrigBlk->info.rows;
|
||||||
int64_t nRows = 0;
|
int64_t nRows = 0;
|
||||||
int64_t prevRows = 0;
|
int64_t prevRows = 0;
|
||||||
|
@ -1061,8 +1061,9 @@ static SSDataBlock* getBlockWithinLimit(const SSortHandle* pHandle, SSHashObj* m
|
||||||
SSDataBlock* pBlock = NULL;
|
SSDataBlock* pBlock = NULL;
|
||||||
if (keepRows != pOrigBlk->info.rows) {
|
if (keepRows != pOrigBlk->info.rows) {
|
||||||
pBlock = blockDataExtractBlock(pOrigBlk, 0, keepRows);
|
pBlock = blockDataExtractBlock(pOrigBlk, 0, keepRows);
|
||||||
|
*pExtractedBlock = true;
|
||||||
} else {
|
} else {
|
||||||
pBlock = createOneDataBlock(pOrigBlk, true);
|
*pExtractedBlock = false;
|
||||||
}
|
}
|
||||||
return pBlock;
|
return pBlock;
|
||||||
}
|
}
|
||||||
|
@ -1096,8 +1097,9 @@ static int32_t createBlocksMergeSortInitialSources(SSortHandle* pHandle) {
|
||||||
SSDataBlock* pBlk = pHandle->fetchfp(pSrc->param);
|
SSDataBlock* pBlk = pHandle->fetchfp(pSrc->param);
|
||||||
|
|
||||||
int64_t p = taosGetTimestampUs();
|
int64_t p = taosGetTimestampUs();
|
||||||
|
bool bExtractedBlock = false;
|
||||||
if (pBlk != NULL && pHandle->mergeLimit != -1) {
|
if (pBlk != NULL && pHandle->mergeLimit != -1) {
|
||||||
pBlk = getBlockWithinLimit(pHandle, mTableNumRows, pBlk);
|
pBlk = getRowsBlockWithinMergeLimit(pHandle, mTableNumRows, pBlk, &bExtractedBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pBlk != NULL) {
|
if (pBlk != NULL) {
|
||||||
|
@ -1116,8 +1118,11 @@ static int32_t createBlocksMergeSortInitialSources(SSortHandle* pHandle) {
|
||||||
if (ppBlk != NULL) {
|
if (ppBlk != NULL) {
|
||||||
SSDataBlock* tBlk = *(SSDataBlock**)(ppBlk);
|
SSDataBlock* tBlk = *(SSDataBlock**)(ppBlk);
|
||||||
blockDataMerge(tBlk, pBlk);
|
blockDataMerge(tBlk, pBlk);
|
||||||
|
if (bExtractedBlock) {
|
||||||
|
blockDataDestroy(pBlk);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
SSDataBlock* tBlk = createOneDataBlock(pBlk, true);
|
SSDataBlock* tBlk = (bExtractedBlock) ? pBlk : createOneDataBlock(pBlk, true);
|
||||||
tSimpleHashPut(mUidBlk, &pBlk->info.id.uid, sizeof(pBlk->info.id.uid), &tBlk, POINTER_BYTES);
|
tSimpleHashPut(mUidBlk, &pBlk->info.id.uid, sizeof(pBlk->info.id.uid), &tBlk, POINTER_BYTES);
|
||||||
taosArrayPush(aBlkSort, &tBlk);
|
taosArrayPush(aBlkSort, &tBlk);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue