summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2002-06-05 21:32:22 +0300
committerunknown <bell@sanja.is.com.ua>2002-06-05 21:32:22 +0300
commit954a0583f8408927184f12ef67527037e10b36d2 (patch)
tree945cc821cedde0c371ca804a2556598b1d087da7 /sql/sql_yacc.yy
parenta532bfb2ea0a0d1cfc0c8d25e6a18cf5a8c0c5bc (diff)
parentfa86b948379ca3929ebd8a7b941d6c2fbb26f8ec (diff)
downloadmariadb-git-954a0583f8408927184f12ef67527037e10b36d2.tar.gz
merged
sql/item.h: Auto merged sql/mysql_priv.h: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_select.cc: Auto merged sql/sql_update.cc: Auto merged
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r--sql/sql_yacc.yy708
1 files changed, 376 insertions, 332 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 9b95ab05977..77de71ed961 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -248,7 +248,9 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token RELAY_LOG_POS_SYM
%token MATCH
%token MAX_ROWS
+%token MAX_CONNECTIONS_PER_HOUR
%token MAX_QUERIES_PER_HOUR
+%token MAX_UPDATES_PER_HOUR
%token MEDIUM_SYM
%token MERGE_SYM
%token MIN_ROWS
@@ -292,6 +294,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token RENAME
%token REPEATABLE_SYM
%token REQUIRE_SYM
+%token RESOURCES
%token RESTORE_SYM
%token RESTRICT
%token REVOKE
@@ -302,6 +305,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token SET
%token SERIALIZABLE_SYM
%token SESSION_SYM
+%token SIMPLE_SYM
%token SHUTDOWN
%token SPATIAL_SYM
%token SQL_CACHE_SYM
@@ -520,7 +524,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
opt_table_alias
%type <table>
- table_ident
+ table_ident references
%type <simple_string>
remember_name remember_end opt_len opt_ident opt_db text_or_password
@@ -532,7 +536,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%type <num>
type int_type real_type order_dir opt_field_spec set_option lock_option
udf_type if_exists opt_local opt_table_options table_options
- table_option opt_if_not_exists
+ table_option opt_if_not_exists delete_option
%type <ulong_num>
ULONG_NUM raid_types merge_insert_types
@@ -600,7 +604,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
opt_precision opt_ignore opt_column opt_restrict
grant revoke set lock unlock string_list field_options field_option
field_opt_list opt_binary table_lock_list table_lock varchar
- references opt_on_delete opt_on_delete_list opt_on_delete_item use
+ ref_list opt_on_delete opt_on_delete_list opt_on_delete_item use
opt_delete_options opt_delete_option
opt_outer table_list table_name opt_option opt_place opt_low_priority
opt_attribute opt_attribute_list attribute column_list column_list_id
@@ -612,7 +616,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
table_to_table_list table_to_table opt_table_list opt_as
handler_rkey_function handler_read_or_scan
single_multi table_wild_list table_wild_one opt_wild union union_list
- precision union_option subselect_start subselect_end
+ precision union_option opt_on_delete_item subselect_start
+ subselect_end
END_OF_INPUT
%type <NONE>
@@ -636,7 +641,7 @@ query:
thd->lex.sql_command = SQLCOM_EMPTY_QUERY;
}
}
- | verb_clause END_OF_INPUT {}
+ | verb_clause END_OF_INPUT {};
verb_clause:
alter
@@ -674,7 +679,7 @@ verb_clause:
| handler
| unlock
| update
- | use
+ | use;
/* change master */
@@ -684,12 +689,12 @@ change:
LEX *lex = Lex;
lex->sql_command = SQLCOM_CHANGE_MASTER;
memset(&lex->mi, 0, 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
@@ -735,7 +740,7 @@ master_def:
RELAY_LOG_POS_SYM EQ ULONG_NUM
{
Lex->mi.relay_log_pos = $3;
- }
+ };
/* create a table */
@@ -756,6 +761,7 @@ create:
bzero((char*) &lex->create_info,sizeof(lex->create_info));
lex->create_info.options=$2 | $4;
lex->create_info.db_type= default_table_type;
+ lex->create_info.table_charset=default_charset_info;
}
create2
@@ -774,7 +780,7 @@ create:
{
LEX *lex=Lex;
- lex->key_list.push_back(new Key($2,$5,$4.str,lex->col_list));
+ lex->key_list.push_back(new Key($2,$4.str, $5, lex->col_list));
lex->col_list.empty();
}
| CREATE DATABASE opt_if_not_exists ident default_charset
@@ -797,11 +803,11 @@ create:
LEX *lex=Lex;
lex->udf.returns=(Item_result) $7;
lex->udf.dl=$9.str;
- }
+ };
create2:
'(' field_list ')' opt_create_table_options create3 {}
- | opt_create_table_options create3 {}
+ | opt_create_table_options create3 {};
create3:
/* empty */ {}
@@ -811,34 +817,34 @@ create3:
lex->lock_option= (using_update_log) ? TL_READ_NO_INSERT : TL_READ;
mysql_init_select(lex);
}
- select_options select_item_list opt_select_from union {}
+ select_options select_item_list opt_select_from union {};
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:
create_table_option
- | create_table_option create_table_options
+ | create_table_option create_table_options;
create_table_option:
TYPE_SYM EQ table_types { Lex->create_info.db_type= $3; }
@@ -871,7 +877,7 @@ create_table_option:
}
| INSERT_METHOD EQ merge_insert_types { Lex->create_info.merge_insert_method= $3; Lex->create_info.used_fields|= HA_CREATE_USED_INSERT_METHOD;}
| DATA_SYM DIRECTORY_SYM EQ TEXT_STRING { Lex->create_info.data_file_name= $4.str; }
- | INDEX DIRECTORY_SYM EQ TEXT_STRING { Lex->create_info.index_file_name= $4.str; }
+ | INDEX DIRECTORY_SYM EQ TEXT_STRING { Lex->create_info.index_file_name= $4.str; };
table_types:
ISAM_SYM { $$= DB_TYPE_ISAM; }
@@ -879,40 +885,40 @@ 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:
/* empty */
- | 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:
@@ -924,28 +930,35 @@ field_list_item:
| key_type opt_ident key_alg '(' key_list ')'
{
LEX *lex=Lex;
- lex->key_list.push_back(new Key($1,$3,$2,lex->col_list));
+ lex->key_list.push_back(new Key($1,$2, $3, lex->col_list));
lex->col_list.empty(); /* Alloced by sql_alloc */
}
| opt_constraint FOREIGN KEY_SYM opt_ident '(' key_list ')' references
{
- Lex->col_list.empty(); /* Alloced by sql_alloc */
+ LEX *lex=Lex;
+ lex->key_list.push_back(new foreign_key($4, lex->col_list,
+ $8,
+ lex->ref_list,
+ lex->fk_delete_opt,
+ lex->fk_update_opt,
+ lex->fk_match_option));
+ lex->col_list.empty(); /* Alloced by sql_alloc */
}
| opt_constraint CHECK_SYM '(' expr ')'
{
Lex->col_list.empty(); /* Alloced by sql_alloc */
- }
+ };
opt_constraint:
/* empty */
- | CONSTRAINT opt_ident
+ | CONSTRAINT opt_ident;
field_spec:
field_ident
{
LEX *lex=Lex;
lex->length=lex->dec=0; lex->type=0; lex->interval=0;
- lex->default_value=0;
+ lex->default_value=lex->comment=0;
}
type opt_attribute
{
@@ -953,10 +966,10 @@ field_spec:
if (add_field_to_list($1.str,
(enum enum_field_types) $3,
lex->length,lex->dec,lex->type,
- lex->default_value,lex->change,
- lex->interval))
+ lex->default_value, lex->comment,
+ lex->change,lex->interval))
YYABORT;
- }
+ };
type:
int_type opt_len field_options { Lex->length=$2; $$=$1; }
@@ -1017,73 +1030,73 @@ type:
LEX *lex=Lex;
lex->interval=typelib(lex->interval_list);
$$=FIELD_TYPE_SET;
- }
+ };
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 { $$= current_thd->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 */ { $$=(char*) 0; } /* use default length */
- | '(' NUM ')' { $$=$2.str; }
+ | '(' NUM ')' { $$=$2.str; };
opt_precision:
/* empty */ {}
- | precision {}
+ | precision {};
opt_attribute:
/* empty */ {}
- | opt_attribute_list {}
+ | opt_attribute_list {};
opt_attribute_list:
opt_attribute_list attribute {}
- | attribute
+ | attribute;
attribute:
NULL_SYM { Lex->type&= ~ NOT_NULL_FLAG; }
@@ -1093,6 +1106,7 @@ attribute:
| PRIMARY_SYM 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; };
opt_binary:
/* empty */ { Lex->charset=default_charset_info; }
@@ -1106,7 +1120,7 @@ opt_binary:
YYABORT;
}
Lex->charset=cs;
- }
+ };
default_charset:
/* empty */ { Lex->charset-default_charset_info; }
@@ -1119,36 +1133,50 @@ default_charset:
YYABORT;
}
Lex->charset=cs;
- }
+ };
references:
- REFERENCES table_ident opt_on_delete {}
- | REFERENCES table_ident '(' key_list ')' opt_on_delete
- {
- Lex->col_list.empty(); /* Alloced by sql_alloc */
- }
+ REFERENCES table_ident
+ {
+ LEX *lex=Lex;
+ lex->fk_delete_opt= lex->fk_update_opt= lex->fk_match_option= 0;
+ lex->ref_list.empty();
+ }
+ opt_ref_list
+ {
+ $$=$2;
+ };
+
+opt_ref_list:
+ /* empty */ 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)); };
+
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 {}
- | ON UPDATE_SYM delete_option {}
- | MATCH FULL {}
- | MATCH PARTIAL {}
+ 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; };
delete_option:
- RESTRICT {}
- | CASCADE {}
- | SET NULL_SYM {}
- | NO_SYM ACTION {}
- | SET DEFAULT {}
+ 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; };
key_type:
opt_constraint PRIMARY_SYM KEY_SYM { $$= Key::PRIMARY; }
@@ -1158,47 +1186,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; }
- | FULLTEXT_SYM { $$= Key::FULLTEXT; }
- | 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
@@ -1225,17 +1252,18 @@ alter:
bzero((char*) &lex->create_info,sizeof(lex->create_info));
lex->create_info.db_type= DB_TYPE_DEFAULT;
lex->create_info.row_type= ROW_TYPE_NOT_USED;
+ lex->create_info.table_charset=default_charset_info;
lex->alter_keys_onoff=LEAVE_AS_IS;
lex->simple_alter=1;
}
- alter_list
+ alter_list;
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; }
@@ -1246,25 +1274,24 @@ alter_list_item:
lex->change= $3.str; lex->simple_alter=0;
}
field_spec opt_place
- | MODIFY_SYM opt_column field_ident
- {
- LEX *lex=Lex;
- lex->length=lex->dec=0; lex->type=0; lex->interval=0;
- lex->default_value=0;
+ | MODIFY_SYM opt_column field_ident
+ {
+ LEX *lex=Lex;
+ lex->length=lex->dec=0; lex->type=0; lex->interval=0;
+ lex->default_value=lex->comment=0;
lex->simple_alter=0;
- }
- type opt_attribute
- {
- LEX *lex=Lex;
- if (add_field_to_list($3.str,
- (enum enum_field_types) $5,
- lex->length,lex->dec,lex->type,
- lex->default_value, $3.str,
- lex->interval))
- YYABORT;
- lex->simple_alter=0;
- }
- opt_place
+ }
+ type opt_attribute
+ {
+ LEX *lex=Lex;
+ if (add_field_to_list($3.str,
+ (enum enum_field_types) $5,
+ lex->length,lex->dec,lex->type,
+ lex->default_value, lex->comment,
+ $3.str, lex->interval))
+ YYABORT;
+ }
+ opt_place
| DROP opt_column field_ident opt_restrict
{
LEX *lex=Lex;
@@ -1298,38 +1325,38 @@ alter_list_item:
lex->alter_list.push_back(new Alter_column($3.str,(Item*) 0));
lex->simple_alter=0;
}
- | RENAME opt_to table_alias table_ident
+ | RENAME opt_to table_ident
{
LEX *lex=Lex;
- lex->select->db=$4->db.str;
- lex->name= $4->table.str;
- lex->simple_alter=0;
+ lex->select->db=$3->db.str;
+ lex->name= $3->table.str;
}
| create_table_options { 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 {}
- | AS {}
+ | EQ {}
+ | AS {};
slave:
SLAVE START_SYM slave_thread_opts
@@ -1347,7 +1374,7 @@ slave:
};
slave_thread_opts: slave_thread_opt
- | slave_thread_opts ',' slave_thread_opt
+ | slave_thread_opts ',' slave_thread_opt;
slave_thread_opt:
/*empty*/ {}
@@ -1358,7 +1385,7 @@ slave_thread_opt:
| IO_THREAD
{
Lex->slave_thd_opt|=SLAVE_IO;
- }
+ };
restore:
RESTORE_SYM table_or_tables
@@ -1368,7 +1395,7 @@ restore:
table_list FROM TEXT_STRING
{
Lex->backup_dir = $6.str;
- }
+ };
backup:
BACKUP_SYM table_or_tables
{
@@ -1377,7 +1404,7 @@ backup:
table_list TO_SYM TEXT_STRING
{
Lex->backup_dir = $6.str;
- }
+ };
repair:
REPAIR table_or_tables
@@ -1386,20 +1413,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
@@ -1408,7 +1435,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
@@ -1417,22 +1444,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
@@ -1441,25 +1468,25 @@ 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
{ if (!add_table_to_list($1,NULL,1,TL_IGNORE) ||
!add_table_to_list($3,NULL,1,TL_IGNORE))
YYABORT;
- }
+ };
/*
Select : retrieve data from table
@@ -1467,7 +1494,7 @@ table_to_table:
select:
- select_init { Lex->sql_command=SQLCOM_SELECT; }
+ select_init { Lex->sql_command=SQLCOM_SELECT; };
select_init:
SELECT_SYM select_part2 { Select->braces=false; } union
@@ -1479,8 +1506,7 @@ select_init:
/* select in braces, can't contain global parameters */
sel->master_unit()->global_parameters=
sel->master_unit();
- } union_opt
-
+ } union_opt;
select_part2:
{
@@ -1488,25 +1514,25 @@ select_part2:
lex->lock_option=TL_READ;
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:
limit_clause {}
| select_from
| opt_into select_from
- | select_from opt_into
+ | select_from opt_into;
select_from:
- FROM join_table_list where_clause group_clause having_clause opt_order_clause limit_clause procedure_clause
+ FROM join_table_list where_clause group_clause having_clause opt_order_clause 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; }
@@ -1518,14 +1544,14 @@ select_option:
| SQL_CALC_FOUND_ROWS { if (Select != &Lex->select_lex) YYABORT; Select->options|= OPTION_FOUND_ROWS; }
| SQL_NO_CACHE_SYM { if (Select != &Lex->select_lex) YYABORT; current_thd->safe_to_cache_query=0; }
| SQL_CACHE_SYM { if (Select != &Lex->select_lex) YYABORT; Select->options |= OPTION_TO_QUERY_CACHE; }
- | ALL {}
+ | ALL {};
select_lock_type:
/* empty */
| FOR_SYM UPDATE_SYM
{ if (Select != &Lex->select_lex) YYABORT; Lex->lock_option= TL_WRITE; current_thd->safe_to_cache_query=0; }
| LOCK_SYM IN_SYM SHARE_SYM MODE_SYM
- { if (Select != &Lex->select_lex) YYABORT; Lex->lock_option= TL_READ_WITH_SHARED_LOCKS; current_thd->safe_to_cache_query=0; }
+ { if (Select != &Lex->select_lex) YYABORT; Lex->lock_option= TL_READ_WITH_SHARED_LOCKS; current_thd->safe_to_cache_query=0; };
select_item_list:
select_item_list ',' select_item
@@ -1534,7 +1560,7 @@ select_item_list:
{
if (add_item_to_list(new Item_field(NULL,NULL,"*")))
YYABORT;
- }
+ };
select_item:
@@ -1546,32 +1572,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; };
/* expressions that begin with 'expr' */
expr_expr:
@@ -1611,7 +1637,7 @@ expr_expr:
| expr '+' INTERVAL_SYM expr interval
{ $$= new Item_date_add_interval($1,$4,$5,0); }
| expr '-' INTERVAL_SYM expr interval
- { $$= new Item_date_add_interval($1,$4,$5,1); }
+ { $$= new Item_date_add_interval($1,$4,$5,1); };
/* expressions that begin with 'expr' that do NOT follow IN_SYM */
no_in_expr:
@@ -1648,7 +1674,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:
@@ -1688,7 +1714,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
@@ -1726,7 +1752,7 @@ simple_expr:
| CONVERT_SYM '(' expr ',' cast_type ')' { $$= create_func_cast($3, $5); }
| CONVERT_SYM '(' expr USING IDENT ')'
{
- CHARSET_INFO *cs=find_compiled_charset_by_name($5.str);
+ CHARSET_INFO *cs=get_charset_by_name($5.str,MYF(MY_WME));
if (!cs)
{
net_printf(&current_thd->net,ER_UNKNOWN_CHARACTER_SET,$5);
@@ -1736,7 +1762,7 @@ simple_expr:
}
| CONVERT_SYM '(' expr ',' expr ',' expr ')'
{
- $$= new Item_func_conv_charset3($3,$5,$7);
+ $$= new Item_func_conv_charset3($3,$7,$5);
}
| FUNC_ARG0 '(' ')'
{ $$= ((Item*(*)(void))($1.symbol->create_func))();}
@@ -2022,11 +2048,11 @@ simple_expr:
current_thd->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 ')'
@@ -2050,7 +2076,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:
{ Select->in_sum_expr++; }
@@ -2058,7 +2084,7 @@ in_sum_expr:
{
Select->in_sum_expr--;
$$=$2;
- }
+ };
cast_type:
BINARY { $$=ITEM_CAST_BINARY; }
@@ -2068,42 +2094,42 @@ cast_type:
| UNSIGNED INT_SYM { $$=ITEM_CAST_UNSIGNED_INT; }
| DATE_SYM { $$=ITEM_CAST_DATE; }
| TIME_SYM { $$=ITEM_CAST_TIME; }
- | DATETIME { $$=ITEM_CAST_DATETIME; }
+ | DATETIME { $$=ITEM_CAST_DATETIME; };
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
@@ -2117,11 +2143,11 @@ when_list2:
SELECT_LEX *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; }
@@ -2163,12 +2189,12 @@ join_table_list:
| join_table_list NATURAL RIGHT opt_outer JOIN_SYM join_table
{ add_join_natural($6,$1); $1->outer_join|=JOIN_TYPE_RIGHT; $$=$1; }
| join_table_list NATURAL JOIN_SYM join_table
- { add_join_natural($1,$4); $$=$4; }
+ { add_join_natural($1,$4); $$=$4; };
normal_join:
',' {}
| JOIN_SYM {}
- | CROSS JOIN_SYM {}
+ | CROSS JOIN_SYM {};
join_table:
{
@@ -2191,7 +2217,7 @@ join_table:
if (!($$= add_table_to_list(new Table_ident(unit),
$5,0,TL_UNLOCK)))
YYABORT;
- }
+ };
select_part3:
{
@@ -2211,7 +2237,7 @@ select_intoto:
opt_outer:
/* empty */ {}
- | OUTER {}
+ | OUTER {};
opt_key_definition:
/* empty */ {}
@@ -2226,11 +2252,11 @@ opt_key_definition:
SELECT_LEX *sel=Select;
sel->ignore_index= *$2;
sel->ignore_index_ptr= &sel->ignore_index;
- }
+ };
key_usage_list:
key_or_index { Select->interval_list.empty(); } '(' key_usage_list2 ')'
- { $$= &Select->interval_list; }
+ { $$= &Select->interval_list; };
key_usage_list2:
key_usage_list2 ',' ident
@@ -2238,7 +2264,7 @@ key_usage_list2:
| ident
{ Select->interval_list.push_back(new String((const char*) $1.str,$1.length,default_charset_info)); }
| PRIMARY_SYM
- { Select->interval_list.push_back(new String("PRIMARY",7,default_charset_info)); }
+ { Select->interval_list.push_back(new String("PRIMARY",7,default_charset_info)); };
using_list:
ident
@@ -2252,7 +2278,7 @@ using_list:
SELECT_LEX *sel=Select;
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; }
@@ -2267,22 +2293,22 @@ 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->where= 0; }
- | WHERE expr { Select->where= $2; }
+ | WHERE expr { Select->where= $2; };
having_clause:
/* empty */
@@ -2290,11 +2316,11 @@ having_clause:
{
SELECT_LEX *sel=Select;
sel->having= $3; sel->create_refs=0;
- }
+ };
opt_escape:
ESCAPE_SYM TEXT_STRING { $$= $2.str; }
- | /* empty */ { $$= (char*) "\\"; }
+ | /* empty */ { $$= (char*) "\\"; };
/*
@@ -2303,13 +2329,13 @@ opt_escape:
group_clause:
/* empty */
- | GROUP BY group_list
+ | GROUP BY group_list;
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; };
/*
Order by statement in select
@@ -2317,7 +2343,7 @@ group_list:
opt_order_clause:
/* empty */
- | order_clause
+ | order_clause;
order_clause:
ORDER_SYM BY
@@ -2325,18 +2351,18 @@ order_clause:
LEX *lex=Lex;
if (lex->sql_command == SQLCOM_MULTI_UPDATE)
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; };
limit_clause:
@@ -2351,7 +2377,7 @@ limit_clause:
{
SELECT_LEX *sel=Select;
sel->select_limit= $4; sel->offset_limit=$2;
- }
+ };
delete_limit_clause:
/* empty */
@@ -2362,20 +2388,20 @@ delete_limit_clause:
lex->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 */
@@ -2389,16 +2415,16 @@ procedure_clause:
YYABORT;
current_thd->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
@@ -2407,7 +2433,7 @@ procedure_item:
YYABORT;
if (!$2->name)
$2->set_name($1,(uint) ((char*) Lex->tok_end - $1));
- }
+ };
opt_into:
INTO OUTFILE TEXT_STRING
@@ -2420,7 +2446,7 @@ opt_into:
{
if (!(Lex->exchange= new sql_exchange($3.str,1)))
YYABORT;
- }
+ };
/*
DO statement
@@ -2433,7 +2459,7 @@ do: DO_SYM
if (!(lex->insert_list = new List_item))
YYABORT;
}
- values
+ values;
/*
Drop : delete tables or index
*/
@@ -2467,27 +2493,27 @@ 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 (!add_table_to_list($1,NULL,1)) YYABORT; }
+ { if (!add_table_to_list($1,NULL,1)) YYABORT; };
if_exists:
/* empty */ { $$=0; }
- | IF EXISTS { $$= 1; }
+ | IF EXISTS { $$= 1; };
/*
** Insert : add new data to table
*/
insert:
- INSERT { Lex->sql_command = SQLCOM_INSERT; } insert_lock_option opt_ignore insert2 insert_field_spec
+ INSERT { Lex->sql_command = SQLCOM_INSERT; } insert_lock_option opt_ignore insert2 insert_field_spec;
replace:
REPLACE
@@ -2496,21 +2522,21 @@ replace:
lex->sql_command = SQLCOM_REPLACE;
lex->duplicates= DUP_REPLACE;
}
- replace_lock_option insert2 insert_field_spec
+ replace_lock_option insert2 insert_field_spec;
insert_lock_option:
/* empty */ { Lex->lock_option= TL_WRITE_CONCURRENT_INSERT; }
| LOW_PRIORITY { Lex->lock_option= TL_WRITE_LOW_PRIORITY; }
| DELAYED_SYM { Lex->lock_option= TL_WRITE_DELAYED; }
- | HIGH_PRIORITY { Lex->lock_option= TL_WRITE; }
+ | HIGH_PRIORITY { Lex->lock_option= TL_WRITE; };
replace_lock_option:
opt_low_priority {}
- | DELAYED_SYM { Lex->lock_option= TL_WRITE_DELAYED; }
+ | DELAYED_SYM { Lex->lock_option= TL_WRITE_DELAYED; };
insert2:
INTO insert_table {}
- | insert_table {}
+ | insert_table {};
insert_table:
table_name
@@ -2519,7 +2545,7 @@ insert_table:
lex->field_list.empty();
lex->many_values.empty();
lex->insert_list=0;
- }
+ };
insert_field_spec:
opt_field_spec insert_values {}
@@ -2530,16 +2556,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 {}
@@ -2551,16 +2577,17 @@ insert_values:
lex->lock_option= (using_update_log) ? TL_READ_NO_INSERT : TL_READ;
mysql_init_select(lex);
}
- select_options select_item_list select_from select_lock_type union {}
+ select_options select_item_list select_from select_lock_type
+ union {};
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
@@ -2569,10 +2596,10 @@ ident_eq_value:
if (lex->field_list.push_back($1) ||
lex->insert_list->push_back($3))
YYABORT;
- }
+ };
equal: EQ {}
- | SET_VAR {}
+ | SET_VAR {};
no_braces:
'('
@@ -2585,11 +2612,11 @@ no_braces:
LEX *lex=Lex;
if (lex->many_values.push_back(lex->insert_list))
YYABORT;
- }
+ };
opt_values:
/* empty */ {}
- | values
+ | values;
values:
values ',' expr
@@ -2601,7 +2628,7 @@ values:
{
if (Lex->insert_list->push_back($1))
YYABORT;
- }
+ };
/* Update rows in a table */
@@ -2614,7 +2641,7 @@ update:
lex->select->order_list.first=0;
lex->select->order_list.next= (byte**) &lex->select->order_list.first;
}
- opt_low_priority opt_ignore join_table_list SET update_list where_clause opt_order_clause delete_limit_clause
+ opt_low_priority opt_ignore join_table_list SET update_list where_clause opt_order_clause delete_limit_clause;
update_list:
update_list ',' simple_ident equal expr
@@ -2626,11 +2653,11 @@ update_list:
{
if (add_item_to_list($1) || add_value_to_list($3))
YYABORT;
- }
+ };
opt_low_priority:
/* empty */ { Lex->lock_option= current_thd->update_lock_default; }
- | LOW_PRIORITY { Lex->lock_option= TL_WRITE_LOW_PRIORITY; }
+ | LOW_PRIORITY { Lex->lock_option= TL_WRITE_LOW_PRIORITY; };
/* Delete rows from a table */
@@ -2644,7 +2671,7 @@ delete:
lex->select->order_list.first=0;
lex->select->order_list.next= (byte**) &lex->select->order_list.first;
}
- opt_delete_options single_multi {}
+ opt_delete_options single_multi {};
single_multi:
FROM table_name where_clause opt_order_clause delete_limit_clause {}
@@ -2653,11 +2680,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
@@ -2669,20 +2696,20 @@ table_wild_one:
{
if (!add_table_to_list(new Table_ident($1,$3,0),NULL,1,TL_WRITE))
YYABORT;
- }
+ };
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
@@ -2693,15 +2720,15 @@ truncate:
lex->select->order_list.elements=0;
lex->select->order_list.first=0;
lex->select->order_list.next= (byte**) &lex->select->order_list.first;
- lex->lock_option= current_thd->update_lock_default; }
+ lex->lock_option= current_thd->update_lock_default; };
opt_table_sym:
/* empty */
- | TABLE_SYM
+ | TABLE_SYM;
/* Show things */
-show: SHOW { Lex->wild=0;} show_param
+show: SHOW { Lex->wild=0;} show_param;
show_param:
DATABASES wild
@@ -2795,31 +2822,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 */
@@ -2834,17 +2861,19 @@ describe:
YYABORT;
}
opt_describe_column
- | describe_command select { Lex->select_lex.options|= SELECT_DESCRIBE; }
+ | describe_command select
+ { 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); }
+ | ident
+ { Lex->wild= new String((const char*) $1.str,$1.length,default_charset_info); };
/* flush things */
@@ -2855,11 +2884,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
@@ -2871,26 +2900,26 @@ flush_option:
| STATUS_SYM { Lex->type|= REFRESH_STATUS; }
| SLAVE { Lex->type|= REFRESH_SLAVE; }
| MASTER_SYM { Lex->type|= REFRESH_MASTER; }
- | DES_KEY_FILE { Lex->type|= REFRESH_DES_KEY_FILE; }
+ | DES_KEY_FILE { Lex->type|= REFRESH_DES_KEY_FILE; };
opt_table_list:
/* empty */ {}
- | table_list {}
+ | 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
@@ -2902,7 +2931,7 @@ purge:
MASTER_SYM LOGS_SYM TO_SYM TEXT_STRING
{
Lex->to_log = $6.str;
- }
+ } ;
/* kill threads */
@@ -2917,7 +2946,7 @@ kill:
}
lex->sql_command=SQLCOM_KILL;
lex->thread_id= (ulong) $2->val_int();
- }
+ };
/* change database */
@@ -2925,7 +2954,7 @@ use: USE_SYM ident
{
LEX *lex=Lex;
lex->sql_command=SQLCOM_CHANGE_DB; lex->select->db= $2.str;
- }
+ };
/* import, export of files */
@@ -2956,30 +2985,30 @@ 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;}
+ | LOCAL_SYM { $$=1;};
load_data_lock:
/* empty */ { Lex->lock_option= current_thd->update_lock_default; }
| CONCURRENT { Lex->lock_option= TL_WRITE_CONCURRENT_INSERT ; }
- | LOW_PRIORITY { Lex->lock_option= TL_WRITE_LOW_PRIORITY; }
+ | LOW_PRIORITY { Lex->lock_option= TL_WRITE_LOW_PRIORITY; };
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;}
@@ -2990,31 +3019,31 @@ field_term:
lex->exchange->opt_enclosed=1;
}
| ENCLOSED BY text_string { Lex->exchange->enclosed= $3;}
- | ESCAPED BY text_string { Lex->exchange->escaped= $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;}
+ | 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 */
text_literal:
TEXT_STRING { $$ = new Item_string($1.str,$1.length,default_charset_info); }
| 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,default_charset_info); }
@@ -3022,7 +3051,7 @@ text_string:
{
Item *tmp = new Item_varbinary($1.str,$1.length,default_charset_info);
$$= tmp ? tmp->val_str((String*) 0) : (String*) 0;
- }
+ };
literal:
text_literal { $$ = $1; }
@@ -3036,7 +3065,7 @@ literal:
| HEX_NUM { $$ = new Item_varbinary($1.str,$1.length,default_charset_info);}
| DATE_SYM text_literal { $$ = $2; }
| TIME_SYM text_literal { $$ = $2; }
- | TIMESTAMP text_literal { $$ = $2; }
+ | TIMESTAMP text_literal { $$ = $2; };
/**********************************************************************
** Createing different items.
@@ -3044,15 +3073,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((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS : $1.str),$3.str,"*"); }
+ { $$ = new Item_field((current_thd->client_capabilities &
+ CLIENT_NO_SCHEMA ? NullS : $1.str),$3.str,"*"); };
order_ident:
- expr { $$=$1; }
+ expr { $$=$1; };
simple_ident:
ident
@@ -3074,18 +3104,19 @@ simple_ident:
{
SELECT_LEX *sel=Select;
$$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str) : (Item*) new Item_ref((current_thd->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; }
@@ -3096,12 +3127,12 @@ ident:
$$.length=$1.length;
if ((lex=Lex)->next_state != STATE_END)
lex->next_state=STATE_OPERATOR_OR_IDENT;
- }
+ };
ident_or_text:
ident { $$=$1;}
| TEXT_STRING { $$=$1;}
- | LEX_HOSTNAME { $$=$1;}
+ | LEX_HOSTNAME { $$=$1;};
user:
ident_or_text
@@ -3115,7 +3146,7 @@ user:
if (!($$=(LEX_USER*) sql_alloc(sizeof(st_lex_user))))
YYABORT;
$$->user = $1; $$->host=$3;
- }
+ };
/* Keyword that we allow for identifiers */
@@ -3198,7 +3229,9 @@ keyword:
| MASTER_USER_SYM {}
| MASTER_PASSWORD_SYM {}
| MASTER_CONNECT_RETRY_SYM {}
+ | MAX_CONNECTIONS_PER_HOUR {}
| MAX_QUERIES_PER_HOUR {}
+ | MAX_UPDATES_PER_HOUR {}
| MEDIUM_SYM {}
| MERGE_SYM {}
| MINUTE_SYM {}
@@ -3215,6 +3248,7 @@ keyword:
| OFF {}
| OPEN_SYM {}
| PACK_KEYS_SYM {}
+ | PARTIAL {}
| PASSWORD {}
| PREV_SYM {}
| PROCESS {}
@@ -3226,12 +3260,13 @@ keyword:
| RAID_CHUNKSIZE {}
| RAID_STRIPED_SYM {}
| RAID_TYPE {}
- | RELAY_LOG_FILE_SYM {}
- | RELAY_LOG_POS_SYM {}
+ | RELAY_LOG_FILE_SYM {}
+ | RELAY_LOG_POS_SYM {}
| RELOAD {}
| REPAIR {}
| REPEATABLE_SYM {}
| RESET_SYM {}
+ | RESOURCES {}
| RESTORE_SYM {}
| ROLLBACK_SYM {}
| ROWS_SYM {}
@@ -3241,6 +3276,7 @@ keyword:
| SERIALIZABLE_SYM {}
| SESSION_SYM {}
| SIGNED_SYM {}
+ | SIMPLE_SYM {}
| SHARE_SYM {}
| SHUTDOWN {}
| SLAVE {}
@@ -3265,7 +3301,7 @@ keyword:
| USE_FRM {}
| VARIABLES {}
| WORK_SYM {}
- | YEAR_SYM {}
+ | YEAR_SYM {};
/* Option functions */
@@ -3280,17 +3316,17 @@ set:
lex->option_type=0;
lex->option_list.empty();
}
- option_value_list
+ option_value_list;
opt_option:
/* empty */ {}
- | OPTION {}
+ | OPTION {};
option_value_list:
option_value
| GLOBAL_SYM { Lex->option_type=1; } option_value
| LOCAL_SYM { Lex->option_type=0; } option_value
- | option_value_list ',' option_value
+ | option_value_list ',' option_value;
option_value:
set_option equal NUM
@@ -3416,13 +3452,13 @@ option_value:
push_back(new Set_option(thd->lex.option_type,
$1.str,$1.length,
item));
- }
+ };
query_cache_type:
NUM { current_thd->query_cache_type = set_zone(atoi($1.str),0,3); }
| OFF { current_thd->query_cache_type = 0; }
| ON { current_thd->query_cache_type = 1; }
- | DEMAND_SYM { current_thd->query_cache_type = 2; }
+ | DEMAND_SYM { current_thd->query_cache_type = 2; };
text_or_password:
TEXT_STRING { $$=$1.str;}
@@ -3436,7 +3472,7 @@ text_or_password:
make_scrambled_password(buff,$3.str);
$$=buff;
}
- }
+ };
set_option:
SQL_BIG_TABLES { $$= OPTION_BIG_TABLES; }
@@ -3459,7 +3495,7 @@ set_option:
| SQL_AUTO_IS_NULL { $$= OPTION_AUTO_IS_NULL; }
| SQL_SAFE_UPDATES { $$= OPTION_SAFE_UPDATES; }
| SQL_BUFFER_RESULT { $$= OPTION_BUFFER_RESULT; }
- | SQL_QUOTE_SHOW_CREATE { $$= OPTION_QUOTE_SHOW_CREATE; }
+ | SQL_QUOTE_SHOW_CREATE { $$= OPTION_QUOTE_SHOW_CREATE; };
set_isolation:
@@ -3476,16 +3512,16 @@ set_isolation:
lex->thd->session_tx_isolation= lex->tx_isolation= $2;
}
| tx_isolation
- { Lex->tx_isolation= $1; }
+ { Lex->tx_isolation= $1; };
tx_isolation:
- TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types { $$=$4; }
+ TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types { $$=$4; };
isolation_types:
READ_SYM UNCOMMITTED_SYM { $$= ISO_READ_UNCOMMITTED; }
| READ_SYM COMMITTED_SYM { $$= ISO_READ_COMMITTED; }
| REPEATABLE_SYM READ_SYM { $$= ISO_REPEATABLE_READ; }
- | SERIALIZABLE_SYM { $$= ISO_SERIALIZABLE; }
+ | SERIALIZABLE_SYM { $$= ISO_SERIALIZABLE; };
/* Lock function */
@@ -3494,28 +3530,28 @@ 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
- { if (!add_table_to_list($1,$2,0,(thr_lock_type) $3)) YYABORT; }
+ { if (!add_table_to_list($1,$2,0,(thr_lock_type) $3)) YYABORT; };
lock_option:
READ_SYM { $$=TL_READ_NO_INSERT; }
| WRITE_SYM { $$=current_thd->update_lock_default; }
| LOW_PRIORITY WRITE_SYM { $$=TL_WRITE_LOW_PRIORITY; }
- | READ_SYM LOCAL_SYM { $$= TL_READ; }
+ | READ_SYM LOCAL_SYM { $$= TL_READ; };
unlock:
- UNLOCK_SYM table_or_tables { Lex->sql_command=SQLCOM_UNLOCK_TABLES; }
+ UNLOCK_SYM table_or_tables { Lex->sql_command=SQLCOM_UNLOCK_TABLES; };
/*
@@ -3545,15 +3581,15 @@ handler:
if (!add_table_to_list($2,0,0))
YYABORT;
}
- handler_read_or_scan where_clause limit_clause { }
+ handler_read_or_scan where_clause limit_clause { };
handler_read_or_scan:
handler_scan_function { Lex->backup_dir= 0; }
- | ident handler_rkey_function { Lex->backup_dir= $1.str; }
+ | ident handler_rkey_function { Lex->backup_dir= $1.str; };
handler_scan_function:
FIRST_SYM { Lex->ha_read_mode = RFIRST; }
- | NEXT_SYM { Lex->ha_read_mode = RNEXT; }
+ | NEXT_SYM { Lex->ha_read_mode = RNEXT; };
handler_rkey_function:
FIRST_SYM { Lex->ha_read_mode = RFIRST; }
@@ -3567,14 +3603,14 @@ handler_rkey_function:
lex->ha_rkey_mode=$1;
if (!(lex->insert_list = new List_item))
YYABORT;
- } '(' values ')' { }
+ } '(' values ')' { };
handler_rkey_mode:
EQ { $$=HA_READ_KEY_EXACT; }
| GE { $$=HA_READ_KEY_OR_NEXT; }
| LE { $$=HA_READ_KEY_OR_PREV; }
| GT_SYM { $$=HA_READ_AFTER_KEY; }
- | LT { $$=HA_READ_BEFORE_KEY; }
+ | LT { $$=HA_READ_BEFORE_KEY; };
/* GRANT / REVOKE */
@@ -3588,7 +3624,7 @@ revoke:
lex->grant= lex->grant_tot_col=0;
lex->select->db=0;
}
- grant_privileges ON opt_table FROM user_list
+ grant_privileges ON opt_table FROM user_list;
grant:
GRANT
@@ -3601,19 +3637,19 @@ grant:
lex->select->db=0;
lex->ssl_type=SSL_TYPE_NONE;
lex->ssl_cipher=lex->x509_subject=lex->x509_issuer=0;
- lex->mqh=0;
+ 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 {}
| ALL PRIVILEGES { Lex->grant = UINT_MAX;}
- | ALL { Lex->grant = UINT_MAX;}
+ | ALL { Lex->grant = UINT_MAX;};
grant_privilege_list:
grant_privilege
- | grant_privilege_list ',' grant_privilege
+ | grant_privilege_list ',' grant_privilege;
grant_privilege:
SELECT_SYM
@@ -3636,10 +3672,10 @@ grant_privilege:
| SHUTDOWN { Lex->grant |= SHUTDOWN_ACL;}
| PROCESS { Lex->grant |= PROCESS_ACL;}
| FILE_SYM { Lex->grant |= FILE_ACL;}
- | GRANT OPTION { Lex->grant |= GRANT_ACL;}
+ | GRANT OPTION { Lex->grant |= GRANT_ACL;};
require_list: require_list_element AND require_list
-| require_list_element
+| require_list_element ;
require_list_element: SUBJECT_SYM TEXT_STRING
{
@@ -3666,11 +3702,11 @@ require_list_element: SUBJECT_SYM TEXT_STRING
LEX *lex=Lex;
if (lex->ssl_cipher)
{
- net_printf(&lex->thd->net,ER_DUP_ARGUMENT, "CHIPER");
+ net_printf(&lex->thd->net,ER_DUP_ARGUMENT, "CIPHER");
YYABORT;
}
lex->ssl_cipher=$2.str;
- }
+ };
opt_table:
'*'
@@ -3716,12 +3752,12 @@ opt_table:
YYABORT;
if (lex->grant == UINT_MAX)
lex->grant = TABLE_ACLS & ~GRANT_ACL;
- }
+ };
user_list:
grant_user { if (Lex->users_list.push_back($1)) YYABORT;}
- | user_list ',' grant_user { if (Lex->users_list.push_back($3)) YYABORT;}
+ | user_list ',' grant_user { if (Lex->users_list.push_back($3)) YYABORT;};
grant_user:
@@ -3742,7 +3778,7 @@ grant_user:
| user IDENTIFIED_SYM BY PASSWORD TEXT_STRING
{ $$=$1; $1->password=$5 ; }
| user
- { $$=$1; $1->password.str=NullS; }
+ { $$=$1; $1->password.str=NullS; };
opt_column_list:
@@ -3751,11 +3787,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
@@ -3775,7 +3811,7 @@ column_list_id:
point->rights |= lex->which_columns;
else
lex->columns.push_back(new LEX_COLUMN (*new_str,lex->which_columns));
- }
+ };
require_clause: /* empty */
@@ -3790,35 +3826,43 @@ require_clause: /* empty */
| REQUIRE_SYM X509_SYM
{
Lex->ssl_type=SSL_TYPE_X509;
- }
+ };
grant_options:
/* empty */ {}
- | WITH grant_option_list
+ | WITH grant_option_list;
grant_option_list:
grant_option_list grant_option {}
- | grant_option {}
+ | grant_option {};
grant_option:
GRANT OPTION { Lex->grant |= GRANT_ACL;}
- | MAX_QUERIES_PER_HOUR EQ NUM
+ | MAX_QUERIES_PER_HOUR EQ ULONG_NUM
+ {
+ Lex->mqh.questions=$3;
+ }
+ | MAX_UPDATES_PER_HOUR EQ ULONG_NUM
{
- Lex->mqh=atoi($3.str);
+ Lex->mqh.updates=$3;
+ }
+ | MAX_CONNECTIONS_PER_HOUR EQ ULONG_NUM
+ {
+ Lex->mqh.connections=$3;
}
begin:
- BEGIN_SYM { Lex->sql_command = SQLCOM_BEGIN;} opt_work
+ BEGIN_SYM { Lex->sql_command = SQLCOM_BEGIN;} opt_work;
opt_work:
/* empty */ {}
- | WORK_SYM {}
+ | WORK_SYM {};
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;};
/*
@@ -3828,7 +3872,7 @@ rollback:
union:
/* empty */ {}
- | union_list
+ | union_list;
union_list:
UNION_SYM union_option
@@ -3845,14 +3889,14 @@ union_list:
YYABORT;
lex->select->linkage=UNION_TYPE;
}
- select_init
+ select_init;
union_opt:
union {}
- | optional_order_or_limit {}
+ | optional_order_or_limit {};
optional_order_or_limit:
- /* emty */ {}
+ /* empty */ {}
|
{
LEX *lex=Lex;
@@ -3867,35 +3911,35 @@ optional_order_or_limit:
lex->select= (SELECT_LEX*)lex->select->master_unit();
lex->select->select_limit=lex->thd->default_select_limit;
}
- opt_order_clause limit_clause
+ opt_order_clause limit_clause;
union_option:
/* empty */ {}
- | ALL {Lex->union_option=1;}
+ | ALL {Lex->union_option=1;};
subselect:
subselect_start subselect_init
subselect_end
{
$$= $2;
- }
+ };
subselect_init:
select_init
{
$$= new Item_subselect(current_thd, Lex->select);
- }
+ };
subselect_start:
'('
{
if (mysql_new_select(Lex, 1))
YYABORT;
- }
+ };
subselect_end:
')'
{
LEX *lex=Lex;
lex->select = lex->select->outer_select();
- }
+ };