From 038c311691d5dce07de4f8cbc7be352d903a11af Mon Sep 17 00:00:00 2001 From: tangjiangling Date: Fri, 19 Aug 2022 12:23:32 +0800 Subject: [PATCH 1/2] Fix typo in PredicatePushDown --- .../io/trino/sql/planner/optimizations/PredicatePushDown.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..996d872aed04 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 @@ -1410,7 +1410,7 @@ private PlanNode visitFilteringSemiJoin(SemiJoinNode node, RewriteContext allInference.rewrite(conjunct, filterScope)) .filter(Objects::nonNull) From 325a3e045d73e887ffd4947f5c3d9c4e0bd43f94 Mon Sep 17 00:00:00 2001 From: tangjiangling Date: Fri, 19 Aug 2022 12:24:22 +0800 Subject: [PATCH 2/2] Replace `Stream#allMatch` with `Collection#containsAll` in PredicatePushDown --- .../sql/planner/optimizations/PredicatePushDown.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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 996d872aed04..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)));