• unknown's avatar
    Fix for bug #17260 "Multiple invocations of triggers or stored functions · 59ff5274
    unknown authored
    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.
    59ff5274
sp_head.cc 87.6 KB