@@ -435,10 +435,13 @@ def _copy_with_new_status(entry: ManifestEntry, status: ManifestEntryStatus) ->
435435
436436 manifest_evaluators : dict [int , Callable [[ManifestFile ], bool ]] = KeyDefaultDict (self ._build_manifest_evaluator )
437437
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
438+ def _strict_metrics_for_spec (spec_id : int ) -> Callable [[DataFile ], bool ]:
439+ predicate = self ._per_spec_predicates .get (spec_id , self ._predicate )
440+ return _StrictMetricsEvaluator (schema , predicate , case_sensitive = self ._case_sensitive ).eval
441+
442+ def _inclusive_metrics_for_spec (spec_id : int ) -> Callable [[DataFile ], bool ]:
443+ predicate = self ._per_spec_predicates .get (spec_id , self ._predicate )
444+ return _InclusiveMetricsEvaluator (schema , predicate , case_sensitive = self ._case_sensitive ).eval
442445
443446 existing_manifests = []
444447 total_deleted_entries = []
@@ -458,6 +461,9 @@ def _copy_with_new_status(entry: ManifestEntry, status: ManifestEntryStatus) ->
458461 existing_manifests .append (manifest_file )
459462 else :
460463 # It is relevant, let's check out the content
464+ spec_id = manifest_file .partition_spec_id
465+ strict_metrics_evaluator = _strict_metrics_for_spec (spec_id )
466+ inclusive_metrics_evaluator = _inclusive_metrics_for_spec (spec_id )
461467 deleted_entries = []
462468 existing_entries = []
463469 for entry in manifest_file .fetch_manifest_entry (io = self ._io , discard_deleted = True ):
0 commit comments