#include <arrow/c/bridge.h>
#include <arrow/api.h>
using namespace arrow;
// Export an Array
auto array = ArrayFromJSON(int64(), "[1, 2, 3, null, 5]");
struct ArrowArray c_array;
struct ArrowSchema c_schema;
// Export to C structures
ARROW_RETURN_NOT_OK(
ExportArray(*array, &c_array, &c_schema));
// Pass c_array and c_schema to consumer
// Consumer must call release callbacks when done
// Export a RecordBatch
auto schema = arrow::schema({
field("id", int64()),
field("name", utf8())
});
auto batch = RecordBatch::Make(
schema, 3,
{ArrayFromJSON(int64(), "[1, 2, 3]"),
ArrayFromJSON(utf8(), "[\"Alice\", \"Bob\", \"Charlie\"]")
});
ARROW_RETURN_NOT_OK(
ExportRecordBatch(*batch, &c_array, &c_schema));
// Export a Schema only
ARROW_RETURN_NOT_OK(
ExportSchema(*schema, &c_schema));
// Export a RecordBatchReader (stream)
std::vector<std::shared_ptr<RecordBatch>> batches = {batch};
ARROW_ASSIGN_OR_RAISE(auto reader,
RecordBatchReader::Make(batches, schema));
struct ArrowArrayStream c_stream;
ARROW_RETURN_NOT_OK(
ExportRecordBatchReader(reader, &c_stream));