ARROW-12749: [C++] Construct RecordBatch/Table/Schema with rvalue arguments
Closes #10301 from cyb70289/12749-rvalue
Authored-by: Yibo Cai <yibo.cai@arm.com>
Signed-off-by: Antoine Pitrou <antoine@python.org>
diff --git a/cpp/src/arrow/adapters/orc/adapter.cc b/cpp/src/arrow/adapters/orc/adapter.cc
index c67bc3c..4548b99 100644
--- a/cpp/src/arrow/adapters/orc/adapter.cc
+++ b/cpp/src/arrow/adapters/orc/adapter.cc
@@ -252,7 +252,7 @@
}
}
- *out = std::make_shared<Schema>(fields, metadata);
+ *out = std::make_shared<Schema>(std::move(fields), std::move(metadata));
return Status::OK();
}
diff --git a/cpp/src/arrow/compute/kernels/vector_selection.cc b/cpp/src/arrow/compute/kernels/vector_selection.cc
index fc7a78a..6376ae1 100644
--- a/cpp/src/arrow/compute/kernels/vector_selection.cc
+++ b/cpp/src/arrow/compute/kernels/vector_selection.cc
@@ -1793,7 +1793,7 @@
TakeOptions::NoBoundsCheck(), ctx));
columns[i] = out.make_array();
}
- return RecordBatch::Make(batch.schema(), indices->length, columns);
+ return RecordBatch::Make(batch.schema(), indices->length, std::move(columns));
}
Result<std::shared_ptr<Table>> FilterTable(const Table& table, const Datum& filter,
@@ -1986,7 +1986,7 @@
for (int j = 0; j < ncols; j++) {
ARROW_ASSIGN_OR_RAISE(columns[j], TakeAA(*batch.column(j), indices, options, ctx));
}
- return RecordBatch::Make(batch.schema(), nrows, columns);
+ return RecordBatch::Make(batch.schema(), nrows, std::move(columns));
}
Result<std::shared_ptr<Table>> TakeTA(const Table& table, const Array& indices,
@@ -1997,7 +1997,7 @@
for (int j = 0; j < ncols; j++) {
ARROW_ASSIGN_OR_RAISE(columns[j], TakeCA(*table.column(j), indices, options, ctx));
}
- return Table::Make(table.schema(), columns);
+ return Table::Make(table.schema(), std::move(columns));
}
Result<std::shared_ptr<Table>> TakeTC(const Table& table, const ChunkedArray& indices,
@@ -2007,7 +2007,7 @@
for (int j = 0; j < ncols; j++) {
ARROW_ASSIGN_OR_RAISE(columns[j], TakeCC(*table.column(j), indices, options, ctx));
}
- return Table::Make(table.schema(), columns);
+ return Table::Make(table.schema(), std::move(columns));
}
static auto kDefaultTakeOptions = TakeOptions::Defaults();
diff --git a/cpp/src/arrow/csv/reader.cc b/cpp/src/arrow/csv/reader.cc
index c435236..baa40dc 100644
--- a/cpp/src/arrow/csv/reader.cc
+++ b/cpp/src/arrow/csv/reader.cc
@@ -573,7 +573,7 @@
fields.push_back(::arrow::field(column.name, array->type()));
columns.emplace_back(std::move(array));
}
- return Table::Make(schema(fields), columns);
+ return Table::Make(schema(std::move(fields)), std::move(columns));
}
// Column builders for target Table (in ConversionSchema order)
diff --git a/cpp/src/arrow/ipc/feather.cc b/cpp/src/arrow/ipc/feather.cc
index 7561945..b1c30ee 100644
--- a/cpp/src/arrow/ipc/feather.cc
+++ b/cpp/src/arrow/ipc/feather.cc
@@ -180,7 +180,7 @@
GetDataType(col->values(), col->metadata_type(), col->metadata(), &type));
fields.push_back(::arrow::field(col->name()->str(), type));
}
- schema_ = ::arrow::schema(fields);
+ schema_ = ::arrow::schema(std::move(fields));
return Status::OK();
}
@@ -343,7 +343,7 @@
columns.emplace_back();
RETURN_NOT_OK(GetColumn(i, &columns.back()));
}
- *out = Table::Make(this->schema(), columns, this->num_rows());
+ *out = Table::Make(this->schema(), std::move(columns), this->num_rows());
return Status::OK();
}
@@ -360,7 +360,8 @@
RETURN_NOT_OK(GetColumn(field_index, &columns.back()));
fields.push_back(my_schema->field(field_index));
}
- *out = Table::Make(::arrow::schema(fields), columns, this->num_rows());
+ *out = Table::Make(::arrow::schema(std::move(fields)), std::move(columns),
+ this->num_rows());
return Status::OK();
}
@@ -379,7 +380,8 @@
RETURN_NOT_OK(GetColumn(field_index, &columns.back()));
fields.push_back(sch->field(field_index));
}
- *out = Table::Make(::arrow::schema(fields), columns, this->num_rows());
+ *out = Table::Make(::arrow::schema(std::move(fields)), std::move(columns),
+ this->num_rows());
return Status::OK();
}
diff --git a/cpp/src/arrow/ipc/reader.cc b/cpp/src/arrow/ipc/reader.cc
index 06ad0c8..45a3d3e 100644
--- a/cpp/src/arrow/ipc/reader.cc
+++ b/cpp/src/arrow/ipc/reader.cc
@@ -518,7 +518,7 @@
arrow::internal::SwapEndianArrayData(filtered_columns[i]));
}
}
- return RecordBatch::Make(filtered_schema, metadata->length(),
+ return RecordBatch::Make(std::move(filtered_schema), metadata->length(),
std::move(filtered_columns));
}
diff --git a/cpp/src/arrow/ipc/writer.cc b/cpp/src/arrow/ipc/writer.cc
index c14ff5e..7b9254b 100644
--- a/cpp/src/arrow/ipc/writer.cc
+++ b/cpp/src/arrow/ipc/writer.cc
@@ -557,7 +557,7 @@
Status Assemble(const std::shared_ptr<Array>& dictionary) {
// Make a dummy record batch. A bit tedious as we have to make a schema
auto schema = arrow::schema({arrow::field("dictionary", dictionary->type())});
- auto batch = RecordBatch::Make(schema, dictionary->length(), {dictionary});
+ auto batch = RecordBatch::Make(std::move(schema), dictionary->length(), {dictionary});
return RecordBatchSerializer::Assemble(*batch);
}
diff --git a/cpp/src/arrow/record_batch.cc b/cpp/src/arrow/record_batch.cc
index 2e3e0f2..ce86ab1 100644
--- a/cpp/src/arrow/record_batch.cc
+++ b/cpp/src/arrow/record_batch.cc
@@ -100,8 +100,7 @@
}
ARROW_ASSIGN_OR_RAISE(auto new_schema, schema_->AddField(i, field));
-
- return RecordBatch::Make(new_schema, num_rows_,
+ return RecordBatch::Make(std::move(new_schema), num_rows_,
internal::AddVectorElement(columns_, i, column->data()));
}
@@ -123,21 +122,20 @@
}
ARROW_ASSIGN_OR_RAISE(auto new_schema, schema_->SetField(i, field));
- return RecordBatch::Make(new_schema, num_rows_,
+ return RecordBatch::Make(std::move(new_schema), num_rows_,
internal::ReplaceVectorElement(columns_, i, column->data()));
}
Result<std::shared_ptr<RecordBatch>> RemoveColumn(int i) const override {
ARROW_ASSIGN_OR_RAISE(auto new_schema, schema_->RemoveField(i));
-
- return RecordBatch::Make(new_schema, num_rows_,
+ return RecordBatch::Make(std::move(new_schema), num_rows_,
internal::DeleteVectorElement(columns_, i));
}
std::shared_ptr<RecordBatch> ReplaceSchemaMetadata(
const std::shared_ptr<const KeyValueMetadata>& metadata) const override {
auto new_schema = schema_->WithMetadata(metadata);
- return RecordBatch::Make(new_schema, num_rows_, columns_);
+ return RecordBatch::Make(std::move(new_schema), num_rows_, columns_);
}
std::shared_ptr<RecordBatch> Slice(int64_t offset, int64_t length) const override {
@@ -271,7 +269,7 @@
auto new_schema =
std::make_shared<arrow::Schema>(std::move(fields), schema()->metadata());
- return RecordBatch::Make(new_schema, num_rows(), std::move(columns));
+ return RecordBatch::Make(std::move(new_schema), num_rows(), std::move(columns));
}
std::shared_ptr<RecordBatch> RecordBatch::Slice(int64_t offset) const {
diff --git a/cpp/src/arrow/stl.h b/cpp/src/arrow/stl.h
index 146c570..a1582ed 100644
--- a/cpp/src/arrow/stl.h
+++ b/cpp/src/arrow/stl.h
@@ -424,7 +424,7 @@
arrays.emplace_back(array);
}
- *table = Table::Make(schema, arrays);
+ *table = Table::Make(std::move(schema), std::move(arrays));
return Status::OK();
}
diff --git a/cpp/src/arrow/table.cc b/cpp/src/arrow/table.cc
index 02ba754..f0a2b08 100644
--- a/cpp/src/arrow/table.cc
+++ b/cpp/src/arrow/table.cc
@@ -99,13 +99,13 @@
column = column->Slice(offset, length);
num_rows = column->length();
}
- return Table::Make(schema_, sliced, num_rows);
+ return Table::Make(schema_, std::move(sliced), num_rows);
}
Result<std::shared_ptr<Table>> RemoveColumn(int i) const override {
ARROW_ASSIGN_OR_RAISE(auto new_schema, schema_->RemoveField(i));
- return Table::Make(new_schema, internal::DeleteVectorElement(columns_, i),
+ return Table::Make(std::move(new_schema), internal::DeleteVectorElement(columns_, i),
this->num_rows());
}
@@ -125,8 +125,7 @@
}
ARROW_ASSIGN_OR_RAISE(auto new_schema, schema_->AddField(i, field_arg));
-
- return Table::Make(new_schema,
+ return Table::Make(std::move(new_schema),
internal::AddVectorElement(columns_, i, std::move(col)));
}
@@ -146,14 +145,14 @@
}
ARROW_ASSIGN_OR_RAISE(auto new_schema, schema_->SetField(i, field_arg));
- return Table::Make(new_schema,
+ return Table::Make(std::move(new_schema),
internal::ReplaceVectorElement(columns_, i, std::move(col)));
}
std::shared_ptr<Table> ReplaceSchemaMetadata(
const std::shared_ptr<const KeyValueMetadata>& metadata) const override {
auto new_schema = schema_->WithMetadata(metadata);
- return Table::Make(new_schema, columns_);
+ return Table::Make(std::move(new_schema), columns_);
}
Result<std::shared_ptr<Table>> Flatten(MemoryPool* pool) const override {
@@ -379,7 +378,7 @@
auto new_schema =
std::make_shared<arrow::Schema>(std::move(fields), schema()->metadata());
- return Table::Make(new_schema, std::move(columns), num_rows());
+ return Table::Make(std::move(new_schema), std::move(columns), num_rows());
}
std::string Table::ToString() const {
@@ -440,7 +439,7 @@
}
columns[i] = std::make_shared<ChunkedArray>(column_arrays, schema->field(i)->type());
}
- return Table::Make(schema, columns);
+ return Table::Make(std::move(schema), std::move(columns));
}
Result<std::shared_ptr<Table>> PromoteTableToSchema(const std::shared_ptr<Table>& table,
diff --git a/cpp/src/arrow/table_builder.cc b/cpp/src/arrow/table_builder.cc
index 78034c9..c026c35 100644
--- a/cpp/src/arrow/table_builder.cc
+++ b/cpp/src/arrow/table_builder.cc
@@ -74,9 +74,9 @@
}
}
std::shared_ptr<Schema> schema =
- std::make_shared<Schema>(schema_fields, schema_->metadata());
+ std::make_shared<Schema>(std::move(schema_fields), schema_->metadata());
- *batch = RecordBatch::Make(schema, length, std::move(fields));
+ *batch = RecordBatch::Make(std::move(schema), length, std::move(fields));
if (reset_builders) {
return InitBuilders();
} else {