提交 b3444b58 编写于 作者: H Haojun Liao

[td-3874] <fix>: enable the value of UINT64_MAX-1 to be the valid tag values.

上级 3f18a8a5
...@@ -48,8 +48,12 @@ void tVariantCreate(tVariant *pVar, SStrToken *token) { ...@@ -48,8 +48,12 @@ void tVariantCreate(tVariant *pVar, SStrToken *token) {
case TSDB_DATA_TYPE_INT:{ case TSDB_DATA_TYPE_INT:{
ret = tStrToInteger(token->z, token->type, token->n, &pVar->i64, true); ret = tStrToInteger(token->z, token->type, token->n, &pVar->i64, true);
if (ret != 0) { if (ret != 0) {
pVar->nType = -1; // -1 means error type // data overflow, try unsigned parse the input number
return; ret = tStrToInteger(token->z, token->type, token->n, &pVar->i64, false);
if (ret != 0) {
pVar->nType = -1; // -1 means error type
return;
}
} }
break; break;
...@@ -525,6 +529,8 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result ...@@ -525,6 +529,8 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result
} }
bool code = false; bool code = false;
uint64_t ui = 0;
switch(type) { switch(type) {
case TSDB_DATA_TYPE_TINYINT: case TSDB_DATA_TYPE_TINYINT:
code = IS_VALID_TINYINT(*result); break; code = IS_VALID_TINYINT(*result); break;
...@@ -535,13 +541,17 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result ...@@ -535,13 +541,17 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result
case TSDB_DATA_TYPE_BIGINT: case TSDB_DATA_TYPE_BIGINT:
code = IS_VALID_BIGINT(*result); break; code = IS_VALID_BIGINT(*result); break;
case TSDB_DATA_TYPE_UTINYINT: case TSDB_DATA_TYPE_UTINYINT:
code = IS_VALID_UTINYINT(*result); break; ui = *result;
code = IS_VALID_UTINYINT(ui); break;
case TSDB_DATA_TYPE_USMALLINT: case TSDB_DATA_TYPE_USMALLINT:
code = IS_VALID_USMALLINT(*result); break; ui = *result;
code = IS_VALID_USMALLINT(ui); break;
case TSDB_DATA_TYPE_UINT: case TSDB_DATA_TYPE_UINT:
code = IS_VALID_UINT(*result); break; ui = *result;
code = IS_VALID_UINT(ui); break;
case TSDB_DATA_TYPE_UBIGINT: case TSDB_DATA_TYPE_UBIGINT:
code = IS_VALID_UBIGINT(*result); break; ui = *result;
code = IS_VALID_UBIGINT(ui); break;
} }
return code? 0:-1; return code? 0:-1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册