diff --git a/be/src/common/status.h b/be/src/common/status.h index 15faef44fd..5667ce7f91 100644 --- a/be/src/common/status.h +++ b/be/src/common/status.h @@ -280,6 +280,7 @@ E(ENTRY_NOT_FOUND, -6011); constexpr bool capture_stacktrace(int code) { return code != ErrorCode::OK && code != ErrorCode::END_OF_FILE + && code != ErrorCode::DATA_QUALITY_ERROR && code != ErrorCode::MEM_LIMIT_EXCEEDED && code != ErrorCode::TRY_LOCK_FAILED && code != ErrorCode::TOO_MANY_SEGMENTS diff --git a/be/src/exprs/json_functions.cpp b/be/src/exprs/json_functions.cpp index 1dce452e34..30608adeb2 100644 --- a/be/src/exprs/json_functions.cpp +++ b/be/src/exprs/json_functions.cpp @@ -254,18 +254,19 @@ Status JsonFunctions::extract_from_object(simdjson::ondemand::object& obj, simdjson::ondemand::value* value) noexcept { // Return DataQualityError when it's a malformed json. // Otherwise the path was not found, due to array out of bound or not exist -#define HANDLE_SIMDJSON_ERROR(err, msg) \ - do { \ - const simdjson::error_code& _err = err; \ - const std::string& _msg = msg; \ - if (UNLIKELY(_err)) { \ - if (_err == simdjson::NO_SUCH_FIELD || _err == simdjson::INDEX_OUT_OF_BOUNDS) { \ - return Status::NotFound( \ - fmt::format("err: {}, msg: {}", simdjson::error_message(_err), _msg)); \ - } \ - return Status::DataQualityError( \ - fmt::format("err: {}, msg: {}", simdjson::error_message(_err), _msg)); \ - } \ +#define HANDLE_SIMDJSON_ERROR(err, msg) \ + do { \ + const simdjson::error_code& _err = err; \ + const std::string& _msg = msg; \ + if (UNLIKELY(_err)) { \ + if (_err == simdjson::NO_SUCH_FIELD || _err == simdjson::INDEX_OUT_OF_BOUNDS) { \ + return Status::DataQualityError( \ + fmt::format("Not found target filed, err: {}, msg: {}", \ + simdjson::error_message(_err), _msg)); \ + } \ + return Status::DataQualityError( \ + fmt::format("err: {}, msg: {}", simdjson::error_message(_err), _msg)); \ + } \ } while (false); if (jsonpath.size() <= 1) { diff --git a/be/src/vec/exec/format/json/new_json_reader.cpp b/be/src/vec/exec/format/json/new_json_reader.cpp index 7754f782c7..230dfb4c80 100644 --- a/be/src/vec/exec/format/json/new_json_reader.cpp +++ b/be/src/vec/exec/format/json/new_json_reader.cpp @@ -1153,9 +1153,8 @@ Status NewJsonReader::_simdjson_handle_flat_array_complex_json( simdjson::ondemand::value val; Status st = JsonFunctions::extract_from_object(cur, _parsed_json_root, &val); if (UNLIKELY(!st.ok())) { - if (st.is()) { - RETURN_IF_ERROR( - _append_error_msg(nullptr, "JsonPath not found", "", nullptr)); + if (st.is()) { + RETURN_IF_ERROR(_append_error_msg(nullptr, st.to_string(), "", nullptr)); ADVANCE_ROW(); continue; } @@ -1599,11 +1598,11 @@ Status NewJsonReader::_simdjson_write_columns_by_jsonpath( Status st; if (i < _parsed_jsonpaths.size()) { st = JsonFunctions::extract_from_object(*value, _parsed_jsonpaths[i], &json_value); - if (!st.ok() && !st.is()) { + if (!st.ok() && !st.is()) { return st; } } - if (i >= _parsed_jsonpaths.size() || st.is()) { + if (i >= _parsed_jsonpaths.size() || st.is()) { // not match in jsondata, filling with default value RETURN_IF_ERROR(_fill_missing_column(slot_desc, column_ptr, valid)); if (!(*valid)) {