From f4cd46968c5ff8296ca685455965ac188679c73d Mon Sep 17 00:00:00 2001 From: obdev Date: Mon, 20 Mar 2023 21:10:22 +0800 Subject: [PATCH] test: fix some failed cases induced by single-row execution when has triggers --- src/sql/engine/dml/ob_table_insert_up_op.cpp | 4 ++-- src/sql/engine/dml/ob_table_replace_op.cpp | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/sql/engine/dml/ob_table_insert_up_op.cpp b/src/sql/engine/dml/ob_table_insert_up_op.cpp index 7c6b098edf..e3141bebd1 100644 --- a/src/sql/engine/dml/ob_table_insert_up_op.cpp +++ b/src/sql/engine/dml/ob_table_insert_up_op.cpp @@ -885,8 +885,8 @@ int ObTableInsertUpOp::load_batch_insert_up_rows(bool &is_iter_end, int64_t &ins int64_t simulate_batch_row_cnt = - EVENT_CALL(EventTable::EN_TABLE_INSERT_UP_BATCH_ROW_COUNT); int64_t default_row_batch_cnt = simulate_batch_row_cnt > 0 ? simulate_batch_row_cnt : INT64_MAX; - if (is_ignore_) { - // If it is ignore mode, degenerate into single line execution + if (is_ignore_ || execute_single_row_) { + // If it is ignore mode or need excute row by row, degenerate into single line execution default_row_batch_cnt = 1; } LOG_DEBUG("simulate lookup row batch count", K(simulate_batch_row_cnt), K(default_row_batch_cnt)); diff --git a/src/sql/engine/dml/ob_table_replace_op.cpp b/src/sql/engine/dml/ob_table_replace_op.cpp index dc0676f037..0c7916c63a 100644 --- a/src/sql/engine/dml/ob_table_replace_op.cpp +++ b/src/sql/engine/dml/ob_table_replace_op.cpp @@ -270,7 +270,10 @@ OB_INLINE int ObTableReplaceOp::load_all_replace_row(bool &is_iter_end) int64_t default_row_batch_cnt = simulate_batch_row_cnt > 0 ? simulate_batch_row_cnt : DEFAULT_REPLACE_BATCH_ROW_COUNT; LOG_DEBUG("simulate lookup row batch count", K(simulate_batch_row_cnt), K(default_row_batch_cnt)); - while (OB_SUCC(ret) && ++row_cnt < default_row_batch_cnt) { + if (execute_single_row_) { + default_row_batch_cnt = 1; + } + while (OB_SUCC(ret) && ++row_cnt <= default_row_batch_cnt) { // todo @kaizhan.dkz @wangbo.wb 增加行前trigger逻辑在这里 // 新行的外键检查也在这里做 if (OB_FAIL(get_next_row_from_child())) { -- GitLab