From 7d8887a4e924601e5cf9ea70d6136f1cfae9427a Mon Sep 17 00:00:00 2001 From: xywang Date: Tue, 8 Mar 2022 00:04:56 +0800 Subject: [PATCH] [TS-1289]: fixed show create stable error if tag type was json --- src/client/src/tscLocal.c | 8 +++++++- src/tsdb/src/tsdbRead.c | 10 +--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/client/src/tscLocal.c b/src/client/src/tscLocal.c index 4da1ecd2a9..b6c8b3de3f 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 025cafe7e9..60c7311d4c 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){ -- GitLab