1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00
mysql-test/t/cast.test:
  Auto merged
sql/item.h:
  Auto merged
This commit is contained in:
unknown
2005-10-13 12:23:50 +02:00
3 changed files with 16 additions and 0 deletions

View File

@@ -367,3 +367,6 @@ DROP TABLE t1;
select cast(NULL as decimal(6)) as t1; select cast(NULL as decimal(6)) as t1;
t1 t1
NULL NULL
select cast(1.0e+300 as signed int);
cast(1.0e+300 as signed int)
9223372036854775807

View File

@@ -160,6 +160,11 @@ select cast(concat('184467440','73709551615') as signed);
select cast(repeat('1',20) as unsigned); select cast(repeat('1',20) as unsigned);
select cast(repeat('1',20) as signed); select cast(repeat('1',20) as signed);
#
# Bug #13344: cast of large decimal to signed int not handled correctly
#
select cast(1.0e+300 as signed int);
# End of 4.1 tests # End of 4.1 tests

View File

@@ -1331,6 +1331,14 @@ public:
longlong val_int() longlong val_int()
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
if (value <= (double) LONGLONG_MIN)
{
return LONGLONG_MIN;
}
else if (value >= (double) (ulonglong) LONGLONG_MAX)
{
return LONGLONG_MAX;
}
return (longlong) (value+(value > 0 ? 0.5 : -0.5)); return (longlong) (value+(value > 0 ? 0.5 : -0.5));
} }
String *val_str(String*); String *val_str(String*);