refactor:add test cases for schemaless
This commit is contained in:
parent
36e6cc2731
commit
d614473ae2
|
@ -598,19 +598,25 @@ static bool smlParseNumber(SSmlKv *kvVal, SSmlMsgBuf *msg){
|
||||||
kvVal->type = TSDB_DATA_TYPE_FLOAT;
|
kvVal->type = TSDB_DATA_TYPE_FLOAT;
|
||||||
kvVal->f = (float)result;
|
kvVal->f = (float)result;
|
||||||
}else if ((left == 1 && *endptr == 'i') || (left == 3 && strncasecmp(endptr, "i64", left) == 0)){
|
}else if ((left == 1 && *endptr == 'i') || (left == 3 && strncasecmp(endptr, "i64", left) == 0)){
|
||||||
if(smlDoubleToInt64OverFlow(result)){
|
if(result >= (double)INT64_MAX){
|
||||||
smlBuildInvalidDataMsg(msg, "big int is too large, out of precision", pVal);
|
kvVal->i = INT64_MAX;
|
||||||
return false;
|
}else if(result <= (double)INT64_MIN){
|
||||||
|
kvVal->i = INT64_MIN;
|
||||||
|
}else{
|
||||||
|
kvVal->i = result;
|
||||||
}
|
}
|
||||||
kvVal->type = TSDB_DATA_TYPE_BIGINT;
|
kvVal->type = TSDB_DATA_TYPE_BIGINT;
|
||||||
kvVal->i = (int64_t)result;
|
|
||||||
}else if ((left == 3 && strncasecmp(endptr, "u64", left) == 0)){
|
}else if ((left == 3 && strncasecmp(endptr, "u64", left) == 0)){
|
||||||
if(result >= (double)UINT64_MAX || result < 0){
|
if(result < 0){
|
||||||
smlBuildInvalidDataMsg(msg, "unsigned big int is too large, out of precision", pVal);
|
smlBuildInvalidDataMsg(msg, "unsigned big int is too large, out of precision", pVal);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if(result >= (double)UINT64_MAX){
|
||||||
|
kvVal->u = UINT64_MAX;
|
||||||
|
}else{
|
||||||
|
kvVal->u = result;
|
||||||
|
}
|
||||||
kvVal->type = TSDB_DATA_TYPE_UBIGINT;
|
kvVal->type = TSDB_DATA_TYPE_UBIGINT;
|
||||||
kvVal->u = result;
|
|
||||||
}else if (left == 3 && strncasecmp(endptr, "i32", left) == 0){
|
}else if (left == 3 && strncasecmp(endptr, "i32", left) == 0){
|
||||||
if(!IS_VALID_INT(result)){
|
if(!IS_VALID_INT(result)){
|
||||||
smlBuildInvalidDataMsg(msg, "int out of range[-2147483648,2147483647]", pVal);
|
smlBuildInvalidDataMsg(msg, "int out of range[-2147483648,2147483647]", pVal);
|
||||||
|
@ -1694,11 +1700,13 @@ static int32_t smlConvertJSONNumber(SSmlKv *pVal, char* typeStr, cJSON *value) {
|
||||||
strcasecmp(typeStr, "bigint") == 0) {
|
strcasecmp(typeStr, "bigint") == 0) {
|
||||||
pVal->type = TSDB_DATA_TYPE_BIGINT;
|
pVal->type = TSDB_DATA_TYPE_BIGINT;
|
||||||
pVal->length = (int16_t)tDataTypes[pVal->type].bytes;
|
pVal->length = (int16_t)tDataTypes[pVal->type].bytes;
|
||||||
if(smlDoubleToInt64OverFlow(value->valuedouble)){
|
if(value->valuedouble >= (double)INT64_MAX){
|
||||||
uError("OTD:JSON value(%f) cannot fit in type(big int)", value->valuedouble);
|
pVal->i = INT64_MAX;
|
||||||
return TSDB_CODE_TSC_VALUE_OUT_OF_RANGE;
|
}else if(value->valuedouble <= (double)INT64_MIN){
|
||||||
|
pVal->i = INT64_MIN;
|
||||||
|
}else{
|
||||||
|
pVal->i = value->valuedouble;
|
||||||
}
|
}
|
||||||
pVal->i = value->valuedouble;
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
//float
|
//float
|
||||||
|
|
Loading…
Reference in New Issue