• Monty's avatar
    MDEV-22935 Erroneous Aria Index / Optimizer behaviour · 38cbef8b
    Monty authored
    The problem was in the Aria part of the range optimizer,
    maria_records_in_range(), which wrong concluded that there was no rows
    in the range.
    
    This error would happen in the unlikely case when searching for a range
    on a partial key and there was a match for the first key part in the
    upper part of the b-tree (node) and also a match in the underlying
    node page.
    
    In other words, for this bug to happen one have to use Aria, have a multi
    part key with a lot of identical values for the first key part and do a
    range search on the second part of the key.
    
    Fixed by ensuring that we do not stop searching for partial keys found
    on node.
    
    Other things:
    - Added some comments
    - Changed a variable name to more clearly explain it's purpose.
    - Fixed wrong cast in _ma_record_pos() that could cause problems on 32 bit
      systems.
    38cbef8b
range.result 295 Bytes