diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 18a4018fa253246b681033692d366893b4b0e740..c0715bc4ac627e1fe35897abfc62afbc7b511553 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -750,7 +750,9 @@ static void setResRawPtrImpl(SSqlRes* pRes, SInternalField* pInfo, int32_t i, bo p += pInfo->field.bytes; } memcpy(pRes->urow[i], pRes->buffer[i], pInfo->field.bytes * pRes->numOfRows); - }else if (convertNchar && pInfo->field.type == TSDB_DATA_TYPE_JSON && *(char*)(pRes->urow[i]) == TSDB_DATA_TYPE_NCHAR) { + }else if (convertNchar && pInfo->field.type == TSDB_DATA_TYPE_JSON + && *(char*)(pRes->urow[i]) == TSDB_DATA_TYPE_NCHAR + && !isNull(POINTER_SHIFT(pRes->urow[i], CHAR_BYTES), TSDB_DATA_TYPE_JSON)) { // convert unicode to native code in a temporary buffer extra one byte for terminated symbol char* buffer = realloc(pRes->buffer[i], pInfo->field.bytes * pRes->numOfRows); if (buffer == NULL) return; diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index d49677695497eabfed998be6a3006c0dbda6c751..1283183441a2961520eceb10635f759da7af5c13 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -483,6 +483,7 @@ static void dumpFieldToFile(FILE* fp, char* val, TAOS_FIELD* field, int32_t leng val += CHAR_BYTES; if(type == TSDB_DATA_TYPE_NCHAR) { length = varDataLen(val); + val = varDataVal(val); } } @@ -665,6 +666,7 @@ static void printField(char* val, TAOS_FIELD* field, int width, int32_t length, val += CHAR_BYTES; if(type == TSDB_DATA_TYPE_NCHAR) { length = varDataLen(val); + val = varDataVal(val); } }