Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 1b8cb64

Browse files
authored
Merge pull request #5320 from matrix-org/hawkowl/full-schema-v1
Make a full SQL schema
2 parents 8acde3d + ed872db commit 1b8cb64

File tree

7 files changed

+2356
-2
lines changed

7 files changed

+2356
-2
lines changed

MANIFEST.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ include demo/*.py
99
include demo/*.sh
1010

1111
recursive-include synapse/storage/schema *.sql
12+
recursive-include synapse/storage/schema *.sql.postgres
13+
recursive-include synapse/storage/schema *.sql.sqlite
1214
recursive-include synapse/storage/schema *.py
15+
recursive-include synapse/storage/schema *.txt
1316

1417
recursive-include docs *
1518
recursive-include scripts *

changelog.d/5320.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
New installs will now use the v54 full schema, rather than the full schema v14 and applying incremental updates to v54.

synapse/storage/prepare_database.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import os
2121
import re
2222

23+
from synapse.storage.engines.postgres import PostgresEngine
24+
2325
logger = logging.getLogger(__name__)
2426

2527

@@ -115,8 +117,16 @@ def _setup_new_database(cur, database_engine):
115117

116118
valid_dirs = []
117119
pattern = re.compile(r"^\d+(\.sql)?$")
120+
121+
if isinstance(database_engine, PostgresEngine):
122+
specific = "postgres"
123+
else:
124+
specific = "sqlite"
125+
126+
specific_pattern = re.compile(r"^\d+(\.sql." + specific + r")?$")
127+
118128
for filename in directory_entries:
119-
match = pattern.match(filename)
129+
match = pattern.match(filename) or specific_pattern.match(filename)
120130
abs_path = os.path.join(current_dir, filename)
121131
if match and os.path.isdir(abs_path):
122132
ver = int(match.group(0))
@@ -136,7 +146,9 @@ def _setup_new_database(cur, database_engine):
136146

137147
directory_entries = os.listdir(sql_dir)
138148

139-
for filename in fnmatch.filter(directory_entries, "*.sql"):
149+
for filename in sorted(fnmatch.filter(directory_entries, "*.sql") + fnmatch.filter(
150+
directory_entries, "*.sql." + specific
151+
)):
140152
sql_loc = os.path.join(sql_dir, filename)
141153
logger.debug("Applying schema %s", sql_loc)
142154
executescript(cur, sql_loc)

0 commit comments

Comments
 (0)