@makaio/storage-pg 1.0.0-dev-1782138936821 → 1.0.0-dev-1783370124483
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
WITH ranked_messages AS (
|
|
2
|
+
SELECT
|
|
3
|
+
message_id,
|
|
4
|
+
FIRST_VALUE(message_id) OVER (
|
|
5
|
+
PARTITION BY adapter_message_id, session_id
|
|
6
|
+
ORDER BY timestamp, message_id
|
|
7
|
+
) AS keeper_message_id,
|
|
8
|
+
ROW_NUMBER() OVER (
|
|
9
|
+
PARTITION BY adapter_message_id, session_id
|
|
10
|
+
ORDER BY timestamp, message_id
|
|
11
|
+
) AS duplicate_rank
|
|
12
|
+
FROM messages
|
|
13
|
+
WHERE adapter_message_id IS NOT NULL
|
|
14
|
+
)
|
|
15
|
+
UPDATE messages
|
|
16
|
+
SET edit_of = ranked_messages.keeper_message_id
|
|
17
|
+
FROM ranked_messages
|
|
18
|
+
WHERE messages.edit_of = ranked_messages.message_id
|
|
19
|
+
AND ranked_messages.duplicate_rank > 1;--> statement-breakpoint
|
|
20
|
+
WITH ranked_messages AS (
|
|
21
|
+
SELECT
|
|
22
|
+
message_id,
|
|
23
|
+
ROW_NUMBER() OVER (
|
|
24
|
+
PARTITION BY adapter_message_id, session_id
|
|
25
|
+
ORDER BY timestamp, message_id
|
|
26
|
+
) AS duplicate_rank
|
|
27
|
+
FROM messages
|
|
28
|
+
WHERE adapter_message_id IS NOT NULL
|
|
29
|
+
)
|
|
30
|
+
DELETE FROM messages
|
|
31
|
+
USING ranked_messages
|
|
32
|
+
WHERE messages.message_id = ranked_messages.message_id
|
|
33
|
+
AND ranked_messages.duplicate_rank > 1;--> statement-breakpoint
|
|
34
|
+
DROP INDEX "idx_messages_adapter_message_id";--> statement-breakpoint
|
|
35
|
+
-- Migrations run transactionally during startup before bus handlers accept writes,
|
|
36
|
+
-- so rollback safety is preferred over CREATE INDEX CONCURRENTLY here.
|
|
37
|
+
CREATE UNIQUE INDEX "uniq_messages_adapter_message_id_session" ON "messages" USING btree ("adapter_message_id","session_id");
|