• Sergei Petrunia's avatar
    MDEV-10324: Server crash in get_sel_arg_for_keypart or Assertion · 95c286ce
    Sergei Petrunia authored
    The crash was caused by this problem:
    get_best_group_min_max() tries to construct query plans for keys that
    are not processed by the range optimizer. This wasn't a problem as long
    as SEL_TREE::keys was an array of MAX_KEY elements.
    However, now it is a Mem_root_array and only has elements for the used
    keys, and get_best_group_min_max attempts to address beyond the end of
    the array.
    
    The obvious way to fix the crash was to port (and improve) a part of
    96fcfcbd7b5120e8f64fd45985001eca8d36fbfb from mysql-5.7. This makes
    get_best_group_min_max not to consider indexes that Mem_root_arrays
    have no element for.
    
    After that, I got non-sensical query plans (see MDEV-10325 for details).
    Fixed that by making get_best_group_min_max to check if the index is in
    table->keys_in_use_for_group_by bitmap.
    95c286ce
group_by.result 78 KB