fix memory leaks and refactor some codes
This commit is contained in:
parent
2c393a89dd
commit
5ddc7b4578
|
@ -251,10 +251,10 @@ typedef struct {
|
|||
int32_t clauseIndex; // index of multiple subclause query
|
||||
int8_t isParseFinish;
|
||||
short numOfCols;
|
||||
|
||||
uint32_t allocSize;
|
||||
char * payload;
|
||||
int payloadLen;
|
||||
|
||||
SQueryInfo **pQueryInfo;
|
||||
int32_t numOfClause;
|
||||
|
||||
|
@ -413,6 +413,7 @@ int32_t tscCreateResPointerInfo(SQueryInfo *pQueryInfo, SSqlRes *pRes);
|
|||
void tscDestroyResPointerInfo(SSqlRes *pRes);
|
||||
|
||||
void tscFreeSqlCmdData(SSqlCmd *pCmd);
|
||||
void tscFreeResData(SSqlObj* pSql);
|
||||
|
||||
/**
|
||||
* only free part of resources allocated during query.
|
||||
|
@ -435,7 +436,7 @@ void tscProcessMultiVnodesInsertFromFile(SSqlObj *pSql);
|
|||
void tscKillMetricQuery(SSqlObj *pSql);
|
||||
void tscInitResObjForLocalQuery(SSqlObj *pObj, int32_t numOfRes, int32_t rowLen);
|
||||
bool tscIsUpdateQuery(STscObj *pObj);
|
||||
bool tscHasReachLimitation(SQueryInfo* pQueryInfo, SSqlRes* pRes);
|
||||
bool tscHasReachLimitation(SQueryInfo *pQueryInfo, SSqlRes *pRes);
|
||||
|
||||
char *tscGetErrorMsgPayload(SSqlCmd *pCmd);
|
||||
|
||||
|
|
|
@ -453,6 +453,10 @@ void tscDestroyLocalReducer(SSqlObj *pSql) {
|
|||
for(int32_t i = 0; i < pQueryInfo->fieldsInfo.numOfOutputCols; ++i) {
|
||||
SQLFunctionCtx *pCtx = &pLocalReducer->pCtx[i];
|
||||
tVariantDestroy(&pCtx->tag);
|
||||
|
||||
if (pCtx->tagInfo.pTagCtxList != NULL) {
|
||||
tfree(pCtx->tagInfo.pTagCtxList);
|
||||
}
|
||||
}
|
||||
|
||||
tfree(pLocalReducer->pCtx);
|
||||
|
|
|
@ -365,6 +365,39 @@ void tscFreeSqlCmdData(SSqlCmd* pCmd) {
|
|||
tscFreeSubqueryInfo(pCmd);
|
||||
}
|
||||
|
||||
void tscFreeResData(SSqlObj* pSql) {
|
||||
SSqlRes* pRes = &pSql->res;
|
||||
|
||||
tfree(pRes->pRsp);
|
||||
pRes->row = 0;
|
||||
|
||||
pRes->rspType = 0;
|
||||
pRes->rspLen = 0;
|
||||
pRes->row = 0;
|
||||
|
||||
pRes->numOfRows = 0;
|
||||
pRes->numOfTotal = 0;
|
||||
pRes->numOfTotalInCurrentClause = 0;
|
||||
|
||||
pRes->numOfGroups = 0;
|
||||
pRes->precision = 0;
|
||||
pRes->numOfnchar = 0;
|
||||
pRes->qhandle = 0;
|
||||
|
||||
pRes->offset = 0;
|
||||
pRes->useconds = 0;
|
||||
pRes->code = 0;
|
||||
|
||||
pRes->data = NULL;
|
||||
|
||||
tfree(pRes->pGroupRec);
|
||||
|
||||
tscDestroyLocalReducer(pSql);
|
||||
|
||||
tscDestroyResPointerInfo(pRes);
|
||||
tfree(pRes->pColumnIndex);
|
||||
}
|
||||
|
||||
void tscFreeSqlObjPartial(SSqlObj* pSql) {
|
||||
if (pSql == NULL || pSql->signature != pSql) {
|
||||
return;
|
||||
|
@ -388,21 +421,10 @@ void tscFreeSqlObjPartial(SSqlObj* pSql) {
|
|||
tfree(pSql->sqlstr);
|
||||
pthread_mutex_unlock(&pObj->mutex);
|
||||
|
||||
tfree(pRes->pRsp);
|
||||
pRes->row = 0;
|
||||
pRes->numOfRows = 0;
|
||||
pRes->numOfTotal = 0;
|
||||
pRes->numOfTotalInCurrentClause = 0;
|
||||
|
||||
pRes->numOfGroups = 0;
|
||||
tfree(pRes->pGroupRec);
|
||||
|
||||
tscDestroyLocalReducer(pSql);
|
||||
tscFreeResData(pSql);
|
||||
|
||||
tfree(pSql->pSubs);
|
||||
pSql->numOfSubs = 0;
|
||||
tscDestroyResPointerInfo(pRes);
|
||||
tfree(pRes->pColumnIndex);
|
||||
|
||||
tscFreeSqlCmdData(pCmd);
|
||||
}
|
||||
|
@ -2156,12 +2178,14 @@ void tscTryQueryNextClause(SSqlObj* pSql, void (*queryFp)()) {
|
|||
|
||||
pSql->cmd.command = pQueryInfo->command;
|
||||
|
||||
pRes->numOfTotal += pRes->numOfTotalInCurrentClause;
|
||||
pRes->numOfTotalInCurrentClause = 0;
|
||||
pRes->rspType = 0;
|
||||
//backup the total number of result first
|
||||
int64_t num = pRes->numOfTotal + pRes->numOfTotalInCurrentClause;
|
||||
tscFreeResData(pSql);
|
||||
|
||||
pRes->numOfTotal = num;
|
||||
|
||||
pSql->numOfSubs = 0;
|
||||
tfree(pSql->pSubs);
|
||||
pSql->numOfSubs = 0;
|
||||
|
||||
if (pSql->fp != NULL) {
|
||||
pSql->fp = queryFp;
|
||||
|
|
Loading…
Reference in New Issue