Fix for bug #17260 "Multiple invocations of triggers or stored functions
hog memory". During each invocation of stored function or trigger some objects which lifetime is one function call (e.g. sp_rcontext) were allocated on arena/memroot of calling statement. This led to consumption of fixed amount of memory for each function/trigger invocation and so statements which involve lot of them were hogging memory. This in its return led to OOM crashes or freezes. This fix introduces new memroot and arena for objects which lifetime is whole duration of function call. So all memory consumed by such objects is freed at the end of function call. sql/sp_head.cc: sp_head::execute_function(): Introduced new memroot and arena for objects which lifetime is whole duration of function call (e.g. sp_rcontext, sp_cursor). We can't use caller's arena/memroot for those objects because in this case some fixed amount of memory will be consumed for each function/trigger invocation and so statements which involve lot of them will hog memory. Got rid of param_values array to avoid excessive juggling with arenas.
Showing
Please register or sign in to comment