diff options
| author | Oleksandr Byelkin <sanja@mariadb.com> | 2019-05-04 17:04:55 +0200 |
|---|---|---|
| committer | Oleksandr Byelkin <sanja@mariadb.com> | 2019-05-04 17:04:55 +0200 |
| commit | 8cbb14ef5d180687f131bc44a4e8fc84083d033c (patch) | |
| tree | 091f11e2d20f95656a7b12294782eb0488fd4fcc /sql/sql_statistics.cc | |
| parent | 4345868382ca3525de5eb432302b6b9b957b47c1 (diff) | |
| parent | b85aa20065504bdda4bc03c2bd7eb7de38865c5d (diff) | |
| download | mariadb-git-8cbb14ef5d180687f131bc44a4e8fc84083d033c.tar.gz | |
Merge branch '10.1' into 10.2
Diffstat (limited to 'sql/sql_statistics.cc')
| -rw-r--r-- | sql/sql_statistics.cc | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc index 3c26f58073d..a3e446f5f20 100644 --- a/sql/sql_statistics.cc +++ b/sql/sql_statistics.cc @@ -3299,12 +3299,13 @@ int read_statistics_for_tables_if_needed(THD *thd, TABLE_LIST *tables) if (table_share->stats_cb.stats_is_read) tl->table->stats_is_read= TRUE; if (thd->variables.optimizer_use_condition_selectivity > 3 && - table_share && !table_share->stats_cb.histograms_are_read) + table_share && table_share->stats_cb.stats_can_be_read && + !table_share->stats_cb.histograms_are_read) { (void) read_histograms_for_table(thd, tl->table, stat_tables); table_share->stats_cb.histograms_are_read= TRUE; } - if (table_share->stats_cb.stats_is_read) + if (table_share->stats_cb.histograms_are_read) tl->table->histograms_are_read= TRUE; } } @@ -4084,6 +4085,14 @@ bool is_stat_table(const char *db, const char *table) bool is_eits_usable(Field *field) { + Column_statistics* col_stats= field->read_stats; + + // check if column_statistics was allocated for this field + if (!col_stats) + return false; + + DBUG_ASSERT(field->table->stats_is_read); + /* (1): checks if we have EITS statistics for a particular column (2): Don't use EITS for GEOMETRY columns @@ -4091,10 +4100,9 @@ bool is_eits_usable(Field *field) partition list of a table. We assume the selecticivity for such columns would be handled during partition pruning. */ - DBUG_ASSERT(field->table->stats_is_read); - Column_statistics* col_stats= field->read_stats; - return col_stats && !col_stats->no_stat_values_provided() && //(1) - field->type() != MYSQL_TYPE_GEOMETRY && //(2) + + return !col_stats->no_stat_values_provided() && //(1) + field->type() != MYSQL_TYPE_GEOMETRY && //(2) #ifdef WITH_PARTITION_STORAGE_ENGINE (!field->table->part_info || !field->table->part_info->field_in_partition_expr(field)) && //(3) |
