diff options
author | Sergei Golubchik <serg@mariadb.org> | 2019-10-30 23:38:05 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2019-10-30 23:38:05 +0100 |
commit | fd6dfb3b54bdfb85b2d48bbe1a2ddabb2da7401b (patch) | |
tree | 9bf1a1831e8acc154c2bb781f1e5b8f1bbe47df4 /sql | |
parent | 6680b049618f8780fa4800a83553fd1ba88f905b (diff) | |
parent | 313855766f3ce608001d686553ef6e087a70d264 (diff) | |
download | mariadb-git-fd6dfb3b54bdfb85b2d48bbe1a2ddabb2da7401b.tar.gz |
Merge branch 'github/10.1' into 10.2
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_class.h | 4 | ||||
-rw-r--r-- | sql/sql_statistics.cc | 13 |
2 files changed, 9 insertions, 8 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h index e3719f1c0fe..b35f9a93238 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1579,12 +1579,16 @@ public: /** @class Sub_statement_state @brief Used to save context when executing a function or trigger + + operations on stat tables aren't technically a sub-statement, but they are + similar in a sense that they cannot change the transaction status. */ /* Defines used for Sub_statement_state::in_sub_stmt */ #define SUB_STMT_TRIGGER 1 #define SUB_STMT_FUNCTION 2 +#define SUB_STMT_STAT_TABLES 4 class Sub_statement_state diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc index ac471c6894d..f8723a4f8ee 100644 --- a/sql/sql_statistics.cc +++ b/sql/sql_statistics.cc @@ -258,10 +258,8 @@ index_stat_def= {INDEX_STAT_N_FIELDS, index_stat_fields, 4, index_stat_pk_col}; Open all statistical tables and lock them */ -static -inline int open_stat_tables(THD *thd, TABLE_LIST *tables, - Open_tables_backup *backup, - bool for_write) +static int open_stat_tables(THD *thd, TABLE_LIST *tables, + Open_tables_backup *backup, bool for_write) { int rc; @@ -269,12 +267,14 @@ inline int open_stat_tables(THD *thd, TABLE_LIST *tables, thd->push_internal_handler(&deh); init_table_list_for_stat_tables(tables, for_write); init_mdl_requests(tables); + thd->in_sub_stmt|= SUB_STMT_STAT_TABLES; rc= open_system_tables_for_read(thd, tables, backup); + thd->in_sub_stmt&= ~SUB_STMT_STAT_TABLES; thd->pop_internal_handler(); /* If the number of tables changes, we should revise the check below. */ - DBUG_ASSERT(STATISTICS_TABLES == 3); + compile_time_assert(STATISTICS_TABLES == 3); if (!rc && (stat_table_intact.check(tables[TABLE_STAT].table, &table_stat_def) || @@ -3276,10 +3276,7 @@ int read_statistics_for_tables(THD *thd, TABLE_LIST *tables) DBUG_RETURN(0); if (open_stat_tables(thd, stat_tables, &open_tables_backup, FALSE)) - { - thd->clear_error(); DBUG_RETURN(1); - } for (TABLE_LIST *tl= tables; tl; tl= tl->next_global) { |