Merge pull request #2282 from taosdata/feature/pyconn

[TD-591]fix alter table tag value bugs
This commit is contained in:
Shengliang Guan 2020-06-15 16:17:30 +08:00 committed by GitHub
commit 3c17c37de9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 4 deletions

View File

@ -4508,7 +4508,7 @@ int32_t setAlterTableInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
if (pTagsSchema->type != TSDB_DATA_TYPE_BINARY && pTagsSchema->type != TSDB_DATA_TYPE_NCHAR) { if (pTagsSchema->type != TSDB_DATA_TYPE_BINARY && pTagsSchema->type != TSDB_DATA_TYPE_NCHAR) {
len = tDataTypeDesc[pTagsSchema->type].nSize; len = tDataTypeDesc[pTagsSchema->type].nSize;
} else { } else {
len = varDataLen(pUpdateMsg->data); len = varDataTLen(pUpdateMsg->data);
} }
pUpdateMsg->tagValLen = htonl(len); // length may be changed after dump data pUpdateMsg->tagValLen = htonl(len); // length may be changed after dump data

View File

@ -800,12 +800,13 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, int16_t type, bool inclu
break; break;
} }
case TSDB_DATA_TYPE_NCHAR: { case TSDB_DATA_TYPE_NCHAR: {
int32_t newlen = 0;
if (!includeLengthPrefix) { if (!includeLengthPrefix) {
if (pVariant->nType == TSDB_DATA_TYPE_NULL) { if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
*(uint32_t *)payload = TSDB_DATA_NCHAR_NULL; *(uint32_t *)payload = TSDB_DATA_NCHAR_NULL;
} else { } else {
if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) { if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) {
toNchar(pVariant, &payload, &pVariant->nLen); toNchar(pVariant, &payload, &newlen);
} else { } else {
wcsncpy((wchar_t *)payload, pVariant->wpz, pVariant->nLen); 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); char *p = varDataVal(payload);
if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) { if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) {
toNchar(pVariant, &p, &pVariant->nLen); toNchar(pVariant, &p, &newlen);
} else { } else {
wcsncpy((wchar_t *)p, pVariant->wpz, pVariant->nLen); 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)); assert(p == varDataVal(payload));
} }
} }