diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index c2b2bdc54b5..f82c68e1889 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -362,8 +362,8 @@ static bool show_database_privileges(THD *, const char *, const char *, char *, size_t); static bool show_table_and_column_privileges(THD *, const char *, const char *, char *, size_t); -static int show_routine_grants(THD *, const char *, const char *, HASH *, - const char *, int, char *, int); +static int show_routine_grants(THD *, const char *, const char *, + const Sp_handler *sph, char *, int); class Grant_tables; class User_table; @@ -8484,12 +8484,12 @@ static bool print_grants_for_role(THD *thd, ACL_ROLE * role) if (show_table_and_column_privileges(thd, role->user.str, "", buff, sizeof(buff))) return TRUE; - if (show_routine_grants(thd, role->user.str, "", &proc_priv_hash, - STRING_WITH_LEN("PROCEDURE"), buff, sizeof(buff))) + if (show_routine_grants(thd, role->user.str, "", &sp_handler_procedure, + buff, sizeof(buff))) return TRUE; - if (show_routine_grants(thd, role->user.str, "", &func_priv_hash, - STRING_WITH_LEN("FUNCTION"), buff, sizeof(buff))) + if (show_routine_grants(thd, role->user.str, "", &sp_handler_function, + buff, sizeof(buff))) return TRUE; return FALSE; @@ -8709,12 +8709,12 @@ bool mysql_show_grants(THD *thd, LEX_USER *lex_user) if (show_table_and_column_privileges(thd, username, hostname, buff, sizeof(buff))) goto end; - if (show_routine_grants(thd, username, hostname, &proc_priv_hash, - STRING_WITH_LEN("PROCEDURE"), buff, sizeof(buff))) + if (show_routine_grants(thd, username, hostname, &sp_handler_procedure, + buff, sizeof(buff))) goto end; - if (show_routine_grants(thd, username, hostname, &func_priv_hash, - STRING_WITH_LEN("FUNCTION"), buff, sizeof(buff))) + if (show_routine_grants(thd, username, hostname, &sp_handler_function, + buff, sizeof(buff))) goto end; if (show_proxy_grants(thd, username, hostname, buff, sizeof(buff))) @@ -9094,12 +9094,13 @@ static bool show_table_and_column_privileges(THD *thd, const char *username, static int show_routine_grants(THD* thd, const char *username, const char *hostname, - HASH *hash, const char *type, int typelen, + const Sp_handler *sph, char *buff, int buffsize) { uint counter, index; int error= 0; Protocol *protocol= thd->protocol; + HASH *hash= sph->get_priv_hash(); /* Add routine access */ for (index=0 ; index < hash->records ; index++) { @@ -9153,7 +9154,7 @@ static int show_routine_grants(THD* thd, } } global.append(STRING_WITH_LEN(" ON ")); - global.append(type,typelen); + global.append(sph->type_lex_cstring()); global.append(' '); append_identifier(thd, &global, grant_proc->db, strlen(grant_proc->db)); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 8f403e0bef8..cd00bb15205 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -124,14 +124,6 @@ static void wsrep_mysql_parse(THD *thd, char *rawbuf, uint length, @{ */ -/* Used in error handling only */ -#define SP_COM_STRING(LP) \ - ((LP)->sql_command == SQLCOM_CREATE_SPFUNCTION || \ - (LP)->sql_command == SQLCOM_ALTER_FUNCTION || \ - (LP)->sql_command == SQLCOM_SHOW_CREATE_FUNC || \ - (LP)->sql_command == SQLCOM_DROP_FUNCTION ? \ - "FUNCTION" : "PROCEDURE") - static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables); static void sql_kill(THD *thd, longlong id, killed_state state, killed_type type); static void sql_kill_user(THD *thd, LEX_USER *user, killed_state state); @@ -5841,11 +5833,11 @@ end_with_restore_list: break; case SP_KEY_NOT_FOUND: my_error(ER_SP_DOES_NOT_EXIST, MYF(0), - SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr()); + sph->type_str(), ErrConvDQName(lex->spname).ptr()); goto error; default: my_error(ER_SP_CANT_ALTER, MYF(0), - SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr()); + sph->type_str(), ErrConvDQName(lex->spname).ptr()); goto error; } break; @@ -5950,18 +5942,18 @@ end_with_restore_list: res= write_bin_log(thd, TRUE, thd->query(), thd->query_length()); push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, ER_SP_DOES_NOT_EXIST, ER_THD(thd, ER_SP_DOES_NOT_EXIST), - SP_COM_STRING(lex), + sph->type_str(), ErrConvDQName(lex->spname).ptr()); if (!res) my_ok(thd); break; } my_error(ER_SP_DOES_NOT_EXIST, MYF(0), - SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr()); + sph->type_str(), ErrConvDQName(lex->spname).ptr()); goto error; default: my_error(ER_SP_DROP_FAILED, MYF(0), - SP_COM_STRING(lex), ErrConvDQName(lex->spname).ptr()); + sph->type_str(), ErrConvDQName(lex->spname).ptr()); goto error; } break; @@ -5992,7 +5984,7 @@ end_with_restore_list: { /* We don't distinguish between errors for now */ my_error(ER_SP_DOES_NOT_EXIST, MYF(0), - SP_COM_STRING(lex), lex->spname->m_name.str); + sph->type_str(), lex->spname->m_name.str); goto error; } break;