提交 c5ccdfd4 编写于 作者: H Haojun Liao

fix(query): set the correct resource free flag.

上级 3e81daf5
...@@ -173,12 +173,12 @@ typedef struct tExprNode { ...@@ -173,12 +173,12 @@ typedef struct tExprNode {
void tExprTreeDestroy(tExprNode *pNode, void (*fp)(void *)); void tExprTreeDestroy(tExprNode *pNode, void (*fp)(void *));
typedef enum { typedef enum {
CREATED_COLDATA = 0x1, // the newly created column data needs to be destroyed. SHOULD_FREE_COLDATA = 0x1, // the newly created column data needs to be destroyed.
INPUT_COLDATA = 0x2, // input column data should not be released. DELEGATED_MGMT_COLDATA = 0x2, // input column data should not be released.
} SCOLDATA_TYPE_E; } ECOLDATA_MGMT_TYPE_E;
struct SScalarParam { struct SScalarParam {
SCOLDATA_TYPE_E type; ECOLDATA_MGMT_TYPE_E type;
SColumnInfoData *columnData; SColumnInfoData *columnData;
SHashObj *pHashFilter; SHashObj *pHashFilter;
int32_t hashValueType; int32_t hashValueType;
......
...@@ -55,7 +55,7 @@ int32_t sclCreateColumnInfoData(SDataType* pType, int32_t numOfRows, SScalarPara ...@@ -55,7 +55,7 @@ int32_t sclCreateColumnInfoData(SDataType* pType, int32_t numOfRows, SScalarPara
} }
pParam->columnData = pColumnData; pParam->columnData = pColumnData;
pParam->type = CREATED_COLDATA; pParam->type = SHOULD_FREE_COLDATA;
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
...@@ -162,7 +162,7 @@ void sclFreeRes(SHashObj *res) { ...@@ -162,7 +162,7 @@ void sclFreeRes(SHashObj *res) {
void sclFreeParam(SScalarParam *param) { void sclFreeParam(SScalarParam *param) {
if (param->columnData != NULL) { if (param->columnData != NULL) {
colDataDestroy(param->columnData); colDataDestroy(param->columnData);
taosMemoryFree(param->columnData); taosMemoryFreeClear(param->columnData);
} }
if (param->pHashFilter != NULL) { if (param->pHashFilter != NULL) {
...@@ -568,9 +568,9 @@ int32_t sclExecOperator(SOperatorNode *node, SScalarCtx *ctx, SScalarParam *outp ...@@ -568,9 +568,9 @@ int32_t sclExecOperator(SOperatorNode *node, SScalarCtx *ctx, SScalarParam *outp
_return: _return:
for (int32_t i = 0; i < paramNum; ++i) { for (int32_t i = 0; i < paramNum; ++i) {
if (params[i].type == CREATED_COLDATA) { if (params[i].type == SHOULD_FREE_COLDATA) {
colDataDestroy(params[i].columnData); colDataDestroy(params[i].columnData);
taosMemoryFree(params[i].columnData); taosMemoryFreeClear(params[i].columnData);
} }
} }
...@@ -842,6 +842,7 @@ EDealRes sclWalkFunction(SNode* pNode, SScalarCtx *ctx) { ...@@ -842,6 +842,7 @@ EDealRes sclWalkFunction(SNode* pNode, SScalarCtx *ctx) {
return DEAL_RES_ERROR; return DEAL_RES_ERROR;
} }
output.type = DELEGATED_MGMT_COLDATA;
if (taosHashPut(ctx->pRes, &pNode, POINTER_BYTES, &output, sizeof(output))) { if (taosHashPut(ctx->pRes, &pNode, POINTER_BYTES, &output, sizeof(output))) {
ctx->code = TSDB_CODE_QRY_OUT_OF_MEMORY; ctx->code = TSDB_CODE_QRY_OUT_OF_MEMORY;
return DEAL_RES_ERROR; return DEAL_RES_ERROR;
...@@ -876,6 +877,7 @@ EDealRes sclWalkOperator(SNode* pNode, SScalarCtx *ctx) { ...@@ -876,6 +877,7 @@ EDealRes sclWalkOperator(SNode* pNode, SScalarCtx *ctx) {
return DEAL_RES_ERROR; return DEAL_RES_ERROR;
} }
output.type = DELEGATED_MGMT_COLDATA;
if (taosHashPut(ctx->pRes, &pNode, POINTER_BYTES, &output, sizeof(output))) { if (taosHashPut(ctx->pRes, &pNode, POINTER_BYTES, &output, sizeof(output))) {
ctx->code = TSDB_CODE_QRY_OUT_OF_MEMORY; ctx->code = TSDB_CODE_QRY_OUT_OF_MEMORY;
return DEAL_RES_ERROR; return DEAL_RES_ERROR;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册