diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2022-09-14 12:01:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-14 12:01:42 -0400 |
commit | f2d12ccabef17faa0bf6b34fbb6d944849afc4d4 (patch) | |
tree | 7c2f3f79c1b250506b3376ac882aaf677df624e6 /synapse/storage/background_updates.py | |
parent | Deduplicate `is_server_notices_room`. (#13780) (diff) | |
download | synapse-f2d12ccabef17faa0bf6b34fbb6d944849afc4d4.tar.xz |
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.
Diffstat (limited to 'synapse/storage/background_updates.py')
-rw-r--r-- | synapse/storage/background_updates.py | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/synapse/storage/background_updates.py b/synapse/storage/background_updates.py index 555b4e77d2..cf1eabc437 100644 --- a/synapse/storage/background_updates.py +++ b/synapse/storage/background_updates.py @@ -581,9 +581,6 @@ class BackgroundUpdater: def create_index_sqlite(conn: Connection) -> None: # Sqlite doesn't support concurrent creation of indexes. # - # We don't use partial indices on SQLite as it wasn't introduced - # until 3.8, and wheezy and CentOS 7 have 3.7 - # # We assume that sqlite doesn't give us invalid indices; however # we may still end up with the index existing but the # background_updates not having been recorded if synapse got shut @@ -591,12 +588,13 @@ class BackgroundUpdater: # has supported CREATE TABLE|INDEX IF NOT EXISTS since 3.3.0.) sql = ( "CREATE %(unique)s INDEX IF NOT EXISTS %(name)s ON %(table)s" - " (%(columns)s)" + " (%(columns)s) %(where_clause)s" ) % { "unique": "UNIQUE" if unique else "", "name": index_name, "table": table, "columns": ", ".join(columns), + "where_clause": "WHERE " + where_clause if where_clause else "", } c = conn.cursor() |