diff --git a/src/sql/plan_cache/ob_ps_sql_utils.cpp b/src/sql/plan_cache/ob_ps_sql_utils.cpp index 06c4decafe46ff4a8f78d1c9b257328632ff7402..dd6f7037ef11cf0cb02ca8e0d852d63dec22e899 100644 --- a/src/sql/plan_cache/ob_ps_sql_utils.cpp +++ b/src/sql/plan_cache/ob_ps_sql_utils.cpp @@ -62,8 +62,16 @@ int ObPsSqlParamHelper::traverse( TraverseContext& ctx, ObIArray& no_check_type_offsets, ObIArray& not_param_offsets) { int ret = OB_SUCCESS; - if (OB_ISNULL(ctx.node_)) { - // ignore + bool is_overflow = false; + if (OB_FAIL(check_stack_overflow(is_overflow))) { + LOG_WARN("failed to check stack overflow", K(ret)); + } else if (is_overflow) { + ret = OB_SIZE_OVERFLOW; + LOG_WARN("too deep recusive", K(ret)); + } + if (OB_FAIL(ret)) { + } else if (OB_ISNULL(ctx.node_)) { + //ignore } else { bool is_set = false; const ParseNode& parent = *ctx.node_;