From 2735c956248038f9ddce02067dc981f781b481e4 Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sat, 1 Feb 2020 23:13:54 +0800 Subject: [PATCH 1/3] fix a memory leak for null value projection in tags. --- src/system/detail/src/vnodeQueryImpl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/system/detail/src/vnodeQueryImpl.c b/src/system/detail/src/vnodeQueryImpl.c index 0daa0936e9..760ca94bf9 100644 --- a/src/system/detail/src/vnodeQueryImpl.c +++ b/src/system/detail/src/vnodeQueryImpl.c @@ -4525,10 +4525,11 @@ static void doSetTagValueInParam(tTagSchema *pTagSchema, int32_t tagColIdx, SMet SSchema *pCol = &pTagSchema->pSchema[tagColIdx]; tVariantDestroy(param); - tVariantCreateFromBinary(param, pStr, pCol->bytes, pCol->type); if (isNull(pStr, pCol->type)) { param->nType = TSDB_DATA_TYPE_NULL; + } else { + tVariantCreateFromBinary(param, pStr, pCol->bytes, pCol->type); } } From c87c43051501dac6f719ca71e19140449574d41d Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sun, 2 Feb 2020 13:51:49 +0800 Subject: [PATCH 2/3] fix a memory leak. --- src/system/detail/src/vnodeQueryImpl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/system/detail/src/vnodeQueryImpl.c b/src/system/detail/src/vnodeQueryImpl.c index 760ca94bf9..c1653b5dad 100644 --- a/src/system/detail/src/vnodeQueryImpl.c +++ b/src/system/detail/src/vnodeQueryImpl.c @@ -5994,10 +5994,13 @@ int32_t getDataBlocksForMeters(SMeterQuerySupportObj *pSupporter, SQuery *pQuery size_t bufferSize = size + sizeof(TSCKSUM); pMeterDataInfo[j]->numOfBlocks = compInfo.numOfBlocks; - pMeterDataInfo[j]->pBlock = calloc(1, bufferSize); - if (pMeterDataInfo[j]->pBlock == NULL) { + char* p = realloc(pMeterDataInfo[j]->pBlock, bufferSize); + if (p == NULL) { clearAllMeterDataBlockInfo(pMeterDataInfo, 0, numOfMeters); return TSDB_CODE_SERV_OUT_OF_MEMORY; + } else { + memset(p, 0, bufferSize); + pMeterDataInfo[j]->pBlock = (SCompBlock*) p; } read(pVnodeFileInfo->headerFd, pMeterDataInfo[j]->pBlock, bufferSize); From 5031ac214449b73ecd3fe9d8d200a70a85c1be1f Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sun, 2 Feb 2020 22:46:50 +0800 Subject: [PATCH 3/3] fix a memory leak for super table join. --- src/system/detail/src/vnodeQueryProcess.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/system/detail/src/vnodeQueryProcess.c b/src/system/detail/src/vnodeQueryProcess.c index 1783a1a0b4..8ad2c3f309 100644 --- a/src/system/detail/src/vnodeQueryProcess.c +++ b/src/system/detail/src/vnodeQueryProcess.c @@ -573,10 +573,10 @@ static void vnodeMultiMeterMultiOutputProcessor(SQInfo *pQInfo) { tSidSet *pSids = pSupporter->pSidSet; SMeterObj *pOneMeter = getMeterObj(pSupporter->pMeterObj, pMeterSidExtInfo[0]->sid); - - resetCtxOutputBuf(pRuntimeEnv); - + if (isPointInterpoQuery(pQuery)) { + resetCtxOutputBuf(pRuntimeEnv); + assert(pQuery->limit.offset == 0 && pQuery->limit.limit != 0); while (pSupporter->subgroupIdx < pSids->numOfSubSet) { @@ -663,7 +663,9 @@ static void vnodeMultiMeterMultiOutputProcessor(SQInfo *pQInfo) { if (pSupporter->meterIdx >= pSids->numOfSids) { return; } - + + resetCtxOutputBuf(pRuntimeEnv); + for (int32_t i = 0; i < pRuntimeEnv->usedIndex; ++i) { SOutputRes *pOneRes = &pRuntimeEnv->pResult[i]; clearGroupResultBuf(pOneRes, pQuery->numOfOutputCols);