From 1f72959e5be162b216363d07a5b0a96bec4d4ca3 Mon Sep 17 00:00:00 2001 From: obdev Date: Tue, 14 Mar 2023 14:46:55 +0000 Subject: [PATCH] [to #46563351] add alias name for cursor_for_loop's select column --- src/sql/resolver/dml/ob_select_resolver.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/sql/resolver/dml/ob_select_resolver.cpp b/src/sql/resolver/dml/ob_select_resolver.cpp index ca3d93cc16..d25b763d5d 100644 --- a/src/sql/resolver/dml/ob_select_resolver.cpp +++ b/src/sql/resolver/dml/ob_select_resolver.cpp @@ -2012,6 +2012,25 @@ int ObSelectResolver::resolve_field_list(const ParseNode &node) } else { //invalid name, do nothing } + } else if (is_oracle_mode() + && T_QUESTIONMARK == sel_expr->get_expr_type() + && T_OBJ_ACCESS_REF == project_node->type_) { + while (OB_SUCC(ret) && NULL != project_node->children_[1]) { + project_node = project_node->children_[1]; + } + if (OB_FAIL(ret)) { + } else if (T_OBJ_ACCESS_REF != project_node->type_) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("unexpected select item type", K(select_item), K(project_node->type_), K(ret)); + } else { + alias_node = project_node->children_[0]; + select_item.alias_name_.assign_ptr(const_cast(alias_node->str_value_), + static_cast(alias_node->str_len_)); + if (OB_UNLIKELY(alias_node->str_len_ > OB_MAX_COLUMN_NAME_LENGTH)) { + ret = OB_ERR_TOO_LONG_IDENT; + LOG_WARN("alias name too long", K(ret), K(select_item.alias_name_)); + } + } } else { if (params_.is_prepare_protocol_ || !session_info_->get_local_ob_enable_plan_cache() -- GitLab