1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-05 13:16:09 +03:00

Ensure that test_quick_select doesn't return more rows than in the table

Other changes:
- In test_quick_select(), assume that if table->used_stats_records is 0
  then the table has 0 rows.
- Fixed prepare_simple_select() to populate table->used_stat_records
- Enusre that set_statistics_for_tables() doesn't cause used_stats_records
  to be 0 when using stat_tables.
- To get blackhole to work with replication, set stats.records to 2 so
  that test_quick_select() doesn't assume the table is empty.
This commit is contained in:
Monty
2021-10-05 17:08:16 +03:00
committed by Sergei Petrunia
parent 8b977a6c3a
commit c443dbff0e
16 changed files with 85 additions and 50 deletions

View File

@@ -3741,10 +3741,15 @@ void set_statistics_for_table(THD *thd, TABLE *table)
{
TABLE_STATISTICS_CB *stats_cb= &table->s->stats_cb;
Table_statistics *read_stats= stats_cb->table_stats;
table->used_stat_records=
/*
The MAX below is to ensure that we don't return 0 rows for a table if it
not guaranteed to be empty.
*/
table->used_stat_records=
(!check_eits_preferred(thd) ||
!table->stats_is_read || read_stats->cardinality_is_null) ?
table->file->stats.records : read_stats->cardinality;
table->file->stats.records : MY_MAX(read_stats->cardinality, 1);
/*
For partitioned table, EITS statistics is based on data from all partitions.