Loading mysql-test/r/case.result +4 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,7 @@ fcase count(*) nothing 2 one 1 two 1 color orange yellow green mysql-test/t/case.test +5 −0 Original line number Diff line number Diff line Loading @@ -30,3 +30,8 @@ insert into t1 values(1),(2),(3),(4); select case a when 1 then 2 when 2 then 3 else 0 end as fcase, count(*) from t1 group by fcase; select case a when 1 then "one" when 2 then "two" else "nothing" end as fcase, count(*) from t1 group by fcase; drop table t1; drop table if exists t; create table t1 (row int not null, col int not null, val varchar(255) not null); insert into t1 values (1,1,'orange'),(1,2,'large'),(2,1,'yellow'),(2,2,'medium'),(3,1,'green'),(3,2,'small'); select max(case col when 1 then val else null end) as color from t1 group by row; drop table if exists t; sql/item_cmpfunc.cc +2 −0 Original line number Diff line number Diff line Loading @@ -687,6 +687,8 @@ String *Item_func_case::val_str(String *str) } if (!(res=item->val_str(str))) null_value=1; else null_value=item->null_value; return res; } Loading sql/sql_db.cc +3 −2 Original line number Diff line number Diff line Loading @@ -323,6 +323,9 @@ bool mysql_change_db(THD *thd,const char *name) uint db_access; DBUG_ENTER("mysql_change_db"); if (lower_case_table_names) casedn_str(dbname); if (!dbname || !(length=strip_sp(dbname))) { x_free(dbname); /* purecov: inspected */ Loading Loading @@ -368,8 +371,6 @@ bool mysql_change_db(THD *thd,const char *name) } send_ok(&thd->net); x_free(thd->db); if (lower_case_table_names) casedn_str(dbname); thd->db=dbname; thd->db_access=db_access; DBUG_RETURN(0); Loading Loading
mysql-test/r/case.result +4 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,7 @@ fcase count(*) nothing 2 one 1 two 1 color orange yellow green
mysql-test/t/case.test +5 −0 Original line number Diff line number Diff line Loading @@ -30,3 +30,8 @@ insert into t1 values(1),(2),(3),(4); select case a when 1 then 2 when 2 then 3 else 0 end as fcase, count(*) from t1 group by fcase; select case a when 1 then "one" when 2 then "two" else "nothing" end as fcase, count(*) from t1 group by fcase; drop table t1; drop table if exists t; create table t1 (row int not null, col int not null, val varchar(255) not null); insert into t1 values (1,1,'orange'),(1,2,'large'),(2,1,'yellow'),(2,2,'medium'),(3,1,'green'),(3,2,'small'); select max(case col when 1 then val else null end) as color from t1 group by row; drop table if exists t;
sql/item_cmpfunc.cc +2 −0 Original line number Diff line number Diff line Loading @@ -687,6 +687,8 @@ String *Item_func_case::val_str(String *str) } if (!(res=item->val_str(str))) null_value=1; else null_value=item->null_value; return res; } Loading
sql/sql_db.cc +3 −2 Original line number Diff line number Diff line Loading @@ -323,6 +323,9 @@ bool mysql_change_db(THD *thd,const char *name) uint db_access; DBUG_ENTER("mysql_change_db"); if (lower_case_table_names) casedn_str(dbname); if (!dbname || !(length=strip_sp(dbname))) { x_free(dbname); /* purecov: inspected */ Loading Loading @@ -368,8 +371,6 @@ bool mysql_change_db(THD *thd,const char *name) } send_ok(&thd->net); x_free(thd->db); if (lower_case_table_names) casedn_str(dbname); thd->db=dbname; thd->db_access=db_access; DBUG_RETURN(0); Loading