unique_constraints.sql 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. -- We can use SQLite features here, since other db support was only added in v16
  2. --
  3. DELETE FROM current_state_events WHERE rowid not in (
  4. SELECT MIN(rowid) FROM current_state_events GROUP BY event_id
  5. );
  6. DROP INDEX IF EXISTS current_state_events_event_id;
  7. CREATE UNIQUE INDEX current_state_events_event_id ON current_state_events(event_id);
  8. --
  9. DELETE FROM room_memberships WHERE rowid not in (
  10. SELECT MIN(rowid) FROM room_memberships GROUP BY event_id
  11. );
  12. DROP INDEX IF EXISTS room_memberships_event_id;
  13. CREATE UNIQUE INDEX room_memberships_event_id ON room_memberships(event_id);
  14. --
  15. DELETE FROM topics WHERE rowid not in (
  16. SELECT MIN(rowid) FROM topics GROUP BY event_id
  17. );
  18. DROP INDEX IF EXISTS topics_event_id;
  19. CREATE UNIQUE INDEX topics_event_id ON topics(event_id);
  20. --
  21. DELETE FROM room_names WHERE rowid not in (
  22. SELECT MIN(rowid) FROM room_names GROUP BY event_id
  23. );
  24. DROP INDEX IF EXISTS room_names_id;
  25. CREATE UNIQUE INDEX room_names_id ON room_names(event_id);
  26. --
  27. DELETE FROM presence WHERE rowid not in (
  28. SELECT MIN(rowid) FROM presence GROUP BY user_id
  29. );
  30. DROP INDEX IF EXISTS presence_id;
  31. CREATE UNIQUE INDEX presence_id ON presence(user_id);
  32. --
  33. DELETE FROM presence_allow_inbound WHERE rowid not in (
  34. SELECT MIN(rowid) FROM presence_allow_inbound
  35. GROUP BY observed_user_id, observer_user_id
  36. );
  37. DROP INDEX IF EXISTS presence_allow_inbound_observers;
  38. CREATE UNIQUE INDEX presence_allow_inbound_observers ON presence_allow_inbound(
  39. observed_user_id, observer_user_id
  40. );
  41. --
  42. DELETE FROM presence_list WHERE rowid not in (
  43. SELECT MIN(rowid) FROM presence_list
  44. GROUP BY user_id, observed_user_id
  45. );
  46. DROP INDEX IF EXISTS presence_list_observers;
  47. CREATE UNIQUE INDEX presence_list_observers ON presence_list(
  48. user_id, observed_user_id
  49. );
  50. --
  51. DELETE FROM room_aliases WHERE rowid not in (
  52. SELECT MIN(rowid) FROM room_aliases GROUP BY room_alias
  53. );
  54. DROP INDEX IF EXISTS room_aliases_id;
  55. CREATE INDEX room_aliases_id ON room_aliases(room_id);