From 4e0664612667db516f1aa0327245ea073590019e Mon Sep 17 00:00:00 2001 From: jingtaoye35 <1255153887@qq.com> Date: Mon, 14 Oct 2024 18:14:01 +0000 Subject: [PATCH] fix stack not enough in parser --- src/sql/parser/parse_node.c | 9 --------- src/sql/parser/sql_parser_base.h | 9 ++++----- unittest/sql/parser/test_sql_fast_parser.cpp | 11 ----------- 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/src/sql/parser/parse_node.c b/src/sql/parser/parse_node.c index e36c58890..82b7666e4 100644 --- a/src/sql/parser/parse_node.c +++ b/src/sql/parser/parse_node.c @@ -994,12 +994,3 @@ ParseNode *adjust_inner_join_inner(int *error_code, ParseNode *inner_join, Parse } return ret_node; } - -extern int ob_backtrace_c(void **buffer, int size); -extern char *parray_c(char *buf, int64_t len, int64_t *array, int size); -char *parser_lbt(void **addr_buff, const size_t addr_size, - char *str_buff, const size_t str_size) -{ - int size = ob_backtrace_c(addr_buff, addr_size); - return parray_c(str_buff, str_size, (int64_t *)addr_buff, size); -} diff --git a/src/sql/parser/sql_parser_base.h b/src/sql/parser/sql_parser_base.h index 67a1860b9..9a83f1e65 100644 --- a/src/sql/parser/sql_parser_base.h +++ b/src/sql/parser/sql_parser_base.h @@ -69,7 +69,6 @@ extern bool check_real_escape(const struct ObCharsetInfo *cs, char *str, int64_t int64_t last_escape_check_pos); int add_alias_name(ParseNode *node, ParseResult *result, int end); -extern char *parser_lbt(void **addr_buff, const size_t addr_size, char *str_buff, const size_t str_size); #define ISSPACE(c) ((c) == ' ' || (c) == '\n' || (c) == '\r' || (c) == '\t' || (c) == '\f' || (c) == '\v') @@ -141,10 +140,10 @@ do { if (OB_UNLIKELY(NULL == val_ptr)) \ { \ ((ParseResult *)yyextra)->extra_errno_ = OB_PARSER_ERR_NO_MEMORY; \ - void *addrs[100]; \ - char buf[1024]; \ - char *print_str = parser_lbt(addrs, 100, buf, 1024); \ - yyerror(yylloc, yyextra, "No more space for malloc, lbt: %s", print_str); \ + yyerror(yylloc, yyextra, "No more space for malloc, start_col:%d, end_col:%d, line:%d", \ + ((ParseResult *)yyextra)->start_col_, \ + ((ParseResult *)yyextra)->end_col_, \ + ((ParseResult *)yyextra)->line_); \ return ERROR; \ } \ } while (0); diff --git a/unittest/sql/parser/test_sql_fast_parser.cpp b/unittest/sql/parser/test_sql_fast_parser.cpp index 118ede7e4..14b6b04d2 100644 --- a/unittest/sql/parser/test_sql_fast_parser.cpp +++ b/unittest/sql/parser/test_sql_fast_parser.cpp @@ -65,17 +65,6 @@ bool check_stack_overflow_c() { return 0; } - -int ob_backtrace_c(void **buffer, int size) -{ - return 0; -} - -char *parray_c(char *buf, int64_t len, int64_t *array, int size) -{ - snprintf(buf, 0, "oceanbase"); - return buf; -} } using namespace oceanbase::sql;