Record Class PhysicalNode.IntervalJoin

java.lang.Object
java.lang.Record
com.darkcollective.relix.plan.PhysicalNode.IntervalJoin
Record Components:
relation - the Allen relation to test
leftStartIdx - column index of the left interval's start in the left input
leftEndIdx - column index of the left interval's end in the left input
rightStartIdx - column index of the right interval's start in the right input
rightEndIdx - column index of the right interval's end in the right input
merge - when true, use the streaming sort-merge variant
All Implemented Interfaces:
PhysicalNode
Enclosing interface:
PhysicalNode

public static record PhysicalNode.IntervalJoin(Schema schema, AllenRelation relation, int leftStartIdx, int leftEndIdx, int rightStartIdx, int rightEndIdx, boolean merge, PhysicalNode left, PhysicalNode right) extends Record implements PhysicalNode
Interval join — tests each pair of rows against an Allen interval algebra relation. Always an inner join (unmatched rows are dropped).

merge selects the executor variant: false (default) runs the general plane-sweep / sorted-band executor, which sorts the inputs itself; true runs a streaming sort-merge over two inputs that already deliver an ascending order on their interval start column, skipping the global endpoint sort and maintaining a bounded sliding active set. The planner only sets merge for an overlap-or-touch relation when both children already satisfy the required ordering (no inserted PhysicalNode.Sort); PRECEDES/PRECEDED_BY always use the sorted-band executor.

  • Constructor Details

    • IntervalJoin

      public IntervalJoin(Schema schema, AllenRelation relation, int leftStartIdx, int leftEndIdx, int rightStartIdx, int rightEndIdx, PhysicalNode left, PhysicalNode right)
      Convenience constructor for the default (non-merge) plane-sweep variant.
    • IntervalJoin

      public IntervalJoin(Schema schema, AllenRelation relation, int leftStartIdx, int leftEndIdx, int rightStartIdx, int rightEndIdx, boolean merge, PhysicalNode left, PhysicalNode right)
      Creates an instance of a IntervalJoin record class.
      Parameters:
      schema - the value for the schema record component
      relation - the value for the relation record component
      leftStartIdx - the value for the leftStartIdx record component
      leftEndIdx - the value for the leftEndIdx record component
      rightStartIdx - the value for the rightStartIdx record component
      rightEndIdx - the value for the rightEndIdx record component
      merge - the value for the merge record component
      left - the value for the left record component
      right - the value for the right record component
  • Method Details

    • children

      public List<PhysicalNode> children()
      Description copied from interface: PhysicalNode
      Direct child plans, left-to-right; empty for a PhysicalNode.Scan.
      Specified by:
      children in interface PhysicalNode
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with '=='.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • schema

      public Schema schema()
      Returns the value of the schema record component.
      Specified by:
      schema in interface PhysicalNode
      Returns:
      the value of the schema record component
    • relation

      public AllenRelation relation()
      Returns the value of the relation record component.
      Returns:
      the value of the relation record component
    • leftStartIdx

      public int leftStartIdx()
      Returns the value of the leftStartIdx record component.
      Returns:
      the value of the leftStartIdx record component
    • leftEndIdx

      public int leftEndIdx()
      Returns the value of the leftEndIdx record component.
      Returns:
      the value of the leftEndIdx record component
    • rightStartIdx

      public int rightStartIdx()
      Returns the value of the rightStartIdx record component.
      Returns:
      the value of the rightStartIdx record component
    • rightEndIdx

      public int rightEndIdx()
      Returns the value of the rightEndIdx record component.
      Returns:
      the value of the rightEndIdx record component
    • merge

      public boolean merge()
      Returns the value of the merge record component.
      Returns:
      the value of the merge record component
    • left

      public PhysicalNode left()
      Returns the value of the left record component.
      Returns:
      the value of the left record component
    • right

      public PhysicalNode right()
      Returns the value of the right record component.
      Returns:
      the value of the right record component