Enum JoinType

java.lang.Object
java.lang.Enum<JoinType>
org.apache.calcite.linq4j.JoinType
All Implemented Interfaces:
Serializable, Comparable<JoinType>, Constable

public enum JoinType extends Enum<JoinType>
Enumeration of join types.
  • Nested Class Summary

    Nested classes/interfaces inherited from class java.lang.Enum

    Enum.EnumDesc<E extends Enum<E>>
  • Enum Constant Summary

    Enum Constants
    Enum Constant
    Description
    Anti-join (also known as Anti-semi-join).
    An ASOF JOIN operation combines rows from two tables based on comparable timestamp values.
    Full-outer join.
    Inner join.
    Left-outer join.
    The left version of an ASOF join, where each row from the left table is part of the output.
    An LEFT MARK JOIN will keep all rows from the left side and creates a new attribute to mark a tuple as having join partners from right side or not.
    Right-outer join.
    Semi-join.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Returns whether a join of this type may generate NULL values on the left-hand side.
    boolean
    Returns whether a join of this type may generate NULL values on the right-hand side.
    static JoinType
    Returns the enum constant of this type with the specified name.
    static JoinType[]
    Returns an array containing the constants of this enum type, in the order they are declared.

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Enum Constant Details

    • INNER

      public static final JoinType INNER
      Inner join.
    • LEFT

      public static final JoinType LEFT
      Left-outer join.
    • FULL

      public static final JoinType FULL
      Full-outer join.
    • SEMI

      public static final JoinType SEMI
      Semi-join.

      For example, EMP semi-join DEPT finds all EMP records that have a corresponding DEPT record:

       SELECT * FROM EMP
       WHERE EXISTS (SELECT 1 FROM DEPT
           WHERE DEPT.DEPTNO = EMP.DEPTNO)
    • ANTI

      public static final JoinType ANTI
      Anti-join (also known as Anti-semi-join).

      For example, EMP anti-join DEPT finds all EMP records that do not have a corresponding DEPT record:

       SELECT * FROM EMP
       WHERE NOT EXISTS (SELECT 1 FROM DEPT
           WHERE DEPT.DEPTNO = EMP.DEPTNO)
    • ASOF

      public static final JoinType ASOF
      An ASOF JOIN operation combines rows from two tables based on comparable timestamp values. For each row in the left table, the join finds at most one row in the right table that has the "closest" timestamp value. The matched row on the right side is the closest match, which could less than or equal or greater than or equal in the timestamp column, as specified by the comparison operator.

      Example:

       FROM left_table ASOF JOIN right_table
         MATCH_CONDITION ( left_table.timecol ≤ right_table.timecol )
         ON left_table.col = right_table.col
    • LEFT_ASOF

      public static final JoinType LEFT_ASOF
      The left version of an ASOF join, where each row from the left table is part of the output.
    • LEFT_MARK

      public static final JoinType LEFT_MARK
      An LEFT MARK JOIN will keep all rows from the left side and creates a new attribute to mark a tuple as having join partners from right side or not. Refer to The Complete Story of Joins (in HyPer).

      Example:

       SELECT EMPNO FROM EMP
       WHERE EXISTS (SELECT 1 FROM DEPT
           WHERE DEPT.DEPTNO = EMP.DEPTNO)
           OR EMPNO > 1
      
       LogicalProject(EMPNO=[$0])
         LogicalFilter(condition=[OR($9, >($0, 1))])
           LogicalJoin(condition=[IS NOT DISTINCT FROM($7, $9)], joinType=[left_mark])
             LogicalTableScan(table=[[CATALOG, SALES, EMP]])
             LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
       

      If the marker is used on only conjunctive predicates the optimizer will try to translate the mark join into semi or anti join.

  • Method Details

    • values

      public static JoinType[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      Returns:
      an array containing the constants of this enum type, in the order they are declared
    • valueOf

      public static JoinType valueOf(String name)
      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum type has no constant with the specified name
      NullPointerException - if the argument is null
    • generatesNullsOnRight

      public boolean generatesNullsOnRight()
      Returns whether a join of this type may generate NULL values on the right-hand side.
    • generatesNullsOnLeft

      public boolean generatesNullsOnLeft()
      Returns whether a join of this type may generate NULL values on the left-hand side.