mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Added tests
This commit is contained in:
parent
7c748b6140
commit
7a72a765c2
@ -331,12 +331,24 @@ ReturnType readIntTextImpl(T & x, ReadBuffer & buf)
|
|||||||
|
|
||||||
if (buf.count() - initial_pos + 1 >= std::numeric_limits<T>::max_digits10)
|
if (buf.count() - initial_pos + 1 >= std::numeric_limits<T>::max_digits10)
|
||||||
{
|
{
|
||||||
T signed_res = negative ? -res : res;
|
if (negative)
|
||||||
if (common::mulOverflow<T>(signed_res, 10, signed_res) || (negative ? common::subOverflow<T>(signed_res, (*buf.position() - '0'), signed_res) :
|
{
|
||||||
common::addOverflow<T>(signed_res, (*buf.position() - '0'), signed_res)))
|
T signed_res = -res;
|
||||||
return ReturnType(false);
|
if (common::mulOverflow<T>(signed_res, 10, signed_res) ||
|
||||||
|
common::subOverflow<T>(signed_res, (*buf.position() - '0'), signed_res))
|
||||||
|
return ReturnType(false);
|
||||||
|
|
||||||
res = negative ? -signed_res : signed_res;
|
res = -signed_res;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
T signed_res = res;
|
||||||
|
if (common::mulOverflow<T>(signed_res, 10, signed_res)
|
||||||
|
|| common::addOverflow<T>(signed_res, (*buf.position() - '0'), signed_res))
|
||||||
|
return ReturnType(false);
|
||||||
|
|
||||||
|
res = signed_res;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
-2147483648
|
||||||
|
-2147483648
|
2
tests/queries/0_stateless/2020_cast_integer_overflow.sql
Normal file
2
tests/queries/0_stateless/2020_cast_integer_overflow.sql
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SELECT toInt32('-2147483648');
|
||||||
|
SELECT toInt32OrNull('-2147483648');
|
Loading…
Reference in New Issue
Block a user