• Sergey Glukhov's avatar
    Bug#51494 crash with join, explain and 'sounds like' operator · caa1ccb0
    Sergey Glukhov authored
    The crash happens because of discrepancy between values of
    conts_tables and join->const_table_map(make_join_statisctics).
    Calculation of conts_tables used condition with
    HA_STATS_RECORDS_IS_EXACT flag check. Calculation of
    join->const_table_map does not use this flag check.
    In case of MERGE table without union with index
    the table does not become const table and
    thus join_read_const_table() is not called
    for the table. join->const_table_map supposes
    this table is const and later in make_join_select
    this table is used for making&calculation const
    condition. As table record buffer is not populated
    it leads to crash.
    The fix is adding a check if an engine supports
    HA_STATS_RECORDS_IS_EXACT flag before updating
    join->const_table_map.
    
    
    mysql-test/r/merge.result:
      test result
    mysql-test/t/merge.test:
      test case
    sql/sql_select.cc:
      adding a check if an engine supports
      HA_STATS_RECORDS_IS_EXACT flag before updating
      join->const_table_map.
    caa1ccb0
merge.test 52 KB