public final class JoinOperations
extends java.lang.Object
Modifier and Type | Method and Description |
---|---|
static MergePhase |
buildMergePhaseForJoin(PlannerContext plannerContext,
ResultDescription resultDescription,
java.util.Collection<java.lang.String> executionNodes) |
static java.util.LinkedHashMap<java.util.Set<QualifiedName>,JoinPair> |
buildRelationsToJoinPairsMap(java.util.List<JoinPair> joinPairs) |
static java.util.List<JoinPair> |
convertImplicitJoinConditionsToJoinPairs(java.util.List<JoinPair> explicitJoinPairs,
java.util.Map<java.util.Set<QualifiedName>,Symbol> splitQueries)
Converts any implicit join conditions of the WHERE clause to explicit
JoinPair . |
static Projection |
createJoinProjection(java.util.List<Symbol> outputs,
java.util.List<Symbol> joinOutputs)
Creates an
EvalProjection to ensure that the join output symbols are emitted in the original order as
a possible outer operator (e.g. |
static boolean |
isMergePhaseNeeded(java.util.Collection<java.lang.String> executionNodes,
ResultDescription resultDescription,
boolean isDistributed) |
public static boolean isMergePhaseNeeded(java.util.Collection<java.lang.String> executionNodes, ResultDescription resultDescription, boolean isDistributed)
public static MergePhase buildMergePhaseForJoin(PlannerContext plannerContext, ResultDescription resultDescription, java.util.Collection<java.lang.String> executionNodes)
public static Projection createJoinProjection(java.util.List<Symbol> outputs, java.util.List<Symbol> joinOutputs)
EvalProjection
to ensure that the join output symbols are emitted in the original order as
a possible outer operator (e.g. GROUP BY) is relying on the order.
The order could have been changed due to the switch-table optimizationsoutputs
- List of join output symbols in their original order.joinOutputs
- List of join output symbols after possible re-ordering due optimizations.public static java.util.LinkedHashMap<java.util.Set<QualifiedName>,JoinPair> buildRelationsToJoinPairsMap(java.util.List<JoinPair> joinPairs)
public static java.util.List<JoinPair> convertImplicitJoinConditionsToJoinPairs(java.util.List<JoinPair> explicitJoinPairs, java.util.Map<java.util.Set<QualifiedName>,Symbol> splitQueries)
JoinPair
.
Every join condition that gets to be converted is removed from the splitQueries
explicitJoinPairs
- The explicitJoinPairs as originally written in the querysplitQueries
- The remaining queries of the WHERE clause split by involved relationsJoinPair