mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-10-01 08:25:44 -04:00
48 lines
1.8 KiB
Plaintext
48 lines
1.8 KiB
Plaintext
|
/* Copyright 2022 The Matrix.org Foundation C.I.C
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
-- We're going to stop populating event_edges.room_id and event_edges.is_state,
|
||
|
-- which means we now need to give them defaults.
|
||
|
--
|
||
|
-- We also take the opportunity to:
|
||
|
-- - drop any rows with is_state=True (these were populated a long time ago, but
|
||
|
-- are no longer used.)
|
||
|
-- - drop any rows which do not correspond to entries in `events`
|
||
|
-- - tighten the unique index so that it applies just to (event_id, prev_event_id)
|
||
|
-- - drop the "ev_edges_id" index, which is redundant to the above.
|
||
|
-- - add a foreign key constraint from event_id to `events`
|
||
|
|
||
|
CREATE TABLE new_event_edges (
|
||
|
event_id TEXT NOT NULL,
|
||
|
prev_event_id TEXT NOT NULL,
|
||
|
room_id TEXT NULL,
|
||
|
is_state BOOL NOT NULL DEFAULT 0,
|
||
|
FOREIGN KEY(event_id) REFERENCES events(event_id)
|
||
|
);
|
||
|
|
||
|
INSERT INTO new_event_edges
|
||
|
SELECT ee.event_id, ee.prev_event_id, ee.room_id, ee.is_state
|
||
|
FROM event_edges ee JOIN events ev USING (event_id)
|
||
|
WHERE NOT ee.is_state;
|
||
|
|
||
|
DROP TABLE event_edges;
|
||
|
|
||
|
ALTER TABLE new_event_edges RENAME TO event_edges;
|
||
|
|
||
|
CREATE UNIQUE INDEX event_edges_event_id_prev_event_id_idx
|
||
|
ON event_edges (event_id, prev_event_id);
|
||
|
|
||
|
CREATE INDEX ev_edges_prev_id ON event_edges (prev_event_id);
|