Page MenuHomePhabricator

D8837.diff
No OneTemporary

D8837.diff

diff --git a/keyserver/src/deleters/thread-deleters.js b/keyserver/src/deleters/thread-deleters.js
--- a/keyserver/src/deleters/thread-deleters.js
+++ b/keyserver/src/deleters/thread-deleters.js
@@ -61,27 +61,36 @@
),
]);
- const query = SQL`
- DELETE t, ic, d, id, e, ie, re, ire, mm, r, ir, ms, im, up, iu, f, n, ino
- FROM threads t
- LEFT JOIN ids ic ON ic.id = t.id
- LEFT JOIN days d ON d.thread = t.id
- LEFT JOIN ids id ON id.id = d.id
- LEFT JOIN entries e ON e.day = d.id
- LEFT JOIN ids ie ON ie.id = e.id
- LEFT JOIN revisions re ON re.entry = e.id
- LEFT JOIN ids ire ON ire.id = re.id
- LEFT JOIN memberships mm ON mm.thread = t.id
- LEFT JOIN roles r ON r.thread = t.id
- LEFT JOIN ids ir ON ir.id = r.id
- LEFT JOIN messages ms ON ms.thread = t.id
- LEFT JOIN ids im ON im.id = ms.id
- LEFT JOIN uploads up ON (up.container = ms.id OR up.container = t.id)
- LEFT JOIN ids iu ON iu.id = up.id
- LEFT JOIN focused f ON f.thread = t.id
- LEFT JOIN notifications n ON n.thread = t.id
- LEFT JOIN ids ino ON ino.id = n.id
- WHERE t.id IN (${threadIDs})
+ const deletionQuery = SQL`
+ START TRANSACTION;
+ DELETE FROM threads WHERE id IN (${threadIDs});
+ DELETE FROM ids WHERE id IN (${threadIDs});
+ DELETE d, id, e, ie, r, ir
+ FROM days d
+ LEFT JOIN ids id ON id.id = d.id
+ LEFT JOIN entries e ON e.day = d.id
+ LEFT JOIN ids ie ON ie.id = e.id
+ LEFT JOIN revisions r ON r.entry = e.id
+ LEFT JOIN ids ir ON ir.id = r.id
+ WHERE d.thread IN (${threadIDs});
+ DELETE FROM memberships WHERE thread IN (${threadIDs});
+ DELETE r, i
+ FROM roles r
+ LEFT JOIN ids i ON i.id = r.id
+ WHERE r.thread IN (${threadIDs});
+ DELETE m, im, u, iu
+ FROM messages m
+ LEFT JOIN ids im ON im.id = m.id
+ LEFT JOIN uploads u ON u.container = m.id
+ LEFT JOIN ids iu ON iu.id = u.id
+ WHERE m.thread IN (${threadIDs});
+ DELETE FROM uploads WHERE container IN (${threadIDs});
+ DELETE FROM focused WHERE thread IN (${threadIDs});
+ DELETE n, i
+ FROM notifications n
+ LEFT JOIN ids i ON i.id = n.id
+ WHERE n.thread IN (${threadIDs});
+ COMMIT;
`;
const time = Date.now();
@@ -99,7 +108,7 @@
const [{ viewerUpdates }] = await Promise.all([
createUpdates(updateDatas, { viewer, updatesForCurrentSession: 'return' }),
- dbQuery(query),
+ dbQuery(deletionQuery, { multipleStatements: true }),
]);
return { updatesResult: { newUpdates: viewerUpdates } };

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 30, 3:21 AM (17 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2599326
Default Alt Text
D8837.diff (2 KB)

Event Timeline