Commit 6ea2c3cd authored by unknown's avatar unknown

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
...@@ -4768,4 +4768,18 @@ Handler ...@@ -4768,4 +4768,18 @@ Handler
Inner Inner
drop procedure bug15011| drop procedure bug15011|
drop table t3| 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; drop table t1,t2;
...@@ -5615,6 +5615,29 @@ drop procedure bug15011| ...@@ -5615,6 +5615,29 @@ drop procedure bug15011|
drop table t3| 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 # BUG#NNNN: New bug synopsis
# #
......
...@@ -4881,6 +4881,7 @@ Item_func_sp::fix_length_and_dec() ...@@ -4881,6 +4881,7 @@ Item_func_sp::fix_length_and_dec()
{ {
decimals= result_field->decimals(); decimals= result_field->decimals();
max_length= result_field->field_length; max_length= result_field->field_length;
collation.set(result_field->charset());
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
...@@ -4891,6 +4892,7 @@ Item_func_sp::fix_length_and_dec() ...@@ -4891,6 +4892,7 @@ Item_func_sp::fix_length_and_dec()
} }
decimals= field->decimals(); decimals= field->decimals();
max_length= field->field_length; max_length= field->field_length;
collation.set(field->charset());
maybe_null= 1; maybe_null= 1;
delete field; delete field;
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment