diff options
author | Daniel Black <daniel@mariadb.org> | 2020-11-07 10:13:17 +1100 |
---|---|---|
committer | Daniel Black <daniel@mariadb.org> | 2020-11-07 10:13:21 +1100 |
commit | 4de7b1121f71af49d6e60e979da216eec89b37e5 (patch) | |
tree | bf731240e91adf13c934c72d6f7019a620dbbd56 | |
parent | add67826361738688bc08dc3582eac8a0be5e92e (diff) | |
download | mariadb-git-bb-MDEV-24098-show-create-user-oracle-syntax.tar.gz |
MDEV-24098 (Oracle syntax) CREATE USER/ALTER USER PASSWORD EXPIRE/LOCK in either orderbb-MDEV-24098-show-create-user-oracle-syntax
tested with:
$ mysql-test/mtr --mem --mysqld=--sql-mode=ORACLE main.lock_user
Observed Oracle syntax quoting difference in `SHOW CREATE USER`
output only.
Omission in syntax noticed by Robert Bindar.
-rw-r--r-- | sql/sql_yacc_ora.yy | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/sql/sql_yacc_ora.yy b/sql/sql_yacc_ora.yy index a7b1b880943..ac4929468b1 100644 --- a/sql/sql_yacc_ora.yy +++ b/sql/sql_yacc_ora.yy @@ -2434,7 +2434,7 @@ create: MYSQL_YYABORT; } | create_or_replace USER_SYM opt_if_not_exists clear_privileges - grant_list opt_require_clause opt_resource_options opt_account_locking opt_password_expiration + grant_list opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration { if (unlikely(Lex->set_command_with_check(SQLCOM_CREATE_USER, $1 | $3))) @@ -8128,7 +8128,7 @@ alter: } OPTIONS_SYM '(' server_options_list ')' { } /* ALTER USER foo is allowed for MySQL compatibility. */ | ALTER USER_SYM opt_if_exists clear_privileges grant_list - opt_require_clause opt_resource_options opt_account_locking opt_password_expiration + opt_require_clause opt_resource_options opt_account_locking_and_opt_password_expiration { Lex->create_info.set($3); Lex->sql_command= SQLCOM_ALTER_USER; @@ -8167,39 +8167,46 @@ alter: } ; -opt_account_locking: - /* Nothing */ {} - | ACCOUNT_SYM LOCK_SYM +account_locking_option: + LOCK_SYM { Lex->account_options.account_locked= ACCOUNTLOCK_LOCKED; } - | ACCOUNT_SYM UNLOCK_SYM + | UNLOCK_SYM { Lex->account_options.account_locked= ACCOUNTLOCK_UNLOCKED; } ; -opt_password_expiration: - /* Nothing */ {} - | PASSWORD_SYM EXPIRE_SYM + +opt_password_expire_option: + /* empty */ { Lex->account_options.password_expire= PASSWORD_EXPIRE_NOW; } - | PASSWORD_SYM EXPIRE_SYM NEVER_SYM + | NEVER_SYM { Lex->account_options.password_expire= PASSWORD_EXPIRE_NEVER; } - | PASSWORD_SYM EXPIRE_SYM DEFAULT + | DEFAULT { Lex->account_options.password_expire= PASSWORD_EXPIRE_DEFAULT; } - | PASSWORD_SYM EXPIRE_SYM INTERVAL_SYM NUM DAY_SYM + | INTERVAL_SYM NUM DAY_SYM { Lex->account_options.password_expire= PASSWORD_EXPIRE_INTERVAL; - if (!(Lex->account_options.num_expiration_days= atoi($4.str))) - my_yyabort_error((ER_WRONG_VALUE, MYF(0), "DAY", $4.str)); + if (!(Lex->account_options.num_expiration_days= atoi($2.str))) + my_yyabort_error((ER_WRONG_VALUE, MYF(0), "DAY", $2.str)); } ; +opt_account_locking_and_opt_password_expiration: + /* empty */ + | ACCOUNT_SYM account_locking_option + | PASSWORD_SYM EXPIRE_SYM opt_password_expire_option + | ACCOUNT_SYM account_locking_option PASSWORD_SYM EXPIRE_SYM opt_password_expire_option + | PASSWORD_SYM EXPIRE_SYM opt_password_expire_option ACCOUNT_SYM account_locking_option + ; + ev_alter_on_schedule_completion: /* empty */ { $$= 0;} | ON SCHEDULE_SYM ev_schedule_time { $$= 1; } |