Package com.darkcollective.relix.plan.internal
package com.darkcollective.relix.plan.internal
The engine-side machinery behind
com.darkcollective.relix.plan: not exported by the published
artifact. What follows describes the package as a whole, as it stood before the split.
Physical query planning.
Bridges logical relational algebra and execution: the
Planner translates an optimised logical
RelNode tree into a
PhysicalNode plan that fixes the physical
strategy (join algorithm, build side) and carries each operator's resolved
output schema.
Core types
PhysicalNode— sealed hierarchy of executable physical operators (its nested records).Planner— logical → physical translation, including cost-based join-strategy selection and view inlining.
-
ClassDescriptionThrown at plan time when a query would materialise a provably-unbounded relation — a blocking operator over an unbounded input, or a hash join with no boundable build side.A SQL dialect — the database-specific surface syntax used when the planner pushes work down as SQL.Thrown at plan time when a query needs a mathematical-programming solver and none is installed.Serializes a physical
PhysicalNodeplan to JSON.Renders aPhysicalNodeplan as an ASCII tree for--explain.Translates an optimised logicalRelNodetree into an executablePhysicalNodeplan, fixing every physical decision up front: Join algorithm —PhysicalNode.JoinAlgorithm.MERGEwhen at least one input already delivers an ordering satisfying the join keys (the other gets aPhysicalNode.Sortenforcer inserted);PhysicalNode.JoinAlgorithm.HASHwhen an equi-join key exists but neither input is sorted; otherwisePhysicalNode.JoinAlgorithm.NESTED_LOOP.What a renderer needs to know about functions: which ones exist, and — for the ones that are constant for a run — what this run's ambient state says they are.