• Gleb Shchepa's avatar
    Bug #50096: CONCAT_WS inside procedure returning wrong data · 30212033
    Gleb Shchepa authored
    Selecting of the CONCAT_WS(...<PS parameter>...) result into
    a user variable may return wrong data.
    
    Item_func_concat_ws::val_str contains a number of memory
    allocation-saving optimization tricks. After the fix
    for bug 46815 the control flow has been changed to a
    branch that is commented as "This is quite uncommon!":
    one of places where we are trying to concatenate
    strings inplace. However, that "uncommon" place
    didn't care about PS parameters, that have another
    trick in Item_sp_variable::val_str(): they use the
    intermediate Item_sp_variable::str_value field,
    where they may store a reference to an external
    argument's buffer.
    
    The Item_func_concat_ws::val_str function has been
    modified to take into account val_str functions
    (such as Item_sp_variable::val_str) that return a
    pointer to an internal Item member variable that
    may reference to a buffer provided.
    30212033
item_strfunc.cc 91 KB