Loading mysql-test/r/func_if.result +6 −0 Original line number Diff line number Diff line Loading @@ -58,3 +58,9 @@ select min(if(y -x > 5,y,NULL)), max(if(y - x > 5,y,NULL)) from t1; min(if(y -x > 5,y,NULL)) max(if(y - x > 5,y,NULL)) 6 56 drop table t1; create table t1 (a int); insert t1 values (1),(2); select if(1>2,a,avg(a)) from t1; if(1>2,a,avg(a)) 1.5000 drop table t1; mysql-test/t/func_if.test +9 −0 Original line number Diff line number Diff line Loading @@ -38,3 +38,12 @@ create table t1 (x int, y int); insert into t1 values (0,6),(10,16),(20,26),(30,10),(40,46),(50,56); select min(if(y -x > 5,y,NULL)), max(if(y - x > 5,y,NULL)) from t1; drop table t1; # # BUG#3987 # create table t1 (a int); insert t1 values (1),(2); select if(1>2,a,avg(a)) from t1; drop table t1; sql/item_cmpfunc.cc +2 −2 Original line number Diff line number Diff line Loading @@ -535,8 +535,8 @@ Item_func_if::fix_length_and_dec() decimals=max(args[1]->decimals,args[2]->decimals); enum Item_result arg1_type=args[1]->result_type(); enum Item_result arg2_type=args[2]->result_type(); bool null1=args[1]->null_value; bool null2=args[2]->null_value; bool null1=args[1]->const_item() && args[1]->null_value; bool null2=args[2]->const_item() && args[2]->null_value; if (null1) { Loading Loading
mysql-test/r/func_if.result +6 −0 Original line number Diff line number Diff line Loading @@ -58,3 +58,9 @@ select min(if(y -x > 5,y,NULL)), max(if(y - x > 5,y,NULL)) from t1; min(if(y -x > 5,y,NULL)) max(if(y - x > 5,y,NULL)) 6 56 drop table t1; create table t1 (a int); insert t1 values (1),(2); select if(1>2,a,avg(a)) from t1; if(1>2,a,avg(a)) 1.5000 drop table t1;
mysql-test/t/func_if.test +9 −0 Original line number Diff line number Diff line Loading @@ -38,3 +38,12 @@ create table t1 (x int, y int); insert into t1 values (0,6),(10,16),(20,26),(30,10),(40,46),(50,56); select min(if(y -x > 5,y,NULL)), max(if(y - x > 5,y,NULL)) from t1; drop table t1; # # BUG#3987 # create table t1 (a int); insert t1 values (1),(2); select if(1>2,a,avg(a)) from t1; drop table t1;
sql/item_cmpfunc.cc +2 −2 Original line number Diff line number Diff line Loading @@ -535,8 +535,8 @@ Item_func_if::fix_length_and_dec() decimals=max(args[1]->decimals,args[2]->decimals); enum Item_result arg1_type=args[1]->result_type(); enum Item_result arg2_type=args[2]->result_type(); bool null1=args[1]->null_value; bool null2=args[2]->null_value; bool null1=args[1]->const_item() && args[1]->null_value; bool null2=args[2]->const_item() && args[2]->null_value; if (null1) { Loading