diff options
author | unknown <tonu@volk.internalnet> | 2001-09-22 22:32:43 +0800 |
---|---|---|
committer | unknown <tonu@volk.internalnet> | 2001-09-22 22:32:43 +0800 |
commit | a6397f17f7d28a45f38956971a0cbfa9fbc5a371 (patch) | |
tree | 87ae13dc38b8ce2245346961c9fe7466017f83af /sql | |
parent | ce7075e82cb6b91fb9baaa900e5fce1a80cc26e1 (diff) | |
download | mariadb-git-a6397f17f7d28a45f38956971a0cbfa9fbc5a371.tar.gz |
SSL parser changes to allow SSL specific GRANT commands
Build-tools/Do-all-build-steps:
We need to test SSL stuff. Now we do it.
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'sql')
-rw-r--r-- | sql/lex.h | 4 | ||||
-rw-r--r-- | sql/sql_lex.h | 1 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 35 |
3 files changed, 36 insertions, 4 deletions
diff --git a/sql/lex.h b/sql/lex.h index 1d481aa7c85..b72b42f2a3d 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -83,6 +83,7 @@ static SYMBOL symbols[] = { { "CHANGED", SYM(CHANGED),0,0}, { "CHECK", SYM(CHECK_SYM),0,0}, { "CHECKSUM", SYM(CHECKSUM_SYM),0,0}, + { "CHIPHER", SYM(CHIPHER_SYM),0,0}, { "CLOSE", SYM(CLOSE_SYM),0,0}, { "COLUMN", SYM(COLUMN_SYM),0,0}, { "COLUMNS", SYM(COLUMNS),0,0}, @@ -190,6 +191,7 @@ static SYMBOL symbols[] = { { "IS", SYM(IS),0,0}, { "ISOLATION", SYM(ISOLATION),0,0}, { "ISAM", SYM(ISAM_SYM),0,0}, + { "ISSUER", SYM(ISSUER_SYM),0,0}, { "JOIN", SYM(JOIN_SYM),0,0}, { "KEY", SYM(KEY_SYM),0,0}, { "KEYS", SYM(KEYS),0,0}, @@ -277,6 +279,7 @@ static SYMBOL symbols[] = { { "REPAIR", SYM(REPAIR),0,0}, { "REPLACE", SYM(REPLACE),0,0}, { "REPEATABLE", SYM(REPEATABLE_SYM),0,0}, + { "REQUIRE", SYM(REQUIRE_SYM),0,0}, { "RESET", SYM(RESET_SYM),0,0}, { "RESTORE", SYM(RESTORE_SYM),0,0}, { "RESTRICT", SYM(RESTRICT),0,0}, @@ -322,6 +325,7 @@ static SYMBOL symbols[] = { { "STRING", SYM(STRING_SYM),0,0}, { "STOP", SYM(STOP_SYM),0,0}, { "STRIPED", SYM(RAID_STRIPED_SYM),0,0}, + { "SUBJECT", SYM(SUBJECT_SYM),0,0}, { "TABLE", SYM(TABLE_SYM),0,0}, { "TABLES", SYM(TABLES),0,0}, { "TEMPORARY", SYM(TEMPORARY),0,0}, diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 4d2441da246..ff404cce0d6 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -145,6 +145,7 @@ typedef struct st_lex { char *length,*dec,*change,*name; char *backup_dir; /* For RESTORE/BACKUP */ char* to_log; /* For PURGE MASTER LOGS TO */ + char* ssl_subject,*ssl_issuer,*ssl_chipher; String *wild; sql_exchange *exchange; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 5be1b86e8ab..c1933552f6b 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -98,7 +98,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token MIN_SYM %token SUM_SYM %token STD_SYM - +%token ABORT_SYM %token ADD %token ALTER %token AFTER_SYM @@ -134,7 +134,6 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token BINLOG_SYM %token EVENTS_SYM -%token ABORT_SYM %token ACTION %token AGGREGATE_SYM %token ALL @@ -450,6 +449,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token SQL_QUOTE_SHOW_CREATE %token SQL_SLAVE_SKIP_COUNTER +%token ISSUER_SYM +%token SUBJECT_SYM +%token CIPHER_SYM + %left SET_VAR %left OR_OR_CONCAT OR %left AND @@ -2819,6 +2822,7 @@ keyword: | CHANGED {} | CHECKSUM_SYM {} | CHECK_SYM {} + | CIPHER_SYM {} | CLOSE_SYM {} | COMMENT_SYM {} | COMMIT_SYM {} @@ -2856,6 +2860,7 @@ keyword: | INDEXES {} | ISOLATION {} | ISAM_SYM {} + | ISSUER_SYM {} | INNOBASE_SYM {} | LAST_SYM {} | LEVEL_SYM {} @@ -2909,10 +2914,10 @@ keyword: | SESSION_SYM {} | SHARE_SYM {} | SHUTDOWN {} - | START_SYM {} | STATUS_SYM {} | STOP_SYM {} | STRING_SYM {} + | SUBJECT_SYM {} | TEMPORARY {} | TEXT_SYM {} | TRANSACTION_SYM {} @@ -3251,9 +3256,10 @@ grant: lex->columns.empty(); lex->grant= lex->grant_tot_col=0; lex->select->db=0; + lex->ssl_chipher=lex->ssl_subject=lex->ssl_issuer=0; } grant_privileges ON opt_table TO_SYM user_list - grant_option + grant_option require_clause grant_privileges: grant_privilege_list {} @@ -3287,6 +3293,27 @@ grant_privilege: | FILE_SYM { Lex->grant |= FILE_ACL;} | GRANT OPTION { Lex->grant |= GRANT_ACL;} +require_clause: /* empty */ + | REQUIRE_SYM require_list + + +require_list: require_list_element AND require_list +| require_list_element + + +require_list_element: SUBJECT_SYM TEXT_STRING + { + Lex->ssl_subject=$2.str; + } + | ISSUER_SYM TEXT_STRING + { + Lex->ssl_issuer=$2.str; + } + | CHIPHER_SYM TEXT_STRING + { + Lex->ssl_chipher=$2.str; + } + opt_table: '*' { |