fix td-789: memory leak
This commit is contained in:
parent
342310a078
commit
6d0a6a6fda
|
@ -4475,6 +4475,8 @@ static void sequentialTableProcess(SQInfo *pQInfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pRuntimeEnv->pQueryHandle = tsdbQueryTables(pQInfo->tsdb, &cond, &gp, pQInfo);
|
pRuntimeEnv->pQueryHandle = tsdbQueryTables(pQInfo->tsdb, &cond, &gp, pQInfo);
|
||||||
|
taosArrayDestroy(g1);
|
||||||
|
taosArrayDestroy(tx);
|
||||||
|
|
||||||
SArray* s = tsdbGetQueriedTableList(pRuntimeEnv->pQueryHandle);
|
SArray* s = tsdbGetQueriedTableList(pRuntimeEnv->pQueryHandle);
|
||||||
assert(taosArrayGetSize(s) >= 1);
|
assert(taosArrayGetSize(s) >= 1);
|
||||||
|
@ -5857,6 +5859,18 @@ _error:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void freeColumnFilterInfo(SColumnFilterInfo* pFilter, int32_t numOfFilters) {
|
||||||
|
if (pFilter == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (int32_t i = 0; i < numOfFilters; i++) {
|
||||||
|
if (pFilter[i].filterstr) {
|
||||||
|
free((void*)(pFilter[i].pz));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(pFilter);
|
||||||
|
}
|
||||||
|
|
||||||
static void freeQInfo(SQInfo *pQInfo) {
|
static void freeQInfo(SQInfo *pQInfo) {
|
||||||
if (!isValidQInfo(pQInfo)) {
|
if (!isValidQInfo(pQInfo)) {
|
||||||
return;
|
return;
|
||||||
|
@ -5925,7 +5939,15 @@ static void freeQInfo(SQInfo *pQInfo) {
|
||||||
|
|
||||||
tfree(pQuery->tagColList);
|
tfree(pQuery->tagColList);
|
||||||
tfree(pQuery->pFilterInfo);
|
tfree(pQuery->pFilterInfo);
|
||||||
tfree(pQuery->colList);
|
|
||||||
|
if (pQuery->colList != NULL) {
|
||||||
|
for (int32_t i = 0; i < pQuery->numOfCols; i++) {
|
||||||
|
SColumnInfo* column = pQuery->colList + i;
|
||||||
|
freeColumnFilterInfo(column->filters, column->numOfFilters);
|
||||||
|
}
|
||||||
|
tfree(pQuery->colList);
|
||||||
|
}
|
||||||
|
|
||||||
tfree(pQuery->sdata);
|
tfree(pQuery->sdata);
|
||||||
|
|
||||||
tfree(pQuery);
|
tfree(pQuery);
|
||||||
|
@ -6122,6 +6144,11 @@ _over:
|
||||||
free(pExprMsg);
|
free(pExprMsg);
|
||||||
taosArrayDestroy(pTableIdList);
|
taosArrayDestroy(pTableIdList);
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < pQueryMsg->numOfCols; i++) {
|
||||||
|
SColumnInfo* column = pQueryMsg->colList + i;
|
||||||
|
freeColumnFilterInfo(column->filters, column->numOfFilters);
|
||||||
|
}
|
||||||
|
|
||||||
//pQInfo already freed in initQInfo, but *pQInfo may not pointer to null;
|
//pQInfo already freed in initQInfo, but *pQInfo may not pointer to null;
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
*pQInfo = NULL;
|
*pQInfo = NULL;
|
||||||
|
|
Loading…
Reference in New Issue