Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
3a49b1ab
Commit
3a49b1ab
authored
Nov 30, 2002
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Undid earlier attempt to clean up this code, as it made merging from 4.1
a really painful exprience.
parent
e8884704
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
254 additions
and
465 deletions
+254
-465
sql/sql_yacc.yy
sql/sql_yacc.yy
+254
-465
No files found.
sql/sql_yacc.yy
View file @
3a49b1ab
...
...
@@ -688,8 +688,7 @@ query:
thd->lex.sql_command = SQLCOM_EMPTY_QUERY;
}
}
| verb_clause END_OF_INPUT {}
;
| verb_clause END_OF_INPUT {};
verb_clause:
alter
...
...
@@ -728,8 +727,7 @@ verb_clause:
| unlock
| update
| use
| help
;
| help;
/* help */
...
...
@@ -739,8 +737,7 @@ help:
LEX *lex= Lex;
lex->sql_command= SQLCOM_HELP;
lex->help_arg= $2.str;
}
;
};
/* change master */
...
...
@@ -750,13 +747,11 @@ change:
LEX *lex = Lex;
lex->sql_command = SQLCOM_CHANGE_MASTER;
bzero((char*) &lex->mi, sizeof(lex->mi));
} master_defs
;
} master_defs;
master_defs:
master_def
| master_defs ',' master_def
;
| master_defs ',' master_def;
master_def:
MASTER_HOST_SYM EQ TEXT_STRING
...
...
@@ -805,6 +800,7 @@ master_def:
}
;
/* create a table */
create:
...
...
@@ -893,32 +889,26 @@ create3:
opt_as:
/* empty */ {}
| AS {}
;
| AS {};
opt_table_options:
/* empty */ { $$= 0; }
| table_options { $$= $1;}
;
| table_options { $$= $1;};
table_options:
table_option { $$=$1; }
| table_option table_options { $$= $1 | $2; }
;
| table_option table_options { $$= $1 | $2; };
table_option:
TEMPORARY { $$=HA_LEX_CREATE_TMP_TABLE; }
;
TEMPORARY { $$=HA_LEX_CREATE_TMP_TABLE; };
opt_if_not_exists:
/* empty */ { $$= 0; }
| IF NOT EXISTS { $$=HA_LEX_CREATE_IF_NOT_EXISTS; }
;
| IF NOT EXISTS { $$=HA_LEX_CREATE_IF_NOT_EXISTS; };
opt_create_table_options:
/* empty */
| create_table_options
;
| create_table_options;
create_table_options_space_separated:
create_table_option
...
...
@@ -926,9 +916,8 @@ create_table_options_space_separated:
create_table_options:
create_table_option
| create_table_option create_table_options
| create_table_option ',' create_table_options
;
| create_table_option create_table_options;
| create_table_option ',' create_table_options;
create_table_option:
TYPE_SYM opt_equal table_types { Lex->create_info.db_type= $3; }
...
...
@@ -979,48 +968,41 @@ table_types:
| MERGE_SYM { $$= DB_TYPE_MRG_MYISAM; }
| HEAP_SYM { $$= DB_TYPE_HEAP; }
| BERKELEY_DB_SYM { $$= DB_TYPE_BERKELEY_DB; }
| INNOBASE_SYM { $$= DB_TYPE_INNODB; }
;
| INNOBASE_SYM { $$= DB_TYPE_INNODB; };
row_types:
DEFAULT { $$= ROW_TYPE_DEFAULT; }
| FIXED_SYM { $$= ROW_TYPE_FIXED; }
| DYNAMIC_SYM { $$= ROW_TYPE_DYNAMIC; }
| COMPRESSED_SYM { $$= ROW_TYPE_COMPRESSED; }
;
| COMPRESSED_SYM { $$= ROW_TYPE_COMPRESSED; };
raid_types:
RAID_STRIPED_SYM { $$= RAID_TYPE_0; }
| RAID_0_SYM { $$= RAID_TYPE_0; }
| ULONG_NUM { $$=$1; }
;
| ULONG_NUM { $$=$1;};
merge_insert_types:
NO_SYM { $$= MERGE_INSERT_DISABLED; }
| FIRST_SYM { $$= MERGE_INSERT_TO_FIRST; }
| LAST_SYM { $$= MERGE_INSERT_TO_LAST; }
;
| LAST_SYM { $$= MERGE_INSERT_TO_LAST; };
opt_select_from:
opt_limit_clause {}
| select_from select_lock_type
;
| select_from select_lock_type;
udf_func_type:
/* empty */ { $$ = UDFTYPE_FUNCTION; }
| AGGREGATE_SYM { $$ = UDFTYPE_AGGREGATE; }
;
| AGGREGATE_SYM { $$ = UDFTYPE_AGGREGATE; };
udf_type:
STRING_SYM {$$ = (int) STRING_RESULT; }
| REAL {$$ = (int) REAL_RESULT; }
| INT_SYM {$$ = (int) INT_RESULT; }
;
| INT_SYM {$$ = (int) INT_RESULT; };
field_list:
field_list_item
| field_list ',' field_list_item
;
| field_list ',' field_list_item
;
field_list_item:
field_spec check_constraint
...
...
@@ -1058,8 +1040,7 @@ check_constraint:
opt_constraint:
/* empty */
| CONSTRAINT opt_ident
;
| CONSTRAINT opt_ident;
field_spec:
field_ident
...
...
@@ -1078,8 +1059,7 @@ field_spec:
lex->default_value, lex->comment,
lex->change,lex->interval,lex->charset))
YYABORT;
}
;
};
type:
int_type opt_len field_options { $$=$1; }
...
...
@@ -1161,76 +1141,64 @@ type:
char:
CHAR_SYM {}
| NCHAR_SYM {}
| NATIONAL_SYM CHAR_SYM {}
;
| NATIONAL_SYM CHAR_SYM {};
varchar:
char VARYING {}
| VARCHAR {}
| NATIONAL_SYM VARCHAR {}
| NCHAR_SYM VARCHAR {}
;
| NCHAR_SYM VARCHAR {};
int_type:
INT_SYM { $$=FIELD_TYPE_LONG; }
| TINYINT { $$=FIELD_TYPE_TINY; }
| SMALLINT { $$=FIELD_TYPE_SHORT; }
| MEDIUMINT { $$=FIELD_TYPE_INT24; }
| BIGINT { $$=FIELD_TYPE_LONGLONG; }
;
| BIGINT { $$=FIELD_TYPE_LONGLONG; };
real_type:
REAL { $$= YYTHD->sql_mode & MODE_REAL_AS_FLOAT ?
FIELD_TYPE_FLOAT : FIELD_TYPE_DOUBLE; }
| DOUBLE_SYM { $$=FIELD_TYPE_DOUBLE; }
| DOUBLE_SYM PRECISION { $$=FIELD_TYPE_DOUBLE; }
;
| DOUBLE_SYM PRECISION { $$=FIELD_TYPE_DOUBLE; };
float_options:
/* empty */ {}
| '(' NUM ')' { Lex->length=$2.str; }
| precision {}
;
| precision {};
precision:
'(' NUM ',' NUM ')'
{
LEX *lex=Lex;
lex->length=$2.str; lex->dec=$4.str;
}
;
};
field_options:
/* empty */ {}
| field_opt_list {}
;
| field_opt_list {};
field_opt_list:
field_opt_list field_option {}
| field_option {}
;
| field_option {};
field_option:
SIGNED_SYM {}
| UNSIGNED { Lex->type|= UNSIGNED_FLAG;}
| ZEROFILL { Lex->type|= UNSIGNED_FLAG | ZEROFILL_FLAG; }
;
| ZEROFILL { Lex->type|= UNSIGNED_FLAG | ZEROFILL_FLAG; };
opt_len:
/* empty */ { Lex->length=(char*) 0; } /* use default length */
| '(' NUM ')' { Lex->length= $2.str; }
;
| '(' NUM ')' { Lex->length= $2.str; };
opt_precision:
/* empty */ {}
| precision {}
;
| precision {};
opt_attribute:
/* empty */ {}
| opt_attribute_list {}
;
| opt_attribute_list {};
opt_attribute_list:
opt_attribute_list attribute {}
...
...
@@ -1246,8 +1214,8 @@ attribute:
| opt_primary KEY_SYM { Lex->type|= PRI_KEY_FLAG | NOT_NULL_FLAG; }
| UNIQUE_SYM { Lex->type|= UNIQUE_FLAG; }
| UNIQUE_SYM KEY_SYM { Lex->type|= UNIQUE_KEY_FLAG; }
| COMMENT_SYM text_literal { Lex->comment= $2; }
;
| COMMENT_SYM text_literal { Lex->comment= $2; }
;
charset_name:
BINARY
...
...
@@ -1265,31 +1233,27 @@ charset_name:
net_printf(YYTHD,ER_UNKNOWN_CHARACTER_SET,$1.str);
YYABORT;
}
}
;
};
charset_name_or_default:
charset_name { $$=$1; }
| DEFAULT { $$=NULL; }
;
| DEFAULT { $$=NULL; } ;
opt_default:
/* empty */ {}
| DEFAULT {}
;
| DEFAULT {};
opt_db_default_character_set:
/* empty */ { $$=default_charset_info; }
| opt_default CHAR_SYM SET charset_name_or_default { $$=$4; }
| opt_default CHARSET charset_name_or_default { $$=$3; }
;
| opt_default CHARSET charset_name_or_default { $$=$3; };
opt_binary:
/* empty */ { Lex->charset=NULL; }
| BYTE_SYM { Lex->charset=my_charset_bin; }
| BINARY { Lex->charset=my_charset_bin; }
| CHAR_SYM SET charset_name { Lex->charset=$3; }
;
| CHAR_SYM SET charset_name { Lex->charset=$3; }
;
opt_primary:
/* empty */
...
...
@@ -1306,45 +1270,38 @@ references:
opt_ref_list
{
$$=$2;
}
;
};
opt_ref_list:
/* empty */ opt_on_delete {}
| '(' ref_list ')' opt_on_delete {}
;
| '(' ref_list ')' opt_on_delete {};
ref_list:
ref_list ',' ident { Lex->ref_list.push_back(new key_part_spec($3.str)); }
| ident { Lex->ref_list.push_back(new key_part_spec($1.str)); }
;
| ident { Lex->ref_list.push_back(new key_part_spec($1.str)); };
opt_on_delete:
/* empty */ {}
| opt_on_delete_list {}
;
| opt_on_delete_list {};
opt_on_delete_list:
opt_on_delete_list opt_on_delete_item {}
| opt_on_delete_item {}
;
| opt_on_delete_item {};
opt_on_delete_item:
ON DELETE_SYM delete_option { Lex->fk_delete_opt= $3; }
| ON UPDATE_SYM delete_option { Lex->fk_update_opt= $3; }
| MATCH FULL { Lex->fk_match_option= foreign_key::FK_MATCH_FULL; }
| MATCH PARTIAL { Lex->fk_match_option= foreign_key::FK_MATCH_PARTIAL; }
| MATCH SIMPLE_SYM { Lex->fk_match_option= foreign_key::FK_MATCH_SIMPLE; }
;
| MATCH SIMPLE_SYM { Lex->fk_match_option= foreign_key::FK_MATCH_SIMPLE; };
delete_option:
RESTRICT { $$= (int) foreign_key::FK_OPTION_RESTRICT; }
| CASCADE { $$= (int) foreign_key::FK_OPTION_CASCADE; }
| SET NULL_SYM { $$= (int) foreign_key::FK_OPTION_SET_NULL; }
| NO_SYM ACTION { $$= (int) foreign_key::FK_OPTION_NO_ACTION; }
| SET DEFAULT { $$= (int) foreign_key::FK_OPTION_DEFAULT; }
;
| SET DEFAULT { $$= (int) foreign_key::FK_OPTION_DEFAULT; };
key_type:
opt_constraint PRIMARY_SYM KEY_SYM { $$= Key::PRIMARY; }
...
...
@@ -1354,56 +1311,46 @@ key_type:
| SPATIAL_SYM { $$= Key::SPATIAL; }
| SPATIAL_SYM key_or_index { $$= Key::SPATIAL; }
| opt_constraint UNIQUE_SYM { $$= Key::UNIQUE; }
| opt_constraint UNIQUE_SYM key_or_index { $$= Key::UNIQUE; }
;
| opt_constraint UNIQUE_SYM key_or_index { $$= Key::UNIQUE; };
key_or_index:
KEY_SYM {}
| INDEX {}
;
| INDEX {};
keys_or_index:
KEYS {}
| INDEX {}
| INDEXES {}
;
| INDEXES {};
opt_unique_or_fulltext:
/* empty */ { $$= Key::MULTIPLE; }
| UNIQUE_SYM { $$= Key::UNIQUE; }
| SPATIAL_SYM { $$= Key::SPATIAL; }
;
| SPATIAL_SYM { $$= Key::SPATIAL; };
key_alg:
/* empty */ { $$= HA_KEY_ALG_UNDEF; }
| USING opt_btree_or_rtree { $$= $2; }
;
| USING opt_btree_or_rtree { $$= $2; };
opt_btree_or_rtree:
BTREE_SYM { $$= HA_KEY_ALG_BTREE; }
| RTREE_SYM { $$= HA_KEY_ALG_RTREE; }
| HASH_SYM { $$= HA_KEY_ALG_HASH; }
;
| HASH_SYM { $$= HA_KEY_ALG_HASH; };
key_list:
key_list ',' key_part order_dir { Lex->col_list.push_back($3); }
| key_part order_dir { Lex->col_list.push_back($1); }
;
| key_part order_dir { Lex->col_list.push_back($1); };
key_part:
ident { $$=new key_part_spec($1.str); }
| ident '(' NUM ')' { $$=new key_part_spec($1.str,(uint) atoi($3.str)); }
;
| ident '(' NUM ')' { $$=new key_part_spec($1.str,(uint) atoi($3.str)); };
opt_ident:
/* empty */ { $$=(char*) 0; } /* Defaultlength */
| field_ident { $$=$1.str; }
;
| field_ident { $$=$1.str; };
string_list:
text_string { Lex->interval_list.push_back($1); }
| string_list ',' text_string { Lex->interval_list.push_back($3); }
;
| string_list ',' text_string { Lex->interval_list.push_back($3); };
/*
** Alter table
...
...
@@ -1433,24 +1380,23 @@ alter:
lex->alter_keys_onoff=LEAVE_AS_IS;
lex->simple_alter=1;
}
alter_list
alter_list;
| ALTER DATABASE ident opt_db_default_character_set
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_ALTER_DB;
lex->name=$3.str;
lex->create_info.table_charset=$4;
}
;
}
;
alter_list:
| alter_list_item
| alter_list ',' alter_list_item
;
| alter_list ',' alter_list_item;
add_column:
ADD opt_column { Lex->change=0; }
;
ADD opt_column { Lex->change=0; };
alter_list_item:
add_column field_list_item opt_place { Lex->simple_alter=0; }
...
...
@@ -1519,37 +1465,32 @@ alter_list_item:
lex->name= $3->table.str;
}
| create_table_options_space_separated { Lex->simple_alter=0; }
| order_clause { Lex->simple_alter=0; }
;
| order_clause { Lex->simple_alter=0; };
opt_column:
/* empty */ {}
| COLUMN_SYM {}
;
| COLUMN_SYM {};
opt_ignore:
/* empty */ { Lex->duplicates=DUP_ERROR; }
| IGNORE_SYM { Lex->duplicates=DUP_IGNORE; }
;
| IGNORE_SYM { Lex->duplicates=DUP_IGNORE; };
opt_restrict:
/* empty */ {}
| RESTRICT {}
| CASCADE {}
;
| CASCADE {};
opt_place:
/* empty */ {}
| AFTER_SYM ident { store_position_for_column($2.str); }
| FIRST_SYM { store_position_for_column(first_keyword); }
;
| FIRST_SYM { store_position_for_column(first_keyword); };
opt_to:
/* empty */ {}
| TO_SYM {}
| EQ {}
| AS {}
;
| AS {}
;
/*
The first two deprecate the last two--delete the last two for 4.1 release
*/
...
...
@@ -1571,8 +1512,7 @@ slave:
slave_thread_opts:
slave_thread_opt
| slave_thread_opts ',' slave_thread_opt
;
| slave_thread_opts ',' slave_thread_opt;
slave_thread_opt:
/*empty*/ {}
...
...
@@ -1588,8 +1528,7 @@ restore:
table_list FROM TEXT_STRING
{
Lex->backup_dir = $6.str;
}
;
};
backup:
BACKUP_SYM table_or_tables
...
...
@@ -1599,8 +1538,7 @@ backup:
table_list TO_SYM TEXT_STRING
{
Lex->backup_dir = $6.str;
}
;
};
repair:
REPAIR table_or_tables
...
...
@@ -1609,24 +1547,20 @@ repair:
lex->sql_command = SQLCOM_REPAIR;
lex->check_opt.init();
}
table_list opt_mi_repair_type
;
table_list opt_mi_repair_type;
opt_mi_repair_type:
/* empty */ { Lex->check_opt.flags = T_MEDIUM; }
| mi_repair_types {}
;
| mi_repair_types {};
mi_repair_types:
mi_repair_type {}
| mi_repair_type mi_repair_types {}
;
| mi_repair_type mi_repair_types {};
mi_repair_type:
QUICK { Lex->check_opt.flags|= T_QUICK; }
| EXTENDED_SYM { Lex->check_opt.flags|= T_EXTEND; }
| USE_FRM { Lex->check_opt.sql_flags|= TT_USEFRM; }
;
| USE_FRM { Lex->check_opt.sql_flags|= TT_USEFRM; };
analyze:
ANALYZE_SYM table_or_tables
...
...
@@ -1635,8 +1569,7 @@ analyze:
lex->sql_command = SQLCOM_ANALYZE;
lex->check_opt.init();
}
table_list opt_mi_check_type
;
table_list opt_mi_check_type;
check:
CHECK_SYM table_or_tables
...
...
@@ -1645,26 +1578,22 @@ check:
lex->sql_command = SQLCOM_CHECK;
lex->check_opt.init();
}
table_list opt_mi_check_type
;
table_list opt_mi_check_type;
opt_mi_check_type:
/* empty */ { Lex->check_opt.flags = T_MEDIUM; }
| mi_check_types {}
;
| mi_check_types {};
mi_check_types:
mi_check_type {}
| mi_check_type mi_check_types {}
;
| mi_check_type mi_check_types {};
mi_check_type:
QUICK { Lex->check_opt.flags|= T_QUICK; }
| FAST_SYM { Lex->check_opt.flags|= T_FAST; }
| MEDIUM_SYM { Lex->check_opt.flags|= T_MEDIUM; }
| EXTENDED_SYM { Lex->check_opt.flags|= T_EXTEND; }
| CHANGED { Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; }
;
| CHANGED { Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; };
optimize:
OPTIMIZE table_or_tables
...
...
@@ -1673,21 +1602,18 @@ optimize:
lex->sql_command = SQLCOM_OPTIMIZE;
lex->check_opt.init();
}
table_list opt_mi_check_type
;
table_list opt_mi_check_type;
rename:
RENAME table_or_tables
{
Lex->sql_command=SQLCOM_RENAME_TABLE;
}
table_to_table_list
;
table_to_table_list;
table_to_table_list:
table_to_table
| table_to_table_list ',' table_to_table
;
| table_to_table_list ',' table_to_table;
table_to_table:
table_ident TO_SYM table_ident
...
...
@@ -1696,8 +1622,7 @@ table_to_table:
if (!sl->add_table_to_list($1,NULL,1,TL_IGNORE) ||
!sl->add_table_to_list($3,NULL,1,TL_IGNORE))
YYABORT;
}
;
};
/*
Select : retrieve data from table
...
...
@@ -1705,8 +1630,7 @@ table_to_table:
select:
select_init { Lex->sql_command=SQLCOM_SELECT; }
;
select_init { Lex->sql_command=SQLCOM_SELECT; };
/* Need select_init2 for subselects. */
select_init:
...
...
@@ -1746,8 +1670,7 @@ select_part2:
lex->lock_option= TL_READ; /* Only for global SELECT */
mysql_init_select(lex);
}
select_options select_item_list select_into select_lock_type
;
select_options select_item_list select_into select_lock_type;
select_into:
opt_limit_clause {}
...
...
@@ -1758,22 +1681,18 @@ select_into:
| into
| select_from
| into select_from
| select_from into
;
| select_from into;
select_from:
FROM join_table_list where_clause group_clause having_clause opt_order_clause opt_limit_clause procedure_clause
;
FROM join_table_list where_clause group_clause having_clause opt_order_clause opt_limit_clause procedure_clause;
select_options:
/* empty*/
| select_option_list
;
| select_option_list;
select_option_list:
select_option_list select_option
| select_option
;
| select_option;
select_option:
STRAIGHT_JOIN { Select->options|= SELECT_STRAIGHT_JOIN; }
...
...
@@ -1827,8 +1746,8 @@ select_item_list:
{
if (add_item_to_list(new Item_field(NULL,NULL,"*")))
YYABORT;
}
;
}
;
select_item:
remember_name select_item2 remember_end select_alias
...
...
@@ -1839,39 +1758,32 @@ select_item:
$2->set_name($4.str);
else if (!$2->name)
$2->set_name($1,(uint) ($3 - $1));
}
;
};
remember_name:
{ $$=(char*) Lex->tok_start; }
;
{ $$=(char*) Lex->tok_start; };
remember_end:
{ $$=(char*) Lex->tok_end; }
;
{ $$=(char*) Lex->tok_end; };
select_item2:
table_wild { $$=$1; } /* table.* */
| expr { $$=$1; }
;
| expr { $$=$1; };
select_alias:
{ $$.str=0;}
| AS ident { $$=$2; }
| AS TEXT_STRING { $$=$2; }
| ident { $$=$1; }
| TEXT_STRING { $$=$1; }
;
| TEXT_STRING { $$=$1; };
optional_braces:
/* empty */ {}
| '(' ')' {}
;
| '(' ')' {};
/* all possible expressions */
expr: expr_expr { $$= $1; }
| simple_expr { $$= $1; }
;
| simple_expr { $$= $1; };
comp_op: EQ { $$ = &comp_eq_creator; }
| GE { $$ = &comp_ge_creator; }
...
...
@@ -1939,8 +1851,7 @@ expr_expr:
| expr '-' INTERVAL_SYM expr interval
{ $$= new Item_date_add_interval($1,$4,$5,1); }
| expr COLLATE_SYM charset_name
{ $$= new Item_func_set_collation($1,$3); }
;
{ $$= new Item_func_set_collation($1,$3); };
/* expressions that begin with 'expr' that do NOT follow IN_SYM */
no_in_expr:
...
...
@@ -1985,8 +1896,7 @@ no_in_expr:
{ $$= new Item_date_add_interval($1,$4,$5,0); }
| no_in_expr '-' INTERVAL_SYM expr interval
{ $$= new Item_date_add_interval($1,$4,$5,1); }
| simple_expr
;
| simple_expr;
/* expressions that begin with 'expr' that does NOT follow AND */
no_and_expr:
...
...
@@ -2040,8 +1950,7 @@ no_and_expr:
{ $$= new Item_date_add_interval($1,$4,$5,0); }
| no_and_expr '-' INTERVAL_SYM expr interval
{ $$= new Item_date_add_interval($1,$4,$5,1); }
| simple_expr
;
| simple_expr;
simple_expr:
simple_ident
...
...
@@ -2381,13 +2290,11 @@ simple_expr:
Lex->safe_to_cache_query=0;
}
| EXTRACT_SYM '(' interval FROM expr ')'
{ $$=new Item_extract( $3, $5); }
;
{ $$=new Item_extract( $3, $5); };
udf_expr_list:
/* empty */ { $$= NULL; }
| expr_list { $$= $1; }
;
| expr_list { $$= $1;};
sum_expr:
AVG_SYM '(' in_sum_expr ')'
...
...
@@ -2411,8 +2318,7 @@ sum_expr:
| STD_SYM '(' in_sum_expr ')'
{ $$=new Item_sum_std($3); }
| SUM_SYM '(' in_sum_expr ')'
{ $$=new Item_sum_sum($3); }
;
{ $$=new Item_sum_sum($3); };
in_sum_expr:
{
...
...
@@ -2427,8 +2333,7 @@ in_sum_expr:
{
Select->select_lex()->in_sum_expr--;
$$=$2;
}
;
};
cast_type:
BINARY { $$=ITEM_CAST_BINARY; }
...
...
@@ -2445,45 +2350,37 @@ cast_type:
expr_list:
{ Select->expr_list.push_front(new List<Item>); }
expr_list2
{ $$= Select->expr_list.pop(); }
;
{ $$= Select->expr_list.pop(); };
expr_list2:
expr { Select->expr_list.head()->push_back($1); }
| expr_list2 ',' expr { Select->expr_list.head()->push_back($3); }
;
| expr_list2 ',' expr { Select->expr_list.head()->push_back($3); };
ident_list_arg:
ident_list { $$= $1; }
| '(' ident_list ')' { $$= $2; }
;
| '(' ident_list ')' { $$= $2; };
ident_list:
{ Select->expr_list.push_front(new List<Item>); }
ident_list2
{ $$= Select->expr_list.pop(); }
;
{ $$= Select->expr_list.pop(); };
ident_list2:
simple_ident { Select->expr_list.head()->push_back($1); }
| ident_list2 ',' simple_ident { Select->expr_list.head()->push_back($3); }
;
| ident_list2 ',' simple_ident { Select->expr_list.head()->push_back($3); };
opt_expr:
/* empty */ { $$= NULL; }
| expr { $$= $1; }
;
| expr { $$= $1; };
opt_else:
/* empty */ { $$= NULL; }
| ELSE expr { $$= $2; }
;
| ELSE expr { $$= $2; };
when_list:
{ Select->when_list.push_front(new List<Item>); }
when_list2
{ $$= Select->when_list.pop(); }
;
{ $$= Select->when_list.pop(); };
when_list2:
expr THEN_SYM expr
...
...
@@ -2497,13 +2394,11 @@ when_list2:
SELECT_LEX_NODE *sel=Select;
sel->when_list.head()->push_back($3);
sel->when_list.head()->push_back($5);
}
;
};
opt_pad:
/* empty */ { $$=new Item_string(" ",1,default_charset_info); }
| expr { $$=$1; }
;
| expr { $$=$1; };
join_table_list:
'(' join_table_list ')' { $$=$2; }
...
...
@@ -2546,14 +2441,12 @@ join_table_list:
| join_table_list NATURAL RIGHT opt_outer JOIN_SYM join_table_list
{ add_join_natural($6,$1); $1->outer_join|=JOIN_TYPE_RIGHT; $$=$1; }
| join_table_list NATURAL JOIN_SYM join_table_list
{ add_join_natural($1,$4); $$=$4; }
;
{ add_join_natural($1,$4); $$=$4; };
normal_join:
',' {}
| JOIN_SYM {}
| CROSS JOIN_SYM {}
;
| CROSS JOIN_SYM {};
join_table:
{
...
...
@@ -2580,8 +2473,7 @@ join_table:
add_table_to_list(new Table_ident(unit), $5, 0,
lex->lock_option)))
YYABORT;
}
;
};
select_derived:
{
...
...
@@ -2598,8 +2490,7 @@ select_derived:
opt_outer:
/* empty */ {}
| OUTER {}
;
| OUTER {};
opt_key_definition:
/* empty */ {}
...
...
@@ -2614,14 +2505,12 @@ opt_key_definition:
SELECT_LEX *sel= Select->select_lex();
sel->ignore_index= *$2;
sel->ignore_index_ptr= &sel->ignore_index;
}
;
};
key_usage_list:
key_or_index { Select->select_lex()->interval_list.empty(); }
'(' key_usage_list2 ')'
{ $$= &Select->select_lex()->interval_list; }
;
{ $$= &Select->select_lex()->interval_list; };
key_usage_list2:
key_usage_list2 ',' ident
...
...
@@ -2635,8 +2524,7 @@ key_usage_list2:
| PRIMARY_SYM
{ Select->select_lex()->
interval_list.push_back(new String("PRIMARY", 7,
default_charset_info)); }
;
default_charset_info)); };
using_list:
ident
...
...
@@ -2653,8 +2541,7 @@ using_list:
SELECT_LEX *sel= Select->select_lex();
if (!($$= new Item_cond_and(new Item_func_eq(new Item_field(sel->db1,sel->table1,$3.str), new Item_field(sel->db2,sel->table2,$3.str)), $1)))
YYABORT;
}
;
};
interval:
DAY_HOUR_SYM { $$=INTERVAL_DAY_HOUR; }
...
...
@@ -2669,20 +2556,18 @@ interval:
| MONTH_SYM { $$=INTERVAL_MONTH; }
| SECOND_SYM { $$=INTERVAL_SECOND; }
| YEAR_MONTH_SYM { $$=INTERVAL_YEAR_MONTH; }
| YEAR_SYM { $$=INTERVAL_YEAR; }
;
| YEAR_SYM { $$=INTERVAL_YEAR; };
table_alias:
/* empty */
| AS
| EQ
;
| EQ;
opt_table_alias:
/* empty */ { $$=0; }
| table_alias ident
{ $$= (LEX_STRING*) sql_memdup(&$2,sizeof(LEX_STRING)); }
;
{ $$= (LEX_STRING*) sql_memdup(&$2,sizeof(LEX_STRING)); }
;
where_clause:
/* empty */ { Select->select_lex()->where= 0; }
...
...
@@ -2707,8 +2592,7 @@ having_clause:
opt_escape:
ESCAPE_SYM TEXT_STRING { $$= $2.str; }
| /* empty */ { $$= (char*) "\\"; }
;
| /* empty */ { $$= (char*) "\\"; };
/*
...
...
@@ -2717,15 +2601,13 @@ opt_escape:
group_clause:
/* empty */
| GROUP BY group_list olap_opt
;
| GROUP BY group_list olap_opt;
group_list:
group_list ',' order_ident order_dir
{ if (add_group_to_list($3,(bool) $4)) YYABORT; }
| order_ident order_dir
{ if (add_group_to_list($1,(bool) $2)) YYABORT; }
;
{ if (add_group_to_list($1,(bool) $2)) YYABORT; };
olap_opt:
/* empty */ {}
...
...
@@ -2765,8 +2647,7 @@ olap_opt:
opt_order_clause:
/* empty */
| order_clause
;
| order_clause;
order_clause:
ORDER_SYM BY
...
...
@@ -2781,21 +2662,19 @@ order_clause:
"ORDER BY");
YYABORT;
}
} order_list
;
} order_list;
order_list:
order_list ',' order_ident order_dir
{ if (add_order_to_list($3,(bool) $4)) YYABORT; }
| order_ident order_dir
{ if (add_order_to_list($1,(bool) $2)) YYABORT; }
;
{ if (add_order_to_list($1,(bool) $2)) YYABORT; };
order_dir:
/* empty */ { $$ = 1; }
| ASC { $$ =1; }
| DESC { $$ =0; }
;
| DESC { $$ =0; }
;
opt_limit_clause:
/* empty */ {}
...
...
@@ -2835,6 +2714,7 @@ limit_options:
}
;
delete_limit_clause:
/* empty */
{
...
...
@@ -2842,23 +2722,20 @@ delete_limit_clause:
lex->current_select->select_limit= HA_POS_ERROR;
}
| LIMIT ulonglong_num
{ Select->select_limit= (ha_rows) $2; }
;
{ Select->select_limit= (ha_rows) $2; };
ULONG_NUM:
NUM { $$= strtoul($1.str,NULL,10); }
| ULONGLONG_NUM { $$= (ulong) strtoull($1.str,NULL,10); }
| REAL_NUM { $$= strtoul($1.str,NULL,10); }
| FLOAT_NUM { $$= strtoul($1.str,NULL,10); }
;
| FLOAT_NUM { $$= strtoul($1.str,NULL,10); };
ulonglong_num:
NUM { $$= (ulonglong) strtoul($1.str,NULL,10); }
| ULONGLONG_NUM { $$= strtoull($1.str,NULL,10); }
| LONG_NUM { $$= (ulonglong) strtoul($1.str,NULL,10); }
| REAL_NUM { $$= strtoull($1.str,NULL,10); }
| FLOAT_NUM { $$= strtoull($1.str,NULL,10); }
;
| FLOAT_NUM { $$= strtoull($1.str,NULL,10); };
procedure_clause:
/* empty */
...
...
@@ -2872,18 +2749,16 @@ procedure_clause:
YYABORT;
Lex->safe_to_cache_query=0;
}
'(' procedure_list ')'
;
'(' procedure_list ')'
;
procedure_list:
/* empty */ {}
| procedure_list2 {}
;
| procedure_list2 {};
procedure_list2:
procedure_list2 ',' procedure_item
| procedure_item
;
| procedure_item;
procedure_item:
remember_name expr
...
...
@@ -2959,9 +2834,7 @@ do: DO_SYM
if (!(lex->insert_list = new List_item))
YYABORT;
}
values
;
values;
/*
Drop : delete tables or index
*/
...
...
@@ -2996,19 +2869,16 @@ drop:
LEX *lex=Lex;
lex->sql_command = SQLCOM_DROP_FUNCTION;
lex->udf.name=$3.str;
}
;
};
table_list:
table_name
| table_list ',' table_name
;
| table_list ',' table_name;
table_name:
table_ident
{ if (!Select->add_table_to_list($1, NULL, 1)) YYABORT; }
;
{ if (!Select->add_table_to_list($1, NULL, 1)) YYABORT; };
if_exists:
/* empty */ { $$= 0; }
...
...
@@ -3065,8 +2935,7 @@ replace_lock_option:
insert2:
INTO insert_table {}
| insert_table {}
;
| insert_table {};
insert_table:
table_name
...
...
@@ -3075,8 +2944,7 @@ insert_table:
lex->field_list.empty();
lex->many_values.empty();
lex->insert_list=0;
}
;
};
insert_field_spec:
opt_field_spec insert_values {}
...
...
@@ -3087,19 +2955,16 @@ insert_field_spec:
lex->many_values.push_back(lex->insert_list))
YYABORT;
}
ident_eq_list
;
ident_eq_list;
opt_field_spec:
/* empty */ { }
| '(' fields ')' { }
| '(' ')' { }
;
| '(' ')' { };
fields:
fields ',' insert_ident { Lex->field_list.push_back($3); }
| insert_ident { Lex->field_list.push_back($1); }
;
| insert_ident { Lex->field_list.push_back($1); };
insert_values:
VALUES values_list {}
...
...
@@ -3118,14 +2983,12 @@ insert_values:
values_list:
values_list ',' no_braces
| no_braces
;
| no_braces;
ident_eq_list:
ident_eq_list ',' ident_eq_value
|
ident_eq_value
;
ident_eq_value;
ident_eq_value:
simple_ident equal expr_or_default
...
...
@@ -3134,8 +2997,7 @@ ident_eq_value:
if (lex->field_list.push_back($1) ||
lex->insert_list->push_back($3))
YYABORT;
}
;
};
equal: EQ {}
| SET_VAR {}
...
...
@@ -3157,13 +3019,11 @@ no_braces:
LEX *lex=Lex;
if (lex->many_values.push_back(lex->insert_list))
YYABORT;
}
;
};
opt_values:
/* empty */ {}
| values
;
| values;
values:
values ',' expr_or_default
...
...
@@ -3226,8 +3086,7 @@ update_list:
{
if (add_item_to_list($1) || add_value_to_list($3))
YYABORT;
}
;
};
opt_low_priority:
/* empty */ { $$= YYTHD->update_lock_default; }
...
...
@@ -3260,13 +3119,11 @@ single_multi:
FROM join_table_list where_clause
| FROM table_wild_list
{ mysql_init_multi_delete(Lex); }
USING join_table_list where_clause
;
USING join_table_list where_clause;
table_wild_list:
table_wild_one {}
| table_wild_list ',' table_wild_one {}
;
| table_wild_list ',' table_wild_one {};
table_wild_one:
ident opt_wild
...
...
@@ -3285,19 +3142,16 @@ table_wild_one:
opt_wild:
/* empty */ {}
| '.' '*' {}
;
| '.' '*' {};
opt_delete_options:
/* empty */ {}
| opt_delete_option opt_delete_options {}
;
| opt_delete_option opt_delete_options {};
opt_delete_option:
QUICK { Select->options|= OPTION_QUICK; }
| LOW_PRIORITY { Lex->lock_option= TL_WRITE_LOW_PRIORITY; }
;
| LOW_PRIORITY { Lex->lock_option= TL_WRITE_LOW_PRIORITY; };
truncate:
TRUNCATE_SYM opt_table_sym table_name
...
...
@@ -3311,8 +3165,7 @@ truncate:
opt_table_sym:
/* empty */
| TABLE_SYM
;
| TABLE_SYM;
/* Show things */
...
...
@@ -3322,9 +3175,7 @@ show: SHOW
lex->wild=0;
bzero((char*) &lex->create_info,sizeof(lex->create_info));
}
show_param
;
show_param;
show_param:
DATABASES wild
...
...
@@ -3456,38 +3307,31 @@ show_param:
| SLAVE STATUS_SYM
{
Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
}
;
};
opt_db:
/* empty */ { $$= 0; }
| from_or_in ident { $$= $2.str; }
;
| from_or_in ident { $$= $2.str; };
wild:
/* empty */
| LIKE text_string { Lex->wild= $2; }
;
| LIKE text_string { Lex->wild= $2; };
opt_full:
/* empty */ { Lex->verbose=0; }
| FULL { Lex->verbose=1; }
;
| FULL { Lex->verbose=1; };
from_or_in:
FROM
| IN_SYM
;
| IN_SYM;
binlog_in:
/* empty */ { Lex->mi.log_file_name = 0; }
| IN_SYM TEXT_STRING { Lex->mi.log_file_name = $2.str; }
;
| IN_SYM TEXT_STRING { Lex->mi.log_file_name = $2.str; };
binlog_from:
/* empty */ { Lex->mi.pos = 4; /* skip magic number */ }
| FROM ulonglong_num { Lex->mi.pos = $2; }
;
| FROM ulonglong_num { Lex->mi.pos = $2; };
/* A Oracle compatible synonym for show */
...
...
@@ -3506,21 +3350,18 @@ describe:
{
LEX *lex=Lex;
lex->select_lex.options|= SELECT_DESCRIBE;
}
;
};
describe_command:
DESC
| DESCRIBE
;
| DESCRIBE;
opt_describe_column:
/* empty */ {}
| text_string { Lex->wild= $1; }
| ident
{ Lex->wild= new String((const char*) $1.str,$1.length,default_charset_info); }
;
{ Lex->wild= new String((const char*) $1.str,$1.length,default_charset_info); };
/* flush things */
...
...
@@ -3531,13 +3372,11 @@ flush:
LEX *lex=Lex;
lex->sql_command= SQLCOM_FLUSH; lex->type=0;
}
flush_options
;
flush_options;
flush_options:
flush_options ',' flush_option
| flush_option
;
| flush_option;
flush_option:
table_or_tables { Lex->type|= REFRESH_TABLES; } opt_table_list
...
...
@@ -3550,32 +3389,26 @@ flush_option:
| SLAVE { Lex->type|= REFRESH_SLAVE; }
| MASTER_SYM { Lex->type|= REFRESH_MASTER; }
| DES_KEY_FILE { Lex->type|= REFRESH_DES_KEY_FILE; }
| RESOURCES { Lex->type|= REFRESH_USER_RESOURCES; }
;
| RESOURCES { Lex->type|= REFRESH_USER_RESOURCES; };
opt_table_list:
/* empty */ {}
| table_list {}
;
/* empty */ {;}
| table_list {;};
reset:
RESET_SYM
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_RESET; lex->type=0;
} reset_options
;
} reset_options;
reset_options:
reset_options ',' reset_option
| reset_option
;
| reset_option;
reset_option:
SLAVE { Lex->type|= REFRESH_SLAVE; }
| MASTER_SYM { Lex->type|= REFRESH_MASTER; }
| QUERY_SYM CACHE_SYM { Lex->type|= REFRESH_QUERY_CACHE;}
;
| QUERY_SYM CACHE_SYM { Lex->type|= REFRESH_QUERY_CACHE;};
purge:
PURGE
...
...
@@ -3587,8 +3420,7 @@ purge:
MASTER_SYM LOGS_SYM TO_SYM TEXT_STRING
{
Lex->to_log = $6.str;
}
;
} ;
/* kill threads */
...
...
@@ -3603,8 +3435,7 @@ kill:
}
lex->sql_command=SQLCOM_KILL;
lex->thread_id= (ulong) $2->val_int();
}
;
};
/* change database */
...
...
@@ -3613,8 +3444,7 @@ use: USE_SYM ident
LEX *lex=Lex;
lex->sql_command=SQLCOM_CHANGE_DB;
lex->select_lex.db= $2.str;
}
;
};
/* import, export of files */
...
...
@@ -3646,13 +3476,11 @@ load: LOAD DATA_SYM load_data_lock opt_local INFILE TEXT_STRING
LOAD DATA_SYM FROM MASTER_SYM
{
Lex->sql_command = SQLCOM_LOAD_MASTER_DATA;
}
;
};
opt_local:
/* empty */ { $$=0; }
| LOCAL_SYM { $$=1; }
;
/* empty */ { $$=0;}
| LOCAL_SYM { $$=1;};
load_data_lock:
/* empty */ { $$= YYTHD->update_lock_default; }
...
...
@@ -3663,18 +3491,15 @@ load_data_lock:
opt_duplicate:
/* empty */ { Lex->duplicates=DUP_ERROR; }
| REPLACE { Lex->duplicates=DUP_REPLACE; }
| IGNORE_SYM { Lex->duplicates=DUP_IGNORE; }
;
| IGNORE_SYM { Lex->duplicates=DUP_IGNORE; };
opt_field_term:
/* empty */
| COLUMNS field_term_list
;
| COLUMNS field_term_list;
field_term_list:
field_term_list field_term
| field_term
;
| field_term;
field_term:
TERMINATED BY text_string { Lex->exchange->field_term= $3;}
...
...
@@ -3684,30 +3509,25 @@ field_term:
lex->exchange->enclosed= $4;
lex->exchange->opt_enclosed=1;
}
| ENCLOSED BY text_string { Lex->exchange->enclosed= $3; }
| ESCAPED BY text_string { Lex->exchange->escaped= $3; }
;
| ENCLOSED BY text_string { Lex->exchange->enclosed= $3;}
| ESCAPED BY text_string { Lex->exchange->escaped= $3;};
opt_line_term:
/* empty */
| LINES line_term_list
;
| LINES line_term_list;
line_term_list:
line_term_list line_term
| line_term
;
| line_term;
line_term:
TERMINATED BY text_string { Lex->exchange->line_term= $3; }
| STARTING BY text_string { Lex->exchange->line_start= $3; }
;
TERMINATED BY text_string { Lex->exchange->line_term= $3;}
| STARTING BY text_string { Lex->exchange->line_start= $3;};
opt_ignore_lines:
/* empty */
| IGNORE_SYM NUM LINES
{ Lex->exchange->skip_lines=atol($2.str); }
;
{ Lex->exchange->skip_lines=atol($2.str); };
/* Common definitions */
...
...
@@ -3715,8 +3535,7 @@ text_literal:
TEXT_STRING { $$ = new Item_string($1.str,$1.length,YYTHD->thd_charset); }
| UNDERSCORE_CHARSET TEXT_STRING { $$ = new Item_string($2.str,$2.length,Lex->charset); }
| text_literal TEXT_STRING
{ ((Item_string*) $1)->append($2.str,$2.length); }
;
{ ((Item_string*) $1)->append($2.str,$2.length); };
text_string:
TEXT_STRING { $$= new String($1.str,$1.length,YYTHD->thd_charset); }
...
...
@@ -3724,9 +3543,7 @@ text_string:
{
Item *tmp = new Item_varbinary($1.str,$1.length);
$$= tmp ? tmp->val_str((String*) 0) : (String*) 0;
}
;
};
param_marker:
'?'
{
...
...
@@ -3741,9 +3558,7 @@ param_marker:
yyerror("You have an error in your SQL syntax");
YYABORT;
}
}
;
};
literal:
text_literal { $$ = $1; }
| NUM { $$ = new Item_int($1.str, (longlong) atol($1.str),$1.length); }
...
...
@@ -3756,8 +3571,7 @@ literal:
| HEX_NUM { $$ = new Item_varbinary($1.str,$1.length);}
| DATE_SYM text_literal { $$ = $2; }
| TIME_SYM text_literal { $$ = $2; }
| TIMESTAMP text_literal { $$ = $2; }
;
| TIMESTAMP text_literal { $$ = $2; };
/**********************************************************************
** Createing different items.
...
...
@@ -3765,19 +3579,16 @@ literal:
insert_ident:
simple_ident { $$=$1; }
| table_wild { $$=$1; }
;
| table_wild { $$=$1; };
table_wild:
ident '.' '*' { $$ = new Item_field(NullS,$1.str,"*"); }
| ident '.' ident '.' '*'
{ $$ = new Item_field((YYTHD->client_capabilities &
CLIENT_NO_SCHEMA ? NullS : $1.str),$3.str,"*"); }
;
CLIENT_NO_SCHEMA ? NullS : $1.str),$3.str,"*"); };
order_ident:
expr { $$=$1; }
;
expr { $$=$1; };
simple_ident:
ident
...
...
@@ -3799,20 +3610,19 @@ simple_ident:
{
SELECT_LEX_NODE *sel=Select;
$$ = !sel->create_refs || sel->get_in_sum_expr() > 0 ? (Item*) new Item_field((YYTHD->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str) : (Item*) new Item_ref((YYTHD->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str);
}
;
}
;
field_ident:
ident { $$=$1;}
| ident '.' ident { $$=$3;} /* Skipp schema name in create*/
| '.' ident { $$=$2;} /* For Delphi */
;
| '.' ident { $$=$2;} /* For Delphi */;
table_ident:
ident { $$=new Table_ident($1); }
| ident '.' ident { $$=new Table_ident($1,$3,0);}
| '.' ident { $$=new Table_ident($2);}
/* For Delphi */
;
| '.' ident { $$=new Table_ident($2);}
/* For Delphi */
;
ident:
IDENT { $$=$1; }
...
...
@@ -3829,8 +3639,7 @@ ident:
ident_or_text:
ident { $$=$1;}
| TEXT_STRING { $$=$1;}
| LEX_HOSTNAME { $$=$1;}
;
| LEX_HOSTNAME { $$=$1;};
user:
ident_or_text
...
...
@@ -3844,8 +3653,7 @@ user:
if (!($$=(LEX_USER*) sql_alloc(sizeof(st_lex_user))))
YYABORT;
$$->user = $1; $$->host=$3;
}
;
};
/* Keyword that we allow for identifiers */
...
...
@@ -4023,18 +3831,15 @@ set:
lex->option_type=OPT_DEFAULT;
lex->var_list.empty();
}
option_value_list
;
option_value_list;
opt_option:
/* empty */ {}
| OPTION {}
;
| OPTION {};
option_value_list:
option_type option_value
| option_value_list ',' option_type option_value
;
| option_value_list ',' option_type option_value;
option_type:
/* empty */ {}
...
...
@@ -4112,7 +3917,6 @@ internal_variable_name:
}
;
isolation_types:
READ_SYM UNCOMMITTED_SYM { $$= ISO_READ_UNCOMMITTED; }
| READ_SYM COMMITTED_SYM { $$= ISO_READ_COMMITTED; }
...
...
@@ -4135,6 +3939,7 @@ text_or_password:
}
;
set_expr_or_default:
expr { $$=$1; }
| DEFAULT { $$=0; }
...
...
@@ -4150,18 +3955,15 @@ lock:
{
Lex->sql_command=SQLCOM_LOCK_TABLES;
}
table_lock_list
;
table_lock_list;
table_or_tables:
TABLE_SYM
| TABLES
;
| TABLES;
table_lock_list:
table_lock
| table_lock_list ',' table_lock
;
| table_lock_list ',' table_lock;
table_lock:
table_ident opt_table_alias lock_option
...
...
@@ -4263,8 +4065,7 @@ revoke:
lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
bzero((char*) &lex->mqh, sizeof(lex->mqh));
}
grant_privileges ON opt_table FROM user_list
;
grant_privileges ON opt_table FROM user_list;
grant:
GRANT
...
...
@@ -4280,8 +4081,7 @@ grant:
bzero(&(lex->mqh),sizeof(lex->mqh));
}
grant_privileges ON opt_table TO_SYM user_list
require_clause grant_options
;
require_clause grant_options;
grant_privileges:
grant_privilege_list {}
...
...
@@ -4291,8 +4091,7 @@ grant_privileges:
grant_privilege_list:
grant_privilege
| grant_privilege_list ',' grant_privilege
;
| grant_privilege_list ',' grant_privilege;
grant_privilege:
SELECT_SYM { Lex->which_columns = SELECT_ACL;} opt_column_list
...
...
@@ -4319,6 +4118,7 @@ grant_privilege:
| REPLICATION CLIENT_SYM { Lex->grant |= REPL_CLIENT_ACL;}
;
opt_and:
/* empty */ {}
| AND {}
...
...
@@ -4409,6 +4209,7 @@ opt_table:
}
;
user_list:
grant_user { if (Lex->users_list.push_back($1)) YYABORT;}
| user_list ',' grant_user
...
...
@@ -4418,6 +4219,7 @@ user_list:
}
;
grant_user:
user IDENTIFIED_SYM BY TEXT_STRING
{
...
...
@@ -4446,13 +4248,11 @@ opt_column_list:
LEX *lex=Lex;
lex->grant |= lex->which_columns;
}
| '(' column_list ')'
;
| '(' column_list ')';
column_list:
column_list ',' column_list_id
| column_list_id
;
| column_list_id;
column_list_id:
ident
...
...
@@ -4495,11 +4295,9 @@ require_clause: /* empty */
}
;
grant_options:
/* empty */ {}
| WITH grant_option_list
;
| WITH grant_option_list;
grant_option_list:
grant_option_list grant_option {}
...
...
@@ -4526,8 +4324,7 @@ grant_option:
;
begin:
BEGIN_SYM { Lex->sql_command = SQLCOM_BEGIN;} opt_work
;
BEGIN_SYM { Lex->sql_command = SQLCOM_BEGIN;} opt_work;
opt_work:
/* empty */ {}
...
...
@@ -4535,12 +4332,10 @@ opt_work:
;
commit:
COMMIT_SYM { Lex->sql_command = SQLCOM_COMMIT; }
;
COMMIT_SYM { Lex->sql_command = SQLCOM_COMMIT;};
rollback:
ROLLBACK_SYM { Lex->sql_command = SQLCOM_ROLLBACK; }
;
ROLLBACK_SYM { Lex->sql_command = SQLCOM_ROLLBACK;};
/*
...
...
@@ -4605,16 +4400,14 @@ optional_order_or_limit:
union_option:
/* empty */ {}
| ALL {Select->master_unit()->union_option= 1;}
;
| ALL {Select->master_unit()->union_option= 1;};
singleval_subselect:
subselect_start singleval_subselect_init
subselect_end
{
$$= $2;
}
;
};
singleval_subselect_init:
select_init2
...
...
@@ -4622,16 +4415,14 @@ singleval_subselect_init:
$$= new Item_singleval_subselect(YYTHD,
Lex->current_select->master_unit()->
first_select());
}
;
};
exists_subselect:
subselect_start exists_subselect_init
subselect_end
{
$$= $2;
}
;
};
exists_subselect_init:
select_init2
...
...
@@ -4659,13 +4450,11 @@ subselect_start:
{
if (mysql_new_select(Lex, 1))
YYABORT;
}
;
};
subselect_end:
')'
{
LEX *lex=Lex;
lex->current_select = lex->current_select->outer_select();
}
;
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment