diff --git a/src/sql/rewrite/ob_stmt_comparer.cpp b/src/sql/rewrite/ob_stmt_comparer.cpp index 555847cb77ade3b265601d41174e61057785790b..f83cce01651df99e9d6b4f46bd7211e910b409eb 100644 --- a/src/sql/rewrite/ob_stmt_comparer.cpp +++ b/src/sql/rewrite/ob_stmt_comparer.cpp @@ -279,6 +279,7 @@ int ObStmtComparer::check_stmt_containment( } else if (first_sel->is_set_stmt() || second_sel->is_set_stmt() || first_sel->has_recusive_cte() || second_sel->has_recusive_cte() || first_sel->has_hierarchical_query() || second_sel->has_hierarchical_query() || first_sel->is_contains_assignment() || + first_sel->get_semi_info_size() > 0 || second_sel->get_semi_info_size() > 0 || second_sel->is_contains_assignment()) { /*do nothing*/ } else if (first_sel->get_from_item_size() != second_sel->get_from_item_size()) { diff --git a/src/sql/rewrite/ob_transform_join_elimination.cpp b/src/sql/rewrite/ob_transform_join_elimination.cpp index dfc0ab9e992c5e93ed529b77d2323e0036e16a16..e5097612bd88c0ba9e8b082ecc8e6ce0e12fddc2 100644 --- a/src/sql/rewrite/ob_transform_join_elimination.cpp +++ b/src/sql/rewrite/ob_transform_join_elimination.cpp @@ -357,8 +357,13 @@ int ObTransformJoinElimination::create_missing_select_items(ObSelectStmt* source for (int64_t i = 0; OB_SUCC(ret) && i < table_map.count(); i++) { TableItem* temp_source_table = NULL; TableItem* temp_target_table = NULL; - if (OB_ISNULL(temp_source_table = source_stmt->get_table_item(i)) || - OB_ISNULL(temp_target_table = target_stmt->get_table_item(table_map.at(i)))) { + int64_t idx = table_map.at(i); + if (idx < 0 || idx >= target_stmt->get_table_size() || + i >= source_stmt->get_table_size()) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("unexpect table idx", K(ret)); + } else if (OB_ISNULL(temp_source_table = source_stmt->get_table_item(i)) || + OB_ISNULL(temp_target_table = target_stmt->get_table_item(idx))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexpected null", K(temp_source_table), K(temp_target_table), K(ret)); } else if ((temp_source_table->is_basic_table() && temp_target_table->is_basic_table()) ||