This commit is contained in:
chenhuiming
2023-02-15 10:01:00 +08:00
parent 6c6f4fc224
commit 28c53b41af
2 changed files with 20 additions and 20 deletions

View File

@ -197,7 +197,7 @@ int ObRawExprCopier::copy_on_replace(const common::ObIArray<T *> &from_exprs,
} }
} }
if (OB_SUCC(ret) && OB_FAIL(to_exprs.assign(tmp_arr))) { if (OB_SUCC(ret) && OB_FAIL(to_exprs.assign(tmp_arr))) {
SQL_RESV_LOG(WARN, "failed to assgin replaced results", K(ret)); SQL_RESV_LOG(WARN, "failed to assign replaced results", K(ret));
} }
return ret; return ret;
} }

View File

@ -250,7 +250,7 @@ int ObRawExprResolverImpl::do_recursive_resolve(const ParseNode *node, ObRawExpr
LOG_DEBUG("resolve item", "item_type", get_type_name(node->type_)); LOG_DEBUG("resolve item", "item_type", get_type_name(node->type_));
if (IS_DATATYPE_OR_QUESTIONMARK_OP(node->type_)) { if (IS_DATATYPE_OR_QUESTIONMARK_OP(node->type_)) {
if (OB_FAIL(process_datatype_or_questionmark(*node, expr))) { if (OB_FAIL(process_datatype_or_questionmark(*node, expr))) {
LOG_WARN("fail to process datetype or questionmark", K(ret), K(node)); LOG_WARN("fail to process datatype or questionmark", K(ret), K(node));
} }
} else { } else {
switch (node->type_) { switch (node->type_) {
@ -599,7 +599,7 @@ int ObRawExprResolverImpl::do_recursive_resolve(const ParseNode *node, ObRawExpr
case T_OP_REGEXP: case T_OP_REGEXP:
case T_OP_NOT_REGEXP: { case T_OP_NOT_REGEXP: {
if (OB_FAIL(process_regexp_or_not_regexp_node(node, expr))) { if (OB_FAIL(process_regexp_or_not_regexp_node(node, expr))) {
LOG_WARN("fail to process prgexp_or_not_pegexp node", K(ret), K(node)); LOG_WARN("fail to process prgexp_or_not_regexp node", K(ret), K(node));
} }
break; break;
} }
@ -1012,7 +1012,7 @@ int ObRawExprResolverImpl::do_recursive_resolve(const ParseNode *node, ObRawExpr
} }
case T_FUN_UDF: { case T_FUN_UDF: {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_ERROR("A BUG, Nerver Be Here!!!", K(ret)); LOG_ERROR("A BUG, Never Be Here!!!", K(ret));
break; break;
} }
case T_WINDOW_FUNCTION: { case T_WINDOW_FUNCTION: {
@ -1546,7 +1546,7 @@ int ObRawExprResolverImpl::process_cursor_attr_node(const ParseNode &node, ObRaw
} }
default: { default: {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("invlid node type", K(node.children_[0]->type_)); LOG_WARN("invalid node type", K(node.children_[0]->type_));
} }
} }
} }
@ -1560,7 +1560,7 @@ int ObRawExprResolverImpl::process_cursor_attr_node(const ParseNode &node, ObRaw
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
if (T_FUN_PL_GET_CURSOR_ATTR == c_expr->get_expr_type()) { if (T_FUN_PL_GET_CURSOR_ATTR == c_expr->get_expr_type()) {
// 注意: 替换为ColumnRef的目的是为了在DML语句中把CURSOR%ROWID替换为QuenstionMark // 注意: 替换为ColumnRef的目的是为了在DML语句中把CURSOR%ROWID替换为QuestionMark
// 参见: ObDMLResolver::resolve_qualified_identifier // 参见: ObDMLResolver::resolve_qualified_identifier
ObQualifiedName column_ref; ObQualifiedName column_ref;
ObObjAccessIdent access_ident; ObObjAccessIdent access_ident;
@ -1611,7 +1611,7 @@ int ObRawExprResolverImpl::process_obj_access_node(const ParseNode &node, ObRawE
ObQualifiedName column_ref; ObQualifiedName column_ref;
int64_t child_start = ctx_.columns_->count(); int64_t child_start = ctx_.columns_->count();
if (OB_FAIL(resolve_obj_access_idents(node, column_ref))) { if (OB_FAIL(resolve_obj_access_idents(node, column_ref))) {
LOG_WARN("resolve obj acess idents failed", K(ret)); LOG_WARN("resolve obj access idents failed", K(ret));
} else { } else {
column_ref.format_qualified_name(ctx_.case_mode_); column_ref.format_qualified_name(ctx_.case_mode_);
column_ref.parents_expr_info_ = ctx_.parents_expr_info_; column_ref.parents_expr_info_ = ctx_.parents_expr_info_;
@ -1733,7 +1733,7 @@ int ObRawExprResolverImpl::process_sys_connect_by_path_node(const ParseNode *nod
if (OB_ISNULL(node)) { if (OB_ISNULL(node)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpeced parameter", K(node), K(ret)); LOG_WARN("unexpected parameter", K(node), K(ret));
} else if (OB_UNLIKELY(node->type_ != T_FUN_SYS_CONNECT_BY_PATH) } else if (OB_UNLIKELY(node->type_ != T_FUN_SYS_CONNECT_BY_PATH)
|| OB_UNLIKELY(node->num_child_ != 2) || OB_UNLIKELY(node->num_child_ != 2)
|| OB_ISNULL(node->children_) || OB_ISNULL(node->children_)
@ -2373,7 +2373,7 @@ int ObRawExprResolverImpl::process_connect_by_root_node(const ParseNode &node, O
|| OB_ISNULL(node.children_) || OB_ISNULL(node.children_)
|| OB_UNLIKELY(node.type_ != T_OP_CONNECT_BY_ROOT)) { || OB_UNLIKELY(node.type_ != T_OP_CONNECT_BY_ROOT)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("invalid parametor", K(node.num_child_), K(node.type_), K(ret)); LOG_WARN("invalid parameter", K(node.num_child_), K(node.type_), K(ret));
} else if (OB_ISNULL(ctx_.stmt_) } else if (OB_ISNULL(ctx_.stmt_)
|| OB_UNLIKELY(false == ctx_.stmt_->is_select_stmt())) { || OB_UNLIKELY(false == ctx_.stmt_->is_select_stmt())) {
ret = OB_ERR_CBY_CONNECT_BY_REQUIRED; ret = OB_ERR_CBY_CONNECT_BY_REQUIRED;
@ -2539,7 +2539,7 @@ int ObRawExprResolverImpl::process_datatype_or_questionmark(const ParseNode &nod
} else if (ctx_.is_for_dbms_sql_ } else if (ctx_.is_for_dbms_sql_
|| (ctx_.is_for_dynamic_sql_ && OB_NOT_NULL(session_info->get_pl_context()))){ || (ctx_.is_for_dynamic_sql_ && OB_NOT_NULL(session_info->get_pl_context()))){
//NOTICE: only need to process PL dynamic sql and dbms sql //NOTICE: only need to process PL dynamic sql and dbms sql
/*dynmaic and dbms sql already prepare question mark in parse stage.*/ /*dynamic and dbms sql already prepare question mark in parse stage.*/
bool need_save = true; bool need_save = true;
for (int64_t i = 0; OB_SUCC(ret) && i < ctx_.external_param_info_->count(); ++i) { for (int64_t i = 0; OB_SUCC(ret) && i < ctx_.external_param_info_->count(); ++i) {
CK (OB_NOT_NULL(ctx_.external_param_info_->at(i).first)); CK (OB_NOT_NULL(ctx_.external_param_info_->at(i).first));
@ -3008,7 +3008,7 @@ int ObRawExprResolverImpl::process_any_or_all_node(const ParseNode *node, ObRawE
LOG_WARN("resolve sub-query failed", K(ret)); LOG_WARN("resolve sub-query failed", K(ret));
} else if (OB_ISNULL(sub_expr)) { } else if (OB_ISNULL(sub_expr)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("inavalid sub_expr", K(sub_expr)); LOG_WARN("invalid sub_expr", K(sub_expr));
} else if (T_REF_QUERY == sub_expr->get_expr_type()) { } else if (T_REF_QUERY == sub_expr->get_expr_type()) {
ObQueryRefRawExpr *sub_ref = static_cast<ObQueryRefRawExpr*>(sub_expr); ObQueryRefRawExpr *sub_ref = static_cast<ObQueryRefRawExpr*>(sub_expr);
sub_ref->set_is_set(true); sub_ref->set_is_set(true);
@ -3369,7 +3369,7 @@ int ObRawExprResolverImpl::process_regexp_or_not_regexp_node(const ParseNode *no
ret = OB_INVALID_ARGUMENT; ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid argument", K(ret), K(node)); LOG_WARN("invalid argument", K(ret), K(node));
} else if (OB_FAIL(process_node_with_children(node, num_child, t_expr))) { } else if (OB_FAIL(process_node_with_children(node, num_child, t_expr))) {
LOG_WARN("fail to preocess node with children", K(ret)); LOG_WARN("fail to process node with children", K(ret));
} else if (OB_ISNULL(t_expr)) { } else if (OB_ISNULL(t_expr)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("process node fail with invalid expr", K(ret), K(t_expr)); LOG_WARN("process node fail with invalid expr", K(ret), K(t_expr));
@ -3670,7 +3670,7 @@ int ObRawExprResolverImpl::process_like_node(const ParseNode *node, ObRawExpr *&
IS_NO_BACKSLASH_ESCAPES(ctx_.session_info_->get_sql_mode(), no_escapes); IS_NO_BACKSLASH_ESCAPES(ctx_.session_info_->get_sql_mode(), no_escapes);
} }
if (OB_FAIL(process_datatype_or_questionmark(escape_node, escape_expr))) { if (OB_FAIL(process_datatype_or_questionmark(escape_node, escape_expr))) {
LOG_WARN("fail to resolver defalut excape node", K(ret)); LOG_WARN("fail to resolver default excape node", K(ret));
} else if (OB_FAIL(t_expr->add_param_expr(escape_expr))) { } else if (OB_FAIL(t_expr->add_param_expr(escape_expr))) {
LOG_WARN("fail to set param expr"); LOG_WARN("fail to set param expr");
} else if (lib::is_oracle_mode() || no_escapes) { } else if (lib::is_oracle_mode() || no_escapes) {
@ -3837,7 +3837,7 @@ int ObRawExprResolverImpl::process_case_node(const ParseNode *node, ObRawExpr *&
if (OB_ISNULL(node) || OB_UNLIKELY(3 != node->num_child_) || if (OB_ISNULL(node) || OB_UNLIKELY(3 != node->num_child_) ||
OB_UNLIKELY(T_CASE != node->type_) || OB_ISNULL(ctx_.session_info_)) { OB_UNLIKELY(T_CASE != node->type_) || OB_ISNULL(ctx_.session_info_)) {
ret = OB_INVALID_ARGUMENT; ret = OB_INVALID_ARGUMENT;
LOG_WARN("invalid PraseNode or session_info_", K(node), KP(ctx_.session_info_)); LOG_WARN("invalid ParseNode or session_info_", K(node), KP(ctx_.session_info_));
} else if (OB_FAIL(ctx_.expr_factory_.create_raw_expr(T_INVALID, case_expr))) { } else if (OB_FAIL(ctx_.expr_factory_.create_raw_expr(T_INVALID, case_expr))) {
LOG_WARN("fail to create raw expr", K(ret)); LOG_WARN("fail to create raw expr", K(ret));
} else if (OB_ISNULL(case_expr)) { } else if (OB_ISNULL(case_expr)) {
@ -4141,7 +4141,7 @@ int ObRawExprResolverImpl::process_agg_node(const ParseNode *node, ObRawExpr *&e
order_item.order_type_ = NULLS_FIRST_ASC; order_item.order_type_ = NULLS_FIRST_ASC;
if (OB_FAIL(agg_expr->add_order_item(order_item))) { if (OB_FAIL(agg_expr->add_order_item(order_item))) {
LOG_WARN("fail to add median order item", K(ret)); LOG_WARN("fail to add median order item", K(ret));
} else {/* do nothong */} } else {/* do nothing */}
} }
} }
} else if (T_FUN_GROUPING_ID == node->type_) { } else if (T_FUN_GROUPING_ID == node->type_) {
@ -4328,7 +4328,7 @@ int ObRawExprResolverImpl::process_group_aggr_node(const ParseNode *node, ObRawE
LOG_WARN("store aggr expr failed", K(ret)); LOG_WARN("store aggr expr failed", K(ret));
} else if (OB_ISNULL(node->children_)) { } else if (OB_ISNULL(node->children_)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("inalid group concat node", K(ret), K(node->children_)); LOG_WARN("invalid group concat node", K(ret), K(node->children_));
} else { } else {
bool need_add_flag = !ctx_.parents_expr_info_.has_member(IS_AGG); bool need_add_flag = !ctx_.parents_expr_info_.has_member(IS_AGG);
ParseNode *expr_list_node = node->children_[1]; ParseNode *expr_list_node = node->children_[1];
@ -4969,7 +4969,7 @@ int ObRawExprResolverImpl::process_isnull_node(const ParseNode *node, ObRawExpr
} else { } else {
ObRawExpr *obj_expr = NULL; ObRawExpr *obj_expr = NULL;
if (OB_FAIL(SMART_CALL(recursive_resolve(node->children_[1]->children_[0], obj_expr)))) { if (OB_FAIL(SMART_CALL(recursive_resolve(node->children_[1]->children_[0], obj_expr)))) {
LOG_WARN("resolve child faield", K(ret)); LOG_WARN("resolve child failed", K(ret));
} else if (OB_FAIL(ObRawExprUtils::build_is_not_null_expr(ctx_.expr_factory_, } else if (OB_FAIL(ObRawExprUtils::build_is_not_null_expr(ctx_.expr_factory_,
obj_expr, obj_expr,
false/*is_not_null*/, false/*is_not_null*/,
@ -5045,7 +5045,7 @@ int ObRawExprResolverImpl::process_sqlerrm_node(const ParseNode *node, ObRawExpr
if (OB_ISNULL(node->children_[1]) if (OB_ISNULL(node->children_[1])
|| node->children_[1]->num_child_ != 1) { || node->children_[1]->num_child_ != 1) {
ret = OB_INVALID_ARGUMENT_NUM; ret = OB_INVALID_ARGUMENT_NUM;
LOG_WARN("invlaid argument number for SQLERRM", K(node->children_[1]->num_child_)); LOG_WARN("invalid argument number for SQLERRM", K(node->children_[1]->num_child_));
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
if (OB_ISNULL(node->children_[1]->children_[0])) { if (OB_ISNULL(node->children_[1]->children_[0])) {
@ -7435,7 +7435,7 @@ int ObRawExprResolverImpl::process_dll_udf_node(const ParseNode *node, ObRawExpr
LOG_WARN("the udf info is null", K(ret)); LOG_WARN("the udf info is null", K(ret));
} else if (!(udf_info->is_normal_udf() || udf_info->is_agg_udf())) { } else if (!(udf_info->is_normal_udf() || udf_info->is_agg_udf())) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("the udf schame is error", K(ret), K(udf_info->get_type())); LOG_WARN("the udf schema is error", K(ret), K(udf_info->get_type()));
} else if (udf_info->is_normal_udf()) { } else if (udf_info->is_normal_udf()) {
ObSysFunRawExpr *func_expr = NULL; ObSysFunRawExpr *func_expr = NULL;
ObCharset::casedn(CS_TYPE_UTF8MB4_GENERAL_CI, udf_name); ObCharset::casedn(CS_TYPE_UTF8MB4_GENERAL_CI, udf_name);
@ -7817,4 +7817,4 @@ int ObRawExprResolverImpl::process_odbc_time_literals(const ObItemType dst_time_
} //namespace sql } //namespace sql
} //namespace oceabase } //namespace oceanbase