2727namespace paimon {
2828class Predicate ;
2929
30- ReadContext::ReadContext (const std::string& path, const std::string& branch,
31- const std::vector<std::string>& read_schema,
32- const std::shared_ptr<Predicate>& predicate, bool enable_predicate_filter,
33- bool enable_prefetch, uint32_t prefetch_batch_count,
34- uint32_t prefetch_max_parallel_num, bool enable_multi_thread_row_to_batch,
35- uint32_t row_to_batch_thread_number,
36- const std::optional<std::string>& table_schema,
37- const std::shared_ptr<MemoryPool>& memory_pool,
38- const std::shared_ptr<Executor>& executor,
39- const std::shared_ptr<FileSystem>& specific_file_system,
40- const std::map<std::string, std::string>& fs_scheme_to_identifier_map,
41- const std::map<std::string, std::string>& options)
30+ ReadContext::ReadContext (
31+ const std::string& path, const std::string& branch, const std::vector<std::string>& read_schema,
32+ const std::vector<int32_t >& read_field_ids, const std::shared_ptr<Predicate>& predicate,
33+ bool enable_predicate_filter, bool enable_prefetch, uint32_t prefetch_batch_count,
34+ uint32_t prefetch_max_parallel_num, bool enable_multi_thread_row_to_batch,
35+ uint32_t row_to_batch_thread_number, const std::optional<std::string>& table_schema,
36+ const std::shared_ptr<MemoryPool>& memory_pool, const std::shared_ptr<Executor>& executor,
37+ const std::shared_ptr<FileSystem>& specific_file_system,
38+ const std::map<std::string, std::string>& fs_scheme_to_identifier_map,
39+ const std::map<std::string, std::string>& options)
4240 : path_(path),
4341 branch_ (branch),
4442 read_schema_(read_schema),
43+ read_field_ids_(read_field_ids),
4544 predicate_(predicate),
4645 enable_predicate_filter_(enable_predicate_filter),
4746 enable_prefetch_(enable_prefetch),
@@ -64,6 +63,7 @@ class ReadContextBuilder::Impl {
6463 void Reset () {
6564 branch_ = BranchManager::DEFAULT_MAIN_BRANCH ;
6665 read_field_names_.clear ();
66+ read_field_ids_.clear ();
6767 fs_scheme_to_identifier_map_.clear ();
6868 options_.clear ();
6969 predicate_.reset ();
@@ -83,6 +83,7 @@ class ReadContextBuilder::Impl {
8383 std::string path_;
8484 std::string branch_ = BranchManager::DEFAULT_MAIN_BRANCH ;
8585 std::vector<std::string> read_field_names_;
86+ std::vector<int32_t > read_field_ids_;
8687 std::map<std::string, std::string> fs_scheme_to_identifier_map_;
8788 std::map<std::string, std::string> options_;
8889 std::shared_ptr<Predicate> predicate_;
@@ -125,6 +126,12 @@ ReadContextBuilder& ReadContextBuilder::SetReadSchema(
125126 return *this ;
126127}
127128
129+ ReadContextBuilder& ReadContextBuilder::SetReadFieldIds (
130+ const std::vector<int32_t >& read_field_ids) {
131+ impl_->read_field_ids_ = read_field_ids;
132+ return *this ;
133+ }
134+
128135ReadContextBuilder& ReadContextBuilder::SetPredicate (const std::shared_ptr<Predicate>& predicate) {
129136 impl_->predicate_ = predicate;
130137 return *this ;
@@ -216,12 +223,12 @@ Result<std::unique_ptr<ReadContext>> ReadContextBuilder::Finish() {
216223 return Status::Invalid (" row to batch thread number should be greater than 0" );
217224 }
218225 auto ctx = std::make_unique<ReadContext>(
219- impl_->path_ , impl_->branch_ , impl_->read_field_names_ , impl_->predicate_ ,
220- impl_->enable_predicate_filter_ , impl_->enable_prefetch_ , impl_->prefetch_batch_count_ ,
221- impl_->prefetch_max_parallel_num_ , impl_->enable_multi_thread_row_to_batch_ ,
222- impl_->row_to_batch_thread_number_ , impl_->table_schema_ , impl_-> memory_pool_ ,
223- impl_->executor_ , impl_->specific_file_system_ , impl_->fs_scheme_to_identifier_map_ ,
224- impl_->options_ );
226+ impl_->path_ , impl_->branch_ , impl_->read_field_names_ , impl_->read_field_ids_ ,
227+ impl_->predicate_ , impl_->enable_predicate_filter_ , impl_->enable_prefetch_ ,
228+ impl_->prefetch_batch_count_ , impl_->prefetch_max_parallel_num_ ,
229+ impl_->enable_multi_thread_row_to_batch_ , impl_->row_to_batch_thread_number_ ,
230+ impl_->table_schema_ , impl_->memory_pool_ , impl_->executor_ , impl_-> specific_file_system_ ,
231+ impl_->fs_scheme_to_identifier_map_ , impl_-> options_ );
225232 impl_->Reset ();
226233 return ctx;
227234}
0 commit comments