@@ -362,7 +362,8 @@ def fetch_manifest_entry(self, manifest: ManifestFile, discard_deleted: bool = T
362362
363363 def _build_partition_projection (self , spec_id : int ) -> BooleanExpression :
364364 project = inclusive_projection (self .schema (), self .spec (spec_id ), self ._case_sensitive )
365- return project (self ._predicate )
365+ predicate = self ._per_spec_predicates .get (spec_id , self ._predicate )
366+ return project (predicate )
366367
367368 @cached_property
368369 def partition_filters (self ) -> KeyDefaultDict [int , BooleanExpression ]:
@@ -434,13 +435,10 @@ def _copy_with_new_status(entry: ManifestEntry, status: ManifestEntryStatus) ->
434435
435436 manifest_evaluators : dict [int , Callable [[ManifestFile ], bool ]] = KeyDefaultDict (self ._build_manifest_evaluator )
436437
437- def _strict_metrics_for_spec (spec_id : int ) -> Callable [[DataFile ], bool ]:
438- predicate = self ._per_spec_predicates .get (spec_id , self ._predicate )
439- return _StrictMetricsEvaluator (schema , predicate , case_sensitive = self ._case_sensitive ).eval
440-
441- def _inclusive_metrics_for_spec (spec_id : int ) -> Callable [[DataFile ], bool ]:
442- predicate = self ._per_spec_predicates .get (spec_id , self ._predicate )
443- return _InclusiveMetricsEvaluator (schema , predicate , case_sensitive = self ._case_sensitive ).eval
438+ strict_metrics_evaluator = _StrictMetricsEvaluator (schema , self ._predicate , case_sensitive = self ._case_sensitive ).eval
439+ inclusive_metrics_evaluator = _InclusiveMetricsEvaluator (
440+ schema , self ._predicate , case_sensitive = self ._case_sensitive
441+ ).eval
444442
445443 existing_manifests = []
446444 total_deleted_entries = []
@@ -460,9 +458,6 @@ def _inclusive_metrics_for_spec(spec_id: int) -> Callable[[DataFile], bool]:
460458 existing_manifests .append (manifest_file )
461459 else :
462460 # It is relevant, let's check out the content
463- spec_id = manifest_file .partition_spec_id
464- strict_metrics_evaluator = _strict_metrics_for_spec (spec_id )
465- inclusive_metrics_evaluator = _inclusive_metrics_for_spec (spec_id )
466461 deleted_entries = []
467462 existing_entries = []
468463 for entry in manifest_file .fetch_manifest_entry (io = self ._io , discard_deleted = True ):
0 commit comments