Refactored yacc grammar to make use of named constants.
This commit is contained in:
parent
3566f317c0
commit
81b2856e10
@ -184,6 +184,17 @@ static LEX_STRING old_password_plugin_name= {
|
||||
/// @todo make it configurable
|
||||
LEX_STRING *default_auth_plugin_name= &native_password_plugin_name;
|
||||
|
||||
/*
|
||||
Constant used for differentiating specified user names and non specified
|
||||
usernames. Example: userA -- userA@%
|
||||
*/
|
||||
const char *HOST_NOT_SPECIFIED= "%";
|
||||
/*
|
||||
Constant used in the SET ROLE NONE command
|
||||
*/
|
||||
const char *NONE_ROLE= "NONE";
|
||||
|
||||
|
||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||
static plugin_ref old_password_plugin;
|
||||
#endif
|
||||
|
@ -173,6 +173,9 @@ enum mysql_db_table_field
|
||||
extern const TABLE_FIELD_DEF mysql_db_table_def;
|
||||
extern bool mysql_user_table_is_in_short_password_format;
|
||||
|
||||
extern const char *HOST_NOT_SPECIFIED;
|
||||
extern const char *NONE_ROLE;
|
||||
|
||||
|
||||
static inline int access_denied_error_code(int passwd_used)
|
||||
{
|
||||
|
@ -1570,7 +1570,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
|
||||
|
||||
%type <symbol> keyword keyword_sp
|
||||
|
||||
%type <lex_user> user specified_user grant_user role
|
||||
%type <lex_user> user grant_user
|
||||
|
||||
%type <charset>
|
||||
opt_collate
|
||||
@ -1624,7 +1624,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
|
||||
opt_option opt_place
|
||||
opt_attribute opt_attribute_list attribute column_list column_list_id
|
||||
opt_column_list grant_privileges grant_ident grant_list grant_option
|
||||
grant_list_with_roles
|
||||
object_privilege object_privilege_list user_list rename_list
|
||||
clear_privileges flush_options flush_option
|
||||
opt_with_read_lock flush_options_list
|
||||
@ -13163,8 +13162,24 @@ ident_or_text:
|
||||
| LEX_HOSTNAME { $$=$1;}
|
||||
;
|
||||
|
||||
specified_user:
|
||||
ident_or_text '@' ident_or_text
|
||||
user:
|
||||
ident_or_text
|
||||
{
|
||||
if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
|
||||
MYSQL_YYABORT;
|
||||
$$->user = $1;
|
||||
$$->host.str= (char *)HOST_NOT_SPECIFIED;
|
||||
$$->host.length= 1;
|
||||
$$->password= null_lex_str;
|
||||
$$->plugin= empty_lex_str;
|
||||
$$->auth= empty_lex_str;
|
||||
|
||||
if (check_string_char_length(&$$->user, ER(ER_USERNAME),
|
||||
username_char_length,
|
||||
system_charset_info, 0))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
| ident_or_text '@' ident_or_text
|
||||
{
|
||||
if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
|
||||
MYSQL_YYABORT;
|
||||
@ -13198,46 +13213,6 @@ specified_user:
|
||||
}
|
||||
;
|
||||
|
||||
user:
|
||||
ident_or_text
|
||||
{
|
||||
if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
|
||||
MYSQL_YYABORT;
|
||||
$$->user = $1;
|
||||
$$->host.str= (char *) "%";
|
||||
$$->host.length= 1;
|
||||
$$->password= null_lex_str;
|
||||
$$->plugin= empty_lex_str;
|
||||
$$->auth= empty_lex_str;
|
||||
|
||||
if (check_string_char_length(&$$->user, ER(ER_USERNAME),
|
||||
username_char_length,
|
||||
system_charset_info, 0))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
|
|
||||
specified_user {$$ = $1;}
|
||||
;
|
||||
|
||||
role:
|
||||
ident_or_text
|
||||
{
|
||||
if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
|
||||
MYSQL_YYABORT;
|
||||
$$->user = $1;
|
||||
$$->host.str= (char *) "";
|
||||
$$->host.length= 0;
|
||||
$$->password= null_lex_str;
|
||||
$$->plugin= empty_lex_str;
|
||||
$$->auth= empty_lex_str;
|
||||
|
||||
if (check_string_char_length(&$$->user, ER(ER_USERNAME),
|
||||
username_char_length,
|
||||
system_charset_info, 0))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
;
|
||||
|
||||
/* Keyword that we allow for identifiers (except SP labels) */
|
||||
keyword:
|
||||
keyword_sp {}
|
||||
@ -14271,7 +14246,7 @@ revoke_command:
|
||||
lex->sql_command= SQLCOM_REVOKE;
|
||||
lex->type= TYPE_ENUM_PROXY;
|
||||
}
|
||||
| grant_role FROM grant_list_with_roles
|
||||
| grant_role FROM grant_list
|
||||
{
|
||||
LEX *lex= Lex;
|
||||
lex->sql_command= SQLCOM_REVOKE_ROLE;
|
||||
@ -14325,7 +14300,7 @@ grant_command:
|
||||
lex->sql_command= SQLCOM_GRANT;
|
||||
lex->type= TYPE_ENUM_PROXY;
|
||||
}
|
||||
| grant_role TO_SYM grant_list_with_roles
|
||||
| grant_role TO_SYM grant_list
|
||||
{
|
||||
LEX *lex= Lex;
|
||||
lex->sql_command= SQLCOM_GRANT_ROLE;
|
||||
@ -14520,30 +14495,6 @@ user_list:
|
||||
}
|
||||
;
|
||||
|
||||
grant_list_with_roles:
|
||||
role
|
||||
{
|
||||
if (Lex->users_list.push_back($1))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
| specified_user
|
||||
{
|
||||
if (Lex->users_list.push_back($1))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
| grant_list_with_roles ',' role
|
||||
{
|
||||
if (Lex->users_list.push_back($3))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
| grant_list_with_roles ',' specified_user
|
||||
{
|
||||
if (Lex->users_list.push_back($3))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
grant_list:
|
||||
grant_user
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user