summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r--sql/sql_yacc.yy13
1 files changed, 13 insertions, 0 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index d4fec1289ba..e6952741b60 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -262,6 +262,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token UDF_RETURNS_SYM
%token UDF_SONAME_SYM
%token UDF_SYM
+%token UNION_SYM
%token UNIQUE_SYM
%token USAGE
%token USE_SYM
@@ -712,6 +713,18 @@ create_table_option:
| RAID_TYPE EQ raid_types { Lex->create_info.raid_type= $3; Lex->create_info.used_fields|= HA_CREATE_USED_RAID;}
| RAID_CHUNKS EQ ULONG_NUM { Lex->create_info.raid_chunks= $3; Lex->create_info.used_fields|= HA_CREATE_USED_RAID;}
| RAID_CHUNKSIZE EQ ULONG_NUM { Lex->create_info.raid_chunksize= $3*RAID_BLOCK_SIZE; Lex->create_info.used_fields|= HA_CREATE_USED_RAID;}
+ | UNION_SYM EQ '(' table_list ')'
+ {
+ /* Move the union list to the merge_list */
+ LEX *lex=Lex;
+ TABLE_LIST *table_list= (TABLE_LIST*) lex->table_list.first;
+ lex->create_info.merge_list= lex->table_list;
+ lex->create_info.merge_list.elements--;
+ lex->create_info.merge_list.first= (byte*) (table_list->next);
+ lex->table_list.elements=1;
+ lex->table_list.next= (byte**) &(table_list->next);
+ table_list->next=0;
+ }
table_types:
ISAM_SYM { $$= DB_TYPE_ISAM; }