diff options
| author | Sergei Petrunia <psergey@askmonty.org> | 2020-07-29 23:26:09 +0300 |
|---|---|---|
| committer | Sergei Petrunia <psergey@askmonty.org> | 2020-07-29 23:27:40 +0300 |
| commit | 7e9ffc69ecd1bddf731391b01e6be221efb6f8ef (patch) | |
| tree | 48d86d69e6684c2855f575e31fff39fa23546ca7 /sql/sql_admin.cc | |
| parent | e54a7ac1b38f77b64a0aafeb165082a9788d56f8 (diff) | |
| download | mariadb-git-7e9ffc69ecd1bddf731391b01e6be221efb6f8ef.tar.gz | |
MDEV-21472: ALTER TABLE ... ANALYZE PARTITION ... with EITS reads and locks all rows
Do not collect EITS statistics for this statement:
ALTER TABLE t ANALYZE PARTITION p
EITS stats are currently global, not per-partition.
Collecting global stats when we are asked to process just one partition
causes issues for DBAs.
Diffstat (limited to 'sql/sql_admin.cc')
| -rw-r--r-- | sql/sql_admin.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc index 4afaff58223..beecf3fae64 100644 --- a/sql/sql_admin.cc +++ b/sql/sql_admin.cc @@ -727,8 +727,18 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, { compl_result_code= result_code= HA_ADMIN_INVALID; } + + /* + The check for Alter_info::ALTER_ADMIN_PARTITION implements this logic: + do not collect EITS STATS for this syntax: + ALTER TABLE ... ANALYZE PARTITION p + EITS statistics is global (not per-partition). Collecting global stats + is much more expensive processing just one partition, so the most + appropriate action is to just not collect EITS stats for this command. + */ collect_eis= (table->table->s->table_category == TABLE_CATEGORY_USER && + !(lex->alter_info.flags &= Alter_info::ALTER_ADMIN_PARTITION) && (get_use_stat_tables_mode(thd) > NEVER || lex->with_persistent_for_clause)); |
