16#include <arrow/util/config.h>
17#if (ARROW_VERSION_MAJOR > 20)
18#include <arrow/compute/initialize.h>
20#include <arrow/compute/kernel.h>
21#include <arrow/compute/api_aggregate.h>
22#include <arrow/status.h>
23#include <arrow/table.h>
24#include <arrow/util/key_value_metadata.h>
67 auto status = arrow::MakeBuilder(pool, arrow::int32(), &
mBuilder);
81 auto status =
static_cast<arrow::Int32Builder*
>(
mBuilder.get())->Append(idx);
89 std::shared_ptr<arrow::Array>
array;
90 auto status =
static_cast<arrow::Int32Builder*
>(
mBuilder.get())->Finish(&
array);
95 return std::make_shared<arrow::ChunkedArray>(
array);
101 auto status = arrow::MakeBuilder(pool, arrow::int32(), &
mBuilder);
117 size_t step =
count / 2;
136 arrow::Status status;
138 status =
static_cast<arrow::Int32Builder*
>(
mBuilder.get())->Append((
int)
mPosition);
140 status =
static_cast<arrow::Int32Builder*
>(
mBuilder.get())->Append(-1);
149 std::shared_ptr<arrow::Array>
array;
150 auto status =
static_cast<arrow::Int32Builder*
>(
mBuilder.get())->Finish(&
array);
154 return std::make_shared<arrow::ChunkedArray>(
array);
165 std::unique_ptr<arrow::ArrayBuilder> builder;
166 status = arrow::MakeBuilder(pool, arrow::int32(), &builder);
170 mListBuilder = std::make_unique<arrow::FixedSizeListBuilder>(pool, std::move(builder), 2);
191 auto step =
count / 2;
210 int data[2] = {-1, -1};
218 (
void)
static_cast<arrow::FixedSizeListBuilder*
>(
mListBuilder.get())->AppendValues(1);
224 std::shared_ptr<arrow::Array>
array;
225 auto status =
static_cast<arrow::FixedSizeListBuilder*
>(
mListBuilder.get())->Finish(&
array);
229 return std::make_shared<arrow::ChunkedArray>(
array);
232arrow::Status SliceBuilder::SliceBuilder::preSlice()
234#if (ARROW_VERSION_MAJOR > 20)
235 auto status = arrow::compute::Initialize();
240 arrow::Status status;
242 arrow::Datum value_counts;
243 auto options = arrow::compute::ScalarAggregateOptions::Defaults();
244 ARROW_ASSIGN_OR_RAISE(value_counts, arrow::compute::CallFunction(
"value_counts", {mSource}, &options));
245 auto pair =
static_cast<arrow::StructArray
>(value_counts.array());
246 mValues = std::make_shared<arrow::NumericArray<arrow::Int32Type>>(pair.field(0)->data());
247 mCounts = std::make_shared<arrow::NumericArray<arrow::Int64Type>>(pair.field(1)->data());
248 return arrow::Status::OK();
259 std::unique_ptr<arrow::ArrayBuilder> builder;
260 status = arrow::MakeBuilder(pool, arrow::int32(), &builder);
264 mListBuilder = std::make_unique<arrow::ListBuilder>(pool, std::move(builder));
291 (
void)
static_cast<arrow::Int32Builder*
>(
mValueBuilder)->AppendValues(
nullptr, 0);
297 std::shared_ptr<arrow::Array>
array;
298 auto status =
static_cast<arrow::ListBuilder*
>(
mListBuilder.get())->Finish(&
array);
302 return std::make_shared<arrow::ChunkedArray>(
array);
307#if (ARROW_VERSION_MAJOR > 20)
308 auto status = arrow::compute::Initialize();
313 arrow::Status status;
316 auto options = arrow::compute::ScalarAggregateOptions::Defaults();
317 ARROW_ASSIGN_OR_RAISE(
max, arrow::compute::CallFunction(
"max", {
mSource}, &options));
318 auto maxValue = std::dynamic_pointer_cast<arrow::Int32Scalar>(
max.scalar())->value;
322 for (
auto i = 0;
i <
mSource->length(); ++
i) {
332 return arrow::Status::OK();
360 [](std::monostate) {},
369 [](std::monostate) {
return false; },
370 [&idx](
auto&
b) {
return b.find(idx); },
379 [](std::monostate) {},
380 [&idx](
auto&
b) {
b.fill(idx); }},
388 [](std::monostate) -> std::shared_ptr<arrow::ChunkedArray> {
return nullptr; },
389 [](
auto&
b) {
return b.result(); }},
397 return std::static_pointer_cast<arrow::Int32Array>(chunk);
#define O2_BUILTIN_UNLIKELY(x)
GLboolean GLboolean GLboolean b
GLsizei GLsizei GLchar * source
GLuint GLsizei GLsizei * length
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
Defining PrimaryVertex explicitly as messageable.
RuntimeErrorRef runtime_error(const char *)
void cannotBuildAnArray(const char *reason)
void cannotCreateIndexBuilder()
RuntimeErrorRef runtime_error_f(const char *,...)
arrow::ArrayBuilder * mValueBuilder
std::vector< int > mValues
std::shared_ptr< arrow::ChunkedArray > result() const
std::vector< std::vector< int > > mIndices
ArrayBuilder(std::shared_ptr< arrow::ChunkedArray > source, arrow::MemoryPool *pool)
std::unique_ptr< arrow::ArrayBuilder > mListBuilder
void reset(std::shared_ptr< arrow::ChunkedArray > source)
std::shared_ptr< arrow::Int32Array > getCurrentArray()
ChunkedArrayIterator(std::shared_ptr< arrow::ChunkedArray > source)
std::shared_ptr< arrow::Int32Array > mCurrentArray
void reset(std::shared_ptr< arrow::ChunkedArray > &source)
std::shared_ptr< arrow::ChunkedArray > mSource
IndexColumnBuilder(soa::IndexKind kind, int pos, arrow::MemoryPool *pool, std::shared_ptr< arrow::ChunkedArray > source=nullptr)
std::shared_ptr< arrow::ChunkedArray > result() const
void reset(std::shared_ptr< arrow::ChunkedArray > source=nullptr)
std::variant< std::monostate, SelfBuilder, SingleBuilder, SliceBuilder, ArrayBuilder > builder
SelfBuilder(arrow::MemoryPool *pool)
std::shared_ptr< arrow::ChunkedArray > result() const
std::unique_ptr< arrow::ArrayBuilder > mBuilder
std::unique_ptr< framework::ChunkedArrayIterator > keyIndex
void reset(std::shared_ptr< arrow::ChunkedArray >)
std::unique_ptr< arrow::ArrayBuilder > mBuilder
SingleBuilder(std::shared_ptr< arrow::ChunkedArray > source, arrow::MemoryPool *pool)
std::shared_ptr< arrow::ChunkedArray > result() const
void reset(std::shared_ptr< arrow::ChunkedArray > source)
std::shared_ptr< arrow::NumericArray< arrow::Int32Type > > mValues
std::unique_ptr< arrow::ArrayBuilder > mListBuilder
std::shared_ptr< arrow::ChunkedArray > result() const
SliceBuilder(std::shared_ptr< arrow::ChunkedArray > source, arrow::MemoryPool *pool)
void reset(std::shared_ptr< arrow::ChunkedArray > source)
arrow::ArrayBuilder * mValueBuilder
std::shared_ptr< arrow::NumericArray< arrow::Int64Type > > mCounts
From https://en.cppreference.com/w/cpp/utility/variant/visit.