@@ -134,7 +134,7 @@ ManifestGroup& ManifestGroup::operator=(ManifestGroup&&) noexcept = default;
134134class ManifestGroup ::FilePlanningIterator final
135135 : public Iterator<std::shared_ptr<FileScanTask>> {
136136 public:
137- static Result<std::unique_ptr<Iterator<std::shared_ptr<FileScanTask>>> > Make (
137+ static Result<FileScanTaskIterator > Make (
138138 std::unique_ptr<ManifestGroup> group) {
139139 ICEBERG_RETURN_UNEXPECTED (group->CheckErrors ());
140140
@@ -153,7 +153,7 @@ class ManifestGroup::FilePlanningIterator final
153153 group->case_sensitive_ ));
154154 }
155155
156- return std::unique_ptr<Iterator<std::shared_ptr<FileScanTask>>> (
156+ return FileScanTaskIterator (
157157 new FilePlanningIterator (std::move (group), std::move (delete_index),
158158 std::move (data_file_evaluator), drop_stats));
159159 }
@@ -310,11 +310,14 @@ class ManifestGroup::FilePlanningIterator final
310310 ICEBERG_ASSIGN_OR_RAISE (auto evaluator,
311311 GetManifestEvaluator (manifest.partition_spec_id ));
312312 ICEBERG_ASSIGN_OR_RAISE (bool should_match, evaluator->Evaluate (manifest));
313- if (!should_match ||
314- (group_->ignore_deleted_ && !manifest.has_added_files () &&
315- !manifest.has_existing_files ()) ||
316- (group_->ignore_existing_ && !manifest.has_added_files () &&
317- !manifest.has_deleted_files ())) {
313+ const bool has_non_deleted_files =
314+ manifest.has_added_files () || manifest.has_existing_files ();
315+ const bool has_non_existing_files =
316+ manifest.has_added_files () || manifest.has_deleted_files ();
317+ const bool has_only_ignored_files =
318+ (group_->ignore_deleted_ && !has_non_deleted_files) ||
319+ (group_->ignore_existing_ && !has_non_existing_files);
320+ if (!should_match || has_only_ignored_files) {
318321 IncrementSkippedDataManifests ();
319322 return false ;
320323 }
@@ -553,8 +556,7 @@ Result<std::vector<std::shared_ptr<FileScanTask>>> ManifestGroup::PlanFiles() {
553556 return file_tasks;
554557}
555558
556- Result<std::unique_ptr<Iterator<std::shared_ptr<FileScanTask>>>>
557- ManifestGroup::PlanFilesIterator () && {
559+ Result<FileScanTaskIterator> ManifestGroup::PlanFilesIterator () && {
558560 auto group = std::make_unique<ManifestGroup>(std::move (*this ));
559561 return FilePlanningIterator::Make (std::move (group));
560562}
0 commit comments