mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug#51494 crash with join, explain and 'sounds like' operator
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.
This commit is contained in:
@@ -2943,7 +2943,8 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables_arg, COND *conds,
|
||||
s->quick=select->quick;
|
||||
s->needed_reg=select->needed_reg;
|
||||
select->quick=0;
|
||||
if (records == 0 && s->table->reginfo.impossible_range)
|
||||
if (records == 0 && s->table->reginfo.impossible_range &&
|
||||
(s->table->file->ha_table_flags() & HA_STATS_RECORDS_IS_EXACT))
|
||||
{
|
||||
/*
|
||||
Impossible WHERE or ON expression
|
||||
|
||||
Reference in New Issue
Block a user