From 7829c9c8dc06b1cc9aaa96c3c466cd945f641cea Mon Sep 17 00:00:00 2001 From: xianyu-w <707512433@qq.com> Date: Sat, 10 Feb 2024 11:32:36 +0000 Subject: [PATCH] [CP] [CP] Fix view synonym bug --- src/sql/optimizer/ob_del_upd_log_plan.cpp | 4 ++-- src/sql/optimizer/ob_insert_all_log_plan.cpp | 1 + src/sql/optimizer/ob_insert_log_plan.cpp | 1 + src/sql/optimizer/ob_join_order.cpp | 6 ++--- src/sql/optimizer/ob_log_sort.cpp | 2 +- src/sql/optimizer/ob_merge_log_plan.cpp | 2 +- src/sql/optimizer/ob_optimizer_util.cpp | 2 +- src/sql/optimizer/ob_select_log_plan.cpp | 6 ++--- src/sql/printer/ob_dml_stmt_printer.cpp | 24 ------------------- src/sql/printer/ob_dml_stmt_printer.h | 1 - src/sql/printer/ob_select_stmt_printer.cpp | 1 - src/sql/resolver/dml/ob_dml_resolver.cpp | 4 ++++ src/sql/rewrite/ob_expand_aggregate_utils.cpp | 6 ++--- src/sql/rewrite/ob_query_range.cpp | 2 +- .../rewrite/ob_transform_aggr_subquery.cpp | 2 +- src/sql/rewrite/ob_transform_dblink.cpp | 1 + .../rewrite/ob_transform_join_elimination.cpp | 3 +++ src/sql/rewrite/ob_transform_pre_process.cpp | 8 +++---- .../ob_transform_predicate_move_around.cpp | 5 +++- src/sql/rewrite/ob_transform_rule.cpp | 1 + .../rewrite/ob_transform_semi_to_inner.cpp | 1 + .../rewrite/ob_transform_simplify_expr.cpp | 6 ++--- src/sql/rewrite/ob_transform_simplify_set.cpp | 2 ++ .../ob_transform_simplify_subquery.cpp | 2 +- .../ob_transform_subquery_coalesce.cpp | 2 +- src/sql/rewrite/ob_transform_temp_table.cpp | 4 ++-- src/sql/rewrite/ob_transform_utils.cpp | 3 +++ 27 files changed, 48 insertions(+), 54 deletions(-) diff --git a/src/sql/optimizer/ob_del_upd_log_plan.cpp b/src/sql/optimizer/ob_del_upd_log_plan.cpp index c4b19272cc..b31aadcbed 100644 --- a/src/sql/optimizer/ob_del_upd_log_plan.cpp +++ b/src/sql/optimizer/ob_del_upd_log_plan.cpp @@ -1084,7 +1084,7 @@ int ObDelUpdLogPlan::candi_allocate_one_pdml_insert(bool is_index_maintenance, LOG_WARN("failed to assign sharding conditions", K(ret)); } } - if (OB_FAIL(calculate_table_location_and_sharding( + if (FAILEDx(calculate_table_location_and_sharding( *get_stmt(), sharding_conditions, index_dml_info->loc_table_id_, @@ -1548,7 +1548,7 @@ int ObDelUpdLogPlan::allocate_pdml_update_as_top(ObLogicalOperator *&top, LOG_WARN("failed to get view check exprs", K(ret)); } } - if (OB_FAIL(update_op->compute_property())) { + if (FAILEDx(update_op->compute_property())) { LOG_WARN("failed to compute property", K(ret)); } else { top = update_op; diff --git a/src/sql/optimizer/ob_insert_all_log_plan.cpp b/src/sql/optimizer/ob_insert_all_log_plan.cpp index 345d181f61..9a6e6ea060 100644 --- a/src/sql/optimizer/ob_insert_all_log_plan.cpp +++ b/src/sql/optimizer/ob_insert_all_log_plan.cpp @@ -119,6 +119,7 @@ int ObInsertAllLogPlan::allocate_insert_values_as_top(ObLogicalOperator *&top) const ObInsertAllStmt *insert_all_stmt = get_stmt(); ObSQLSessionInfo *session_info = get_optimizer_context().get_session_info(); if (OB_ISNULL(insert_all_stmt) || OB_ISNULL(session_info)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexpected null", K(insert_all_stmt), K(session_info), K(ret)); } else if (OB_ISNULL(values_op = static_cast(get_log_op_factory(). allocate(*this, LOG_EXPR_VALUES)))) { diff --git a/src/sql/optimizer/ob_insert_log_plan.cpp b/src/sql/optimizer/ob_insert_log_plan.cpp index 5b1aa77d68..a4bf4b4c36 100644 --- a/src/sql/optimizer/ob_insert_log_plan.cpp +++ b/src/sql/optimizer/ob_insert_log_plan.cpp @@ -383,6 +383,7 @@ int ObInsertLogPlan::allocate_insert_values_as_top(ObLogicalOperator *&top) const ObInsertStmt *insert_stmt = get_stmt(); ObSQLSessionInfo *session_info = get_optimizer_context().get_session_info(); if (OB_ISNULL(insert_stmt) || OB_ISNULL(session_info)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexpected null", K(insert_stmt), K(session_info), K(ret)); } else if (OB_ISNULL(values_op = static_cast(get_log_op_factory(). allocate(*this, LOG_EXPR_VALUES)))) { diff --git a/src/sql/optimizer/ob_join_order.cpp b/src/sql/optimizer/ob_join_order.cpp index 963b792d57..b840bfa50f 100644 --- a/src/sql/optimizer/ob_join_order.cpp +++ b/src/sql/optimizer/ob_join_order.cpp @@ -2233,7 +2233,7 @@ int ObJoinOrder::add_access_filters(AccessPath *path, } } } - if (OB_FAIL(ObOptimizerUtil::remove_item(path->filter_, remove_dup))) { + if (FAILEDx(ObOptimizerUtil::remove_item(path->filter_, remove_dup))) { LOG_WARN("remove dup failed", K(ret)); } } @@ -13868,7 +13868,7 @@ int ObJoinOrder::generate_inner_subquery_paths(const ObDMLStmt &parent_stmt, candi_pushdown_quals, helper.pushdown_filters_))) { LOG_WARN("failed to rename pushdown filter", K(ret)); - } else if (append(helper.filters_, candi_nonpushdown_quals)) { + } else if (OB_FAIL(append(helper.filters_, candi_nonpushdown_quals))) { LOG_WARN("failed to append", K(ret)); } else if (OB_FAIL(generate_subquery_paths(helper))) { LOG_WARN("failed to generate subquery path", K(ret)); @@ -14714,7 +14714,7 @@ int ObJoinOrder::check_match_to_type(ObRawExpr *to_type_expr, ObRawExpr *candi_e ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexpected null",K(ret)); } else if (ObOptimizerUtil::is_lossless_type_conv(to_type_child->get_result_type(),to_type_expr->get_result_type())) { - if (ObOptimizerUtil::get_expr_without_lossless_cast(to_type_child, to_type_child)) { + if (OB_FAIL(ObOptimizerUtil::get_expr_without_lossless_cast(to_type_child, to_type_child))) { LOG_WARN("fail to get real child without lossless cast", K(ret)); } else if (OB_ISNULL(to_type_child) || OB_ISNULL(candi_expr)) { ret = OB_ERR_UNEXPECTED; diff --git a/src/sql/optimizer/ob_log_sort.cpp b/src/sql/optimizer/ob_log_sort.cpp index b4e706992e..02802ed8b6 100644 --- a/src/sql/optimizer/ob_log_sort.cpp +++ b/src/sql/optimizer/ob_log_sort.cpp @@ -136,7 +136,7 @@ int ObLogSort::get_op_exprs(ObIArray &all_exprs) LOG_WARN("failed to push back expr", K(ret)); } } - if (OB_FAIL(ObLogicalOperator::get_op_exprs(all_exprs))) { + if (FAILEDx(ObLogicalOperator::get_op_exprs(all_exprs))) { LOG_WARN("failed to get op exprs", K(ret)); } else { /*do nothing*/ } } diff --git a/src/sql/optimizer/ob_merge_log_plan.cpp b/src/sql/optimizer/ob_merge_log_plan.cpp index 4b2ae5e7cf..2f86c56b72 100644 --- a/src/sql/optimizer/ob_merge_log_plan.cpp +++ b/src/sql/optimizer/ob_merge_log_plan.cpp @@ -879,7 +879,7 @@ int ObMergeLogPlan::prepare_table_dml_info_update(const ObMergeTableInfo& merge_ } ObSEArray udpate_indexes; - if (OB_FAIL(udpate_indexes.assign(index_dml_infos))) { + if (FAILEDx(udpate_indexes.assign(index_dml_infos))) { LOG_WARN("failed to assign index dml infos", K(ret)); } else { index_dml_infos.reset(); diff --git a/src/sql/optimizer/ob_optimizer_util.cpp b/src/sql/optimizer/ob_optimizer_util.cpp index f0dd93d597..a4df82504e 100644 --- a/src/sql/optimizer/ob_optimizer_util.cpp +++ b/src/sql/optimizer/ob_optimizer_util.cpp @@ -9031,7 +9031,7 @@ int ObOptimizerUtil::replace_column_with_select_for_partid(const ObInsertStmt *s LOG_WARN("failed to add replace pair", K(ret)); } } - if (OB_FAIL(copier.copy_on_replace(calc_part_id_expr, + if (FAILEDx(copier.copy_on_replace(calc_part_id_expr, calc_part_id_expr))) { LOG_WARN("failed to copy on replace expr", K(ret)); } diff --git a/src/sql/optimizer/ob_select_log_plan.cpp b/src/sql/optimizer/ob_select_log_plan.cpp index b1274b6dd5..f41d40cef8 100644 --- a/src/sql/optimizer/ob_select_log_plan.cpp +++ b/src/sql/optimizer/ob_select_log_plan.cpp @@ -6701,9 +6701,9 @@ int ObSelectLogPlan::init_wf_topn_option(WinFuncOpHelper &win_func_helper, bool } if (OB_FAIL(ret) || !win_func_helper.enable_topn_) { //do nothing - } else if (check_wf_part_topn_supported(winfunc_exprs, - win_func_helper.partition_exprs_, - win_func_helper.enable_topn_)) { + } else if (OB_FAIL(check_wf_part_topn_supported(winfunc_exprs, + win_func_helper.partition_exprs_, + win_func_helper.enable_topn_))) { LOG_WARN("check partition topn supported failed", K(ret)); } else if (win_func_helper.enable_topn_) { for (int64_t i = 0; OB_SUCC(ret) && NULL == win_func_helper.topn_const_ && i < filter_exprs.count(); ++i) { diff --git a/src/sql/printer/ob_dml_stmt_printer.cpp b/src/sql/printer/ob_dml_stmt_printer.cpp index b5891d51f2..a8f493c7b9 100644 --- a/src/sql/printer/ob_dml_stmt_printer.cpp +++ b/src/sql/printer/ob_dml_stmt_printer.cpp @@ -56,28 +56,6 @@ void ObDMLStmtPrinter::init(char *buf, int64_t buf_len, int64_t *pos, ObDMLStmt print_cte_ = false; } -int ObDMLStmtPrinter::set_synonym_name_recursively(ObRawExpr * cur_expr, const ObDMLStmt *stmt) -{ - int ret = OB_SUCCESS; - if (OB_ISNULL(cur_expr) || OB_ISNULL(stmt)) { - } else if (cur_expr->is_column_ref_expr()) { - ObColumnRefRawExpr *column_expr = static_cast(cur_expr); - const TableItem *table_item = stmt->get_table_item_by_id(column_expr->get_table_id()); - if (NULL != table_item && table_item->alias_name_.empty()) { - column_expr->set_synonym_name(table_item->synonym_name_); - column_expr->set_synonym_db_name(table_item->synonym_db_name_); - } - } else if (cur_expr->get_param_count() > 0) { - for (int64_t param_idx = 0; param_idx < cur_expr->get_param_count(); ++param_idx) { - ObRawExpr * param_expr = cur_expr->get_param_expr(param_idx); - OZ (SMART_CALL(set_synonym_name_recursively(param_expr, stmt))); - } - } else { - //do nothing - } - return ret; -} - int ObDMLStmtPrinter::print_hint() { int ret = OB_SUCCESS; @@ -1790,11 +1768,9 @@ int ObDMLStmtPrinter::print_returning() const ObIArray &returning_exprs = dml_stmt.get_returning_exprs(); if (returning_exprs.count() > 0) { DATA_PRINTF(" returning "); - OZ (set_synonym_name_recursively(returning_exprs.at(0), stmt_)); OZ (expr_printer_.do_print(returning_exprs.at(0), T_NONE_SCOPE)); for (uint64_t i = 1; OB_SUCC(ret) && i < returning_exprs.count(); ++i) { DATA_PRINTF(","); - OZ (set_synonym_name_recursively(returning_exprs.at(i), stmt_)); OZ (expr_printer_.do_print(returning_exprs.at(i), T_NONE_SCOPE)); } } diff --git a/src/sql/printer/ob_dml_stmt_printer.h b/src/sql/printer/ob_dml_stmt_printer.h index 2844f6b9b3..d83fa6b265 100644 --- a/src/sql/printer/ob_dml_stmt_printer.h +++ b/src/sql/printer/ob_dml_stmt_printer.h @@ -98,7 +98,6 @@ public: void disable_print_temp_table_as_cte() { print_cte_ = false; } void init(char *buf, int64_t buf_len, int64_t *pos, ObDMLStmt *stmt); virtual int do_print() = 0; - static int set_synonym_name_recursively(ObRawExpr * cur_expr, const ObDMLStmt *stmt); int print_from(bool need_from = true); int print_semi_join(); diff --git a/src/sql/printer/ob_select_stmt_printer.cpp b/src/sql/printer/ob_select_stmt_printer.cpp index e43b9147f4..1394e1fb74 100644 --- a/src/sql/printer/ob_select_stmt_printer.cpp +++ b/src/sql/printer/ob_select_stmt_printer.cpp @@ -432,7 +432,6 @@ int ObSelectStmtPrinter::print_select() } for (int64_t i = 0; OB_SUCC(ret) && i < select_stmt->get_select_item_size(); ++i) { const SelectItem &select_item = select_stmt->get_select_item(i); - OZ (set_synonym_name_recursively(select_item.expr_, stmt_)); if (select_item.is_implicit_added_ || select_item.implicit_filled_) { continue; } diff --git a/src/sql/resolver/dml/ob_dml_resolver.cpp b/src/sql/resolver/dml/ob_dml_resolver.cpp index 5f79b06fd9..8b82508a5f 100755 --- a/src/sql/resolver/dml/ob_dml_resolver.cpp +++ b/src/sql/resolver/dml/ob_dml_resolver.cpp @@ -9812,6 +9812,10 @@ int ObDMLResolver::resolve_generated_table_column_item(const TableItem &table_it col_expr->set_column_attr(table_item.get_table_name(), ref_select_item.alias_name_); col_expr->set_database_name(table_item.database_name_); col_expr->set_unpivot_mocked_column(ref_select_item.is_unpivot_mocked_column_); + if (table_item.alias_name_.empty()) { + col_expr->set_synonym_db_name(table_item.synonym_db_name_); + col_expr->set_synonym_name(table_item.synonym_name_); + } //set enum_set_values if (ob_is_enumset_tc(select_expr->get_data_type())) { if (OB_FAIL(col_expr->set_enum_set_values(select_expr->get_enum_set_values()))) { diff --git a/src/sql/rewrite/ob_expand_aggregate_utils.cpp b/src/sql/rewrite/ob_expand_aggregate_utils.cpp index 26b8060776..61594a8a9d 100644 --- a/src/sql/rewrite/ob_expand_aggregate_utils.cpp +++ b/src/sql/rewrite/ob_expand_aggregate_utils.cpp @@ -2188,9 +2188,9 @@ int ObExpandAggregateUtils::add_win_exprs(ObSelectStmt *select_stmt, } } else { for (int64_t j = 0; OB_SUCC(ret) && j < replace_exprs.count(); ++j) { - if (ObRawExprUtils::replace_ref_column(replace_exprs.at(j), - new_win_exprs.at(i), - win_expr)) { + if (OB_FAIL(ObRawExprUtils::replace_ref_column(replace_exprs.at(j), + new_win_exprs.at(i), + win_expr))) { LOG_WARN("failed to replace ref column.", K(ret)); } } diff --git a/src/sql/rewrite/ob_query_range.cpp b/src/sql/rewrite/ob_query_range.cpp index f0a2ac33f4..11c23c543c 100644 --- a/src/sql/rewrite/ob_query_range.cpp +++ b/src/sql/rewrite/ob_query_range.cpp @@ -8292,7 +8292,7 @@ OB_NOINLINE int ObQueryRange::deep_copy(const ObQueryRange &other, } const ColumnIdInfoMap& input_srid = other.get_columnId_map(); - if (input_srid.created()) { + if (OB_SUCC(ret) && input_srid.created()) { ColumnIdInfoMap::const_iterator iter = input_srid.begin(); if (!columnId_map_.created()) { if (OB_FAIL(columnId_map_.create(OB_DEFAULT_SRID_BUKER, &map_alloc_, &bucket_allocator_wrapper_))) { diff --git a/src/sql/rewrite/ob_transform_aggr_subquery.cpp b/src/sql/rewrite/ob_transform_aggr_subquery.cpp index b859cb0fdc..d334727fe3 100644 --- a/src/sql/rewrite/ob_transform_aggr_subquery.cpp +++ b/src/sql/rewrite/ob_transform_aggr_subquery.cpp @@ -1813,7 +1813,7 @@ int ObTransformAggrSubquery::modify_vector_comparison_expr_if_necessary( select_exprs.assign(temp_expr); // replace parent_expr_of_query_ref with subquery comparison operator to the one of common comparison operator ObItemType value_cmp_type = T_INVALID; - if (OB_FAIL(ObTransformUtils::query_cmp_to_value_cmp(parent_expr_of_query_ref->get_expr_type(), value_cmp_type))) { + if (FAILEDx(ObTransformUtils::query_cmp_to_value_cmp(parent_expr_of_query_ref->get_expr_type(), value_cmp_type))) { LOG_WARN("unexpected root_expr type", K(ret), K(value_cmp_type)); } else { ObOpRawExpr *new_parent_expr = NULL; diff --git a/src/sql/rewrite/ob_transform_dblink.cpp b/src/sql/rewrite/ob_transform_dblink.cpp index 364e521b51..87ad3ee281 100644 --- a/src/sql/rewrite/ob_transform_dblink.cpp +++ b/src/sql/rewrite/ob_transform_dblink.cpp @@ -1603,6 +1603,7 @@ int ObTransformDBlink::formalize_bool_select_expr(ObDMLStmt *stmt) ObRawExpr *null_expr = NULL; bool is_bool_expr = false; if (OB_ISNULL(select_item.expr_)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpected select item", K(ret)); } else if (OB_FAIL(ObRawExprUtils::check_is_bool_expr(select_item.expr_, is_bool_expr))) { LOG_WARN("failed to check is bool expr", K(ret)); diff --git a/src/sql/rewrite/ob_transform_join_elimination.cpp b/src/sql/rewrite/ob_transform_join_elimination.cpp index 84fa1f0865..8ec10790ef 100644 --- a/src/sql/rewrite/ob_transform_join_elimination.cpp +++ b/src/sql/rewrite/ob_transform_join_elimination.cpp @@ -2345,6 +2345,7 @@ int ObTransformJoinElimination::check_transform_validity_semi_self_key(ObDMLStmt TableItem *left_table = NULL; ObSEArray dummy_exprs; if (OB_ISNULL(stmt) || OB_ISNULL(semi_info)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexcepted null", K(ret), K(stmt), K(semi_info)); } else if (OB_ISNULL(right_table = stmt->get_table_item_by_id(semi_info->right_table_id_))) { ret = OB_ERR_UNEXPECTED; @@ -2362,6 +2363,7 @@ int ObTransformJoinElimination::check_transform_validity_semi_self_key(ObDMLStmt target_exprs.reuse(); stmt_map_info.reset(); if (OB_ISNULL(left_table = left_tables.at(i))) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexcepted null", K(ret), K(left_table)); } else if (OB_FAIL(ObTransformUtils::check_table_item_containment(stmt, left_table, stmt, right_table, stmt_map_info, @@ -2487,6 +2489,7 @@ int ObTransformJoinElimination::check_transform_validity_semi_self_key(ObDMLStmt target_exprs.reuse(); stmt_map_info.reset(); if (OB_ISNULL(left_table = all_left_tables.at(j))) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexcepted null", K(ret), K(left_table)); } else if (OB_FAIL(ObTransformUtils::check_table_item_containment(stmt, left_table, diff --git a/src/sql/rewrite/ob_transform_pre_process.cpp b/src/sql/rewrite/ob_transform_pre_process.cpp index 8238439f51..2bd8e13a62 100644 --- a/src/sql/rewrite/ob_transform_pre_process.cpp +++ b/src/sql/rewrite/ob_transform_pre_process.cpp @@ -5684,10 +5684,10 @@ int ObTransformPreProcess::create_equal_expr_for_case_expr(ObRawExprFactory &exp cmp_type.set_type(obj_type); cmp_type.set_collation_type(case_res_type.get_calc_collation_type()); cmp_type.set_collation_level(case_res_type.get_calc_collation_level()); - if (ObRawExprUtils::try_add_cast_expr_above(&expr_factory, &session, - *arg_expr, cmp_type, new_arg_expr) || - ObRawExprUtils::try_add_cast_expr_above(&expr_factory, &session, - *when_expr, cmp_type, new_when_expr)) { + if (OB_FAIL(ObRawExprUtils::try_add_cast_expr_above(&expr_factory, &session, + *arg_expr, cmp_type, new_arg_expr)) || + OB_FAIL(ObRawExprUtils::try_add_cast_expr_above(&expr_factory, &session, + *when_expr, cmp_type, new_when_expr))) { LOG_WARN("failed to add_cast", K(ret), KP(new_arg_expr), KP(new_when_expr)); } } else { diff --git a/src/sql/rewrite/ob_transform_predicate_move_around.cpp b/src/sql/rewrite/ob_transform_predicate_move_around.cpp index ba466f5acf..2c2d9a2e2f 100644 --- a/src/sql/rewrite/ob_transform_predicate_move_around.cpp +++ b/src/sql/rewrite/ob_transform_predicate_move_around.cpp @@ -1820,6 +1820,7 @@ int ObTransformPredicateMoveAround::extract_valid_preds(ObSelectStmt *stmt, int ret = OB_SUCCESS; ObSEArray parent_set_exprs; if (OB_ISNULL(stmt)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexpected null", K(ret)); } else if (OB_FAIL(stmt->get_pure_set_exprs(parent_set_exprs))) { LOG_WARN("failed to get parent set exprs", K(ret)); @@ -1866,6 +1867,7 @@ int ObTransformPredicateMoveAround::pullup_predicates_from_const_select(ObSelect ObSEArray child_select_list; ObSEArray parent_select_list; if (OB_ISNULL(parent_stmt) || OB_ISNULL(child_stmt)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("invalid param", K(ret)); } else if (OB_FAIL(child_stmt->get_select_exprs(child_select_list))) { LOG_WARN("get child stmt select exprs failed", K(ret)); @@ -2584,7 +2586,7 @@ int ObTransformPredicateMoveAround::pushdown_into_joined_table( } ObSEArray properites; - if (OB_FAIL(append(properites, pullup_preds))) { + if (FAILEDx(append(properites, pullup_preds))) { LOG_WARN("failed to push back predicates", K(ret)); } else if (OB_FAIL(append(properites, pushdown_preds))) { LOG_WARN("failed to append predicates", K(ret)); @@ -3312,6 +3314,7 @@ int ObTransformPredicateMoveAround::accept_predicates(ObDMLStmt &stmt, ObExprParamCheckContext context; ObSEArray equal_param_constraints; if (OB_ISNULL(stmt.get_query_ctx()) || OB_ISNULL(ctx_)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("init param check context failed", K(ret)); } else if (OB_FAIL(equal_param_constraints.assign(stmt.get_query_ctx()->all_equal_param_constraints_)) || OB_FAIL(append(equal_param_constraints, ctx_->equal_param_constraints_))) { diff --git a/src/sql/rewrite/ob_transform_rule.cpp b/src/sql/rewrite/ob_transform_rule.cpp index af0127cfdf..32ae675f03 100644 --- a/src/sql/rewrite/ob_transform_rule.cpp +++ b/src/sql/rewrite/ob_transform_rule.cpp @@ -85,6 +85,7 @@ int ObTransformerCtx::add_src_hash_val(uint64_t trans_type) int ret = OB_SUCCESS; const char *str = NULL; if (OB_ISNULL(str = get_trans_type_string(trans_type))) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("failed to convert trans type to src value", K(ret)); } else { uint32_t hash_val = src_hash_val_.empty() ? 0 : src_hash_val_.at(src_hash_val_.count() - 1); diff --git a/src/sql/rewrite/ob_transform_semi_to_inner.cpp b/src/sql/rewrite/ob_transform_semi_to_inner.cpp index a36c77d22a..5e151e5ca8 100644 --- a/src/sql/rewrite/ob_transform_semi_to_inner.cpp +++ b/src/sql/rewrite/ob_transform_semi_to_inner.cpp @@ -327,6 +327,7 @@ int ObTransformSemiToInner::do_transform_by_rewrite_form(ObDMLStmt* stmt, TableItem *right_table = view_stmt->get_table_item_by_id(semi_info->right_table_id_); ObSelectStmt* right_stmt = NULL; if (OB_ISNULL(right_table)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpected null", K(ret)); } else if (right_table->is_generated_table()) { if (OB_ISNULL(right_stmt = right_table->ref_query_)) { diff --git a/src/sql/rewrite/ob_transform_simplify_expr.cpp b/src/sql/rewrite/ob_transform_simplify_expr.cpp index f150d8aa3b..eb8085313b 100644 --- a/src/sql/rewrite/ob_transform_simplify_expr.cpp +++ b/src/sql/rewrite/ob_transform_simplify_expr.cpp @@ -570,7 +570,7 @@ int ObTransformSimplifyExpr::replace_like_condition(ObDMLStmt *stmt, bool &trans } ObStmtExprGetter visitor(scopes); visitor.checker_ = &expr_checker; - if (OB_FAIL(stmt->iterate_stmt_expr(visitor))) { + if (FAILEDx(stmt->iterate_stmt_expr(visitor))) { LOG_WARN("get relation exprs failed", K(ret)); } //collect like exprs which need to be replaced @@ -1294,7 +1294,7 @@ int ObTransformSimplifyExpr::remove_dummy_nvl(ObDMLStmt *stmt, } not_null_ctx.reset(); - if (OB_FAIL(not_null_ctx.generate_stmt_context(NULLABLE_SCOPE::NS_TOP))){ + if (FAILEDx(not_null_ctx.generate_stmt_context(NULLABLE_SCOPE::NS_TOP))){ LOG_WARN("failed to generate not null context", K(ret)); } if (OB_SUCC(ret) && stmt->is_select_stmt() && !static_cast(stmt)->is_scala_group_by()) { @@ -3336,7 +3336,7 @@ int ObTransformSimplifyExpr::check_remove_ora_decode_valid(ObRawExpr *&expr, decode_expr, param_exprs))) { LOG_WARN("failed to build ora_decode expr", K(ret)); - } else if (ObTransformUtils::calc_const_expr_result(decode_expr, ctx_, decode_obj, calc_happened)) { + } else if (OB_FAIL(ObTransformUtils::calc_const_expr_result(decode_expr, ctx_, decode_obj, calc_happened))) { LOG_WARN("failed to calc const expr result", K(ret), K(*decode_expr)); } else if (!calc_happened) { is_valid = false; diff --git a/src/sql/rewrite/ob_transform_simplify_set.cpp b/src/sql/rewrite/ob_transform_simplify_set.cpp index 9c369a7e62..cbb7bc3504 100644 --- a/src/sql/rewrite/ob_transform_simplify_set.cpp +++ b/src/sql/rewrite/ob_transform_simplify_set.cpp @@ -708,6 +708,7 @@ int ObTransformSimplifySet::add_constraints_by_idx(common::ObIArray &co op_expr))) { LOG_WARN("fail to build constaint expr", K(ret)); } else if (OB_ISNULL(op_expr)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("get null pointer", K(ret)); } else if (OB_FAIL(op_expr->formalize(ctx_->session_info_))) { LOG_WARN("fail to formalize expr", K(ret)); @@ -766,6 +767,7 @@ int ObTransformSimplifySet::replace_set_stmt_with_child_stmt(ObSelectStmt *&pare if (OB_FAIL(ObTransformUtils::create_stmt_with_generated_table(ctx_, child_stmt, view_stmt))) { LOG_WARN("fail to create view with generated table", K(ret)); } else if (OB_ISNULL(view_stmt)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("view table is null", K(ret)); } else if (OB_FAIL(add_order_by(view_stmt, parent_stmt))) { // set child's order by to view. diff --git a/src/sql/rewrite/ob_transform_simplify_subquery.cpp b/src/sql/rewrite/ob_transform_simplify_subquery.cpp index 7cc75a97bd..fc97afecde 100644 --- a/src/sql/rewrite/ob_transform_simplify_subquery.cpp +++ b/src/sql/rewrite/ob_transform_simplify_subquery.cpp @@ -589,7 +589,7 @@ int ObTransformSimplifySubquery::get_push_down_conditions(ObDMLStmt *stmt, } } - if (can_push_down && OB_FAIL(push_down_conds.push_back(join_conds.at(i)))) { + if (OB_SUCC(ret) && can_push_down && OB_FAIL(push_down_conds.push_back(join_conds.at(i)))) { LOG_WARN("failed to push back expr", K(ret)); } } diff --git a/src/sql/rewrite/ob_transform_subquery_coalesce.cpp b/src/sql/rewrite/ob_transform_subquery_coalesce.cpp index d061e5d80c..3e5b1f02a2 100644 --- a/src/sql/rewrite/ob_transform_subquery_coalesce.cpp +++ b/src/sql/rewrite/ob_transform_subquery_coalesce.cpp @@ -2079,7 +2079,7 @@ int ObTransformSubqueryCoalesce::inner_coalesce_subquery(ObSelectStmt *subquery, if (OB_SUCC(ret) && !find) { ObSEArray aggr_items; ObSEArray win_func_exprs; - if (ObTransformUtils::replace_expr(subquery_column_list, new_column_list, subquery_select)) { + if (OB_FAIL(ObTransformUtils::replace_expr(subquery_column_list, new_column_list, subquery_select))) { LOG_WARN("failed to replace expr", K(ret)); } else if (OB_FAIL(ObTransformUtils::extract_aggr_expr(subquery_select, aggr_items))) { diff --git a/src/sql/rewrite/ob_transform_temp_table.cpp b/src/sql/rewrite/ob_transform_temp_table.cpp index 4e06c7d7dc..b755fddda9 100644 --- a/src/sql/rewrite/ob_transform_temp_table.cpp +++ b/src/sql/rewrite/ob_transform_temp_table.cpp @@ -303,7 +303,7 @@ int ObTransformTempTable::check_stmt_can_materialize(ObSelectStmt *stmt, bool is ObAggFunRawExpr *dummy = NULL; bool can_use_fast_min_max = false; STOP_OPT_TRACE; - if (ObTransformMinMax::check_transform_validity(*ctx_, stmt, dummy, can_use_fast_min_max)) { + if (OB_FAIL(ObTransformMinMax::check_transform_validity(*ctx_, stmt, dummy, can_use_fast_min_max))) { LOG_WARN("failed to check fast min max", K(ret)); } RESUME_OPT_TRACE; @@ -1698,7 +1698,7 @@ int ObTransformTempTable::apply_temp_table(ObSelectStmt *parent_stmt, if (OB_SUCC(ret) && !find) { ObSEArray aggr_items; ObSEArray win_func_exprs; - if (ObTransformUtils::replace_expr(view_column_list, new_column_list, view_select)) { + if (OB_FAIL(ObTransformUtils::replace_expr(view_column_list, new_column_list, view_select))) { LOG_WARN("failed to replace expr", K(ret)); } else if (OB_FAIL(new_select_list.push_back(view_select))) { LOG_WARN("failed to push back expr", K(ret)); diff --git a/src/sql/rewrite/ob_transform_utils.cpp b/src/sql/rewrite/ob_transform_utils.cpp index 4781a0acfb..8afd24fbe0 100644 --- a/src/sql/rewrite/ob_transform_utils.cpp +++ b/src/sql/rewrite/ob_transform_utils.cpp @@ -5250,6 +5250,7 @@ int ObTransformUtils::get_table_joined_exprs(const ObSqlBitSet<> &source_ids, ObRawExpr *child1 = op->get_param_expr(0); ObRawExpr *child2 = op->get_param_expr(1); if (OB_ISNULL(child1) || OB_ISNULL(child2)) { + ret = OB_ERR_UNEXPECTED; LOG_WARN("parameter of EQ expr should not be null", K(ret), K(child1), K(child2)); } else if (!child1->has_flag(CNT_COLUMN) || !child2->has_flag(CNT_COLUMN)){ /* do nothing */ @@ -5947,6 +5948,7 @@ int ObTransformUtils::check_relations_containment(ObDMLStmt *stmt, TableItem *source_table = source_rels.at(i); ObStmtMapInfo stmt_map_info; if (OB_ISNULL(source_table)){ + ret = OB_ERR_UNEXPECTED; LOG_WARN("can not find table item", K(source_rels.at(i))); } else { for (int64_t j = 0; OB_SUCC(ret) && !is_matched && j < target_rels.count(); ++j){ @@ -5955,6 +5957,7 @@ int ObTransformUtils::check_relations_containment(ObDMLStmt *stmt, } else { TableItem *target_table = target_rels.at(j); if (OB_ISNULL(target_table)){ + ret = OB_ERR_UNEXPECTED; LOG_WARN("can not find table item", K(target_rels.at(j))); } else if (OB_FAIL(check_table_item_containment(stmt, source_table,