[TD-225]add nchar convert error process.
This commit is contained in:
parent
441b97a295
commit
9017b178cb
|
@ -452,8 +452,11 @@ static int32_t toNchar(tVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
|
|
||||||
if (*pDest == pVariant->pz) {
|
if (*pDest == pVariant->pz) {
|
||||||
wchar_t *pWStr = calloc(1, (nLen + 1) * TSDB_NCHAR_SIZE);
|
wchar_t *pWStr = calloc(1, (nLen + 1) * TSDB_NCHAR_SIZE);
|
||||||
taosMbsToUcs4(pDst, nLen, (char *)pWStr, (nLen + 1) * TSDB_NCHAR_SIZE, NULL);
|
bool ret = taosMbsToUcs4(pDst, nLen, (char *)pWStr, (nLen + 1) * TSDB_NCHAR_SIZE, NULL);
|
||||||
|
if (!ret) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// free the binary buffer in the first place
|
// free the binary buffer in the first place
|
||||||
if (pVariant->nType == TSDB_DATA_TYPE_BINARY) {
|
if (pVariant->nType == TSDB_DATA_TYPE_BINARY) {
|
||||||
free(pVariant->wpz);
|
free(pVariant->wpz);
|
||||||
|
@ -469,8 +472,11 @@ static int32_t toNchar(tVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
pVariant->wpz = (wchar_t *)tmp;
|
pVariant->wpz = (wchar_t *)tmp;
|
||||||
} else {
|
} else {
|
||||||
size_t output = -1;
|
size_t output = -1;
|
||||||
taosMbsToUcs4(pDst, nLen, *pDest, (nLen + 1) * TSDB_NCHAR_SIZE, &output);
|
bool ret = taosMbsToUcs4(pDst, nLen, *pDest, (nLen + 1) * TSDB_NCHAR_SIZE, &output);
|
||||||
|
if (!ret) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (pDestSize != NULL) {
|
if (pDestSize != NULL) {
|
||||||
*pDestSize = (int32_t)output;
|
*pDestSize = (int32_t)output;
|
||||||
}
|
}
|
||||||
|
@ -638,8 +644,6 @@ static int32_t convertToBool(tVariant *pVariant, int64_t *pDest) {
|
||||||
/*
|
/*
|
||||||
* transfer data from variant serve as the implicit data conversion: from input sql string pVariant->nType
|
* transfer data from variant serve as the implicit data conversion: from input sql string pVariant->nType
|
||||||
* to column type defined in schema
|
* to column type defined in schema
|
||||||
*
|
|
||||||
* todo handle the return value
|
|
||||||
*/
|
*/
|
||||||
int32_t tVariantDump(tVariant *pVariant, char *payload, int16_t type, bool includeLengthPrefix) {
|
int32_t tVariantDump(tVariant *pVariant, char *payload, int16_t type, bool includeLengthPrefix) {
|
||||||
if (pVariant == NULL || (pVariant->nType != 0 && !isValidDataType(pVariant->nType))) {
|
if (pVariant == NULL || (pVariant->nType != 0 && !isValidDataType(pVariant->nType))) {
|
||||||
|
@ -805,7 +809,9 @@ int32_t tVariantDump(tVariant *pVariant, char *payload, int16_t type, bool inclu
|
||||||
*(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, &newlen);
|
if (toNchar(pVariant, &payload, &newlen) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
wcsncpy((wchar_t *)payload, pVariant->wpz, pVariant->nLen);
|
wcsncpy((wchar_t *)payload, pVariant->wpz, pVariant->nLen);
|
||||||
}
|
}
|
||||||
|
@ -817,7 +823,9 @@ 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, &newlen);
|
if (toNchar(pVariant, &p, &newlen) != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
wcsncpy((wchar_t *)p, pVariant->wpz, pVariant->nLen);
|
wcsncpy((wchar_t *)p, pVariant->wpz, pVariant->nLen);
|
||||||
newlen = pVariant->nLen;
|
newlen = pVariant->nLen;
|
||||||
|
@ -901,7 +909,11 @@ int32_t tVariantTypeSetType(tVariant *pVariant, char type) {
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_NCHAR: {
|
case TSDB_DATA_TYPE_NCHAR: {
|
||||||
if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) {
|
if (pVariant->nType != TSDB_DATA_TYPE_NCHAR) {
|
||||||
toNchar(pVariant, &pVariant->pz, &pVariant->nLen);
|
int32_t ret = toNchar(pVariant, &pVariant->pz, &pVariant->nLen);
|
||||||
|
if (ret != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
pVariant->nType = type;
|
pVariant->nType = type;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue