diff options
author | unknown <igor@rurik.mysql.com> | 2003-10-01 20:16:36 -0700 |
---|---|---|
committer | unknown <igor@rurik.mysql.com> | 2003-10-01 20:16:36 -0700 |
commit | 7c7ee4d2f4ae29df2167b0ca0e9ab6dfd93a1c07 (patch) | |
tree | e1116ef7faa18e25e4ea484099e4c14d6fbbf7f1 /sql/sql_yacc.yy | |
parent | cce14aabfc09628b246b3bc6ba40e6d83308da4f (diff) | |
parent | 7de7c38f2f1b678e6d1894b94dd9abe9de9d8c70 (diff) | |
download | mariadb-git-7c7ee4d2f4ae29df2167b0ca0e9ab6dfd93a1c07.tar.gz |
Manual merge after improving concurrency for key cache reassignment
include/myisam.h:
Auto merged
isam/isamchk.c:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/mi_locking.c:
Auto merged
myisam/mi_search.c:
Auto merged
myisam/mi_write.c:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisamlog.c:
Auto merged
mysql-test/r/func_group.result:
Auto merged
mysys/mf_keycache.c:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/ha_myisam.h:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 68 |
1 files changed, 54 insertions, 14 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 0205d69da00..2334f151ca9 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -676,12 +676,12 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %type <NONE> query verb_clause create change select do drop insert replace insert2 insert_values update delete truncate rename - show describe load alter optimize preload flush + show describe load alter optimize keycache preload flush reset purge begin commit rollback savepoint slave master_def master_defs master_file_def repair restore backup analyze check start checksum field_list field_list_item field_spec kill column_def key_def - preload_list preload_keys + keycache_list assign_to_keycache preload_list preload_keys select_item_list select_item values_list no_braces opt_limit_clause delete_limit_clause fields opt_values values procedure_list procedure_list2 procedure_item @@ -753,6 +753,7 @@ verb_clause: | load | lock | optimize + | keycache | preload | purge | rename @@ -1974,6 +1975,45 @@ table_to_table: YYABORT; }; +keycache: + CACHE_SYM INDEX + { + LEX *lex=Lex; + lex->sql_command=SQLCOM_ASSIGN_TO_KEYCACHE; + } + keycache_list + {} + ; + +keycache_list: + assign_to_keycache + | keycache_list ',' assign_to_keycache; + +assign_to_keycache: + table_ident cache_keys_spec IN_SYM ident + { + LEX *lex=Lex; + SELECT_LEX *sel= &lex->select_lex; + if (!sel->add_table_to_list(lex->thd, $1, NULL, 0, + TL_READ, + sel->get_use_index(), + (List<String> *)0, + &($4))) + YYABORT; + } + | + table_ident cache_keys_spec IN_SYM DEFAULT + { + LEX *lex=Lex; + SELECT_LEX *sel= &lex->select_lex; + if (!sel->add_table_to_list(lex->thd, $1, NULL, 0, + TL_READ, + sel->get_use_index(), + (List<String> *)0)) + YYABORT; + } + ; + preload: LOAD INDEX INTO CACHE_SYM { @@ -1989,7 +2029,7 @@ preload_list: | preload_list ',' preload_keys; preload_keys: - table_ident preload_keys_spec opt_ignore_leaves + table_ident cache_keys_spec opt_ignore_leaves { LEX *lex=Lex; SELECT_LEX *sel= &lex->select_lex; @@ -2001,18 +2041,18 @@ preload_keys: } ; -preload_keys_spec: - keys_or_index { Select->interval_list.empty(); } - preload_key_list_or_empty - { - LEX *lex=Lex; - SELECT_LEX *sel= &lex->select_lex; - sel->use_index= sel->interval_list; - sel->use_index_ptr= &sel->use_index; - } - ; +cache_keys_spec: + keys_or_index { Select->interval_list.empty(); } + cache_key_list_or_empty + { + LEX *lex=Lex; + SELECT_LEX *sel= &lex->select_lex; + sel->use_index= sel->interval_list; + sel->use_index_ptr= &sel->use_index; + } + ; -preload_key_list_or_empty: +cache_key_list_or_empty: /* empty */ | '(' key_usage_list2 ')' {} ; |