diff --git a/be/src/vec/columns/column_object.cpp b/be/src/vec/columns/column_object.cpp index 730161cf5b8986..f44fc62ed982ea 100644 --- a/be/src/vec/columns/column_object.cpp +++ b/be/src/vec/columns/column_object.cpp @@ -65,6 +65,12 @@ #include "vec/data_types/data_type_nullable.h" #include "vec/data_types/get_least_supertype.h" +#ifdef __AVX2__ +#include "util/jsonb_parser_simd.h" +#else +#include "util/jsonb_parser.h" +#endif + namespace doris::vectorized { namespace { @@ -1155,8 +1161,14 @@ void ColumnObject::merge_sparse_to_root_column() { rapidjson::Writer writer(buffer); root.Accept(writer); bool res = parser.parse(buffer.GetString(), buffer.GetSize()); - CHECK(res) << "buffer:" << std::string(buffer.GetString(), buffer.GetSize()) - << ", row_num:" << i; + if (!res) { + throw Exception(ErrorCode::INVALID_ARGUMENT, + "parse json failed, doc: {}" + ", row_num:{}" + ", error:{}", + std::string(buffer.GetString(), buffer.GetSize()), i, + JsonbErrMsg::getErrMsg(parser.getErrorCode())); + } result_column_ptr->insert_data(parser.getWriter().getOutput()->getBuffer(), parser.getWriter().getOutput()->getSize()); result_column_nullable->get_null_map_data().push_back(0); diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp index b3f67d5e990db3..8a6b26e9bd885b 100644 --- a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp @@ -26,6 +26,12 @@ #include "common/status.h" #include "exprs/json_functions.h" #include "runtime/jsonb_value.h" + +#ifdef __AVX2__ +#include "util/jsonb_parser_simd.h" +#else +#include "util/jsonb_parser.h" +#endif namespace doris { namespace vectorized {