From ff2bf7999fd854e7108f447fc1c1bbc467ba7178 Mon Sep 17 00:00:00 2001 From: Szehon Ho Date: Fri, 8 Jul 2022 16:30:10 -0700 Subject: [PATCH] Core: Improve in and not_in predicate eval for all_manifests.reference_snapshot_id --- .../java/org/apache/iceberg/AllManifestsTable.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/iceberg/AllManifestsTable.java b/core/src/main/java/org/apache/iceberg/AllManifestsTable.java index f8462581f948..613a7557aed1 100644 --- a/core/src/main/java/org/apache/iceberg/AllManifestsTable.java +++ b/core/src/main/java/org/apache/iceberg/AllManifestsTable.java @@ -20,7 +20,6 @@ package org.apache.iceberg; import java.io.IOException; -import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Set; @@ -40,7 +39,6 @@ import org.apache.iceberg.relocated.com.google.common.collect.ImmutableList; import org.apache.iceberg.relocated.com.google.common.collect.Iterables; import org.apache.iceberg.relocated.com.google.common.collect.Maps; -import org.apache.iceberg.types.Comparators; import org.apache.iceberg.types.Types; import org.apache.iceberg.util.StructProjection; @@ -350,9 +348,7 @@ public Boolean notEq(BoundReference ref, Literal lit) { @Override public Boolean in(BoundReference ref, Set literalSet) { if (isSnapshotRef(ref)) { - Comparator longComparator = Comparators.forType(Types.LongType.get()); - boolean noneMatch = literalSet.stream().noneMatch(lit -> longComparator.compare(snapshotId, lit) == 0); - if (noneMatch) { + if (!literalSet.contains(snapshotId)) { return ROWS_CANNOT_MATCH; } } @@ -362,9 +358,7 @@ public Boolean in(BoundReference ref, Set literalSet) { @Override public Boolean notIn(BoundReference ref, Set literalSet) { if (isSnapshotRef(ref)) { - Comparator longComparator = Comparators.forType(Types.LongType.get()); - boolean anyMatch = literalSet.stream().anyMatch(lit -> longComparator.compare(snapshotId, lit) == 0); - if (anyMatch) { + if (literalSet.contains(snapshotId)) { return ROWS_CANNOT_MATCH; } }