1
0
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:
Sergey Petrunya
2014-10-10 23:52:47 +04:00
parent 6871731053
commit 1b960d9fd6
3 changed files with 74 additions and 1 deletions

View File

@@ -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;
}
}
}