diff --git a/src/client/src/tscLocal.c b/src/client/src/tscLocal.c index 4da1ecd2a97bf54c5c89619ecbdff870afc0d67d..b6c8b3de3f9b1b0d84f9b1ea5eecc496cf58ba0c 100644 --- a/src/client/src/tscLocal.c +++ b/src/client/src/tscLocal.c @@ -375,6 +375,8 @@ static int32_t tscGetTableTagValue(SCreateBuilder *builder, char *result) { || fields[i].type == TSDB_DATA_TYPE_BINARY || fields[i].type == TSDB_DATA_TYPE_TIMESTAMP) && 0 == ret) { snprintf(result + strlen(result), TSDB_MAX_BINARY_LEN - strlen(result), "\"%s\",", buf); + } else if (fields[i].type == TSDB_DATA_TYPE_JSON) { + snprintf(result + strlen(result), TSDB_MAX_BINARY_LEN - strlen(result), "'%s,", buf); } else { snprintf(result + strlen(result), TSDB_MAX_BINARY_LEN - strlen(result), "%s,", buf); } @@ -382,7 +384,11 @@ static int32_t tscGetTableTagValue(SCreateBuilder *builder, char *result) { free(buf); if (i == num_fields - 1) { - sprintf(result + strlen(result) - 1, "%s", ")"); + if (fields[i].type == TSDB_DATA_TYPE_JSON) { + sprintf(result + strlen(result) - 1, "%s'", ")"); + } else { + sprintf(result + strlen(result) - 1, "%s", ")"); + } } } diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index 025cafe7e90c49b72cb789ed4450142e8b285f7b..60c7311d4c0f3d784231fceb8a7e2628a5bd4eda 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -4533,21 +4533,13 @@ void getJsonTagValueAll(void* data, void* dst, int16_t bytes) { return; } - char *p = NULL; - char* str = malloc(strlen(json) + 3); - if (str) { - snprintf(str, len + 3, "'%s'", json); - } - - p = str ? str : json; int32_t length = 0; - if(!taosMbsToUcs4(p, strlen(p), varDataVal(tagData), bytes - VARSTR_HEADER_SIZE - CHAR_BYTES, &length)){ + if(!taosMbsToUcs4(json, strlen(json), varDataVal(tagData), bytes - VARSTR_HEADER_SIZE - CHAR_BYTES, &length)){ tsdbError("getJsonTagValueAll mbstoucs4 error! length:%d", length); } varDataSetLen(tagData, length); assert(varDataTLen(tagData) <= bytes); tfree(json); - tfree(str); } char* parseTagDatatoJson(void *p){