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

Class SimpleRecordBatch

cpp/src/arrow/record_batch.cc:67–217  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 2

num_columnsFunction · 0.70
MakeArrayFunction · 0.50

Tested by

no test coverage detected