From ff7c6d02430ca715c217d088986e04db9bbb5ce6 Mon Sep 17 00:00:00 2001 From: obdev Date: Wed, 26 Apr 2023 13:42:51 +0000 Subject: [PATCH] Fix type deduce stack overflow in ps mode --- src/sql/resolver/expr/ob_raw_expr.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/sql/resolver/expr/ob_raw_expr.cpp b/src/sql/resolver/expr/ob_raw_expr.cpp index ad44e5c9f..b0cf1a16e 100644 --- a/src/sql/resolver/expr/ob_raw_expr.cpp +++ b/src/sql/resolver/expr/ob_raw_expr.cpp @@ -398,7 +398,13 @@ int ObRawExpr::deduce_type(const ObSQLSessionInfo *session_info) int ObRawExpr::formalize(const ObSQLSessionInfo *session_info) { int ret = OB_SUCCESS; - if (OB_FAIL(extract_info())) { + bool is_stack_overflow = false; + if (OB_FAIL(check_stack_overflow(is_stack_overflow))) { + LOG_WARN("fail to check stack overflow", K(ret), K(is_stack_overflow)); + } else if (is_stack_overflow) { + ret = OB_SIZE_OVERFLOW; + LOG_WARN("too deep recursive", K(ret), K(is_stack_overflow)); + } else if (OB_FAIL(extract_info())) { LOG_WARN("failed to extract info", K(*this)); } else if (OB_FAIL(deduce_type(session_info))) { LOG_WARN("failed to deduce type", K(*this));