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) 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;
} }
} }

View File

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

View File

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