From 6bfe8ec674b9026175473cb0c8a400bd67dfc7f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 19:35:36 +0800 Subject: [PATCH] branch-3.0: [fix](txn insert) txn insert show error url #45254 (#45317) Cherry-picked from #45254 Co-authored-by: meiyi --- .../runtime/stream_load/stream_load_executor.cpp | 9 +++++++-- .../insert_p0/transaction/txn_insert.groovy | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/be/src/runtime/stream_load/stream_load_executor.cpp b/be/src/runtime/stream_load/stream_load_executor.cpp index 482fadac44e051..ad4d22946f1b83 100644 --- a/be/src/runtime/stream_load/stream_load_executor.cpp +++ b/be/src/runtime/stream_load/stream_load_executor.cpp @@ -85,13 +85,18 @@ Status StreamLoadExecutor::execute_plan_fragment(std::shared_ptrnumber_unselected_rows = state->num_rows_load_unselected(); ctx->loaded_bytes = state->num_bytes_load_total(); int64_t num_selected_rows = ctx->number_total_rows - ctx->number_unselected_rows; + ctx->error_url = to_load_error_http_path(state->get_error_log_file_path()); if (!ctx->group_commit && num_selected_rows > 0 && (double)ctx->number_filtered_rows / num_selected_rows > ctx->max_filter_ratio) { // NOTE: Do not modify the error message here, for historical reasons, // some users may rely on this error message. - *status = Status::DataQualityError("too many filtered rows"); + if (ctx->need_commit_self) { + *status = + Status::DataQualityError("too many filtered rows, url: " + ctx->error_url); + } else { + *status = Status::DataQualityError("too many filtered rows"); + } } - ctx->error_url = to_load_error_http_path(state->get_error_log_file_path()); if (status->ok()) { DorisMetrics::instance()->stream_receive_bytes_total->increment(ctx->receive_bytes); diff --git a/regression-test/suites/insert_p0/transaction/txn_insert.groovy b/regression-test/suites/insert_p0/transaction/txn_insert.groovy index 6653c05740e3b1..0690b27c59b564 100644 --- a/regression-test/suites/insert_p0/transaction/txn_insert.groovy +++ b/regression-test/suites/insert_p0/transaction/txn_insert.groovy @@ -107,7 +107,7 @@ suite("txn_insert") { sql """ DROP TABLE IF EXISTS $tableMV """ sql """ create table $tableMV ( - id int default '10', + id int not null, c1 int default '10' ) distributed by hash(id, c1) properties('replication_num'="1"); @@ -122,6 +122,19 @@ suite("txn_insert") { order_qt_select5 """select * from $tableMV""" order_qt_select6 """select c1 from $tableMV""" } while (0); + do { + try { + sql "begin" + sql """insert into $tableMV values(9, 2), (10, 4)""" + sql """insert into $tableMV values('aa', 6)""" + sql "commit" + } catch (Exception e) { + sql "rollback" + logger.info("insert into $tableMV failed: " + e.getMessage()) + assertTrue(e.getMessage().contains("too many filtered rows")) + assertTrue(e.getMessage().contains("url")) + } + } while (0); // ------------------- insert into select ------------------- for (int j = 0; j < 3; j++) {