Commit dd516423 authored by unknown's avatar unknown

Fix for Bug #13124 Stored Procedure using SELECT INTO crashes server


mysql-test/r/sp.result:
  added a test
mysql-test/t/sp.test:
  corrected result file
sql/item.cc:
  check for NULL value before copying string
parent 276e9f82
...@@ -3225,4 +3225,12 @@ select @var| ...@@ -3225,4 +3225,12 @@ select @var|
@var @var
abcdabcd abcdabcd
drop procedure bug12849_2| drop procedure bug12849_2|
drop procedure if exists bug13124|
create procedure bug13124()
begin
declare y integer;
set @x=y;
end|
call bug13124()|
drop procedure bug13124|
drop table t1,t2; drop table t1,t2;
...@@ -4063,6 +4063,21 @@ call bug12849_2(@var)| ...@@ -4063,6 +4063,21 @@ call bug12849_2(@var)|
select @var| select @var|
drop procedure bug12849_2| drop procedure bug12849_2|
#
# Bug #13124 Stored Procedure using SELECT INTO crashes server
#
--disable_warnings
drop procedure if exists bug13124|
--enable_warnings
create procedure bug13124()
begin
declare y integer;
set @x=y;
end|
call bug13124()|
drop procedure bug13124|
# #
# BUG#NNNN: New bug synopsis # BUG#NNNN: New bug synopsis
# #
......
...@@ -818,6 +818,8 @@ String *Item_splocal::val_str(String *sp) ...@@ -818,6 +818,8 @@ String *Item_splocal::val_str(String *sp)
DBUG_ASSERT(fixed); DBUG_ASSERT(fixed);
Item *it= this_item(); Item *it= this_item();
String *ret= it->val_str(sp); String *ret= it->val_str(sp);
null_value= it->null_value;
/* /*
This way we mark returned value of val_str as const, This way we mark returned value of val_str as const,
so that various functions (e.g. CONCAT) won't try to so that various functions (e.g. CONCAT) won't try to
...@@ -833,9 +835,12 @@ String *Item_splocal::val_str(String *sp) ...@@ -833,9 +835,12 @@ String *Item_splocal::val_str(String *sp)
This is intended behaviour of Item_func_concat. Comments to This is intended behaviour of Item_func_concat. Comments to
Item_param class contain some more details on the topic. Item_param class contain some more details on the topic.
*/ */
if (!ret)
return NULL;
str_value_ptr.set(ret->ptr(), ret->length(), str_value_ptr.set(ret->ptr(), ret->length(),
ret->charset()); ret->charset());
null_value= it->null_value;
return &str_value_ptr; return &str_value_ptr;
} }
......
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