From 116dce6f58ad8c93f07de47b077e42aa71c69a52 Mon Sep 17 00:00:00 2001 From: akaError Date: Thu, 21 Mar 2024 03:52:03 +0000 Subject: [PATCH] fix simplify_expr bug --- src/sql/rewrite/ob_transform_simplify_expr.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/sql/rewrite/ob_transform_simplify_expr.cpp b/src/sql/rewrite/ob_transform_simplify_expr.cpp index c7cb98393e..60f6e134ea 100644 --- a/src/sql/rewrite/ob_transform_simplify_expr.cpp +++ b/src/sql/rewrite/ob_transform_simplify_expr.cpp @@ -2408,21 +2408,27 @@ int ObTransformSimplifyExpr::canonicalize_conditions(ObDMLStmt *stmt, bool &tran //simplify semi info OPT_TRACE("canonicalize semi_info condition start:"); for (int64_t i = 0; OB_SUCC(ret) && i < stmt->get_semi_infos().count(); ++i) { + bool is_happended = false; if (OB_ISNULL(stmt->get_semi_infos().at(i))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpect null semi info", K(stmt->get_semi_infos().at(i)), K(ret)); - } else if (OB_FAIL(do_canonicalize(stmt, stmt->get_semi_infos().at(i)->semi_conditions_, canonicalize_semi_info))) { + } else if (OB_FAIL(do_canonicalize(stmt, stmt->get_semi_infos().at(i)->semi_conditions_, is_happended))) { LOG_WARN("canonicalize_semi_info failed", K(ret)); + } else { + canonicalize_semi_info |= is_happended; } } OPT_TRACE("canonicalize join condition start:"); //simplify join condition expr for (int64_t i = 0; OB_SUCC(ret) && i < stmt->get_joined_tables().count(); i++) { + bool is_happended = false; if (OB_ISNULL(stmt->get_joined_tables().at(i))) { ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpect null joined table item", K(stmt->get_joined_tables().at(i)), K(ret)); - } else if (OB_FAIL(recursive_canonicalize_join_conditions(stmt, stmt->get_joined_tables().at(i), canonicalize_join))) { + } else if (OB_FAIL(recursive_canonicalize_join_conditions(stmt, stmt->get_joined_tables().at(i), is_happended))) { LOG_WARN("canonicalize_join_condition_expr failed", K(ret)); + } else { + canonicalize_join |= is_happended; } } }