Class MultiJoin

java.lang.Object
org.apache.calcite.rel.AbstractRelNode
org.apache.calcite.rel.rules.MultiJoin
All Implemented Interfaces:
Cloneable, RelOptNode, RelNode

public final class MultiJoin
extends AbstractRelNode
A MultiJoin represents a join of N inputs, whereas regular Joins represent strictly binary joins.
  • Field Details

  • Constructor Details

    • MultiJoin

      public MultiJoin​(RelOptCluster cluster, List<RelNode> inputs, RexNode joinFilter, RelDataType rowType, boolean isFullOuterJoin, List<RexNode> outerJoinConditions, List<JoinRelType> joinTypes, List<ImmutableBitSet> projFields, com.google.common.collect.ImmutableMap<Integer,​ImmutableIntList> joinFieldRefCountsMap, RexNode postJoinFilter)
      Constructs a MultiJoin.
      Parameters:
      cluster - cluster that join belongs to
      inputs - inputs into this multi-join
      joinFilter - join filter applicable to this join node
      rowType - row type of the join result of this node
      isFullOuterJoin - true if the join is a full outer join
      outerJoinConditions - outer join condition associated with each join input, if the input is null-generating in a left or right outer join; null otherwise
      joinTypes - the join type corresponding to each input; if an input is null-generating in a left or right outer join, the entry indicates the type of outer join; otherwise, the entry is set to INNER
      projFields - fields that will be projected from each input; if null, projection information is not available yet so it's assumed that all fields from the input are projected
      joinFieldRefCountsMap - counters of the number of times each field is referenced in join conditions, indexed by the input #
      postJoinFilter - filter to be applied after the joins are
  • Method Details