Commit 1c348f48 authored by igor@rurik.mysql.com's avatar igor@rurik.mysql.com

Merge rurik.mysql.com:/home/igor/mysql-4.1

into rurik.mysql.com:/home/igor/dev/mysql-4.1-1
parents d09fd925 009e2457
...@@ -154,3 +154,18 @@ t1 CREATE TABLE `t1` ( ...@@ -154,3 +154,18 @@ t1 CREATE TABLE `t1` (
`COALESCE('a' COLLATE latin1_bin,'b')` char(1) character set latin1 collate latin1_bin NOT NULL default '' `COALESCE('a' COLLATE latin1_bin,'b')` char(1) character set latin1 collate latin1_bin NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1; 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
...@@ -107,3 +107,14 @@ explain extended SELECT ...@@ -107,3 +107,14 @@ explain extended SELECT
COALESCE('a' COLLATE latin1_bin,'b'); COALESCE('a' COLLATE latin1_bin,'b');
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP 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;
...@@ -1174,6 +1174,8 @@ Item *Item_func_case::find_item(String *str) ...@@ -1174,6 +1174,8 @@ Item *Item_func_case::find_item(String *str)
String *first_expr_str,*tmp; String *first_expr_str,*tmp;
longlong first_expr_int; longlong first_expr_int;
double first_expr_real; double first_expr_real;
char buff[MAX_FIELD_WIDTH];
String buff_str(buff,sizeof(buff),default_charset());
/* These will be initialized later */ /* These will be initialized later */
LINT_INIT(first_expr_str); LINT_INIT(first_expr_str);
...@@ -1186,7 +1188,7 @@ Item *Item_func_case::find_item(String *str) ...@@ -1186,7 +1188,7 @@ Item *Item_func_case::find_item(String *str)
{ {
case STRING_RESULT: case STRING_RESULT:
// We can't use 'str' here as this may be overwritten // 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 return else_expr_num != -1 ? args[else_expr_num] : 0; // Impossible
break; break;
case INT_RESULT: case INT_RESULT:
......
...@@ -2882,7 +2882,6 @@ unsent_create_error: ...@@ -2882,7 +2882,6 @@ unsent_create_error:
} }
else else
res= -1; res= -1;
first_local_table->next= tables;
lex->select_lex.table_list.first= (byte*) first_local_table; lex->select_lex.table_list.first= (byte*) first_local_table;
break; break;
} }
......
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