Skip to content

Commit 64740fb

Browse files
collado-mikeXavier-Cliquennois
authored andcommitted
Update v61 migration to handle duplicate job names before unique constraint (MarquezProject#2464)
Signed-off-by: Michael Collado <collado.mike@gmail.com> Signed-off-by: Xavier-Cliquennois <xavier.cliquennois@wearegraphite.io>
1 parent 0e55bab commit 64740fb

1 file changed

Lines changed: 39 additions & 4 deletions

File tree

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

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,45 @@
1+
WITH fqn AS (
2+
SELECT f.uuid,
3+
f.job_fqn AS name,
4+
f.namespace_name,
5+
j.name AS simple_name,
6+
j.parent_job_uuid,
7+
f.parent_job_name::text,
8+
j.symlink_target_uuid
9+
FROM jobs_fqn f,
10+
jobs j
11+
WHERE j.uuid = f.uuid
12+
)
113
UPDATE jobs SET symlink_target_uuid=q.target_uuid
214
FROM (
315
SELECT j.uuid, j.namespace_name, j.name, j.simple_name, jv.uuid AS target_uuid, jv.simple_name
4-
FROM jobs_view j INNER JOIN jobs_view jv ON j.namespace_name=jv.namespace_name AND j.name=jv.name AND j.simple_name != jv.simple_name
16+
FROM fqn j
17+
INNER JOIN fqn jv ON j.namespace_name=jv.namespace_name AND j.name=jv.name AND j.simple_name != jv.simple_name
518
WHERE j.symlink_target_uuid IS NULL
6-
AND jv.symlink_target_uuid IS NULL
7-
AND j.parent_job_uuid IS NULL) q
19+
AND jv.symlink_target_uuid IS NULL
20+
AND j.parent_job_uuid IS NULL) q
21+
WHERE jobs.uuid=q.uuid;
22+
23+
WITH fqn AS (
24+
SELECT f.uuid,
25+
f.job_fqn AS name,
26+
f.namespace_name,
27+
j.name AS simple_name,
28+
j.parent_job_uuid,
29+
f.parent_job_name::text,
30+
j.symlink_target_uuid,
31+
j.created_at
32+
FROM jobs_fqn f,
33+
jobs j
34+
WHERE j.uuid = f.uuid
35+
)
36+
UPDATE jobs SET name=(q.simple_name || '_' || q.row)
37+
FROM (
38+
SELECT j.uuid, j.namespace_name, j.name, j.simple_name, jv.uuid AS target_uuid,
39+
row_number() over (PARTITION BY j.namespace_name, j.name ORDER BY j.created_at) AS row
40+
FROM fqn j
41+
INNER JOIN fqn jv ON j.namespace_name=jv.namespace_name AND j.name=jv.name AND j.symlink_target_uuid=jv.uuid
42+
) q
843
WHERE jobs.uuid=q.uuid;
944

1045
ALTER TABLE jobs RENAME COLUMN name TO simple_name;
@@ -30,4 +65,4 @@ WHERE jobs.uuid=f.uuid;
3065
ALTER TABLE jobs ALTER COLUMN name SET NOT NULL;
3166

3267
ALTER TABLE jobs DROP CONSTRAINT unique_jobs_namespace_uuid_name_parent;
33-
ALTER TABLE jobs ADD CONSTRAINT unique_jobs_namespace_uuid_name_parent UNIQUE (namespace_uuid, name);
68+
ALTER TABLE jobs ADD CONSTRAINT unique_jobs_namespace_uuid_name_parent UNIQUE (namespace_uuid, name);

0 commit comments

Comments
 (0)