diff options
author | unknown <sergefp@mysql.com> | 2005-06-23 19:05:36 +0200 |
---|---|---|
committer | unknown <sergefp@mysql.com> | 2005-06-23 19:05:36 +0200 |
commit | 0021ec52c607ac2f87c8e2c6dfc0f89a711f608a (patch) | |
tree | e0afc2c296413ff6fa8f5eea640a265be1b2cc77 | |
parent | 309a7e679f4b75574949085abbd3ea56fafa33cb (diff) | |
parent | ef920b28793302a532b87b4babfc224bb732941e (diff) | |
download | mariadb-git-0021ec52c607ac2f87c8e2c6dfc0f89a711f608a.tar.gz |
Merge
mysql-test/r/case.result:
SCCS merged
mysql-test/t/case.test:
SCCS merged
sql/item_cmpfunc.cc:
SCCS merged
-rw-r--r-- | mysql-test/r/case.result | 15 | ||||
-rw-r--r-- | mysql-test/t/case.test | 11 | ||||
-rw-r--r-- | sql/item_cmpfunc.cc | 4 |
3 files changed, 29 insertions, 1 deletions
diff --git a/mysql-test/r/case.result b/mysql-test/r/case.result index a854cf4c7b0..b02f85132aa 100644 --- a/mysql-test/r/case.result +++ b/mysql-test/r/case.result @@ -160,6 +160,21 @@ t1 CREATE TABLE `t1` ( `COALESCE('a' COLLATE latin1_bin,'b')` varchar(1) character set latin1 collate latin1_bin NOT NULL default '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; +SELECT 'case+union+test' +UNION +SELECT CASE LOWER('1') WHEN LOWER('2') THEN 'BUG' ELSE 'nobug' END; +case+union+test +case+union+test +nobug +SELECT CASE LOWER('1') WHEN LOWER('2') THEN 'BUG' ELSE 'nobug' END; +CASE LOWER('1') WHEN LOWER('2') THEN 'BUG' ELSE 'nobug' END +nobug +SELECT 'case+union+test' +UNION +SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END; +case+union+test +case+union+test +nobug CREATE TABLE t1 (EMPNUM INT); INSERT INTO t1 VALUES (0), (2); CREATE TABLE t2 (EMPNUM DECIMAL (4, 2)); diff --git a/mysql-test/t/case.test b/mysql-test/t/case.test index f2cfce9085d..e942333d5fe 100644 --- a/mysql-test/t/case.test +++ b/mysql-test/t/case.test @@ -111,6 +111,17 @@ explain extended SELECT SHOW CREATE TABLE t1; DROP TABLE t1; +# Test for BUG#10151 +SELECT 'case+union+test' +UNION +SELECT CASE LOWER('1') WHEN LOWER('2') THEN 'BUG' ELSE 'nobug' END; + +SELECT CASE LOWER('1') WHEN LOWER('2') THEN 'BUG' ELSE 'nobug' END; + +SELECT 'case+union+test' +UNION +SELECT CASE '1' WHEN '2' THEN 'BUG' ELSE 'nobug' END; + # # Tests for bug #9939: conversion of the arguments for COALESCE and IFNULL # diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 5a2e14eef2e..0442865b7f9 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1420,6 +1420,8 @@ Item *Item_func_case::find_item(String *str) my_decimal *first_expr_dec, first_expr_dec_val; longlong first_expr_int; double first_expr_real; + char buff[MAX_FIELD_WIDTH]; + String buff_str(buff,sizeof(buff),default_charset()); /* These will be initialized later */ LINT_INIT(first_expr_str); @@ -1433,7 +1435,7 @@ Item *Item_func_case::find_item(String *str) { case STRING_RESULT: // We can't use 'str' here as this may be overwritten - if (!(first_expr_str= args[first_expr_num]->val_str(&str_value))) + if (!(first_expr_str= args[first_expr_num]->val_str(&buff_str))) return else_expr_num != -1 ? args[else_expr_num] : 0; // Impossible break; case INT_RESULT: |