• gshchepa/uchum@host.loc's avatar
    Fixed bug #34620: item_row.cc:50: Item_row::illegal_method_call(const char*): · c5110674
    gshchepa/uchum@host.loc authored
                      Assertion `0' failed
    
    If ROW item is a part of an expression that also has
    aggregate function calls (COUNT/SUM/AVG...), a
    "splitting" with an Item::split_sum_func2 function
    is applied to that ROW item.
    Current implementation of Item::split_sum_func2
    replaces this Item_row with a newly created
    Item_aggregate_ref reference to it.
    Then the row cache tries to work with the
    Item_aggregate_ref object as with the Item_row object:
    row cache calls row-emulation methods such as cols and
    element_index. Item_aggregate_ref (like it's parent
    Item_ref) inherits dummy implementations of those
    methods from the hierarchy root Item, and call to
    them leads to failed assertions and wrong data
    output.
    
    Row-emulation virtual functions (cols, element_index, addr,
    check_cols, null_inside and bring_value) of Item_ref have
    been overloaded to forward calls to an underlying item
    reference.
    
    c5110674
item.h 86.3 KB