diff --git a/core/trino-main/src/main/java/io/trino/sql/planner/optimizations/PredicatePushDown.java b/core/trino-main/src/main/java/io/trino/sql/planner/optimizations/PredicatePushDown.java index f6235918cc76..33e3b40c2f7f 100644 --- a/core/trino-main/src/main/java/io/trino/sql/planner/optimizations/PredicatePushDown.java +++ b/core/trino-main/src/main/java/io/trino/sql/planner/optimizations/PredicatePushDown.java @@ -258,8 +258,7 @@ public PlanNode visitWindow(WindowNode node, RewriteContext context) // pre-projected symbols. Predicate isSupported = conjunct -> isDeterministic(conjunct, metadata) && - extractUnique(conjunct).stream() - .allMatch(partitionSymbols::contains); + partitionSymbols.containsAll(extractUnique(conjunct)); Map> conjuncts = extractConjuncts(context.get()).stream().collect(Collectors.partitioningBy(isSupported)); @@ -280,8 +279,7 @@ public PlanNode visitProject(ProjectNode node, RewriteContext contex .map(Map.Entry::getKey) .collect(Collectors.toSet()); - Predicate deterministic = conjunct -> extractUnique(conjunct).stream() - .allMatch(deterministicSymbols::contains); + Predicate deterministic = conjunct -> deterministicSymbols.containsAll(extractUnique(conjunct)); Map> conjuncts = extractConjuncts(context.get()).stream().collect(Collectors.partitioningBy(deterministic)); @@ -363,7 +361,7 @@ public PlanNode visitMarkDistinct(MarkDistinctNode node, RewriteContext pushDownableSymbols = ImmutableSet.copyOf(node.getDistinctSymbols()); Map> conjuncts = extractConjuncts(context.get()).stream() - .collect(Collectors.partitioningBy(conjunct -> extractUnique(conjunct).stream().allMatch(pushDownableSymbols::contains))); + .collect(Collectors.partitioningBy(conjunct -> pushDownableSymbols.containsAll(extractUnique(conjunct)))); PlanNode rewrittenNode = context.defaultRewrite(node, combineConjuncts(metadata, conjuncts.get(true))); @@ -1410,7 +1408,7 @@ private PlanNode visitFilteringSemiJoin(SemiJoinNode node, RewriteContext allInference.rewrite(conjunct, filterScope)) .filter(Objects::nonNull)