Commit d5f4c14b authored by unknown's avatar unknown
Browse files

Fixed BUG#9559: Functions: Numeric Operations using -ve value gives incorrect

                  results.
  Actually a problem when converting decimal to int for user variables.


mysql-test/r/sp.result:
  New test case for BUG#9559.
mysql-test/t/sp.test:
  New test case for BUG#9559.
sql/item_func.cc:
  Don't set the unsigned flag when converting decimal user var to int.
parent 03787cce
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -3098,4 +3098,15 @@ call bug5963_2(1)|
call bug5963_2(1)|
drop procedure bug5963_2|
drop table t3|
drop function if exists bug9559|
create function bug9559()
returns int
begin
set @y = -6/2;
return @y;
end|
select bug9559()|
bug9559()
-3
drop function bug9559|
drop table t1,t2;
+19 −0
Original line number Diff line number Diff line
@@ -3801,6 +3801,25 @@ call bug5963_2(1)|
drop procedure bug5963_2|
drop table t3|

#
# BUG#9559: Functions: Numeric Operations using -ve value gives incorrect
#           results.
#
--disable_warnings
drop function if exists bug9559|
--enable_warnings
create function bug9559()
  returns int
begin
  set @y = -6/2;
  return @y;
end|

select bug9559()|

drop function bug9559|


#
# BUG#NNNN: New bug synopsis
#
+1 −1
Original line number Diff line number Diff line
@@ -3597,7 +3597,7 @@ longlong user_var_entry::val_int(my_bool *null_value)
  case DECIMAL_RESULT:
  {
    longlong result;
    my_decimal2int(E_DEC_FATAL_ERROR, (my_decimal *)value, 1, &result);
    my_decimal2int(E_DEC_FATAL_ERROR, (my_decimal *)value, 0, &result);
    return result;
  }
  case STRING_RESULT: