From 7261fc9df14cfe7766a7c162a4bb583984555c80 Mon Sep 17 00:00:00 2001 From: yishenglanlingzui <395329313@qq.com> Date: Mon, 1 Apr 2024 03:45:23 +0000 Subject: [PATCH] fix bug pdml update partition_key would change the new_row pk by insert before_row trigger --- src/sql/code_generator/ob_dml_cg_service.cpp | 8 ++++++-- src/sql/optimizer/ob_log_del_upd.cpp | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sql/code_generator/ob_dml_cg_service.cpp b/src/sql/code_generator/ob_dml_cg_service.cpp index 858d956da4..f940c95330 100644 --- a/src/sql/code_generator/ob_dml_cg_service.cpp +++ b/src/sql/code_generator/ob_dml_cg_service.cpp @@ -71,6 +71,8 @@ int ObDmlCgService::generate_insert_ctdef(ObLogDelUpd &op, LOG_TRACE("begin to generate insert ctdef", K(index_dml_info)); ObArray old_row; ObArray new_row; + uint64_t dml_event = op.is_pdml_update_split() ? + ObTriggerEvents::get_update_event() : ObTriggerEvents::get_insert_event(); if (OB_ISNULL(op.get_stmt())) { ret = OB_ERR_UNEXPECTED; LOG_WARN("get unexpected null", K(ret)); @@ -78,7 +80,7 @@ int ObDmlCgService::generate_insert_ctdef(ObLogDelUpd &op, LOG_WARN("convert insert new row exprs failed", K(ret)); } else if (OB_FAIL(generate_dml_base_ctdef(op, index_dml_info, ins_ctdef, - ObTriggerEvents::get_insert_event(), + dml_event, old_row, new_row))) { LOG_WARN("generate dml base ctdef failed", K(ret), K(index_dml_info)); @@ -276,12 +278,14 @@ int ObDmlCgService::generate_delete_ctdef(ObLogDelUpd &op, int ret = OB_SUCCESS; ObSEArray old_row; ObSEArray new_row; + uint64_t dml_event = op.is_pdml_update_split() ? + ObTriggerEvents::get_update_event() : ObTriggerEvents::get_delete_event(); if (OB_FAIL(old_row.assign(index_dml_info.column_old_values_exprs_))) { LOG_WARN("fail to assign delete old row", K(ret)); } else if (OB_FAIL(generate_dml_base_ctdef(op, index_dml_info, del_ctdef, - ObTriggerEvents::get_delete_event(), + dml_event, old_row, new_row))) { LOG_WARN("generate dml base ctdef failed", K(ret), K(index_dml_info)); diff --git a/src/sql/optimizer/ob_log_del_upd.cpp b/src/sql/optimizer/ob_log_del_upd.cpp index 48bdb581d1..06fff796e1 100644 --- a/src/sql/optimizer/ob_log_del_upd.cpp +++ b/src/sql/optimizer/ob_log_del_upd.cpp @@ -307,6 +307,7 @@ ObLogDelUpd::ObLogDelUpd(ObDelUpdLogPlan &plan) need_barrier_(false), is_first_dml_op_(false), table_location_uncertain_(false), + is_pdml_update_split_(false), pdml_partition_id_expr_(NULL), pdml_is_returning_(false), err_log_define_(),