You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jc...@apache.org on 2018/11/13 19:34:17 UTC
calcite git commit: [CALCITE-2668] Support for left/right outer join
in RelMdExpressionLineage (addendum)
Repository: calcite
Updated Branches:
refs/heads/master 81a9bd783 -> a36ffc35c
[CALCITE-2668] Support for left/right outer join in RelMdExpressionLineage (addendum)
Catch UnsupportedOperationException in RelMdExpressionLineage
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/a36ffc35
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/a36ffc35
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/a36ffc35
Branch: refs/heads/master
Commit: a36ffc35cd21c4db69021d8051ac8c9834c02faa
Parents: 81a9bd7
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Tue Nov 13 11:26:50 2018 -0800
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Tue Nov 13 11:27:06 2018 -0800
----------------------------------------------------------------------
.../calcite/rel/metadata/RelMdAllPredicates.java | 18 ++++++++++++------
.../rel/metadata/RelMdExpressionLineage.java | 12 +++++++++---
2 files changed, 21 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/a36ffc35/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
index 6101846..4d1b9d7 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
@@ -146,9 +146,12 @@ public class RelMdAllPredicates
}
// Replace with new expressions and return union of predicates
- return predsBelow.union(rexBuilder,
- RelOptPredicateList.of(rexBuilder,
- RelMdExpressionLineage.createAllPossibleExpressions(rexBuilder, pred, mapping)));
+ final Set<RexNode> allExprs =
+ RelMdExpressionLineage.createAllPossibleExpressions(rexBuilder, pred, mapping);
+ if (allExprs == null) {
+ return null;
+ }
+ return predsBelow.union(rexBuilder, RelOptPredicateList.of(rexBuilder, allExprs));
}
/**
@@ -222,9 +225,12 @@ public class RelMdAllPredicates
}
// Replace with new expressions and return union of predicates
- return newPreds.union(rexBuilder,
- RelOptPredicateList.of(rexBuilder,
- RelMdExpressionLineage.createAllPossibleExpressions(rexBuilder, pred, mapping)));
+ final Set<RexNode> allExprs =
+ RelMdExpressionLineage.createAllPossibleExpressions(rexBuilder, pred, mapping);
+ if (allExprs == null) {
+ return null;
+ }
+ return newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, allExprs));
}
/**
http://git-wip-us.apache.org/repos/asf/calcite/blob/a36ffc35/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
index fcbf571..3ee6f6b 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
@@ -56,6 +56,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
+import javax.annotation.Nullable;
/**
* Default implementation of
@@ -398,7 +399,7 @@ public class RelMdExpressionLineage
* @param mapping mapping
* @return set of resulting expressions equivalent to the input expression
*/
- protected static Set<RexNode> createAllPossibleExpressions(RexBuilder rexBuilder,
+ @Nullable protected static Set<RexNode> createAllPossibleExpressions(RexBuilder rexBuilder,
RexNode expr, Map<RexInputRef, Set<RexNode>> mapping) {
// Extract input fields referenced by expression
final ImmutableBitSet predFieldsUsed = extractInputRefs(expr);
@@ -408,8 +409,13 @@ public class RelMdExpressionLineage
return ImmutableSet.of(expr);
}
- return createAllPossibleExpressions(rexBuilder, expr, predFieldsUsed, mapping,
- new HashMap<>());
+ try {
+ return createAllPossibleExpressions(rexBuilder, expr, predFieldsUsed, mapping,
+ new HashMap<>());
+ } catch (UnsupportedOperationException e) {
+ // There may be a RexNode unsupported by RexCopier, just return null
+ return null;
+ }
}
private static Set<RexNode> createAllPossibleExpressions(RexBuilder rexBuilder,