Record Class PhysicalNode.PushedScan

java.lang.Object
java.lang.Record
com.darkcollective.relix.plan.PhysicalNode.PushedScan
Record Components:
schema - the output schema; its column order matches the query result
connectorType - the connector type token (e.g. "jdbc") that identifies which renderer produced this scan
connection - the canonical name of the connection to run the query on
nativeQuery - the backend-native query text (SQL for JDBC, etc.)
ordering - the row order the query guarantees on its output; Ordering.none() when unordered
All Implemented Interfaces:
PhysicalNode
Enclosing interface:
PhysicalNode

public static record PhysicalNode.PushedScan(Schema schema, String connectorType, String connection, String nativeQuery, Ordering ordering) extends Record implements PhysicalNode
A leaf that pushes a relational sub-expression down to a connector as a single native query. The planner emits this in place of a PhysicalNode.Scan (and the operators folded into it) when a sub-tree over one connection's tables can be translated to the connector's native query language; the executor runs nativeQuery() on the named connection() via DataSourceConnector.openQuery (relix-processor, which depends on this module rather than the other way round, hence no link) and reads the result positionally into schema().

When the pushed query ends in an ORDER BY (or equivalent sort directive) that the planner folded from a sort, the scan advertises the resulting row order via ordering (and deliveredOrdering()), so a downstream merge join or streaming δ/γ can treat the source as already sorted. A scan with no pushed ordering carries Ordering.none().

  • Constructor Details

    • PushedScan

      public PushedScan(Schema schema, String connectorType, String connection, String nativeQuery)
      A pushed scan with no guaranteed row order.
    • PushedScan

      public PushedScan(Schema schema, String connectorType, String connection, String nativeQuery, Ordering ordering)
      Creates an instance of a PushedScan record class.
      Parameters:
      schema - the value for the schema record component
      connectorType - the value for the connectorType record component
      connection - the value for the connection record component
      nativeQuery - the value for the nativeQuery record component
      ordering - the value for the ordering 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
    • deliveredOrdering

      public Ordering deliveredOrdering()
      Description copied from interface: PhysicalNode
      The Ordering that this node delivers on its output stream. The default implementation returns Ordering.none() — meaning no guaranteed row order — which is the conservative safe answer for any operator that does not propagate or establish an ordering. Individual nodes that do preserve order (PhysicalNode.Select, PhysicalNode.Limit) or establish it (PhysicalNode.Sort) override this method.
      Specified by:
      deliveredOrdering in interface PhysicalNode
      Returns:
      the delivered ordering; never null
    • 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. All components in this record class are compared with Objects::equals(Object,Object).
      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
    • connectorType

      public String connectorType()
      Returns the value of the connectorType record component.
      Returns:
      the value of the connectorType record component
    • connection

      public String connection()
      Returns the value of the connection record component.
      Returns:
      the value of the connection record component
    • nativeQuery

      public String nativeQuery()
      Returns the value of the nativeQuery record component.
      Returns:
      the value of the nativeQuery record component
    • ordering

      public Ordering ordering()
      Returns the value of the ordering record component.
      Returns:
      the value of the ordering record component