diff --git a/src/client/src/tscLocal.c b/src/client/src/tscLocal.c index b6383b321670f60e3c49cc523c171d407cccd8ed..fdb0ba41021098795c9414f6047768a44bbf8a2a 100644 --- a/src/client/src/tscLocal.c +++ b/src/client/src/tscLocal.c @@ -215,7 +215,7 @@ static int32_t tscProcessDescribeTable(SSqlObj *pSql) { return tscSetValueToResObj(pSql, rowLen); } static int32_t tscGetNthFieldResult(TAOS_ROW row, TAOS_FIELD* fields, int *lengths, int idx, char *result) { - const char *val = (const char*)row[idx]; + char *val = (char*)row[idx]; if (val == NULL) { sprintf(result, "%s", TSDB_DATA_NULL_STR); return -1; @@ -223,6 +223,16 @@ static int32_t tscGetNthFieldResult(TAOS_ROW row, TAOS_FIELD* fields, int *lengt uint8_t type = fields[idx].type; int32_t length = lengths[idx]; + if (type == TSDB_DATA_TYPE_JSON){ + char* p = result; + type = *p; + val += CHAR_BYTES; + if(type == TSDB_DATA_TYPE_NCHAR) { + length = varDataLen(val); + val = varDataVal(val); + } + } + switch (type) { case TSDB_DATA_TYPE_BOOL: sprintf(result, "%s", ((((int32_t)(*((char *)val))) == 1) ? "true" : "false"));