summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2003-10-01 20:16:36 -0700
committerunknown <igor@rurik.mysql.com>2003-10-01 20:16:36 -0700
commit7c7ee4d2f4ae29df2167b0ca0e9ab6dfd93a1c07 (patch)
treee1116ef7faa18e25e4ea484099e4c14d6fbbf7f1 /sql/sql_yacc.yy
parentcce14aabfc09628b246b3bc6ba40e6d83308da4f (diff)
parent7de7c38f2f1b678e6d1894b94dd9abe9de9d8c70 (diff)
downloadmariadb-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.yy68
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 ')' {}
;