: ob-mysql support 'sql_no_cache' and 'SUBPARTITION xxx ENGINE=InnoDB' now .
This commit is contained in:
@ -111,6 +111,7 @@
|
|||||||
%nonassoc LOWER_PARENS
|
%nonassoc LOWER_PARENS
|
||||||
//%nonassoc STRING_VALUE
|
//%nonassoc STRING_VALUE
|
||||||
%left '(' ')'
|
%left '(' ')'
|
||||||
|
%nonassoc SQL_CACHE SQL_NO_CACHE /*for shift/reduce conflict between opt_query_expresion_option_list and SQL_CACHE*/
|
||||||
%nonassoc HIGHER_PARENS TRANSACTION /*for simple_expr conflict*/
|
%nonassoc HIGHER_PARENS TRANSACTION /*for simple_expr conflict*/
|
||||||
%left '.'
|
%left '.'
|
||||||
%right NOT NOT2
|
%right NOT NOT2
|
||||||
@ -315,7 +316,7 @@ END_P SET_VAR DELIMITER
|
|||||||
%type <node> opt_resource_unit_option_list resource_unit_option
|
%type <node> opt_resource_unit_option_list resource_unit_option
|
||||||
%type <node> tenant_option zone_list resource_pool_list
|
%type <node> tenant_option zone_list resource_pool_list
|
||||||
%type <node> opt_partition_option partition_option hash_partition_option key_partition_option opt_use_partition use_partition range_partition_option subpartition_option opt_range_partition_list opt_range_subpartition_list range_partition_list range_subpartition_list range_partition_element range_subpartition_element range_partition_expr range_expr_list range_expr opt_part_id sample_clause opt_block seed sample_percent opt_sample_scope modify_partition_info modify_tg_partition_info opt_partition_range_or_list column_partition_option opt_column_partition_option auto_partition_option auto_range_type partition_size auto_partition_type
|
%type <node> opt_partition_option partition_option hash_partition_option key_partition_option opt_use_partition use_partition range_partition_option subpartition_option opt_range_partition_list opt_range_subpartition_list range_partition_list range_subpartition_list range_partition_element range_subpartition_element range_partition_expr range_expr_list range_expr opt_part_id sample_clause opt_block seed sample_percent opt_sample_scope modify_partition_info modify_tg_partition_info opt_partition_range_or_list column_partition_option opt_column_partition_option auto_partition_option auto_range_type partition_size auto_partition_type
|
||||||
%type <node> subpartition_template_option subpartition_individual_option opt_hash_partition_list hash_partition_list hash_partition_element opt_hash_subpartition_list hash_subpartition_list hash_subpartition_element opt_subpartition_list
|
%type <node> subpartition_template_option subpartition_individual_option opt_hash_partition_list hash_partition_list hash_partition_element opt_hash_subpartition_list hash_subpartition_list hash_subpartition_element opt_subpartition_list opt_engine_option
|
||||||
%type <node> date_unit date_params timestamp_params
|
%type <node> date_unit date_params timestamp_params
|
||||||
%type <node> drop_table_stmt table_list drop_view_stmt table_or_tables
|
%type <node> drop_table_stmt table_list drop_view_stmt table_or_tables
|
||||||
%type <node> explain_stmt explainable_stmt format_name kill_stmt create_outline_stmt alter_outline_stmt drop_outline_stmt opt_outline_target
|
%type <node> explain_stmt explainable_stmt format_name kill_stmt create_outline_stmt alter_outline_stmt drop_outline_stmt opt_outline_target
|
||||||
@ -5598,12 +5599,21 @@ hash_subpartition_element
|
|||||||
}
|
}
|
||||||
|
|
||||||
hash_subpartition_element:
|
hash_subpartition_element:
|
||||||
SUBPARTITION relation_factor
|
SUBPARTITION relation_factor opt_engine_option
|
||||||
{
|
{
|
||||||
|
UNUSED($3);
|
||||||
malloc_non_terminal_node($$, result->malloc_pool_, T_PARTITION_ELEMENT, 5, $2, NULL, NULL, NULL, NULL);
|
malloc_non_terminal_node($$, result->malloc_pool_, T_PARTITION_ELEMENT, 5, $2, NULL, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
opt_engine_option:
|
||||||
|
ENGINE_ COMP_EQ INNODB
|
||||||
|
{
|
||||||
|
// fix the error report by xabank.xyhf_mysql
|
||||||
|
$$ = NULL;
|
||||||
|
}
|
||||||
|
| /* empty */{$$=NULL;};
|
||||||
|
|
||||||
opt_range_subpartition_list:
|
opt_range_subpartition_list:
|
||||||
'(' range_subpartition_list ')'
|
'(' range_subpartition_list ')'
|
||||||
{
|
{
|
||||||
@ -7857,11 +7867,15 @@ opt_having:
|
|||||||
;
|
;
|
||||||
|
|
||||||
opt_query_expression_option_list:
|
opt_query_expression_option_list:
|
||||||
query_expression_option_list
|
query_expression_option_list %prec LOWER_PARENS
|
||||||
{
|
{
|
||||||
|
if ($1 == NULL) {
|
||||||
|
$$ = NULL;
|
||||||
|
} else {
|
||||||
merge_nodes($$, result, T_QEURY_EXPRESSION_LIST, $1);
|
merge_nodes($$, result, T_QEURY_EXPRESSION_LIST, $1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
| %prec LOWER_PARENS
|
||||||
{
|
{
|
||||||
$$ = NULL;
|
$$ = NULL;
|
||||||
}
|
}
|
||||||
@ -7872,9 +7886,13 @@ query_expression_option
|
|||||||
{
|
{
|
||||||
$$ = $1;
|
$$ = $1;
|
||||||
}
|
}
|
||||||
| query_expression_option query_expression_option
|
| query_expression_option_list query_expression_option
|
||||||
{
|
{
|
||||||
|
if ($1 == NULL) {
|
||||||
|
$$ = $2;
|
||||||
|
} else {
|
||||||
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, $1, $2);
|
malloc_non_terminal_node($$, result->malloc_pool_, T_LINK_NODE, 2, $1, $2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -7895,7 +7913,18 @@ ALL
|
|||||||
{
|
{
|
||||||
malloc_terminal_node($$, result->malloc_pool_, T_FOUND_ROWS);
|
malloc_terminal_node($$, result->malloc_pool_, T_FOUND_ROWS);
|
||||||
}
|
}
|
||||||
|
| SQL_NO_CACHE
|
||||||
|
{
|
||||||
|
// SQL_NO_CACHE/SQL_CACHE is deprecated and will be removed in a future release
|
||||||
|
// we only support it in parser, but actually do nothing.
|
||||||
|
$$=NULL;
|
||||||
|
}
|
||||||
|
| SQL_CACHE
|
||||||
|
{
|
||||||
|
$$=NULL;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
projection:
|
projection:
|
||||||
expr %prec LOWER_PARENS
|
expr %prec LOWER_PARENS
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -379,6 +379,7 @@ const char* get_type_name(int type)
|
|||||||
case T_FUN_SYS_IS_IPV4_MAPPED : return "T_FUN_SYS_IS_IPV4_MAPPED";
|
case T_FUN_SYS_IS_IPV4_MAPPED : return "T_FUN_SYS_IS_IPV4_MAPPED";
|
||||||
case T_FUN_SYS_IS_IPV4_COMPAT : return "T_FUN_SYS_IS_IPV4_COMPAT";
|
case T_FUN_SYS_IS_IPV4_COMPAT : return "T_FUN_SYS_IS_IPV4_COMPAT";
|
||||||
case T_FUN_SYS_INETATON : return "T_FUN_SYS_INETATON";
|
case T_FUN_SYS_INETATON : return "T_FUN_SYS_INETATON";
|
||||||
|
case T_FUN_SYS_CRC32 : return "T_FUN_SYS_CRC32";
|
||||||
case T_MYSQL_ONLY_SYS_MAX_OP : return "T_MYSQL_ONLY_SYS_MAX_OP";
|
case T_MYSQL_ONLY_SYS_MAX_OP : return "T_MYSQL_ONLY_SYS_MAX_OP";
|
||||||
case T_FUN_SYS_CONNECT_BY_PATH : return "T_FUN_SYS_CONNECT_BY_PATH";
|
case T_FUN_SYS_CONNECT_BY_PATH : return "T_FUN_SYS_CONNECT_BY_PATH";
|
||||||
case T_FUN_SYS_SYSTIMESTAMP : return "T_FUN_SYS_SYSTIMESTAMP";
|
case T_FUN_SYS_SYSTIMESTAMP : return "T_FUN_SYS_SYSTIMESTAMP";
|
||||||
|
|||||||
Reference in New Issue
Block a user