[FEAT MERGE] ap perf optimization

Co-authored-by: wangt1xiuyi <13547954130@163.com>
Co-authored-by: XIAO-HOU <372060054@qq.com>
Co-authored-by: z404289981 <z404289981@163.com>
This commit is contained in:
DengzhiLiu
2024-03-26 07:51:42 +00:00
committed by ob-robot
parent cd6b56ce4a
commit 5aa0503125
85 changed files with 3566 additions and 832 deletions

View File

@ -853,6 +853,7 @@ static const NonReservedKeyword Mysql_none_reserved_keywords[] =
{"substr", SUBSTR},
{"substring", SUBSTRING},
{"sum", SUM},
{"sum_opnsize", SUM_OPNSIZE},
{"super", SUPER},
{"suspend", SUSPEND},
{"successful", SUCCESSFUL},

View File

@ -348,7 +348,7 @@ END_P SET_VAR DELIMITER
SYNCHRONIZATION SYNCHRONOUS STOP STORAGE STORAGE_FORMAT_VERSION STORE STORING STRING
SUBCLASS_ORIGIN SUBDATE SUBJECT SUBPARTITION SUBPARTITIONS SUBSTR SUBSTRING SUCCESSFUL SUM
SUPER SUSPEND SWAPS SWITCH SWITCHES SWITCHOVER SYSTEM SYSTEM_USER SYSDATE SESSION_ALIAS
SIZE SKEWONLY SEQUENCE SLOG STATEMENT_ID SKIP_HEADER SKIP_BLANK_LINES STATEMENT
SIZE SKEWONLY SEQUENCE SLOG STATEMENT_ID SKIP_HEADER SKIP_BLANK_LINES STATEMENT SUM_OPNSIZE
TABLE_CHECKSUM TABLE_MODE TABLE_ID TABLE_NAME TABLEGROUPS TABLES TABLESPACE TABLET TABLET_ID TABLET_MAX_SIZE
TEMPLATE TEMPORARY TEMPTABLE TENANT TEXT THAN TIME TIMESTAMP TIMESTAMPADD TIMESTAMPDIFF TP_NO
@ -3048,6 +3048,10 @@ MOD '(' expr ',' expr ')'
{
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_GEOMCOLLECTION, 1, NULL);
}
| SUM_OPNSIZE '(' expr ')'
{
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SUM_OPNSIZE, 2, NULL, $3);
}
;
sys_interval_func:
@ -11446,6 +11450,30 @@ relation_factor %prec LOWER_PARENS
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 4, $1, $$, $2, $3);
}
| relation_factor use_partition sample_clause use_flashback %prec LOWER_PARENS
{
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, NULL, $2, $3, $4);
}
| relation_factor use_partition sample_clause seed use_flashback %prec LOWER_PARENS
{
if ($3 != NULL) {
$3->children_[2] = $4;
}
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, NULL, $2, $3, $5);
}
| relation_factor use_partition sample_clause use_flashback index_hint_list %prec LOWER_PARENS
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, $$, $2, $3, $4);
}
| relation_factor use_partition sample_clause seed use_flashback index_hint_list %prec LOWER_PARENS
{
if ($3 != NULL) {
$3->children_[2] = $4;
}
merge_nodes($$, result, T_INDEX_HINT_LIST, $6);
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, $$, $2, $3, $5);
}
| relation_factor sample_clause %prec LOWER_PARENS
{
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 4, $1, NULL, NULL, $2);
@ -11470,6 +11498,30 @@ relation_factor %prec LOWER_PARENS
merge_nodes($$, result, T_INDEX_HINT_LIST, $4);
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 4, $1, $$, NULL, $2);
}
| relation_factor sample_clause use_flashback %prec LOWER_PARENS
{
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, NULL, NULL, $2, $3);
}
| relation_factor sample_clause seed use_flashback %prec LOWER_PARENS
{
if ($2 != NULL) {
$2->children_[2] = $3;
}
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, NULL, NULL, $2, $4);
}
| relation_factor sample_clause use_flashback index_hint_list %prec LOWER_PARENS
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $4);
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, $$, NULL, $2, $3);
}
| relation_factor sample_clause seed use_flashback index_hint_list %prec LOWER_PARENS
{
if ($2 != NULL) {
$2->children_[2] = $3;
}
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
malloc_non_terminal_node($$, result->malloc_pool_, T_ORG, 5, $1, $$, NULL, $2, $4);
}
| relation_factor index_hint_list %prec LOWER_PARENS
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $2);
@ -11521,6 +11573,54 @@ relation_factor %prec LOWER_PARENS
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $6, NULL, $2, $3);
$$->sql_str_off_ = @1.first_column;
}
| relation_factor sample_clause use_flashback AS relation_name
{
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $5, NULL, NULL, $2, $3);
}
| relation_factor sample_clause seed use_flashback AS relation_name
{
if ($2 != NULL) {
$2->children_[2] = $3;
}
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $6, NULL, NULL, $2, $4);
}
| relation_factor use_partition sample_clause use_flashback AS relation_name
{
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $6, NULL, $2, $3, $4);
}
| relation_factor use_partition sample_clause seed use_flashback AS relation_name
{
if ($3 != NULL) {
$3->children_[2] = $4;
}
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $7, NULL, $2, $3, $5);
}
| relation_factor sample_clause use_flashback AS relation_name index_hint_list
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $6);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $5, $$, NULL, $2, $3);
}
| relation_factor sample_clause seed use_flashback AS relation_name index_hint_list
{
if ($2 != NULL) {
$2->children_[2] = $3;
}
merge_nodes($$, result, T_INDEX_HINT_LIST, $7);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $6, $$, NULL, $2, $4);
}
| relation_factor use_partition sample_clause use_flashback AS relation_name index_hint_list
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $7);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $6, $$, $2, $3, $4);
}
| relation_factor use_partition sample_clause seed use_flashback AS relation_name index_hint_list
{
if ($3 != NULL) {
$3->children_[2] = $4;
}
merge_nodes($$, result, T_INDEX_HINT_LIST, $8);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $7, $$, $2, $3, $5);
}
| relation_factor AS relation_name index_hint_list
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $4);
@ -11652,6 +11752,54 @@ relation_factor %prec LOWER_PARENS
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 5, $1, $4, $$, $2, $3);
$$->sql_str_off_ = @1.first_column;
}
| relation_factor sample_clause use_flashback relation_name
{
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $4, NULL, NULL, $2, $3);
}
| relation_factor sample_clause seed use_flashback relation_name
{
if ($2 != NULL) {
$2->children_[2] = $3;
}
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $5, NULL, NULL, $2, $4);
}
| relation_factor use_partition sample_clause use_flashback relation_name
{
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $5, NULL, $2, $3, $4);
}
| relation_factor use_partition sample_clause seed use_flashback relation_name
{
if ($3 != NULL) {
$3->children_[2] = $4;
}
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $6, NULL, $2, $3, $5);
}
| relation_factor sample_clause use_flashback relation_name index_hint_list
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $5);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $4, $$, NULL, $2, $3);
}
| relation_factor sample_clause seed use_flashback relation_name index_hint_list
{
if ($2 != NULL) {
$2->children_[2] = $3;
}
merge_nodes($$, result, T_INDEX_HINT_LIST, $6);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $5, $$, NULL, $2, $4);
}
| relation_factor use_partition sample_clause use_flashback relation_name index_hint_list
{
merge_nodes($$, result, T_INDEX_HINT_LIST, $6);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $5, $$, $2, $3, $4);
}
| relation_factor use_partition sample_clause seed use_flashback relation_name index_hint_list
{
if ($3 != NULL) {
$3->children_[2] = $4;
}
merge_nodes($$, result, T_INDEX_HINT_LIST, $7);
malloc_non_terminal_node($$, result->malloc_pool_, T_ALIAS, 6, $1, $6, $$, $2, $3, $5);
}
| TABLE '(' simple_expr ')' %prec LOWER_PARENS
{
malloc_non_terminal_node($$, result->malloc_pool_, T_TABLE_COLLECTION_EXPRESSION, 2, $3, NULL);
@ -20454,6 +20602,7 @@ ACCOUNT
| KV_ATTRIBUTES
| OBJECT_ID
| TRANSFER
| SUM_OPNSIZE
;
unreserved_keyword_special: