Vladislav Pyatkov created CALCITE-7814:
------------------------------------------

             Summary: Support the SQL-standard CYCLE clause in recursive CTEs
                 Key: CALCITE-7814
                 URL: https://issues.apache.org/jira/browse/CALCITE-7814
             Project: Calcite
          Issue Type: New Feature
          Components: core
            Reporter: Vladislav Pyatkov


Add support for the SQL-standard _CYCLE_ clause in recursive common table 
expressions, including parsing, validation, relational conversion, and 
execution.
_CYCLE_ detects repeated keys within each recursive path and adds cycle-mark 
and path columns. A cycle-closing row is returned with its mark set, but does 
not produce further recursive expansion.
Example:
{code:sql}
WITH RECURSIVE
  edges(src, dst) AS (
    VALUES ('A', 'B'), ('B', 'C'), ('C', 'A')
  ),
  walk(node) AS (
    VALUES ('A')
    UNION ALL
    SELECT e.dst
    FROM walk w JOIN edges e ON e.src = w.node
  )
  CYCLE node SET is_cycle TO 'Y' DEFAULT 'N'
    USING cycle_path
SELECT node, is_cycle, cycle_path
FROM walk;
{code}
The traversal follows A → B → C → A. The final A is marked as a cycle-closing 
row, and recursion stops along that path.

Include execution tests for single and composite cycle keys, negative 
validation tests with clear error messages, and a documented example.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to