From 4440a90f5a18d7a27f262220a3d94b4f4e1744ab Mon Sep 17 00:00:00 2001 From: Bingyi Sun Date: Wed, 3 Jan 2024 17:48:41 +0800 Subject: [PATCH] [Cpp]: change reader to unique ptr (#108) Signed-off-by: sunby --- .../milvus-storage/common/arrow_util.h | 13 ++++---- .../format/parquet/file_reader.h | 4 +-- .../reader/common/combine_offset_reader.h | 12 +++---- .../reader/common/delete_reader.h | 6 ++-- .../reader/common/filter_reader.h | 6 ++-- .../reader/common/projection_reader.h | 14 ++++---- .../reader/filter_query_record_reader.h | 8 ++--- .../reader/merge_record_reader.h | 4 +-- .../reader/multi_files_sequential_reader.h | 4 +-- .../reader/scan_record_reader.h | 4 +-- cpp/src/common/arrow_util.cpp | 14 ++++---- cpp/src/format/parquet/file_reader.cpp | 2 +- .../reader/common/combine_offset_reader.cpp | 16 ++++----- cpp/src/reader/common/delete_reader.cpp | 4 +-- cpp/src/reader/common/filter_reader.cpp | 4 +-- cpp/src/reader/common/projection_reader.cpp | 16 ++++----- cpp/src/reader/filter_query_record_reader.cpp | 33 ++++++++++--------- cpp/src/reader/merge_record_reader.cpp | 12 +++---- .../reader/multi_files_sequential_reader.cpp | 6 ++-- cpp/src/reader/scan_record_reader.cpp | 19 ++++++----- 20 files changed, 100 insertions(+), 101 deletions(-) diff --git a/cpp/include/milvus-storage/common/arrow_util.h b/cpp/include/milvus-storage/common/arrow_util.h index 278faec1..81fccab0 100644 --- a/cpp/include/milvus-storage/common/arrow_util.h +++ b/cpp/include/milvus-storage/common/arrow_util.h @@ -1,11 +1,11 @@ // Copyright 2023 Zilliz -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,10 +20,9 @@ #include "storage/options.h" namespace milvus_storage { -Result> MakeArrowFileReader(arrow::fs::FileSystem& fs, +Result> MakeArrowFileReader(arrow::fs::FileSystem& fs, const std::string& file_path); -Result> MakeArrowRecordBatchReader( - std::shared_ptr reader, - const ReadOptions& options = ReadOptions()); +Result> MakeArrowRecordBatchReader( + parquet::arrow::FileReader& reader, const ReadOptions& options = ReadOptions()); } // namespace milvus_storage diff --git a/cpp/include/milvus-storage/format/parquet/file_reader.h b/cpp/include/milvus-storage/format/parquet/file_reader.h index e1bf3eeb..02ec30cb 100644 --- a/cpp/include/milvus-storage/format/parquet/file_reader.h +++ b/cpp/include/milvus-storage/format/parquet/file_reader.h @@ -21,13 +21,13 @@ namespace milvus_storage { class ParquetFileReader : public Reader { public: - ParquetFileReader(std::shared_ptr reader); + ParquetFileReader(std::unique_ptr reader); void Close() override {} Result> ReadByOffsets(std::vector& offsets) override; private: - std::shared_ptr reader_; + std::unique_ptr reader_; }; } // namespace milvus_storage diff --git a/cpp/include/milvus-storage/reader/common/combine_offset_reader.h b/cpp/include/milvus-storage/reader/common/combine_offset_reader.h index 0f2a7460..3314efea 100644 --- a/cpp/include/milvus-storage/reader/common/combine_offset_reader.h +++ b/cpp/include/milvus-storage/reader/common/combine_offset_reader.h @@ -1,11 +1,11 @@ // Copyright 2023 Zilliz -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -24,9 +24,9 @@ namespace milvus_storage { // of another file and combines them together. class CombineOffsetReader : public arrow::RecordBatchReader { public: - static Result> Make(std::shared_ptr scalar_reader, - std::shared_ptr vector_reader, - std::shared_ptr schema); + static std::unique_ptr Make(std::unique_ptr scalar_reader, + std::unique_ptr vector_reader, + std::shared_ptr schema); std::shared_ptr schema() const override; diff --git a/cpp/include/milvus-storage/reader/common/delete_reader.h b/cpp/include/milvus-storage/reader/common/delete_reader.h index b5c2c621..1bb2993a 100644 --- a/cpp/include/milvus-storage/reader/common/delete_reader.h +++ b/cpp/include/milvus-storage/reader/common/delete_reader.h @@ -30,7 +30,7 @@ class DeleteMergeReader : public arrow::RecordBatchReader { class RecordBatchWithDeltedOffsets; class DeleteFilterVisitor; - static std::shared_ptr Make(std::shared_ptr reader, + static std::unique_ptr Make(std::unique_ptr reader, std::shared_ptr schema_options, const DeleteFragmentVector& delete_fragments, const ReadOptions& options); @@ -38,7 +38,7 @@ class DeleteMergeReader : public arrow::RecordBatchReader { arrow::Status ReadNext(std::shared_ptr* batch) override; - DeleteMergeReader(std::shared_ptr reader, + DeleteMergeReader(std::unique_ptr reader, DeleteFragmentVector delete_fragments, std::shared_ptr schema_options, const ReadOptions& options) @@ -48,7 +48,7 @@ class DeleteMergeReader : public arrow::RecordBatchReader { options_(options) {} private: - std::shared_ptr reader_; + std::unique_ptr reader_; std::shared_ptr filtered_batch_reader_; DeleteFragmentVector delete_fragments_; std::shared_ptr schema_options_; diff --git a/cpp/include/milvus-storage/reader/common/filter_reader.h b/cpp/include/milvus-storage/reader/common/filter_reader.h index 54f9706e..4f169564 100644 --- a/cpp/include/milvus-storage/reader/common/filter_reader.h +++ b/cpp/include/milvus-storage/reader/common/filter_reader.h @@ -30,16 +30,16 @@ class FilterReader : public arrow::RecordBatchReader { arrow::Status ReadNext(std::shared_ptr* batch) override; - static Result> Make(std::shared_ptr reader, + static std::unique_ptr Make(std::unique_ptr reader, const ReadOptions& option); - FilterReader(std::shared_ptr reader, const ReadOptions& option) + FilterReader(std::unique_ptr reader, const ReadOptions& option) : record_reader_(std::move(reader)), option_(option) {} private: arrow::Status NextFilteredBatchReader(); - std::shared_ptr record_reader_; + std::unique_ptr record_reader_; const ReadOptions& option_; std::shared_ptr current_filtered_batch_reader_; }; diff --git a/cpp/include/milvus-storage/reader/common/projection_reader.h b/cpp/include/milvus-storage/reader/common/projection_reader.h index 2782849b..9f9b6ff5 100644 --- a/cpp/include/milvus-storage/reader/common/projection_reader.h +++ b/cpp/include/milvus-storage/reader/common/projection_reader.h @@ -1,11 +1,11 @@ // Copyright 2023 Zilliz -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -26,16 +26,16 @@ class ProjectionReader : public arrow::RecordBatchReader { arrow::Status ReadNext(std::shared_ptr* batch) override; - static Result> Make(std::shared_ptr schema, - std ::shared_ptr reader, + static Result> Make(std::shared_ptr schema, + std::unique_ptr reader, const ReadOptions& options); ProjectionReader(std::shared_ptr schema, - std ::shared_ptr reader, + std::unique_ptr reader, const ReadOptions& options); private: - std::shared_ptr reader_; + std::unique_ptr reader_; const ReadOptions options_; std::shared_ptr schema_; }; diff --git a/cpp/include/milvus-storage/reader/filter_query_record_reader.h b/cpp/include/milvus-storage/reader/filter_query_record_reader.h index 75441b83..594b27e6 100644 --- a/cpp/include/milvus-storage/reader/filter_query_record_reader.h +++ b/cpp/include/milvus-storage/reader/filter_query_record_reader.h @@ -35,7 +35,7 @@ class FilterQueryRecordReader : public arrow::RecordBatchReader { private: // Try to make inner reader, return nullptr if next_pos_ reach the end. - Result> MakeInnerReader(); + Result> MakeInnerReader(); arrow::fs::FileSystem& fs_; std::shared_ptr schema_; @@ -46,9 +46,9 @@ class FilterQueryRecordReader : public arrow::RecordBatchReader { std::vector vector_files_; int64_t next_pos_ = 0; - std::shared_ptr holding_scalar_file_reader_; - std::shared_ptr holding_vector_file_reader_; + std::unique_ptr holding_scalar_file_reader_; + std::unique_ptr holding_vector_file_reader_; - std::shared_ptr curr_reader_; + std::unique_ptr curr_reader_; }; } // namespace milvus_storage diff --git a/cpp/include/milvus-storage/reader/merge_record_reader.h b/cpp/include/milvus-storage/reader/merge_record_reader.h index 7ccff3f0..2d8079b9 100644 --- a/cpp/include/milvus-storage/reader/merge_record_reader.h +++ b/cpp/include/milvus-storage/reader/merge_record_reader.h @@ -38,7 +38,7 @@ class MergeRecordReader : public arrow::RecordBatchReader { arrow::Status ReadNext(std::shared_ptr* batch) override; private: - Result> MakeInnerReader(); + Result> MakeInnerReader(); arrow::fs::FileSystem& fs_; std::shared_ptr schema_; @@ -46,7 +46,7 @@ class MergeRecordReader : public arrow::RecordBatchReader { std::unique_ptr scalar_reader_; std::unique_ptr vector_reader_; - std::shared_ptr curr_reader_; + std::unique_ptr curr_reader_; const DeleteFragmentVector delete_fragments_; }; } // namespace milvus_storage diff --git a/cpp/include/milvus-storage/reader/multi_files_sequential_reader.h b/cpp/include/milvus-storage/reader/multi_files_sequential_reader.h index 92a1a997..bf245384 100644 --- a/cpp/include/milvus-storage/reader/multi_files_sequential_reader.h +++ b/cpp/include/milvus-storage/reader/multi_files_sequential_reader.h @@ -39,8 +39,8 @@ class MultiFilesSequentialReader : public arrow::RecordBatchReader { std::vector files_; size_t next_pos_ = 0; - std::shared_ptr curr_reader_; - std::shared_ptr + std::unique_ptr curr_reader_; + std::unique_ptr holding_file_reader_; // file reader have to outlive than record batch reader, so we hold here. const ReadOptions options_; diff --git a/cpp/include/milvus-storage/reader/scan_record_reader.h b/cpp/include/milvus-storage/reader/scan_record_reader.h index 58825123..80e1ac0e 100644 --- a/cpp/include/milvus-storage/reader/scan_record_reader.h +++ b/cpp/include/milvus-storage/reader/scan_record_reader.h @@ -32,14 +32,14 @@ class ScanRecordReader : public arrow::RecordBatchReader { arrow::Status ReadNext(std::shared_ptr* batch) override; private: - Result> MakeInnerReader(); + Result> MakeInnerReader(); std::shared_ptr schema_; const ReadOptions options_; arrow::fs::FileSystem& fs_; const FragmentVector fragments_; const DeleteFragmentVector delete_fragments_; - std::shared_ptr reader_; + std::unique_ptr reader_; }; } // namespace milvus_storage diff --git a/cpp/src/common/arrow_util.cpp b/cpp/src/common/arrow_util.cpp index 4e42a63e..1aaafff7 100644 --- a/cpp/src/common/arrow_util.cpp +++ b/cpp/src/common/arrow_util.cpp @@ -16,18 +16,18 @@ #include "common/macro.h" namespace milvus_storage { -Result> MakeArrowFileReader(arrow::fs::FileSystem& fs, +Result> MakeArrowFileReader(arrow::fs::FileSystem& fs, const std::string& file_path) { ASSIGN_OR_RETURN_ARROW_NOT_OK(auto file, fs.OpenInputFile(file_path)); std::unique_ptr file_reader; RETURN_ARROW_NOT_OK(parquet::arrow::OpenFile(file, arrow::default_memory_pool(), &file_reader)); - return std::shared_ptr(std::move(file_reader)); + return std::move(file_reader); } -Result> MakeArrowRecordBatchReader( - std::shared_ptr reader, const ReadOptions& options) { - auto metadata = reader->parquet_reader()->metadata(); +Result> MakeArrowRecordBatchReader( + parquet::arrow::FileReader& reader, const ReadOptions& options) { + auto metadata = reader.parquet_reader()->metadata(); std::vector row_group_indices; std::vector column_indices; @@ -61,10 +61,10 @@ Result> MakeArrowRecordBatchReader( row_group_indices.emplace_back(i); } } - std::shared_ptr record_reader; + std::unique_ptr record_reader; // RETURN_ARROW_NOT_OK(reader->GetRecordBatchReader(row_group_indices, column_indices, &record_reader)); - RETURN_ARROW_NOT_OK(reader->GetRecordBatchReader(row_group_indices, &record_reader)); + RETURN_ARROW_NOT_OK(reader.GetRecordBatchReader(row_group_indices, &record_reader)); return record_reader; } diff --git a/cpp/src/format/parquet/file_reader.cpp b/cpp/src/format/parquet/file_reader.cpp index 5ca12e7b..c8158e54 100644 --- a/cpp/src/format/parquet/file_reader.cpp +++ b/cpp/src/format/parquet/file_reader.cpp @@ -27,7 +27,7 @@ namespace milvus_storage { -ParquetFileReader::ParquetFileReader(std::shared_ptr reader) +ParquetFileReader::ParquetFileReader(std::unique_ptr reader) : reader_(std::move(reader)) {} Result> GetRecordAtOffset(arrow::RecordBatchReader* reader, int64_t offset) { diff --git a/cpp/src/reader/common/combine_offset_reader.cpp b/cpp/src/reader/common/combine_offset_reader.cpp index 008b5461..f2bdb3b5 100644 --- a/cpp/src/reader/common/combine_offset_reader.cpp +++ b/cpp/src/reader/common/combine_offset_reader.cpp @@ -1,11 +1,11 @@ // Copyright 2023 Zilliz -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -15,12 +15,10 @@ #include "reader/common/combine_offset_reader.h" #include "arrow/array/array_primitive.h" namespace milvus_storage { -Result> CombineOffsetReader::Make( - std::shared_ptr scalar_reader, - std::shared_ptr vector_reader, - std::shared_ptr schema) { - return std::shared_ptr( - new CombineOffsetReader(std::move(scalar_reader), std::move(vector_reader), std::move(schema))); +std::unique_ptr CombineOffsetReader::Make(std::unique_ptr scalar_reader, + std::unique_ptr vector_reader, + std::shared_ptr schema) { + return std::make_unique(std::move(scalar_reader), std::move(vector_reader), std::move(schema)); } std::shared_ptr CombineOffsetReader::schema() const { return schema_->schema(); } diff --git a/cpp/src/reader/common/delete_reader.cpp b/cpp/src/reader/common/delete_reader.cpp index 8d4e7b94..79a34ae4 100644 --- a/cpp/src/reader/common/delete_reader.cpp +++ b/cpp/src/reader/common/delete_reader.cpp @@ -15,7 +15,7 @@ #include "reader/common/delete_reader.h" namespace milvus_storage { -std::shared_ptr DeleteMergeReader::Make(std::shared_ptr reader, +std::unique_ptr DeleteMergeReader::Make(std::unique_ptr reader, std::shared_ptr schema_options, const DeleteFragmentVector& delete_fragments, const ReadOptions& options) { @@ -27,7 +27,7 @@ std::shared_ptr DeleteMergeReader::Make(std::shared_ptr(reader, delete_fragments, schema_options, options); + return std::make_unique(std::move(reader), delete_fragments, schema_options, options); } std::shared_ptr DeleteMergeReader::schema() const { return reader_->schema(); } diff --git a/cpp/src/reader/common/filter_reader.cpp b/cpp/src/reader/common/filter_reader.cpp index 42712599..bf36fb56 100644 --- a/cpp/src/reader/common/filter_reader.cpp +++ b/cpp/src/reader/common/filter_reader.cpp @@ -19,9 +19,9 @@ #include namespace milvus_storage { -Result> FilterReader::Make(std::shared_ptr reader, +std::unique_ptr FilterReader::Make(std::unique_ptr reader, const ReadOptions& option) { - return std::make_shared(reader, option); + return std::make_unique(std::move(reader), option); } std::shared_ptr FilterReader::schema() const { diff --git a/cpp/src/reader/common/projection_reader.cpp b/cpp/src/reader/common/projection_reader.cpp index b217bd24..1b437cf7 100644 --- a/cpp/src/reader/common/projection_reader.cpp +++ b/cpp/src/reader/common/projection_reader.cpp @@ -1,11 +1,11 @@ // Copyright 2023 Zilliz -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,17 +23,17 @@ namespace milvus_storage { ProjectionReader::ProjectionReader(std::shared_ptr schema, - std ::shared_ptr reader, + std ::unique_ptr reader, const ReadOptions& options) : reader_(std::move(reader)), options_(options), schema_(schema) {} -Result> ProjectionReader::Make( +Result> ProjectionReader::Make( std::shared_ptr schema, - std ::shared_ptr reader, + std ::unique_ptr reader, const ReadOptions& options) { ASSIGN_OR_RETURN_NOT_OK(auto projection_schema, ProjectSchema(schema, options.columns)); - std::shared_ptr projection_reader = - std::make_shared(projection_schema, reader, options); + std::unique_ptr projection_reader = + std::make_unique(projection_schema, std::move(reader), options); return projection_reader; } diff --git a/cpp/src/reader/filter_query_record_reader.cpp b/cpp/src/reader/filter_query_record_reader.cpp index ff8db965..fd040ce5 100644 --- a/cpp/src/reader/filter_query_record_reader.cpp +++ b/cpp/src/reader/filter_query_record_reader.cpp @@ -1,11 +1,11 @@ // Copyright 2023 Zilliz -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -61,12 +61,11 @@ arrow::Status FilterQueryRecordReader::ReadNext(std::shared_ptr tmp_batch; @@ -86,24 +85,26 @@ arrow::Status FilterQueryRecordReader::ReadNext(std::shared_ptr> FilterQueryRecordReader::MakeInnerReader() { +Result> FilterQueryRecordReader::MakeInnerReader() { if (next_pos_ >= scalar_files_.size()) { - std::shared_ptr res = nullptr; + std::unique_ptr res = nullptr; return res; } auto scalar_file = scalar_files_[next_pos_], vector_file = vector_files_[next_pos_]; ASSIGN_OR_RETURN_NOT_OK(holding_scalar_file_reader_, MakeArrowFileReader(fs_, scalar_file)); ASSIGN_OR_RETURN_NOT_OK(holding_vector_file_reader_, MakeArrowFileReader(fs_, vector_file)); - ASSIGN_OR_RETURN_NOT_OK(auto scalar_rec_reader, MakeArrowRecordBatchReader(holding_scalar_file_reader_, options_)); - auto current_vector_reader = std::make_shared(holding_vector_file_reader_); + ASSIGN_OR_RETURN_NOT_OK(auto scalar_rec_reader, + MakeArrowRecordBatchReader(*holding_scalar_file_reader_, options_)); + auto current_vector_reader = std::make_unique(std::move(holding_vector_file_reader_)); - ASSIGN_OR_RETURN_NOT_OK(auto combine_reader, - CombineOffsetReader::Make(scalar_rec_reader, current_vector_reader, schema_)); - ASSIGN_OR_RETURN_NOT_OK(auto filter_reader, FilterReader::Make(combine_reader, options_)); - std::shared_ptr delete_reader = - DeleteMergeReader::Make(filter_reader, schema_->options(), delete_fragments_, options_); - ASSIGN_OR_RETURN_NOT_OK(auto projection_reader, ProjectionReader::Make(schema_->schema(), delete_reader, options_)); + auto combine_reader = + CombineOffsetReader::Make(std::move(scalar_rec_reader), std::move(current_vector_reader), schema_); + auto filter_reader = FilterReader::Make(std::move(combine_reader), options_); + auto delete_reader = + DeleteMergeReader::Make(std::move(filter_reader), schema_->options(), delete_fragments_, options_); + ASSIGN_OR_RETURN_NOT_OK(auto projection_reader, + ProjectionReader::Make(schema_->schema(), std::move(delete_reader), options_)); next_pos_++; return projection_reader; diff --git a/cpp/src/reader/merge_record_reader.cpp b/cpp/src/reader/merge_record_reader.cpp index 258442cf..7f6e4910 100644 --- a/cpp/src/reader/merge_record_reader.cpp +++ b/cpp/src/reader/merge_record_reader.cpp @@ -51,12 +51,11 @@ arrow::Status MergeRecordReader::ReadNext(std::shared_ptr* b if (!r.ok()) { return arrow::Status::UnknownError(r.status().ToString()); } - auto reader = r.value(); - if (reader == nullptr) { + if (r.value() == nullptr) { batch = nullptr; return arrow::Status::OK(); } - curr_reader_ = reader; + curr_reader_ = std::move(r.value()); } std::shared_ptr tmp_batch; @@ -72,10 +71,11 @@ arrow::Status MergeRecordReader::ReadNext(std::shared_ptr* b return arrow::Status::OK(); } -Result> MergeRecordReader::MakeInnerReader() { +Result> MergeRecordReader::MakeInnerReader() { auto combine_reader = CombineReader::Make(std::move(scalar_reader_), std::move(vector_reader_), schema_); - auto delete_reader = DeleteMergeReader::Make(std::move(combine_reader), schema_->options(), delete_fragments_, options_); - ASSIGN_OR_RETURN_NOT_OK(auto res, ProjectionReader::Make(schema(), delete_reader, options_)); + auto delete_reader = + DeleteMergeReader::Make(std::move(combine_reader), schema_->options(), delete_fragments_, options_); + ASSIGN_OR_RETURN_NOT_OK(auto res, ProjectionReader::Make(schema(), std::move(delete_reader), options_)); return res; } } // namespace milvus_storage diff --git a/cpp/src/reader/multi_files_sequential_reader.cpp b/cpp/src/reader/multi_files_sequential_reader.cpp index 47140826..9e02b4a7 100644 --- a/cpp/src/reader/multi_files_sequential_reader.cpp +++ b/cpp/src/reader/multi_files_sequential_reader.cpp @@ -43,13 +43,13 @@ arrow::Status MultiFilesSequentialReader::ReadNext(std::shared_ptr tmp_batch; diff --git a/cpp/src/reader/scan_record_reader.cpp b/cpp/src/reader/scan_record_reader.cpp index ac44047a..a235dab3 100644 --- a/cpp/src/reader/scan_record_reader.cpp +++ b/cpp/src/reader/scan_record_reader.cpp @@ -1,11 +1,11 @@ // Copyright 2023 Zilliz -// +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -43,17 +43,18 @@ arrow::Status ScanRecordReader::ReadNext(std::shared_ptr* ba if (!res.ok()) { return arrow::Status::UnknownError(res.status().ToString()); } - reader_ = res.value(); + reader_ = std::move(res.value()); } return reader_->ReadNext(batch); } -Result> ScanRecordReader::MakeInnerReader() { - auto reader = std::make_shared(fs_, fragments_, schema_->schema(), options_); - ASSIGN_OR_RETURN_NOT_OK(auto filter_reader, FilterReader::Make(reader, options_)); - auto delete_reader = DeleteMergeReader::Make(filter_reader, schema_->options(), delete_fragments_, options_); - ASSIGN_OR_RETURN_NOT_OK(auto res, ProjectionReader::Make(schema_->schema(), delete_reader, options_)); +Result> ScanRecordReader::MakeInnerReader() { + auto reader = std::make_unique(fs_, fragments_, schema_->schema(), options_); + auto filter_reader = FilterReader::Make(std::move(reader), options_); + auto delete_reader = + DeleteMergeReader::Make(std::move(filter_reader), schema_->options(), delete_fragments_, options_); + ASSIGN_OR_RETURN_NOT_OK(auto res, ProjectionReader::Make(schema_->schema(), std::move(delete_reader), options_)); return res; } } // namespace milvus_storage