diff --git a/be/src/service/internal_service.cpp b/be/src/service/internal_service.cpp index 9611e1a93cb393..8a91a2167c4bec 100644 --- a/be/src/service/internal_service.cpp +++ b/be/src/service/internal_service.cpp @@ -2030,6 +2030,10 @@ void PInternalService::group_commit_insert(google::protobuf::RpcController* cont response->set_loaded_rows(state->num_rows_load_success()); response->set_filtered_rows(state->num_rows_load_filtered()); status->to_protobuf(response->mutable_status()); + if (!state->get_error_log_file_path().empty()) { + response->set_error_url( + to_load_error_http_path(state->get_error_log_file_path())); + } _exec_env->new_load_stream_mgr()->remove(load_id); }); } catch (const Exception& e) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 181a7d3c7bc758..825b38cc757212 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -2369,11 +2369,17 @@ private void handleInsertStmt() throws Exception { errMsg = "group commit insert failed. db_id: " + dbId + ", table_id: " + tableId + ", query_id: " + DebugUtil.printId(context.queryId()) + ", backend_id: " + groupCommitPlanner.getBackend().getId() + ", status: " + response.getStatus(); + if (response.hasErrorUrl()) { + errMsg += ", error url: " + response.getErrorUrl(); + } } } else if (code != TStatusCode.OK) { errMsg = "group commit insert failed. db_id: " + dbId + ", table_id: " + tableId + ", query_id: " + DebugUtil.printId(context.queryId()) + ", backend_id: " + groupCommitPlanner.getBackend() .getId() + ", status: " + response.getStatus(); + if (response.hasErrorUrl()) { + errMsg += ", error url: " + response.getErrorUrl(); + } ErrorReport.reportDdlException(errMsg, ErrorCode.ERR_FAILED_WHEN_INSERT); } label = response.getLabel(); diff --git a/gensrc/proto/internal_service.proto b/gensrc/proto/internal_service.proto index 8857b65278b5bb..57b09b7caacf05 100644 --- a/gensrc/proto/internal_service.proto +++ b/gensrc/proto/internal_service.proto @@ -854,6 +854,7 @@ message PGroupCommitInsertResponse { optional int64 txn_id = 3; optional int64 loaded_rows = 4; optional int64 filtered_rows = 5; + optional string error_url = 6; } message POpenLoadStreamRequest { diff --git a/regression-test/suites/insert_p0/insert_group_commit_into.groovy b/regression-test/suites/insert_p0/insert_group_commit_into.groovy index 3b4bf78846f263..3dcc047837feac 100644 --- a/regression-test/suites/insert_p0/insert_group_commit_into.groovy +++ b/regression-test/suites/insert_p0/insert_group_commit_into.groovy @@ -211,6 +211,13 @@ suite("insert_group_commit_into") { sql "set enable_insert_strict=false" group_commit_insert """ insert into ${table} values (1, 'a', 10),(5, 'q', 50),(101, 'a', 100); """, 2 sql "set enable_insert_strict=true" + try { + sql """ insert into ${table} values (102, 'a', 100); """ + assertTrue(false, "insert should fail") + } catch (Exception e) { + logger.info("error: " + e.getMessage()) + assertTrue(e.getMessage().contains("url:")) + } sql """ alter table ${table} ADD ROLLUP r1(name, score); """ group_commit_insert_with_retry """ insert into ${table}(id, name) values(2, 'b'); """, 1 group_commit_insert_with_retry """ insert into ${table}(id) values(6); """, 1