summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
authorigor@rurik.mysql.com <>2003-07-16 12:30:49 -0700
committerigor@rurik.mysql.com <>2003-07-16 12:30:49 -0700
commit42e1296e9d83b8299fe6c8391ece71e88c7019c1 (patch)
treedb50cb809580ea76d7a68cbf9041c881a935ace7 /sql/sql_yacc.yy
parent5a458484eaf7e9474fb155aa36832ebdba78c895 (diff)
downloadmariadb-git-42e1296e9d83b8299fe6c8391ece71e88c7019c1.tar.gz
mi_keycache.c:
new file Many files: Added CACHE INDEX command
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r--sql/sql_yacc.yy41
1 files changed, 35 insertions, 6 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 1d605abe8a3..6766f7cde43 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -657,11 +657,11 @@ 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 slave master_def master_defs
repair restore backup analyze check start
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
@@ -730,6 +730,7 @@ verb_clause:
| lock
| kill
| optimize
+ | keycache
| preload
| purge
| rename
@@ -1843,6 +1844,34 @@ 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 ident
+ {
+ LEX *lex=Lex;
+ SELECT_LEX *sel= &lex->select_lex;
+ if (!sel->add_table_to_list(lex->thd, $1, NULL, 0,
+ TL_WRITE,
+ sel->get_use_index(),
+ (List<String> *)0,
+ &($3)))
+ YYABORT;
+ }
+ ;
+
preload:
LOAD INDEX INTO CACHE_SYM
{
@@ -1858,7 +1887,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;
@@ -1870,9 +1899,9 @@ preload_keys:
}
;
-preload_keys_spec:
+cache_keys_spec:
keys_or_index { Select->select_lex()->interval_list.empty(); }
- preload_key_list_or_empty
+ cache_key_list_or_empty
{
LEX *lex=Lex;
SELECT_LEX *sel= &lex->select_lex;
@@ -1881,7 +1910,7 @@ preload_keys_spec:
}
;
-preload_key_list_or_empty:
+cache_key_list_or_empty:
/* empty */
| '(' key_usage_list2 ')' {}
;