diff --git a/source/libs/function/src/builtins.c b/source/libs/function/src/builtins.c index b039242618..8980050fe9 100644 --- a/source/libs/function/src/builtins.c +++ b/source/libs/function/src/builtins.c @@ -420,7 +420,7 @@ static int32_t translateToJson(SFunctionNode* pFunc, char* pErrBuf, int32_t len) return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } - pFunc->node.resType = (SDataType) { .bytes = tDataTypes[TSDB_DATA_TYPE_JSON].bytes, .type = TSDB_DATA_TYPE_JSON}; + pFunc->node.resType = (SDataType) { .bytes = tDataTypes[TSDB_DATA_TYPE_BINARY].bytes, .type = TSDB_DATA_TYPE_BINARY}; return TSDB_CODE_SUCCESS; } diff --git a/source/libs/scalar/src/sclfunc.c b/source/libs/scalar/src/sclfunc.c index ecdc1daa79..cca7f1cbff 100644 --- a/source/libs/scalar/src/sclfunc.c +++ b/source/libs/scalar/src/sclfunc.c @@ -884,13 +884,13 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu return TSDB_CODE_FAILED; } - char *input = pInput[0].columnData->pData + pInput[0].columnData->varmeta.offset[0]; - char *tmp = taosMemoryCalloc(pInput[0].columnData->info.bytes + 1, 1); + char tmp[TSDB_MAX_JSON_TAG_LEN] = {0}; for (int32_t i = 0; i < pInput[0].numOfRows; ++i) { if (colDataIsNull_s(pInput[0].columnData, i)) { colDataAppendNULL(pOutput->columnData, i); continue; } + char *input = pInput[0].columnData->pData + pInput[0].columnData->varmeta.offset[i]; if(type == TSDB_DATA_TYPE_NCHAR){ if (varDataTLen(input) > TSDB_MAX_JSON_TAG_LEN){ @@ -909,7 +909,7 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu continue; } memcpy(tmp, varDataVal(input), varDataLen(input)); - tmp[varDataTLen(input)] = 0; + tmp[varDataLen(input)] = 0; } if(!tjsonValidateJson(tmp)){ @@ -918,9 +918,7 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu } colDataAppend(pOutput->columnData, i, input, false); - input += varDataTLen(input); } - taosMemoryFree(tmp); pOutput->numOfRows = pInput->numOfRows; diff --git a/source/libs/scalar/test/scalar/scalarTests.cpp b/source/libs/scalar/test/scalar/scalarTests.cpp index f6140a75d3..04ab26d8a4 100644 --- a/source/libs/scalar/test/scalar/scalarTests.cpp +++ b/source/libs/scalar/test/scalar/scalarTests.cpp @@ -159,10 +159,9 @@ void scltMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in idata.info.colId = 3; int32_t size = idata.info.bytes * rowNum; idata.pData = (char *)taosMemoryCalloc(1, size); + colInfoDataEnsureCapacity(&idata, 0, rowNum); taosArrayPush(res->pDataBlock, &idata); - blockDataEnsureCapacity(res, rowNum); - SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock); for (int32_t i = 0; i < rowNum; ++i) { colDataAppend(pColumn, i, (const char *)value, false); diff --git a/source/util/src/tjson.c b/source/util/src/tjson.c index 59dab76989..0b9727e0bf 100644 --- a/source/util/src/tjson.c +++ b/source/util/src/tjson.c @@ -300,8 +300,8 @@ bool tjsonValidateJson(const char *jIn) { char* jsonKey = item->string; if (!jsonKey) return false; - for (size_t j = 0; j < strlen(jsonKey); ++i) { - if (isprint(jsonKey[i]) == 0) return false; + for (size_t j = 0; j < strlen(jsonKey); ++j) { + if (isprint(jsonKey[j]) == 0) return false; } if (item->type == cJSON_Object || item->type == cJSON_Array) {