Expand description
E5.3 — Recursive CTE: iterative fixpoint execution.
DataFusion does not support WITH RECURSIVE natively. This module adds:
- Detection: parse
WITH RECURSIVE name AS (base UNION ALL recursive). - Rewriter: expand a recursive CTE into a
NodeOp::RecursiveCteplan node. - Iterative executor: given a
SqlEngine, execute base + recursive rounds until fixpoint ormax_iterations.
§Execution model
accumulator = execute(base_query)
for i in 0..max_iterations:
delta = execute(recursive_query with cte_name = accumulator)
if delta is empty: break (fixpoint)
accumulator = accumulator UNION ALL delta
return accumulatorEach iteration materialises delta fully before the next starts. This is
the “naïve” fixpoint strategy, suitable for transitive-closure and
tree-traversal queries on bounded datasets.
Structs§
- Recursive
CteResult - Result of a recursive CTE execution.
- Recursive
CteStatement - A parsed
WITH RECURSIVEstatement ready for iterative execution.
Constants§
- DEFAULT_
MAX_ ITERATIONS - Default maximum recursion depth for
WITH RECURSIVE.
Functions§
- build_
recursive_ cte_ op - Build a
NodeOp::RecursiveCtefrom a parsedRecursiveCteStatement. - execute_
recursive_ cte - Execute a recursive CTE using a
SqlEngine-like executor callback. - parse_
recursive_ cte - Attempt to parse
sqlas aWITH RECURSIVEstatement.