Added tests

This commit is contained in:
Maksim Kita 2021-09-16 00:01:01 +03:00
parent 7c748b6140
commit 7a72a765c2
3 changed files with 21 additions and 5 deletions

View File

@ -331,12 +331,24 @@ ReturnType readIntTextImpl(T & x, ReadBuffer & buf)
if (buf.count() - initial_pos + 1 >= std::numeric_limits<T>::max_digits10)
{
T signed_res = negative ? -res : res;
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)))
return ReturnType(false);
if (negative)
{
T signed_res = -res;
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;
}
}

View File

@ -0,0 +1,2 @@
-2147483648
-2147483648

View File

@ -0,0 +1,2 @@
SELECT toInt32('-2147483648');
SELECT toInt32OrNull('-2147483648');