vldpyatkov commented on PR #5370: URL: https://github.com/apache/calcite/pull/5370#issuecomment-6772671668
> [@vldpyatkov](https://github.com/vldpyatkov) thanks for pushing this forward! Quick question: IIUC the usage of SEARCH on a diamond shape graph could lead to "duplicated" results, e.g.: > > Edges: 0→1, 0→2, 1→3, 2→3. Node 3 can be reached two ways. > > ``` > WITH RECURSIVE edges(src, dst) AS (VALUES (0,1), (0,2), (1,3), (2,3)), > walk(node) AS ( > VALUES (0) > UNION > SELECT e.dst FROM walk AS w JOIN edges AS e ON e.src = w.node) > SELECT node FROM walk > ``` > > Without `SEARCH`: 0,1,2,3 With `SEARCH DEPTH`: (0, [0]), (1, [0,1]), (2, [0,2]), (3, [0,1,3]), (3, [0,2,3]) On the second case, 3 is returned two times (because paths differ). > > Analogously, on a graph: 0→1, 1→3, 0→3 Without `SEARCH`: 0,1,3 With `SEARCH BREADTH`: (0, ROW(0,0)), (1, ROW(1,1)), (3, ROW(1,3)), (3, ROW(2,3)). On the second case, 3 is returned two times (because depths differ). > > If this is the case, could we have some tests showing these cases? Shall we document somehow this phenomenon? @rubenada The generated SEARCH column participates in duplicate elimination. Documented this behavior in the SQL reference. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
