refactor: fix bugs in to_json
This commit is contained in:
parent
1ab6342018
commit
d2a1203eeb
|
@ -409,7 +409,7 @@ static int32_t translateToJson(SFunctionNode* pFunc, char* pErrBuf, int32_t len)
|
||||||
return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName);
|
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;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -887,13 +887,13 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
return TSDB_CODE_FAILED;
|
return TSDB_CODE_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *input = pInput[0].columnData->pData + pInput[0].columnData->varmeta.offset[0];
|
char tmp[TSDB_MAX_JSON_TAG_LEN] = {0};
|
||||||
char *tmp = taosMemoryCalloc(pInput[0].columnData->info.bytes + 1, 1);
|
|
||||||
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataAppendNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
char *input = pInput[0].columnData->pData + pInput[0].columnData->varmeta.offset[i];
|
||||||
|
|
||||||
if(type == TSDB_DATA_TYPE_NCHAR){
|
if(type == TSDB_DATA_TYPE_NCHAR){
|
||||||
if (varDataTLen(input) > TSDB_MAX_JSON_TAG_LEN){
|
if (varDataTLen(input) > TSDB_MAX_JSON_TAG_LEN){
|
||||||
|
@ -912,7 +912,7 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
memcpy(tmp, varDataVal(input), varDataLen(input));
|
memcpy(tmp, varDataVal(input), varDataLen(input));
|
||||||
tmp[varDataTLen(input)] = 0;
|
tmp[varDataLen(input)] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!tjsonValidateJson(tmp)){
|
if(!tjsonValidateJson(tmp)){
|
||||||
|
@ -921,9 +921,7 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pOutput->columnData, i, input, false);
|
colDataAppend(pOutput->columnData, i, input, false);
|
||||||
input += varDataTLen(input);
|
|
||||||
}
|
}
|
||||||
taosMemoryFree(tmp);
|
|
||||||
|
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
|
|
||||||
|
|
|
@ -300,8 +300,8 @@ bool tjsonValidateJson(const char *jIn) {
|
||||||
|
|
||||||
char* jsonKey = item->string;
|
char* jsonKey = item->string;
|
||||||
if (!jsonKey) return false;
|
if (!jsonKey) return false;
|
||||||
for (size_t j = 0; j < strlen(jsonKey); ++i) {
|
for (size_t j = 0; j < strlen(jsonKey); ++j) {
|
||||||
if (isprint(jsonKey[i]) == 0) return false;
|
if (isprint(jsonKey[j]) == 0) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->type == cJSON_Object || item->type == cJSON_Array) {
|
if (item->type == cJSON_Object || item->type == cJSON_Array) {
|
||||||
|
|
Loading…
Reference in New Issue