Package com.darkcollective.relix.plan
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 resultconnectorType- the connector type token (e.g."jdbc") that identifies which renderer produced this scanconnection- the canonical name of the connection to run the query onnativeQuery- 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().
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.darkcollective.relix.plan.PhysicalNode
PhysicalNode.Aggregate, PhysicalNode.AsOfJoin, PhysicalNode.BernoulliSample, PhysicalNode.BuildSide, PhysicalNode.Closure, PhysicalNode.Cluster, PhysicalNode.ConstructiveCover, PhysicalNode.Cover, PhysicalNode.Distinct, PhysicalNode.Division, PhysicalNode.Downsample, PhysicalNode.Empty, PhysicalNode.Fixpoint, PhysicalNode.IntervalJoin, PhysicalNode.Iterate, PhysicalNode.Join, PhysicalNode.JoinAlgorithm, PhysicalNode.JoinKeys, PhysicalNode.JoinKind, PhysicalNode.LateralJoin, PhysicalNode.Limit, PhysicalNode.Optimize, PhysicalNode.Path, PhysicalNode.Pivot, PhysicalNode.Project, PhysicalNode.PushedScan, PhysicalNode.RecursiveRef, PhysicalNode.Rename, PhysicalNode.ReservoirSample, PhysicalNode.Scan, PhysicalNode.Select, PhysicalNode.Sessionize, PhysicalNode.SetKind, PhysicalNode.SetOp, PhysicalNode.Solve, PhysicalNode.Sort, PhysicalNode.Spool, PhysicalNode.TopK, PhysicalNode.Trace, PhysicalNode.Tree, PhysicalNode.Universal, PhysicalNode.Unnest, PhysicalNode.Unpivot, PhysicalNode.Why, PhysicalNode.Window -
Constructor Summary
ConstructorsConstructorDescriptionPushedScan(Schema schema, String connectorType, String connection, String nativeQuery) A pushed scan with no guaranteed row order.PushedScan(Schema schema, String connectorType, String connection, String nativeQuery, Ordering ordering) Creates an instance of aPushedScanrecord class. -
Method Summary
Modifier and TypeMethodDescriptionchildren()Direct child plans, left-to-right; empty for aPhysicalNode.Scan.Returns the value of theconnectionrecord component.Returns the value of theconnectorTyperecord component.TheOrderingthat this node delivers on its output stream.final booleanIndicates whether some other object is "equal to" this one.final inthashCode()Returns a hash code value for this object.Returns the value of thenativeQueryrecord component.ordering()Returns the value of theorderingrecord component.schema()Returns the value of theschemarecord component.final StringtoString()Returns a string representation of this record class.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface com.darkcollective.relix.plan.PhysicalNode
mapChildren
-
Constructor Details
-
PushedScan
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 aPushedScanrecord class.- Parameters:
schema- the value for theschemarecord componentconnectorType- the value for theconnectorTyperecord componentconnection- the value for theconnectionrecord componentnativeQuery- the value for thenativeQueryrecord componentordering- the value for theorderingrecord component
-
-
Method Details
-
children
Description copied from interface:PhysicalNodeDirect child plans, left-to-right; empty for aPhysicalNode.Scan.- Specified by:
childrenin interfacePhysicalNode
-
deliveredOrdering
Description copied from interface:PhysicalNodeTheOrderingthat this node delivers on its output stream. The default implementation returnsOrdering.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:
deliveredOrderingin interfacePhysicalNode- Returns:
- the delivered ordering; never null
-
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. -
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. -
equals
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 withObjects::equals(Object,Object). -
schema
Returns the value of theschemarecord component.- Specified by:
schemain interfacePhysicalNode- Returns:
- the value of the
schemarecord component
-
connectorType
Returns the value of theconnectorTyperecord component.- Returns:
- the value of the
connectorTyperecord component
-
connection
Returns the value of theconnectionrecord component.- Returns:
- the value of the
connectionrecord component
-
nativeQuery
Returns the value of thenativeQueryrecord component.- Returns:
- the value of the
nativeQueryrecord component
-
ordering
Returns the value of theorderingrecord component.- Returns:
- the value of the
orderingrecord component
-