mirror of
https://github.com/MariaDB/server.git
synced 2026-05-01 20:55:32 +02:00
Merge mysql.com:/extern/mysql/bk/mysql-5.0-runtime
into mysql.com:/extern/mysql/5.0/bug18787/mysql-5.0-runtime mysql-test/r/sp.result: Auto merged mysql-test/t/sp.test: Auto merged sql/item_func.cc: Auto merged
This commit is contained in:
commit
750bc26998
3 changed files with 42 additions and 8 deletions
|
|
@ -4848,4 +4848,14 @@ c 2
|
|||
b 3
|
||||
a 1
|
||||
delete from t1|
|
||||
drop procedure if exists bug18787|
|
||||
create procedure bug18787()
|
||||
begin
|
||||
declare continue handler for sqlexception begin end;
|
||||
select no_such_function();
|
||||
end|
|
||||
call bug18787()|
|
||||
no_such_function()
|
||||
NULL
|
||||
drop procedure bug18787|
|
||||
drop table t1,t2;
|
||||
|
|
|
|||
|
|
@ -5698,6 +5698,24 @@ select * from t1 order by @x|
|
|||
delete from t1|
|
||||
|
||||
|
||||
#
|
||||
# BUG#18787: Server crashed when calling a stored procedure containing
|
||||
# a misnamed function
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug18787|
|
||||
--enable_warnings
|
||||
create procedure bug18787()
|
||||
begin
|
||||
declare continue handler for sqlexception begin end;
|
||||
|
||||
select no_such_function();
|
||||
end|
|
||||
|
||||
call bug18787()|
|
||||
drop procedure bug18787|
|
||||
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
|
|
|||
|
|
@ -4747,7 +4747,9 @@ Item_func_sp::sp_result_field(void) const
|
|||
share->table_cache_key = empty_name;
|
||||
share->table_name = empty_name;
|
||||
}
|
||||
field= m_sp->create_result_field(max_length, name, dummy_table);
|
||||
if (!(field= m_sp->create_result_field(max_length, name, dummy_table)))
|
||||
my_message(ER_OUT_OF_RESOURCES, ER(ER_OUT_OF_RESOURCES), MYF(0));
|
||||
|
||||
DBUG_RETURN(field);
|
||||
}
|
||||
|
||||
|
|
@ -4775,8 +4777,9 @@ Item_func_sp::execute(Field **flp)
|
|||
{
|
||||
if (!(*flp= f= sp_result_field()))
|
||||
{
|
||||
my_message(ER_OUT_OF_RESOURCES, ER(ER_OUT_OF_RESOURCES), MYF(0));
|
||||
return 0;
|
||||
/* Error set by sp_result_field() */
|
||||
null_value= 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
f->move_field((f->pack_length() > sizeof(result_buf)) ?
|
||||
|
|
@ -4931,16 +4934,19 @@ longlong Item_func_found_rows::val_int()
|
|||
Field *
|
||||
Item_func_sp::tmp_table_field(TABLE *t_arg)
|
||||
{
|
||||
Field *res= 0;
|
||||
Field *field= 0;
|
||||
DBUG_ENTER("Item_func_sp::tmp_table_field");
|
||||
|
||||
if (m_sp)
|
||||
res= m_sp->create_result_field(max_length, (const char*) name, t_arg);
|
||||
field= m_sp->create_result_field(max_length, (const char*) name, t_arg);
|
||||
|
||||
if (!res)
|
||||
res= Item_func::tmp_table_field(t_arg);
|
||||
if (!field)
|
||||
field= Item_func::tmp_table_field(t_arg);
|
||||
|
||||
DBUG_RETURN(res);
|
||||
if (!field)
|
||||
my_message(ER_OUT_OF_RESOURCES, ER(ER_OUT_OF_RESOURCES), MYF(0));
|
||||
|
||||
DBUG_RETURN(field);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue