enh(query): remove unnecessary malloc.
This commit is contained in:
parent
5e4141a76f
commit
44e103a6a9
|
@ -136,11 +136,11 @@ typedef struct SqlFunctionCtx {
|
||||||
uint8_t scanFlag; // record current running step, default: 0
|
uint8_t scanFlag; // record current running step, default: 0
|
||||||
int16_t functionId; // function id
|
int16_t functionId; // function id
|
||||||
char *pOutput; // final result output buffer, point to sdata->data
|
char *pOutput; // final result output buffer, point to sdata->data
|
||||||
int32_t numOfParams;
|
|
||||||
// input parameter, e.g., top(k, 20), the number of results of top query is kept in param
|
// input parameter, e.g., top(k, 20), the number of results of top query is kept in param
|
||||||
SFunctParam *param;
|
SFunctParam *param;
|
||||||
// corresponding output buffer for timestamp of each result, e.g., diff/csum
|
// corresponding output buffer for timestamp of each result, e.g., diff/csum
|
||||||
SColumnInfoData *pTsOutput;
|
SColumnInfoData *pTsOutput;
|
||||||
|
int32_t numOfParams;
|
||||||
int32_t offset;
|
int32_t offset;
|
||||||
SResultRowEntryInfo *resultInfo;
|
SResultRowEntryInfo *resultInfo;
|
||||||
SSubsidiaryResInfo subsidiaries;
|
SSubsidiaryResInfo subsidiaries;
|
||||||
|
@ -152,7 +152,7 @@ typedef struct SqlFunctionCtx {
|
||||||
struct SSDataBlock *pSrcBlock;
|
struct SSDataBlock *pSrcBlock;
|
||||||
struct SSDataBlock *pDstBlock; // used by indefinite rows function to set selectivity
|
struct SSDataBlock *pDstBlock; // used by indefinite rows function to set selectivity
|
||||||
SSerializeDataHandle saveHandle;
|
SSerializeDataHandle saveHandle;
|
||||||
char udfName[TSDB_FUNC_NAME_LEN];
|
char *udfName;
|
||||||
} SqlFunctionCtx;
|
} SqlFunctionCtx;
|
||||||
|
|
||||||
typedef struct tExprNode {
|
typedef struct tExprNode {
|
||||||
|
|
|
@ -1513,7 +1513,7 @@ SqlFunctionCtx* createSqlFunctionCtx(SExprInfo* pExprInfo, int32_t numOfOutput,
|
||||||
fmGetFuncExecFuncs(pCtx->functionId, &pCtx->fpSet);
|
fmGetFuncExecFuncs(pCtx->functionId, &pCtx->fpSet);
|
||||||
} else {
|
} else {
|
||||||
char* udfName = pExpr->pExpr->_function.pFunctNode->functionName;
|
char* udfName = pExpr->pExpr->_function.pFunctNode->functionName;
|
||||||
tstrncpy(pCtx->udfName, udfName, TSDB_FUNC_NAME_LEN);
|
pCtx->udfName = strdup(udfName);
|
||||||
fmGetUdafExecFuncs(pCtx->functionId, &pCtx->fpSet);
|
fmGetUdafExecFuncs(pCtx->functionId, &pCtx->fpSet);
|
||||||
}
|
}
|
||||||
pCtx->fpSet.getEnv(pExpr->pExpr->_function.pFunctNode, &env);
|
pCtx->fpSet.getEnv(pExpr->pExpr->_function.pFunctNode, &env);
|
||||||
|
|
|
@ -1785,6 +1785,10 @@ void* destroySqlFunctionCtx(SqlFunctionCtx* pCtx, int32_t numOfOutput) {
|
||||||
taosMemoryFreeClear(pCtx[i].subsidiaries.buf);
|
taosMemoryFreeClear(pCtx[i].subsidiaries.buf);
|
||||||
taosMemoryFree(pCtx[i].input.pData);
|
taosMemoryFree(pCtx[i].input.pData);
|
||||||
taosMemoryFree(pCtx[i].input.pColumnDataAgg);
|
taosMemoryFree(pCtx[i].input.pColumnDataAgg);
|
||||||
|
|
||||||
|
if (pCtx[i].udfName != NULL) {
|
||||||
|
taosMemoryFree(pCtx[i].udfName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFreeClear(pCtx);
|
taosMemoryFreeClear(pCtx);
|
||||||
|
|
|
@ -360,16 +360,13 @@ int32_t createDiskbasedBuf(SDiskbasedBuf** pBuf, int32_t pagesize, int32_t inMem
|
||||||
// init id hash table
|
// init id hash table
|
||||||
_hash_fn_t fn = taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT);
|
_hash_fn_t fn = taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT);
|
||||||
pPBuf->pIdList = taosArrayInit(4, POINTER_BYTES);
|
pPBuf->pIdList = taosArrayInit(4, POINTER_BYTES);
|
||||||
|
|
||||||
pPBuf->assistBuf = taosMemoryMalloc(pPBuf->pageSize + 2); // EXTRA BYTES
|
|
||||||
pPBuf->all = taosHashInit(10, fn, true, false);
|
pPBuf->all = taosHashInit(10, fn, true, false);
|
||||||
pPBuf->prefix = (char*) dir;
|
pPBuf->prefix = (char*) dir;
|
||||||
|
|
||||||
pPBuf->emptyDummyIdList = taosArrayInit(1, sizeof(int32_t));
|
pPBuf->emptyDummyIdList = taosArrayInit(1, sizeof(int32_t));
|
||||||
|
|
||||||
// qDebug("QInfo:0x%"PRIx64" create resBuf for output, page size:%d, inmem buf pages:%d, file:%s", qId,
|
// qDebug("QInfo:0x%"PRIx64" create resBuf for output, page size:%d, inmem buf pages:%d, file:%s", qId,
|
||||||
// pPBuf->pageSize,
|
// pPBuf->pageSize, pPBuf->inMemPages, pPBuf->path);
|
||||||
// pPBuf->inMemPages, pPBuf->path);
|
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -593,7 +590,12 @@ void setBufPageDirty(void* pPage, bool dirty) {
|
||||||
ppi->dirty = dirty;
|
ppi->dirty = dirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBufPageCompressOnDisk(SDiskbasedBuf* pBuf, bool comp) { pBuf->comp = comp; }
|
void setBufPageCompressOnDisk(SDiskbasedBuf* pBuf, bool comp) {
|
||||||
|
pBuf->comp = comp;
|
||||||
|
if (comp && (pBuf->assistBuf == NULL)) {
|
||||||
|
pBuf->assistBuf = taosMemoryMalloc(pBuf->pageSize + 2); // EXTRA BYTES
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void dBufSetBufPageRecycled(SDiskbasedBuf* pBuf, void* pPage) {
|
void dBufSetBufPageRecycled(SDiskbasedBuf* pBuf, void* pPage) {
|
||||||
SPageInfo* ppi = getPageInfoFromPayload(pPage);
|
SPageInfo* ppi = getPageInfoFromPayload(pPage);
|
||||||
|
|
Loading…
Reference in New Issue