diff options
author | unknown <evgen@moonbone.local> | 2007-05-04 12:27:21 +0400 |
---|---|---|
committer | unknown <evgen@moonbone.local> | 2007-05-04 12:27:21 +0400 |
commit | 74c794d0e4a14b6deddc90e74ed718c2f00653df (patch) | |
tree | 7c4be5e68bcddc6fe24f6fc58b15a3470c9db8a7 | |
parent | 8e8ece72eb0530bee9b200d92ba14a143cd1dec9 (diff) | |
parent | 1a0e3a285818f0a71cdc7f387a63f7cc72c72972 (diff) | |
download | mariadb-git-74c794d0e4a14b6deddc90e74ed718c2f00653df.tar.gz |
Merge moonbone.local:/mnt/gentoo64/work/23656-bug-4.1-opt-mysql
into moonbone.local:/mnt/gentoo64/work/23656-bug-5.0-opt-mysql
mysql-test/r/cast.result:
Auto merged
mysql-test/t/cast.test:
Auto merged
sql/item_func.cc:
Manual merge
-rw-r--r-- | mysql-test/r/cast.result | 6 | ||||
-rw-r--r-- | mysql-test/t/cast.test | 6 | ||||
-rw-r--r-- | sql/item_func.cc | 6 |
3 files changed, 16 insertions, 2 deletions
diff --git a/mysql-test/r/cast.result b/mysql-test/r/cast.result index d8e50128902..454a3766572 100644 --- a/mysql-test/r/cast.result +++ b/mysql-test/r/cast.result @@ -351,6 +351,12 @@ DROP TABLE t1; select isnull(date(NULL)), isnull(cast(NULL as DATE)); isnull(date(NULL)) isnull(cast(NULL as DATE)) 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 select cast('1.2' as decimal(3,2)); cast('1.2' as decimal(3,2)) diff --git a/mysql-test/t/cast.test b/mysql-test/t/cast.test index 502c5781f1f..004ef69182d 100644 --- a/mysql-test/t/cast.test +++ b/mysql-test/t/cast.test @@ -182,6 +182,12 @@ DROP TABLE t1; 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 diff --git a/sql/item_func.cc b/sql/item_func.cc index 503b4362e7a..eaef07f0cd6 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -947,7 +947,8 @@ longlong Item_func_signed::val_int() longlong value; 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(); null_value= args[0]->null_value; @@ -986,7 +987,8 @@ longlong Item_func_unsigned::val_int() my_decimal2int(E_DEC_FATAL_ERROR, dec, 1, &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(); null_value= args[0]->null_value; |