diff options
-rw-r--r-- | sql/mysql_priv.h | 1 | ||||
-rw-r--r-- | sql/mysqld.cc | 10 | ||||
-rw-r--r-- | sql/sql_base.cc | 2 | ||||
-rw-r--r-- | sql/sql_table.cc | 2 |
4 files changed, 12 insertions, 3 deletions
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index d9d61a84684..9b1f4423eee 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -2237,6 +2237,7 @@ extern char* opt_secure_file_priv; extern my_bool opt_log_slow_admin_statements, opt_log_slow_slave_statements; extern my_bool opt_query_cache_strip_comments; extern my_bool sp_automatic_privileges, opt_noacl; +extern my_bool opt_no_stat_tables; extern my_bool opt_old_style_user_limits, trust_function_creators; extern uint opt_crash_binlog_innodb; extern char *shared_memory_base_name, *mysqld_unix_port; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 4868ded7d00..66b145a9300 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -626,6 +626,7 @@ my_bool opt_old_style_user_limits= 0, trust_function_creators= 0; */ volatile bool mqh_used = 0; my_bool opt_noacl; +my_bool opt_no_stat_tables; my_bool sp_automatic_privileges= 1; ulong opt_binlog_rows_event_max_size; @@ -6191,7 +6192,8 @@ enum options_mysqld OPT_MAX_LONG_DATA_SIZE, OPT_MASTER_VERIFY_CHECKSUM, OPT_SLAVE_SQL_VERIFY_CHECKSUM, - OPT_QUERY_CACHE_STRIP_COMMENTS + OPT_QUERY_CACHE_STRIP_COMMENTS, + OPT_SKIP_STAT_TABLES }; @@ -7018,6 +7020,11 @@ each time the SQL thread starts.", &opt_noacl, &opt_noacl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, #endif + {"skip-stat-tables", OPT_SKIP_STAT_TABLES, + "Start without statistical tables. Statistical data on table cardinalities, " + "columns and indexes from these tables become unavailable", + &opt_no_stat_tables, &opt_no_stat_tables, 0, GET_BOOL, NO_ARG, + 0, 0, 0, 0, 0, 0}, {"skip-host-cache", OPT_SKIP_HOST_CACHE, "Don't cache host names.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"skip-locking", OPT_SKIP_LOCK, @@ -9220,6 +9227,7 @@ mysqld_get_one_option(int optid, break; case OPT_BOOTSTRAP: opt_noacl=opt_bootstrap=1; + opt_no_stat_tables= 1; break; case OPT_LOG_SLOW_FILTER: global_system_variables.log_slow_filter= diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 5a4e2f53fe9..632639d60de 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4855,7 +4855,7 @@ int open_tables(THD *thd, TABLE_LIST **start, uint *counter, uint flags) parent_l->next_global= *parent_l->table->child_last_l; } - if (thd->variables.optimizer_use_stat_tables > 0) + if (!opt_no_stat_tables && thd->variables.optimizer_use_stat_tables > 0) { if (tables->table && tables->table->s && tables->table->s->table_category != TABLE_CATEGORY_SYSTEM) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index c057834bdcc..cdf215a3bc7 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4956,7 +4956,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, DBUG_PRINT("admin", ("operator_func returned: %d", result_code)); } - if (operator_func == &handler::ha_analyze && + if (operator_func == &handler::ha_analyze && !opt_no_stat_tables && thd->variables.optimizer_use_stat_tables > 0) { if (!(compl_result_code= |