20 const int64_t data_buffers_size
23 const std::string_view format = sparrow::data_type_to_format(sparrow::detail::get_data_type_from_array<T>::get());
35 const auto compression = context.
record_batch.compression();
36 std::vector<arrow_array_private_data::optionally_owned_buffer> buffers;
37 const auto nb_buffers = data_buffers_size + 3;
38 buffers.reserve(nb_buffers);
51 buffers.push_back(std::move(validity_buffer_span));
52 buffers.push_back(std::move(views_buffer_span));
56 std::vector<int64_t> variadic_buffer_sizes;
57 variadic_buffer_sizes.reserve(data_buffers_size);
59 auto push_buffer = [&](
auto&& buffer)
61 variadic_buffer_sizes.push_back(
static_cast<int64_t
>(buffer.size()));
62 buffers.push_back(std::forward<
decltype(buffer)>(buffer));
65 for (
auto i = 0; i < data_buffers_size; ++i)
73 [&](
auto&& buf) { push_buffer(buf); },
74 std::move(decompressed));
78 push_buffer(data_buffer_span);
83 sparrow::buffer<uint8_t>(
85 reinterpret_cast<const uint8_t*
>(variadic_buffer_sizes.data()),
86 reinterpret_cast<const uint8_t*
>(variadic_buffer_sizes.data() + variadic_buffer_sizes.size())
88 sparrow::buffer<uint8_t>::default_allocator{}
92 const auto null_count = std::visit(
93 [length = field_desc.
length](
const auto& arg) {
94 std::span<const uint8_t> span(arg.data(), arg.size());
95 return utils::get_bitmap_pointer_and_null_count(span, length).second;
110 sparrow::arrow_proxy ap{std::move(array), std::move(schema)};
111 return T{std::move(ap)};
std::span< const uint8_t > get_buffer(const org::apache::arrow::flatbuf::RecordBatch &record_batch, std::span< const uint8_t > body, size_t &buffer_index)
Extracts a buffer from a RecordBatch's body.
std::variant< sparrow::buffer< std::uint8_t >, std::span< const std::uint8_t > > get_decompressed_buffer(std::span< const uint8_t > buffer_span, const org::apache::arrow::flatbuf::BodyCompression *compression)
Retrieves a decompressed buffer or a view of the original buffer.
ArrowSchema make_non_owning_arrow_schema(std::string_view format, std::string_view name, std::optional< M > metadata, std::optional< std::unordered_set< sparrow::ArrowFlag > > flags, size_t children_count, ArrowSchema **children, ArrowSchema *dictionary)
ArrowArray make_arrow_array(int64_t length, int64_t null_count, int64_t offset, size_t children_count, ArrowArray **children, ArrowArray *dictionary, Arg &&private_data_arg)
Encapsulates the context required for deserialization.
std::span< const uint8_t > body
const org::apache::arrow::flatbuf::RecordBatch & record_batch