Commit 636d8839 authored by gkodinov/kgeorge@magare.gmz's avatar gkodinov/kgeorge@magare.gmz

Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt

into  magare.gmz:/home/kgeorge/mysql/autopush/B27807-5.0-opt
parents 27624ee4 2479dc71
...@@ -351,6 +351,12 @@ DROP TABLE t1; ...@@ -351,6 +351,12 @@ DROP TABLE t1;
select isnull(date(NULL)), isnull(cast(NULL as DATE)); select isnull(date(NULL)), isnull(cast(NULL as DATE));
isnull(date(NULL)) isnull(cast(NULL as DATE)) isnull(date(NULL)) isnull(cast(NULL as DATE))
1 1 1 1
SELECT CAST(cast('01-01-01' as date) AS UNSIGNED);
CAST(cast('01-01-01' as date) AS UNSIGNED)
20010101
SELECT CAST(cast('01-01-01' as date) AS SIGNED);
CAST(cast('01-01-01' as date) AS SIGNED)
20010101
End of 4.1 tests End of 4.1 tests
select cast('1.2' as decimal(3,2)); select cast('1.2' as decimal(3,2));
cast('1.2' as decimal(3,2)) cast('1.2' as decimal(3,2))
......
...@@ -182,6 +182,12 @@ DROP TABLE t1; ...@@ -182,6 +182,12 @@ DROP TABLE t1;
select isnull(date(NULL)), isnull(cast(NULL as DATE)); select isnull(date(NULL)), isnull(cast(NULL as DATE));
#
# Bug#23656: Wrong result of CAST from DATE to int
#
SELECT CAST(cast('01-01-01' as date) AS UNSIGNED);
SELECT CAST(cast('01-01-01' as date) AS SIGNED);
--echo End of 4.1 tests --echo End of 4.1 tests
......
...@@ -947,7 +947,8 @@ longlong Item_func_signed::val_int() ...@@ -947,7 +947,8 @@ longlong Item_func_signed::val_int()
longlong value; longlong value;
int error; int error;
if (args[0]->cast_to_int_type() != STRING_RESULT) if (args[0]->cast_to_int_type() != STRING_RESULT ||
args[0]->result_as_longlong())
{ {
value= args[0]->val_int(); value= args[0]->val_int();
null_value= args[0]->null_value; null_value= args[0]->null_value;
...@@ -986,7 +987,8 @@ longlong Item_func_unsigned::val_int() ...@@ -986,7 +987,8 @@ longlong Item_func_unsigned::val_int()
my_decimal2int(E_DEC_FATAL_ERROR, dec, 1, &value); my_decimal2int(E_DEC_FATAL_ERROR, dec, 1, &value);
return value; return value;
} }
else if (args[0]->cast_to_int_type() != STRING_RESULT) else if (args[0]->cast_to_int_type() != STRING_RESULT ||
args[0]->result_as_longlong())
{ {
value= args[0]->val_int(); value= args[0]->val_int();
null_value= args[0]->null_value; null_value= args[0]->null_value;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment