public class BeamJoinRel extends org.apache.calcite.rel.core.Join implements BeamRelNode
BeamRelNode to replace a Join node.
 Support for join can be categorized into 3 cases:
For the first two cases, a standard join is utilized as long as the windowFn of the both sides match.
For the third case, sideInput is utilized to implement the join, so there are some
 constraints:
 
FULL OUTER JOIN is not supported.
   LEFT OUTER JOIN, the unbounded table should on the left side.
   RIGHT OUTER JOIN, the unbounded table should on the right side.
 There are also some general constraints:
| Constructor and Description | 
|---|
BeamJoinRel(org.apache.calcite.plan.RelOptCluster cluster,
           org.apache.calcite.plan.RelTraitSet traits,
           org.apache.calcite.rel.RelNode left,
           org.apache.calcite.rel.RelNode right,
           org.apache.calcite.rex.RexNode condition,
           java.util.Set<org.apache.calcite.rel.core.CorrelationId> variablesSet,
           org.apache.calcite.rel.core.JoinRelType joinType)  | 
| Modifier and Type | Method and Description | 
|---|---|
PTransform<PCollectionList<Row>,PCollection<Row>> | 
buildPTransform()  | 
org.apache.calcite.plan.RelOptCost | 
computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner,
               org.apache.calcite.rel.metadata.RelMetadataQuery mq)  | 
org.apache.calcite.rel.core.Join | 
copy(org.apache.calcite.plan.RelTraitSet traitSet,
    org.apache.calcite.rex.RexNode conditionExpr,
    org.apache.calcite.rel.RelNode left,
    org.apache.calcite.rel.RelNode right,
    org.apache.calcite.rel.core.JoinRelType joinType,
    boolean semiJoinDone)  | 
java.util.List<org.apache.calcite.rel.RelNode> | 
getPCollectionInputs()  | 
static boolean | 
isJoinLegal(org.apache.calcite.rel.core.Join join)
This method checks if a join is legal and can be converted into Beam SQL. 
 | 
PCollection<Row> | 
sideInputJoin(PCollection<KV<Row,Row>> extractedLeftRows,
             PCollection<KV<Row,Row>> extractedRightRows,
             Schema leftSchema,
             Schema rightSchema)  | 
accept, analyzeCondition, copy, createJoinType, deriveJoinRowType, deriveRowType, estimateJoinedRows, estimateRowCount, explainTerms, getChildExps, getCondition, getJoinType, getSystemFieldList, getVariablesSet, isSemiJoinDone, isValidchildrenAccept, getInputs, getLeft, getRight, replaceInputaccept, collectVariablesSet, collectVariablesUsed, computeDigest, computeSelfCost, explain, getCluster, getCollationList, getConvention, getCorrelVariable, getDescription, getDigest, getExpectedInputRowType, getId, getInput, getQuery, getRelTypeName, getRows, getRowType, getTable, getTraitSet, getVariablesStopped, isDistinct, isKey, isValid, metadata, onRegister, recomputeDigest, register, sole, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetPipelineOptions, isBoundedaccept, accept, childrenAccept, collectVariablesSet, collectVariablesUsed, computeSelfCost, copy, estimateRowCount, explain, getChildExps, getCollationList, getConvention, getCorrelVariable, getExpectedInputRowType, getInput, getInputs, getQuery, getRelTypeName, getRows, getRowType, getTable, getVariablesSet, getVariablesStopped, isDistinct, isKey, isValid, isValid, metadata, onRegister, recomputeDigest, register, replaceInputpublic BeamJoinRel(org.apache.calcite.plan.RelOptCluster cluster,
                   org.apache.calcite.plan.RelTraitSet traits,
                   org.apache.calcite.rel.RelNode left,
                   org.apache.calcite.rel.RelNode right,
                   org.apache.calcite.rex.RexNode condition,
                   java.util.Set<org.apache.calcite.rel.core.CorrelationId> variablesSet,
                   org.apache.calcite.rel.core.JoinRelType joinType)
public org.apache.calcite.rel.core.Join copy(org.apache.calcite.plan.RelTraitSet traitSet,
                                             org.apache.calcite.rex.RexNode conditionExpr,
                                             org.apache.calcite.rel.RelNode left,
                                             org.apache.calcite.rel.RelNode right,
                                             org.apache.calcite.rel.core.JoinRelType joinType,
                                             boolean semiJoinDone)
copy in class org.apache.calcite.rel.core.Joinpublic java.util.List<org.apache.calcite.rel.RelNode> getPCollectionInputs()
getPCollectionInputs in interface BeamRelNodepublic org.apache.calcite.plan.RelOptCost computeSelfCost(org.apache.calcite.plan.RelOptPlanner planner,
                                                          org.apache.calcite.rel.metadata.RelMetadataQuery mq)
computeSelfCost in interface org.apache.calcite.rel.RelNodecomputeSelfCost in class org.apache.calcite.rel.core.Joinpublic static boolean isJoinLegal(org.apache.calcite.rel.core.Join join)
BeamJoinAssociateRule and BeamJoinPushThroughJoinRulepublic PTransform<PCollectionList<Row>,PCollection<Row>> buildPTransform()
buildPTransform in interface BeamRelNodepublic PCollection<Row> sideInputJoin(PCollection<KV<Row,Row>> extractedLeftRows, PCollection<KV<Row,Row>> extractedRightRows, Schema leftSchema, Schema rightSchema)