mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
Fixed on BUG#6048: Stored procedure causes operating system reboot
Memory leak in locally evalutated expressions during SP execution fixed by reusing allocated item slots when possible. Note: No test case added, since the test is a stress test that tries to make the machine to run out of memory. Second attempt, now tested with debug build, valgrind build, max (optimized) build, with and without --debug, --vagrind and --ps-protocol. Errors in trigger and view test with --debug in debug build where present before this patch, and likewise for valgrind warnings for view test in valgrind build with --ps-protocol. sql/item.cc: Init rsize in Item (for SP item reusal). sql/item.h: Addes special new operator for reuse of Items, for SP internal use only. sql/sp_head.cc: Reuse items assigned internally in SPs when possible. sql/sp_rcontext.cc: Reuse items assigned internally in SPs when possible. Moved the local variable assignment here (from sp_head) to avoid duplicated code. sql/sp_rcontext.h: New arg to sp_rcontext::set_item_eval() (and some coding style). sql/sql_class.cc: Adjusted call to new set_item_eval().
This commit is contained in:
@@ -1746,7 +1746,8 @@ bool select_dumpvar::send_data(List<Item> &items)
|
||||
{
|
||||
if ((yy=var_li++))
|
||||
{
|
||||
if (thd->spcont->set_item_eval(yy->get_offset(), it.ref(), zz->type))
|
||||
if (thd->spcont->set_item_eval(current_thd,
|
||||
yy->get_offset(), it.ref(), zz->type))
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user