@@ -10,6 +10,13 @@ Recursive CTEs enable the implementation of the following task. Suppose we have
10
10
11
11
~~~ sql
12
12
WITH RECURSIVE
13
+ ops(opid, rootpath_old, rootpath_new) AS (
14
+ VALUES
15
+ (1 , ' doc/' , ' docABC' ),
16
+ (2 , ' docABC/thesis/' , ' docABC/master' ),
17
+ (3 , ' docABC/app/job/' , ' docABC/app/academic_job' ),
18
+ (4 , ' code/' , ' prog' )
19
+ ),
13
20
folders(path_old) AS (
14
21
VALUES
15
22
(' doc/thesis/exp' ),
@@ -18,13 +25,6 @@ WITH RECURSIVE
18
25
(' code/scripts/py' ),
19
26
(' code/scripts/bas' )
20
27
),
21
- ops(opid, rootpath_old, rootpath_new) AS (
22
- VALUES
23
- (1 , ' doc/' , ' docABC' ),
24
- (2 , ' docABC/thesis/' , ' docABC/master' ),
25
- (3 , ' docABC/app/job/' , ' docABC/app/academic_job' ),
26
- (4 , ' code/' , ' prog' )
27
- ),
28
28
LOOP_COPY AS (
29
29
-- Initial SELECT --
30
30
SELECT 0 AS opid, path_old AS path_new
@@ -52,6 +52,13 @@ Even though the RCTE loop body processes one row at a time, when the processing
52
52
53
53
~~~ sql
54
54
WITH RECURSIVE
55
+ ops(opid, rootpath_old, rootpath_new) AS (
56
+ VALUES
57
+ (1 , ' doc/' , ' docABC' ),
58
+ (2 , ' docABC/thesis/' , ' docABC/master' ),
59
+ (3 , ' docABC/app/job/' , ' docABC/app/academic_job' ),
60
+ (4 , ' code/' , ' prog' )
61
+ ),
55
62
folders(path_old) AS (
56
63
VALUES
57
64
(' doc/thesis/exp' ),
@@ -60,13 +67,6 @@ WITH RECURSIVE
60
67
(' code/scripts/py' ),
61
68
(' code/scripts/bas' )
62
69
),
63
- ops(opid, rootpath_old, rootpath_new) AS (
64
- VALUES
65
- (1 , ' doc/' , ' docABC' ),
66
- (2 , ' docABC/thesis/' , ' docABC/master' ),
67
- (3 , ' docABC/app/job/' , ' docABC/app/academic_job' ),
68
- (4 , ' code/' , ' prog' )
69
- ),
70
70
LOOP_COPY_INIT AS (
71
71
SELECT 0 AS opid, path_old AS path_new
72
72
FROM folders
0 commit comments