diff options
author | Rucha Deodhar <rucha.deodhar@mariadb.com> | 2021-04-26 17:11:51 +0530 |
---|---|---|
committer | Rucha Deodhar <rucha.deodhar@mariadb.com> | 2021-04-26 17:11:51 +0530 |
commit | f73166cded0ee5a3b8615d16a0d91dfd8e867dba (patch) | |
tree | 21a10d71e7ef63e8a718bfc8540745c1f7167e1b /sql | |
parent | 54c460ace606157f2a23706ec98e9de70aba767e (diff) | |
download | mariadb-git-bb-10.3-MDEV-25462.tar.gz |
MDEV-25462: Assertion `m_status == DA_ERROR || m_status == DA_OK ||bb-10.3-MDEV-25462
m_status == DA_OK_BULK' failed in Diagnostics_area::message
from get_schema_tables_record
Analysis: When parsing takes place and we get ER_PARSE_ERROR, error is not set
because we assume we are parsing a stored procedure.
Fix: Set error status if error is ER_PARSE_ERROR and we are not parsing a
stored procedure.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sp.cc | 1 | ||||
-rw-r--r-- | sql/sql_class.h | 1 | ||||
-rw-r--r-- | sql/sql_parse.cc | 1 | ||||
-rw-r--r-- | sql/sql_show.cc | 2 |
4 files changed, 4 insertions, 1 deletions
diff --git a/sql/sp.cc b/sql/sp.cc index ac9203ffb8a..4696ab8f0ae 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -870,6 +870,7 @@ static sp_head *sp_compile(THD *thd, String *defstr, sql_mode_t sql_mode, thd->lex->sphead= parent; thd->push_internal_handler(&warning_handler); thd->spcont= 0; + thd->is_parsing_IS_table=true; if (parse_sql(thd, & parser_state, creation_ctx) || thd->lex == NULL) { diff --git a/sql/sql_class.h b/sql/sql_class.h index c9967b98994..d43b49d56d4 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2814,6 +2814,7 @@ public: bool create_tmp_table_for_derived; bool save_prep_leaf_list; + bool is_parsing_IS_table; /* container for handler's private per-connection data */ Ha_data ha_data[MAX_HA]; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 98a437c5991..e4888bee6fd 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -7586,6 +7586,7 @@ void THD::reset_for_next_command(bool do_clear_error) get_stmt_da()->reset_for_next_command(); rand_used= 0; m_sent_row_count= m_examined_row_count= 0; + is_parsing_IS_table=false; accessed_rows_and_keys= 0; reset_slow_query_state(); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 38b3d62d539..7ed4c3b5696 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -5045,7 +5045,7 @@ public: const char* msg, Sql_condition ** cond_hdl) { if (sql_errno == ER_TRG_NO_DEFINER || sql_errno == ER_TRG_NO_CREATION_CTX - || sql_errno == ER_PARSE_ERROR) + || (sql_errno == ER_PARSE_ERROR && thd->is_parsing_IS_table)) return true; if (*level != Sql_condition::WARN_LEVEL_ERROR) |