Commit 6ea2c3cd authored by unknown's avatar unknown
Browse files

Fix for bug #17615: invalid handling of function results in UPDATE...SET statement.


sql/item_func.cc:
  Fix for bug #17615: invalid handling of function results in UPDATE...SET statement.
  - set proper collation
parent 5af68d30
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -4768,4 +4768,18 @@ Handler
Inner
drop procedure bug15011|
drop table t3|
drop function if exists bug17615|
create table t3 (a varchar(256) unicode)|
create function bug17615() returns varchar(256) unicode
begin
declare tmp_res varchar(256) unicode;
set tmp_res= 'foo string';
return tmp_res;
end|
insert into t3 values(bug17615())|
select * from t3|
a
foo string
drop function bug17615|
drop table t3|
drop table t1,t2;
+23 −0
Original line number Diff line number Diff line
@@ -5615,6 +5615,29 @@ drop procedure bug15011|
drop table t3|


#
# BUG#17615: problem with character set
#
--disable_warnings
drop function if exists bug17615|
--enable_warnings

create table t3 (a varchar(256) unicode)|

create function bug17615() returns varchar(256) unicode
begin
  declare tmp_res varchar(256) unicode;
  set tmp_res= 'foo string';
  return tmp_res;
end|

insert into t3 values(bug17615())|
select * from t3|

drop function bug17615|
drop table t3|


#
# BUG#NNNN: New bug synopsis
#
+2 −0
Original line number Diff line number Diff line
@@ -4881,6 +4881,7 @@ Item_func_sp::fix_length_and_dec()
  {
    decimals= result_field->decimals();
    max_length= result_field->field_length;
    collation.set(result_field->charset());
    DBUG_VOID_RETURN;
  }

@@ -4891,6 +4892,7 @@ Item_func_sp::fix_length_and_dec()
  }
  decimals= field->decimals();
  max_length= field->field_length;
  collation.set(field->charset());
  maybe_null= 1;
  delete field;
  DBUG_VOID_RETURN;