diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index de4bfd0436b..ae654553b78 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5405,11 +5405,10 @@ end_with_restore_list: } if (first_table) { - if (lex->type == TYPE_ENUM_PROCEDURE || - lex->type == TYPE_ENUM_FUNCTION) + const Sp_handler *sph= Sp_handler::handler((stored_procedure_type) + lex->type); + if (sph) { - const Sp_handler *sph= Sp_handler::handler((stored_procedure_type) - lex->type); uint grants= lex->all_privileges ? (PROC_ACLS & ~GRANT_ACL) | (lex->grant & GRANT_ACL) : lex->grant; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 116af627adc..1e529d9fed8 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -6031,10 +6031,7 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table, check_some_routine_access(thd, db.str, name.str, sph)) return 0; - if ((lex->sql_command == SQLCOM_SHOW_STATUS_PROC && - sph->type() == TYPE_ENUM_PROCEDURE) || - (lex->sql_command == SQLCOM_SHOW_STATUS_FUNC && - sph->type() == TYPE_ENUM_FUNCTION) || + if (sph == Sp_handler::handler(lex->sql_command)|| (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) { restore_record(table, s->default_values);