fix bug about dateadd func

This commit is contained in:
obdev
2023-05-30 08:47:42 +00:00
committed by ob-robot
parent e5bd023a52
commit 3803e66aac
4 changed files with 55 additions and 28 deletions

View File

@ -1391,18 +1391,24 @@ bit_expr '|' bit_expr %prec '|'
}
| bit_expr '+' INTERVAL expr date_unit %prec '+'
{
ParseNode *tmp_node = NULL;
malloc_terminal_node(tmp_node, result->malloc_pool_, T_DEFAULT_INT);
tmp_node->value_ = 1;
ParseNode *params = NULL;
malloc_non_terminal_node(params, result->malloc_pool_, T_EXPR_LIST, 3, $1, $4, $5);
make_name_node($$, result->malloc_pool_, "date_add_date_interval");
malloc_non_terminal_node(params, result->malloc_pool_, T_EXPR_LIST, 4, $1, $4, $5, tmp_node);
make_name_node($$, result->malloc_pool_, "date_add");
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS, 2, $$, params);
check_ret(setup_token_pos_info_and_dup_string($$, result, @1.first_column, @4.last_column),
&@1, result);
}
| INTERVAL expr date_unit '+' bit_expr
{
ParseNode *tmp_node = NULL;
malloc_terminal_node(tmp_node, result->malloc_pool_, T_DEFAULT_INT);
tmp_node->value_ = 2;
ParseNode *params = NULL;
malloc_non_terminal_node(params, result->malloc_pool_, T_EXPR_LIST, 3, $2, $3, $5);
make_name_node($$, result->malloc_pool_, "date_add_interval_date");
malloc_non_terminal_node(params, result->malloc_pool_, T_EXPR_LIST, 4, $2, $3, $5, tmp_node);
make_name_node($$, result->malloc_pool_, "date_add");
malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS, 2, $$, params);
check_ret(setup_token_pos_info_and_dup_string($$, result, @1.first_column, @4.last_column),
&@1, result);