@@ -36,6 +36,7 @@ DECLARE
3636 n_propagated int ;
3737BEGIN
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