ultisuite-backend/migrations/000018_normalize_message_ids.up.sql
R3D347HR4Y cd0a80f5e8 huhu
2026-05-25 13:52:27 +02:00

29 lines
894 B
SQL

-- Canonicalize RFC Message-IDs so threading lookups (angle-bracket form) match stored values.
UPDATE messages
SET message_id = '<' || trim(both '<>' from trim(message_id)) || '>',
updated_at = NOW()
WHERE message_id <> ''
AND message_id NOT LIKE '<%>';
-- Re-link split threads from in_reply_to / references (repeat for nested replies).
DO $$
DECLARE
i INT;
n BIGINT;
BEGIN
FOR i IN 1..8 LOOP
UPDATE messages child
SET thread_id = parent.thread_id, updated_at = NOW()
FROM messages parent
WHERE child.account_id = parent.account_id
AND parent.thread_id IS NOT NULL
AND child.thread_id IS DISTINCT FROM parent.thread_id
AND (
(child.in_reply_to <> '' AND child.in_reply_to = parent.message_id)
OR parent.message_id = ANY(child.references_header)
);
GET DIAGNOSTICS n = ROW_COUNT;
EXIT WHEN n = 0;
END LOOP;
END $$;