From 3c120e0a751b118aaa668ac37aa961c4e8a63249 Mon Sep 17 00:00:00 2001 From: jingtaoye35 <1255153887@qq.com> Date: Tue, 17 Oct 2023 12:14:01 +0000 Subject: [PATCH] fix where subquery having exec_param pull up bug --- .../rewrite/ob_transform_where_subquery_pullup.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/sql/rewrite/ob_transform_where_subquery_pullup.cpp b/src/sql/rewrite/ob_transform_where_subquery_pullup.cpp index cb9d01b6f0..a072d1b559 100644 --- a/src/sql/rewrite/ob_transform_where_subquery_pullup.cpp +++ b/src/sql/rewrite/ob_transform_where_subquery_pullup.cpp @@ -1421,10 +1421,15 @@ int ObWhereSubQueryPullup::unnest_single_set_subquery(ObDMLStmt *stmt, LOG_WARN("failed to merge subquery stmt hint", K(ret)); } else if (OB_FAIL(ObOptimizerUtil::remove_item(stmt->get_subquery_exprs(), query_expr))) { LOG_WARN("remove expr failed", K(ret)); - } else if (OB_FAIL(stmt->replace_relation_exprs(query_refs, select_list))) { - LOG_WARN("failed to replace inner stmt expr", K(ret)); - } else if (OB_FAIL(stmt->formalize_stmt(ctx_->session_info_))) { - LOG_WARN("failed to formalize stmt", K(ret)); + } else { + select_list.reuse(); + if (OB_FAIL(subquery->get_select_exprs(select_list))) { + LOG_WARN("failed to get select exprs", K(ret)); + } else if (OB_FAIL(stmt->replace_relation_exprs(query_refs, select_list))) { + LOG_WARN("failed to replace inner stmt expr", K(ret)); + } else if (OB_FAIL(stmt->formalize_stmt(ctx_->session_info_))) { + LOG_WARN("failed to formalize stmt", K(ret)); + } } } return ret;