fix: memory leak issues
This commit is contained in:
parent
dcc650521a
commit
2ce880f48c
|
@ -431,7 +431,7 @@ void mJoinDestroyMergeCtx(SMJoinOperatorInfo* pJoin);
|
|||
void mJoinDestroyWindowCtx(SMJoinOperatorInfo* pJoin);
|
||||
int32_t mJoinInitWindowCtx(SMJoinOperatorInfo* pJoin, SSortMergeJoinPhysiNode* pJoinNode);
|
||||
int32_t mJoinInitMergeCtx(SMJoinOperatorInfo* pJoin, SSortMergeJoinPhysiNode* pJoinNode);
|
||||
void mWinJoinResetWindowCache(SMJoinWinCache* pCache);
|
||||
void mWinJoinResetWindowCache(SMJoinWindowCtx* pCtx, SMJoinWinCache* pCache);
|
||||
SSDataBlock* mInnerJoinDo(struct SOperatorInfo* pOperator);
|
||||
SSDataBlock* mLeftJoinDo(struct SOperatorInfo* pOperator);
|
||||
SSDataBlock* mFullJoinDo(struct SOperatorInfo* pOperator);
|
||||
|
|
|
@ -2613,7 +2613,7 @@ void mAsofJoinGroupReset(SMJoinOperatorInfo* pJoin) {
|
|||
pWin->eqPostDone = false;
|
||||
pWin->lastTs = INT64_MIN;
|
||||
|
||||
mWinJoinResetWindowCache(pCache);
|
||||
mWinJoinResetWindowCache(pWin, pCache);
|
||||
|
||||
mJoinResetGroupTableCtx(pJoin->probe);
|
||||
mJoinResetGroupTableCtx(pJoin->build);
|
||||
|
@ -2623,6 +2623,8 @@ static FORCE_INLINE void mWinJoinPopFrontGroup(SMJoinWindowCtx* pCtx, SMJoinGrpR
|
|||
pCtx->cache.rowNum -= (pGrp->blk->info.rows - pGrp->beginIdx);
|
||||
if (pGrp->blk == pCtx->cache.outBlk) {
|
||||
blockDataCleanup(pGrp->blk);
|
||||
} else if (pGrp->clonedBlk) {
|
||||
blockDataDestroy(pGrp->blk);
|
||||
}
|
||||
|
||||
taosArrayPopFrontBatch(pCtx->cache.grps, 1);
|
||||
|
@ -3259,7 +3261,7 @@ void mWinJoinGroupReset(SMJoinOperatorInfo* pJoin) {
|
|||
pWin->eqPostDone = false;
|
||||
pWin->lastTs = INT64_MIN;
|
||||
|
||||
mWinJoinResetWindowCache(pCache);
|
||||
mWinJoinResetWindowCache(pWin, pCache);
|
||||
|
||||
mJoinResetGroupTableCtx(pJoin->probe);
|
||||
mJoinResetGroupTableCtx(pJoin->build);
|
||||
|
@ -3281,6 +3283,8 @@ int32_t mJoinInitWindowCache(SMJoinWinCache* pCache, SMJoinOperatorInfo* pJoin,
|
|||
void mJoinDestroyWindowCtx(SMJoinOperatorInfo* pJoin) {
|
||||
SMJoinWindowCtx* pCtx = &pJoin->ctx.windowCtx;
|
||||
|
||||
mWinJoinResetWindowCache(pCtx, &pCtx->cache);
|
||||
|
||||
pCtx->finBlk = blockDataDestroy(pCtx->finBlk);
|
||||
pCtx->cache.outBlk = blockDataDestroy(pCtx->cache.outBlk);
|
||||
|
||||
|
|
|
@ -1425,7 +1425,7 @@ void mJoinResetMergeCtx(SMJoinMergeCtx* pCtx) {
|
|||
pCtx->hashJoin = false;
|
||||
}
|
||||
|
||||
void mWinJoinResetWindowCache(SMJoinWinCache* pCache) {
|
||||
void mWinJoinResetWindowCache(SMJoinWindowCtx* pCtx, SMJoinWinCache* pCache) {
|
||||
pCache->outRowIdx = 0;
|
||||
pCache->rowNum = 0;
|
||||
pCache->grpIdx = 0;
|
||||
|
@ -1433,6 +1433,15 @@ void mWinJoinResetWindowCache(SMJoinWinCache* pCache) {
|
|||
if (pCache->grpsQueue) {
|
||||
TSWAP(pCache->grps, pCache->grpsQueue);
|
||||
}
|
||||
|
||||
int32_t grpNum = taosArrayGetSize(pCache->grps);
|
||||
|
||||
for (int32_t i = 0; i < grpNum; ++i) {
|
||||
SMJoinGrpRows* pGrp = taosArrayGet(pCache->grps, i);
|
||||
if (pGrp->blk != pCtx->cache.outBlk && pGrp->clonedBlk) {
|
||||
blockDataDestroy(pGrp->blk);
|
||||
}
|
||||
}
|
||||
|
||||
taosArrayClear(pCache->grps);
|
||||
|
||||
|
@ -1448,7 +1457,7 @@ void mJoinResetWindowCtx(SMJoinWindowCtx* pCtx) {
|
|||
pCtx->eqPostDone = false;
|
||||
pCtx->lastTs = INT64_MIN;
|
||||
|
||||
mWinJoinResetWindowCache(&pCtx->cache);
|
||||
mWinJoinResetWindowCache(pCtx, &pCtx->cache);
|
||||
}
|
||||
|
||||
void mJoinResetCtx(SMJoinOperatorInfo* pJoin) {
|
||||
|
|
|
@ -1439,6 +1439,8 @@ void nodesDestroyNode(SNode* pNode) {
|
|||
destroyPhysiNode((SPhysiNode*)pPhyNode);
|
||||
nodesDestroyNode(pPhyNode->pWindowOffset);
|
||||
nodesDestroyNode(pPhyNode->pJLimit);
|
||||
nodesDestroyNode(pPhyNode->leftPrimExpr);
|
||||
nodesDestroyNode(pPhyNode->rightPrimExpr);
|
||||
nodesDestroyList(pPhyNode->pEqLeft);
|
||||
nodesDestroyList(pPhyNode->pEqRight);
|
||||
nodesDestroyNode(pPhyNode->pPrimKeyCond);
|
||||
|
|
|
@ -1085,6 +1085,8 @@ static int32_t pdcJoinAddParentOnColsToTarget(SOptimizeContext* pCxt, SJoinLogic
|
|||
}
|
||||
pTmp = (SJoinLogicNode*)pTmp->node.pParent;
|
||||
} while (true);
|
||||
|
||||
tSimpleHashCleanup(pTables);
|
||||
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
code = createColumnByRewriteExprs(pCondCols, &pTargets);
|
||||
|
|
Loading…
Reference in New Issue