Skip to content

Commit 7151b5b

Browse files
authored
Fix V45 migration to include initial population of jobs_fqn table (#2051)
Signed-off-by: Michael Collado <collado.mike@gmail.com>
1 parent 2c21ab0 commit 7151b5b

1 file changed

Lines changed: 48 additions & 1 deletion

File tree

api/src/main/resources/marquez/db/migration/V45__update_jobs_view_rule.sql

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,51 @@ CREATE TABlE jobs_fqn
2828
parent_job_name varchar,
2929
aliases varchar[],
3030
job_fqn varchar NOT NULL
31-
);
31+
);
32+
33+
WITH RECURSIVE
34+
jobs_symlink AS (SELECT uuid, uuid AS link_target_uuid, symlink_target_uuid
35+
FROM jobs j
36+
WHERE symlink_target_uuid IS NULL
37+
UNION
38+
SELECT j.uuid, jn.link_target_uuid, j.symlink_target_uuid
39+
FROM jobs j
40+
INNER JOIN jobs_symlink jn ON j.symlink_target_uuid = jn.uuid),
41+
fqn AS (SELECT j.uuid,
42+
j.name AS name,
43+
j.namespace_uuid,
44+
j.namespace_name,
45+
NULL::text AS parent_job_name,
46+
j.parent_job_uuid
47+
FROM jobs j
48+
WHERE parent_job_uuid IS NULL
49+
UNION
50+
SELECT j1.uuid,
51+
f.name || '.' || j1.name AS name,
52+
f.namespace_uuid AS namespace_uuid,
53+
f.namespace_name AS namespace_name,
54+
f.name AS parent_job_name,
55+
j1.parent_job_uuid
56+
FROM jobs j1
57+
INNER JOIN fqn f ON j1.parent_job_uuid = f.uuid),
58+
aliases AS (SELECT s.link_target_uuid,
59+
ARRAY_AGG(DISTINCT f.name) FILTER (WHERE f.name IS NOT NULL) AS aliases
60+
FROM jobs_symlink s
61+
INNER JOIN fqn f ON f.uuid = s.uuid
62+
WHERE s.link_target_uuid != s.uuid
63+
GROUP BY s.link_target_uuid)
64+
INSERT
65+
INTO jobs_fqn
66+
SELECT j.uuid,
67+
jf.namespace_uuid,
68+
jf.namespace_name,
69+
jf.parent_job_name,
70+
a.aliases,
71+
jf.name AS job_fqn
72+
FROM jobs j
73+
LEFT JOIN jobs_symlink js ON j.uuid = js.uuid
74+
LEFT JOIN aliases a ON a.link_target_uuid = js.link_target_uuid
75+
INNER JOIN fqn jf ON jf.uuid = COALESCE(js.link_target_uuid, j.uuid)
76+
ON CONFLICT (uuid) DO UPDATE
77+
SET job_fqn=EXCLUDED.job_fqn,
78+
aliases = jobs_fqn.aliases || EXCLUDED.aliases;

0 commit comments

Comments
 (0)