diff --git a/be/src/runtime/stream_load/stream_load_executor.cpp b/be/src/runtime/stream_load/stream_load_executor.cpp index e285d38208e110..cb165a51f3d2fe 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 ef3d46141a7f27..b98dd51e0cde44 100644 --- a/regression-test/suites/insert_p0/transaction/txn_insert.groovy +++ b/regression-test/suites/insert_p0/transaction/txn_insert.groovy @@ -82,7 +82,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"); @@ -97,6 +97,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(null, 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++) {