[to #55289503]case/when not support cursor expr

This commit is contained in:
LiuYoung00
2024-03-11 05:45:43 +00:00
committed by ob-robot
parent e17bb817f5
commit 820414c560
4 changed files with 25 additions and 2 deletions

View File

@ -3962,6 +3962,9 @@ int ObRawExprResolverImpl::process_case_node(const ParseNode *node, ObRawExpr *&
LOG_WARN("fail to recursive resolver", K(ret), K(when_node->children_[0]));
} else if (OB_FAIL(SMART_CALL(recursive_resolve(when_node->children_[1], then_expr)))) {
LOG_WARN("fail to recursive resolve", K(ret), K(when_node->children_[1]));
} else if (T_REF_QUERY == then_expr->get_expr_type() && static_cast<ObQueryRefRawExpr*>(then_expr)->is_cursor()) {
ret = OB_ERR_INVALID_CURSOR_EXPR;
LOG_WARN("CURSOR expression not allowed in then.", K(ret));
} else if (OB_FAIL(case_expr->add_when_param_expr(when_expr))) {
LOG_WARN("Add when expression failed", K(ret));
} else if (OB_FAIL(case_expr->add_then_param_expr(then_expr))) {
@ -3993,6 +3996,9 @@ int ObRawExprResolverImpl::process_case_node(const ParseNode *node, ObRawExpr *&
}
} else if (OB_FAIL(SMART_CALL(recursive_resolve(node->children_[2], default_expr)))) {
LOG_WARN("fail to recursive resolve", K(ret), K(node->children_[2]));
} else if (T_REF_QUERY == default_expr->get_expr_type() && static_cast<ObQueryRefRawExpr*>(default_expr)->is_cursor()) {
ret = OB_ERR_INVALID_CURSOR_EXPR;
LOG_WARN("CURSOR expression not allowed in else.", K(ret));
}
if (OB_SUCC(ret)){
if (T_QUESTIONMARK == default_expr->get_expr_type()) {