This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 45245209ef9 [Serde](Variant) support arrow serialization for varint
type (#32809)
45245209ef9 is described below
commit 45245209ef9891c5f713910affb82098624c3b42
Author: lihangyu <[email protected]>
AuthorDate: Tue Mar 26 10:50:13 2024 +0800
[Serde](Variant) support arrow serialization for varint type (#32809)
---
.../data_types/serde/data_type_object_serde.cpp | 23 ++++++++++++++++++++++
.../vec/data_types/serde/data_type_object_serde.h | 5 +----
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/be/src/vec/data_types/serde/data_type_object_serde.cpp
b/be/src/vec/data_types/serde/data_type_object_serde.cpp
index 6d4f82e845b..99a301294dc 100644
--- a/be/src/vec/data_types/serde/data_type_object_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_object_serde.cpp
@@ -19,6 +19,7 @@
#include <rapidjson/stringbuffer.h>
+#include "common/exception.h"
#include "common/status.h"
#include "vec/columns/column.h"
#include "vec/columns/column_object.h"
@@ -95,6 +96,28 @@ void DataTypeObjectSerDe::read_one_cell_from_jsonb(IColumn&
column, const JsonbV
variant.insert(field);
}
+void DataTypeObjectSerDe::write_column_to_arrow(const IColumn& column, const
NullMap* null_map,
+ arrow::ArrayBuilder*
array_builder, int start,
+ int end, const
cctz::time_zone& ctz) const {
+ const auto* var = check_and_get_column<ColumnObject>(column);
+ auto& builder = assert_cast<arrow::StringBuilder&>(*array_builder);
+ for (size_t i = start; i < end; ++i) {
+ if (null_map && (*null_map)[i]) {
+ checkArrowStatus(builder.AppendNull(), column.get_name(),
+ array_builder->type()->name());
+ } else {
+ std::string serialized_value;
+ if (!var->serialize_one_row_to_string(i, &serialized_value)) {
+ throw doris::Exception(ErrorCode::INTERNAL_ERROR, "Failed to
serialize variant {}",
+ var->dump_structure());
+ }
+ checkArrowStatus(builder.Append(serialized_value.data(),
+
static_cast<int>(serialized_value.size())),
+ column.get_name(), array_builder->type()->name());
+ }
+ }
+}
+
} // namespace vectorized
} // namespace doris
\ No newline at end of file
diff --git a/be/src/vec/data_types/serde/data_type_object_serde.h
b/be/src/vec/data_types/serde/data_type_object_serde.h
index 4d78d67352d..c589a1af92a 100644
--- a/be/src/vec/data_types/serde/data_type_object_serde.h
+++ b/be/src/vec/data_types/serde/data_type_object_serde.h
@@ -73,10 +73,7 @@ public:
void write_column_to_arrow(const IColumn& column, const NullMap* null_map,
arrow::ArrayBuilder* array_builder, int start,
int end,
- const cctz::time_zone& ctz) const override {
- throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
- "write_column_to_arrow with type " +
column.get_name());
- }
+ const cctz::time_zone& ctz) const override;
void read_column_from_arrow(IColumn& column, const arrow::Array*
arrow_array, int start,
int end, const cctz::time_zone& ctz) const
override {
throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]