diff --git a/etc/db/upgrades/upgrade25-v0.3.12-add-midnight-shots-procedure.sql b/etc/db/upgrades/upgrade25-v0.3.12-add-midnight-shots-procedure.sql index b9e7704..13a9047 100644 --- a/etc/db/upgrades/upgrade25-v0.3.12-add-midnight-shots-procedure.sql +++ b/etc/db/upgrades/upgrade25-v0.3.12-add-midnight-shots-procedure.sql @@ -117,6 +117,20 @@ BEGIN FROM event_log el WHERE ms.sequence = el.sequence AND ms.point = el.point AND el.labels @> ms.labels ); + + -- Delete any midnight shots that might have been inserted in the log + -- but are no longer relevant according to the final_shots data. + -- We operate on event_log, so the deletion is traceable. + DELETE + FROM event_log + WHERE id IN ( + SELECT id + FROM event_log el + LEFT JOIN midnight_shots ms USING (sequence, point) + WHERE + '{LDSP,FDSP}'::text[] && el.labels -- &&: Do the arrays overlap? + AND ms.sequence IS NULL + ); $$; COMMENT ON PROCEDURE log_midnight_shots (date, date)