Commit 5d12a0bf authored by unknown's avatar unknown
Browse files

Merge tkatchaounov@bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.com:/home/timka/mysql/src/4.1-virgin

parents ab008ede 10932371
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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 ''
) 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
+11 −0
Original line number Diff line number Diff line
@@ -107,3 +107,14 @@ explain extended SELECT
 COALESCE('a' COLLATE latin1_bin,'b');
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;
+3 −1
Original line number Diff line number Diff line
@@ -1174,6 +1174,8 @@ Item *Item_func_case::find_item(String *str)
  String *first_expr_str,*tmp;
  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);
@@ -1186,7 +1188,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:
+0 −1
Original line number Diff line number Diff line
@@ -2882,7 +2882,6 @@ mysql_execute_command(THD *thd)
    }
    else
      res= -1;
    first_local_table->next= tables;
    lex->select_lex.table_list.first= (byte*) first_local_table;
    break;
  }