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

Class SimpleRecordBatch

cpp/src/arrow/record_batch.cc:66–216  ·  view source on GitHub ↗

\class SimpleRecordBatch \brief A basic, non-lazy in-memory record batch

Source from the content-addressed store, hash-verified

64/// \class SimpleRecordBatch
65/// \brief A basic, non-lazy in-memory record batch
66class SimpleRecordBatch : public RecordBatch {
67 public:
68 SimpleRecordBatch(std::shared_ptr<Schema> schema, int64_t num_rows,
69 std::vector<std::shared_ptr<Array>> columns,
70 std::shared_ptr<Device::SyncEvent> sync_event = nullptr)
71 : RecordBatch(std::move(schema), num_rows),
72 boxed_columns_(std::move(columns)),
73 device_type_(DeviceAllocationType::kCPU),
74 sync_event_(std::move(sync_event)) {
75 if (boxed_columns_.size() > 0) {
76 device_type_ = boxed_columns_[0]->device_type();
77 }
78
79 columns_.resize(boxed_columns_.size());
80 for (size_t i = 0; i < columns_.size(); ++i) {
81 columns_[i] = boxed_columns_[i]->data();
82 DCHECK_EQ(device_type_, columns_[i]->device_type());
83 }
84 }
85
86 SimpleRecordBatch(std::shared_ptr<Schema> schema, int64_t num_rows,
87 std::vector<std::shared_ptr<ArrayData>> columns,
88 DeviceAllocationType device_type = DeviceAllocationType::kCPU,
89 std::shared_ptr<Device::SyncEvent> sync_event = nullptr)
90 : RecordBatch(std::move(schema), num_rows),
91 columns_(std::move(columns)),
92 device_type_(device_type),
93 sync_event_(std::move(sync_event)) {
94 boxed_columns_.resize(schema_->num_fields());
95 }
96
97 const std::vector<std::shared_ptr<Array>>& columns() const override {
98 std::lock_guard lock(mutex_);
99 for (int i = 0; i < num_columns(); ++i) {
100 if (!boxed_columns_[i]) {
101 boxed_columns_[i] = MakeArray(columns_[i]);
102 }
103 }
104 return boxed_columns_;
105 }
106
107 std::shared_ptr<Array> column(int i) const override {
108 std::lock_guard lock(mutex_);
109 if (!boxed_columns_[i]) {
110 boxed_columns_[i] = MakeArray(columns_[i]);
111 }
112 return boxed_columns_[i];
113 }
114
115 std::shared_ptr<ArrayData> column_data(int i) const override { return columns_[i]; }
116
117 const ArrayDataVector& column_data() const override { return columns_; }
118
119 Result<std::shared_ptr<RecordBatch>> AddColumn(
120 int i, const std::shared_ptr<Field>& field,
121 const std::shared_ptr<Array>& column) const override {
122 ARROW_CHECK(field != nullptr);
123 ARROW_CHECK(column != nullptr);

Callers

nothing calls this directly

Calls 2

num_columnsFunction · 0.70
MakeArrayFunction · 0.50

Tested by

no test coverage detected