From bcd7e5b279670fcfc38037e4baeec5a41cb36169 Mon Sep 17 00:00:00 2001 From: obdev Date: Wed, 20 Sep 2023 16:42:21 +0000 Subject: [PATCH] fix unable to parse udf with the same name as system function `current_user` --- src/sql/parser/sql_parser_mysql_mode.y | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/sql/parser/sql_parser_mysql_mode.y b/src/sql/parser/sql_parser_mysql_mode.y index ca427c787..9c9d10dee 100755 --- a/src/sql/parser/sql_parser_mysql_mode.y +++ b/src/sql/parser/sql_parser_mysql_mode.y @@ -3090,6 +3090,19 @@ CURRENT_USER { malloc_non_terminal_node($$, result->malloc_pool_, T_FUN_SYS_CURRENT_USER, 1, NULL); } +| relation_name '.' CURRENT_USER '(' ')' +{ + ParseNode *name_node = NULL; + ParseNode *function = NULL; + ParseNode *sub_obj_access_ref = NULL; + ParseNode *udf_node = NULL; + make_name_node(name_node, result->malloc_pool_, "current_user"); + malloc_non_terminal_node(function, result->malloc_pool_, T_FUN_SYS, 2, name_node, NULL); + malloc_non_terminal_node(sub_obj_access_ref, result->malloc_pool_, T_OBJ_ACCESS_REF, 2, function, NULL); + malloc_non_terminal_node($$, result->malloc_pool_, T_OBJ_ACCESS_REF, 2, $1, sub_obj_access_ref); + malloc_non_terminal_node(udf_node, result->malloc_pool_, T_FUN_UDF, 4, $3, NULL, $1, NULL); + store_pl_ref_object_symbol(udf_node, result, REF_FUNC); +} ; cur_date_func: