This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use partial indices on SQLIte. (#13802)
Partial indices have been supported since SQLite 3.8, but Synapse now requires >= 3.27, so we can enable support for them. This requires rebuilding previous indices which were partial on PostgreSQL, but not on SQLite.
- Loading branch information
Showing
4 changed files
with
59 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Use partial indices on SQLite. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
synapse/storage/schema/main/delta/72/09partial_indices.sql.sqlite
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* 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. | ||
*/ | ||
|
||
-- SQLite needs to rebuild indices which use partial indices on Postgres, but | ||
-- previously did not use them on SQLite. | ||
|
||
-- Drop each index that was added with register_background_index_update AND specified | ||
-- a where_clause (that existed before this delta). | ||
|
||
-- From events_bg_updates.py | ||
DROP INDEX IF EXISTS event_contains_url_index; | ||
-- There is also a redactions_censored_redacts index, but that gets dropped. | ||
DROP INDEX IF EXISTS redactions_have_censored_ts; | ||
-- There is also a PostgreSQL only index (event_contains_url_index2) | ||
-- which gets renamed to event_contains_url_index. | ||
|
||
-- From roommember.py | ||
DROP INDEX IF EXISTS room_memberships_user_room_forgotten; | ||
|
||
-- From presence.py | ||
DROP INDEX IF EXISTS presence_stream_state_not_offline_idx; | ||
|
||
-- From media_repository.py | ||
DROP INDEX IF EXISTS local_media_repository_url_idx; | ||
|
||
-- From event_push_actions.py | ||
DROP INDEX IF EXISTS event_push_actions_highlights_index; | ||
-- There's also a event_push_actions_stream_highlight_index which was previously | ||
-- PostgreSQL-only. | ||
|
||
-- From state.py | ||
DROP INDEX IF EXISTS current_state_events_member_index; | ||
|
||
-- Re-insert the background jobs to re-create the indices. | ||
INSERT INTO background_updates (ordering, update_name, progress_json, depends_on) VALUES | ||
(7209, 'event_contains_url_index', '{}', NULL), | ||
(7209, 'redactions_have_censored_ts_idx', '{}', NULL), | ||
(7209, 'room_membership_forgotten_idx', '{}', NULL), | ||
(7209, 'presence_stream_not_offline_index', '{}', NULL), | ||
(7209, 'local_media_repository_url_idx', '{}', NULL), | ||
(7209, 'event_push_actions_highlights_index', '{}', NULL), | ||
(7209, 'event_push_actions_stream_highlight_index', '{}', NULL), | ||
(7209, 'current_state_members_idx', '{}', NULL) | ||
ON CONFLICT (update_name) DO NOTHING; |