mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-6519: Assertion `join->best_read < double(...)' failed after adding a key to a TokuDB table...
- calculate_cond_selectivity_for_table() should handle the case where index statistics is not available (zeros are returned in rec_per_key)
This commit is contained in:
@@ -3547,7 +3547,19 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item *cond)
|
||||
*/
|
||||
double f1= key_info->actual_rec_per_key(i-1);
|
||||
double f2= key_info->actual_rec_per_key(i);
|
||||
table->cond_selectivity*= f1 / f2;
|
||||
double selectivity_mult;
|
||||
if (f1 > 0 && f2 > 0)
|
||||
selectivity_mult= f1 / f2;
|
||||
else
|
||||
{
|
||||
/*
|
||||
No statistics available, assume the selectivity is proportional
|
||||
to the number of key parts.
|
||||
(i=0 means 1 keypart, i=1 means 2 keyparts, so use i+1)
|
||||
*/
|
||||
selectivity_mult= ((double)(i+1)) / i;
|
||||
}
|
||||
table->cond_selectivity*= selectivity_mult;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user