static class RelMdPredicates.JoinConditionBasedPredicateInference
extends java.lang.Object
Contract is:
Join
and
optional predicates applicable on its left and right subtrees.
So for:
R1(x) join R2(y) on x = y
' a call for
equivalentPredicates on 'x > 7
' will return '
[y > 7]
'
R1(x) join R2(y) on x = y join R3(z) on y = z
' a call for
equivalentPredicates on the second join 'x > 7
' will return
Modifier and Type | Class and Description |
---|---|
(package private) class |
RelMdPredicates.JoinConditionBasedPredicateInference.EquivalenceFinder
Find expressions of the form 'col_x = col_y'.
|
(package private) class |
RelMdPredicates.JoinConditionBasedPredicateInference.ExprsItr
Given an expression returns all the possible substitutions.
|
Modifier and Type | Field and Description |
---|---|
(package private) java.util.Set<RexNode> |
allExprs |
(package private) ImmutableBitSet |
allFieldsBitSet |
(package private) java.util.Set<RexNode> |
equalityPredicates |
(package private) java.util.SortedMap<java.lang.Integer,java.util.BitSet> |
equivalence |
(package private) java.util.Map<RexNode,ImmutableBitSet> |
exprFields |
(package private) Join |
joinRel |
(package private) RexNode |
leftChildPredicates |
(package private) ImmutableBitSet |
leftFieldsBitSet |
(package private) int |
nFieldsLeft |
(package private) int |
nFieldsRight |
(package private) int |
nSysFields |
(package private) RexNode |
rightChildPredicates |
(package private) ImmutableBitSet |
rightFieldsBitSet |
(package private) RexSimplify |
simplify |
Constructor and Description |
---|
JoinConditionBasedPredicateInference(Join joinRel,
RexNode leftPredicates,
RexNode rightPredicates,
RexSimplify simplify) |
Modifier and Type | Method and Description |
---|---|
private boolean |
checkTarget(ImmutableBitSet inferringFields,
java.util.Set<RexNode> allExprs,
RexNode tr) |
(package private) RexNode |
compose(RexBuilder rexBuilder,
java.lang.Iterable<RexNode> exprs) |
private void |
infer(RexNode predicates,
java.util.Set<RexNode> allExprs,
java.util.List<RexNode> inferredPredicates,
boolean includeEqualityInference,
ImmutableBitSet inferringFields) |
RelOptPredicateList |
inferPredicates(boolean includeEqualityInference)
The PullUp Strategy is sound but not complete.
|
private boolean |
isAlwaysTrue(RexNode predicate) |
RexNode |
left() |
(package private) java.lang.Iterable<Mapping> |
mappings(RexNode predicate) |
private void |
markAsEquivalent(int p1,
int p2) |
private int |
pos(RexNode expr) |
RexNode |
right() |
final Join joinRel
final int nSysFields
final int nFieldsLeft
final int nFieldsRight
final ImmutableBitSet leftFieldsBitSet
final ImmutableBitSet rightFieldsBitSet
final ImmutableBitSet allFieldsBitSet
java.util.SortedMap<java.lang.Integer,java.util.BitSet> equivalence
final java.util.Map<RexNode,ImmutableBitSet> exprFields
final java.util.Set<RexNode> allExprs
final java.util.Set<RexNode> equalityPredicates
final RexNode leftChildPredicates
final RexNode rightChildPredicates
final RexSimplify simplify
JoinConditionBasedPredicateInference(Join joinRel, RexNode leftPredicates, RexNode rightPredicates, RexSimplify simplify)
public RelOptPredicateList inferPredicates(boolean includeEqualityInference)
public RexNode left()
public RexNode right()
private void infer(RexNode predicates, java.util.Set<RexNode> allExprs, java.util.List<RexNode> inferredPredicates, boolean includeEqualityInference, ImmutableBitSet inferringFields)
private boolean checkTarget(ImmutableBitSet inferringFields, java.util.Set<RexNode> allExprs, RexNode tr)
private void markAsEquivalent(int p1, int p2)
@Nonnull RexNode compose(RexBuilder rexBuilder, java.lang.Iterable<RexNode> exprs)
private int pos(RexNode expr)
private boolean isAlwaysTrue(RexNode predicate)
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.