add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE edges(
src integer,
dst integer,
data integer
);
INSERT INTO edges VALUES (1, 2, 1);
1 rows affected
INSERT INTO edges VALUES (2, 3, 1);
1 rows affected
INSERT INTO edges VALUES (3, 2, 1);
1 rows affected
INSERT INTO edges VALUES (1, 4, 1);
1 rows affected
INSERT INTO edges VALUES (4, 5, 1);
1 rows affected
INSERT INTO edges VALUES (5, 2, 1);
1 rows affected
INSERT INTO edges VALUES (1, 4, 2);
1 rows affected
INSERT INTO edges VALUES (4, 5, 2);
1 rows affected
INSERT INTO edges VALUES (4, 6, 2);
1 rows affected
WITH paths(node, data,depth,path) AS (
SELECT
src as node
, data as data
, 0 as depth
, TO_CHAR(src)as path
FROM edges
WHERE src IN (1,2)
UNION ALL
SELECT
edges.dst
, edges.data
, depth + 1
, paths.path || '->' || edges.dst
FROM paths
JOIN edges
ON edges.src = paths.node
AND edges.data = paths.data
) CYCLE node SET cycle TO 1 DEFAULT 0
SELECT DISTINCT * FROM paths
NODE DATA DEPTH PATH CYCLE
1 1 0 1 0
3 1 2 1->2->3 0
3 1 1 2->3 0
4 1 1 1->4 0
4 2 1 1->4 0
5 1 2 1->4->5 0
2 1 0 2 0
6 2 2 1->4->6 0
2 1 3 1->4->5->2 0
2 1 5 1->4->5->2->3->2 1
2 1 3 1->2->3->2 1
2 1 2 2->3->2 1
1 2 0 1 0
2 1 1 1->2 0
5 2 2 1->4->5 0
3 1 4 1->4->5->2->3 0