diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 60415a8d74837f7e444be70a8e787aed4b7faaf4..4338756e83c97a18e4370810b6b245778c775247 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -4479,7 +4479,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) { if (pTagsSchema->type != TSDB_DATA_TYPE_BINARY && pTagsSchema->type != TSDB_DATA_TYPE_NCHAR) { len = tDataTypeDesc[pTagsSchema->type].nSize; } else { - len = varDataLen(pUpdateMsg->data); + len = varDataTLen(pUpdateMsg->data); } pUpdateMsg->tagValLen = htonl(len); // length may be changed after dump data diff --git a/src/query/src/tvariant.c b/src/query/src/tvariant.c index 2cf60d3e91d30c55c3c61b546cc1f792ea96afd7..b11850a672a15d56fc776f8f12f0ed227731a34c 100644 --- a/src/query/src/tvariant.c +++ b/src/query/src/tvariant.c @@ -800,12 +800,13 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, int16_t type, bool inclu break; } case TSDB_DATA_TYPE_NCHAR: { + int32_t newlen = 0; if (!includeLengthPrefix) { if (pVariant->nType == TSDB_DATA_TYPE_NULL) { *(uint32_t *)payload = TSDB_DATA_NCHAR_NULL; } else { if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) { - toNchar(pVariant, &payload, &pVariant->nLen); + toNchar(pVariant, &payload, &newlen); } else { wcsncpy((wchar_t *)payload, pVariant->wpz, pVariant->nLen); } @@ -817,12 +818,13 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, int16_t type, bool inclu char *p = varDataVal(payload); if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) { - toNchar(pVariant, &p, &pVariant->nLen); + toNchar(pVariant, &p, &newlen); } else { wcsncpy((wchar_t *)p, pVariant->wpz, pVariant->nLen); + newlen = pVariant->nLen; } - varDataSetLen(payload, pVariant->nLen); // the length may be changed after toNchar function called + varDataSetLen(payload, newlen); // the length may be changed after toNchar function called assert(p == varDataVal(payload)); } }