MCPcopy Create free account
hub / github.com/apache/arrow / MakeStruct

Function MakeStruct

cpp/src/arrow/ipc/test_common.cc:601–628  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

599}
600
601Status MakeStruct(std::shared_ptr<RecordBatch>* out) {
602 // reuse constructed list columns
603 std::shared_ptr<RecordBatch> list_batch;
604 RETURN_NOT_OK(MakeListRecordBatch(&list_batch));
605 std::vector<std::shared_ptr<Array>> columns = {
606 list_batch->column(0), list_batch->column(1), list_batch->column(2)};
607 auto list_schema = list_batch->schema();
608
609 // Define schema
610 std::shared_ptr<DataType> type(new StructType(
611 {list_schema->field(0), list_schema->field(1), list_schema->field(2)}));
612 auto f0 = field("non_null_struct", type);
613 auto f1 = field("null_struct", type);
614 auto schema = ::arrow::schema({f0, f1});
615
616 // construct individual nullable/non-nullable struct arrays
617 std::shared_ptr<Array> no_nulls(new StructArray(type, list_batch->num_rows(), columns));
618 std::vector<uint8_t> null_bytes(list_batch->num_rows(), 1);
619 null_bytes[0] = 0;
620 ARROW_ASSIGN_OR_RAISE(auto null_bitmap, arrow::internal::BytesToBits(null_bytes));
621 std::shared_ptr<Array> with_nulls(
622 new StructArray(type, list_batch->num_rows(), columns, null_bitmap, 1));
623
624 // construct batch
625 std::vector<std::shared_ptr<Array>> arrays = {no_nulls, with_nulls};
626 *out = RecordBatch::Make(schema, list_batch->num_rows(), arrays);
627 return Status::OK();
628}
629
630namespace {
631

Callers 1

BatchesFunction · 0.70

Calls 9

MakeListRecordBatchFunction · 0.85
schemaFunction · 0.70
fieldFunction · 0.50
MakeFunction · 0.50
OKFunction · 0.50
columnMethod · 0.45
schemaMethod · 0.45
fieldMethod · 0.45
num_rowsMethod · 0.45

Tested by

no test coverage detected