Skip to content

Commit 3bc4edf

Browse files
committed
fix: simplify query
Signed-off-by: Mouad BANI <mouad-mb@outlook.com>
1 parent 26b45b2 commit 3bc4edf

1 file changed

Lines changed: 8 additions & 22 deletions

File tree

backend/src/osspckgs/migrations/V1780589607__rank_packages_universe_v2.sql

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ DECLARE
3636
n_propagated int;
3737
BEGIN
3838
-- ── Step 1: score ──────────────────────────────────────────────────────────
39+
-- last_rank_pass_at updated unconditionally on every pass (schema requirement).
3940
WITH percentile_scores AS (
4041
SELECT
4142
id,
@@ -52,14 +53,10 @@ BEGIN
5253
FROM packages_universe
5354
)
5455
UPDATE packages_universe pu
55-
SET last_rank_pass_at = NOW()
56-
WHERE TRUE;
57-
58-
UPDATE packages_universe pu
59-
SET impact = ps.new_impact
56+
SET impact = ps.new_impact,
57+
last_rank_pass_at = NOW()
6058
FROM percentile_scores ps
61-
WHERE pu.id = ps.id
62-
AND pu.impact IS DISTINCT FROM ps.new_impact;
59+
WHERE pu.id = ps.id;
6360

6461
GET DIAGNOSTICS n_scored = ROW_COUNT;
6562

@@ -109,26 +106,15 @@ BEGIN
109106
AND pu.is_critical = FALSE;
110107

111108
-- ── Step 3: propagate to packages ─────────────────────────────────────────
112-
-- last_rank_pass_at is updated unconditionally (schema requirement: every pass,
113-
-- not only when scores change, so staleness checks work reliably).
114-
-- impact and is_critical are guarded by IS DISTINCT FROM to avoid unnecessary WAL writes.
109+
-- last_rank_pass_at updated unconditionally on every pass (schema requirement).
115110
UPDATE packages p
116-
SET last_rank_pass_at = NOW()
111+
SET impact = pu.impact,
112+
is_critical = pu.is_critical,
113+
last_rank_pass_at = NOW()
117114
FROM packages_universe pu
118115
WHERE p.purl = pu.purl
119116
AND p.ecosystem = pu.ecosystem;
120117

121-
UPDATE packages p
122-
SET impact = pu.impact,
123-
is_critical = pu.is_critical
124-
FROM packages_universe pu
125-
WHERE p.purl = pu.purl
126-
AND p.ecosystem = pu.ecosystem
127-
AND (
128-
p.impact IS DISTINCT FROM pu.impact
129-
OR p.is_critical IS DISTINCT FROM pu.is_critical
130-
);
131-
132118
GET DIAGNOSTICS n_propagated = ROW_COUNT;
133119

134120
RETURN QUERY SELECT n_scored, n_ranked, n_propagated;

0 commit comments

Comments
 (0)