mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-10-01 08:25:44 -04:00
e3debf9682
This is so we can tell what is going on when things are taking a while to start up. The main change here is to ensure that transactions that are created during startup get correctly logged like normal transactions.
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import logging
|
|
from io import StringIO
|
|
|
|
from synapse.storage.engines import PostgresEngine
|
|
from synapse.storage.prepare_database import execute_statements_from_stream
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
"""
|
|
This migration updates the user_filters table as follows:
|
|
|
|
- drops any (user_id, filter_id) duplicates
|
|
- makes the columns NON-NULLable
|
|
- turns the index into a UNIQUE index
|
|
"""
|
|
|
|
|
|
def run_upgrade(cur, database_engine, *args, **kwargs):
|
|
pass
|
|
|
|
|
|
def run_create(cur, database_engine, *args, **kwargs):
|
|
if isinstance(database_engine, PostgresEngine):
|
|
select_clause = """
|
|
SELECT DISTINCT ON (user_id, filter_id) user_id, filter_id, filter_json
|
|
FROM user_filters
|
|
"""
|
|
else:
|
|
select_clause = """
|
|
SELECT * FROM user_filters GROUP BY user_id, filter_id
|
|
"""
|
|
sql = """
|
|
DROP TABLE IF EXISTS user_filters_migration;
|
|
DROP INDEX IF EXISTS user_filters_unique;
|
|
CREATE TABLE user_filters_migration (
|
|
user_id TEXT NOT NULL,
|
|
filter_id BIGINT NOT NULL,
|
|
filter_json BYTEA NOT NULL
|
|
);
|
|
INSERT INTO user_filters_migration (user_id, filter_id, filter_json)
|
|
%s;
|
|
CREATE UNIQUE INDEX user_filters_unique ON user_filters_migration
|
|
(user_id, filter_id);
|
|
DROP TABLE user_filters;
|
|
ALTER TABLE user_filters_migration RENAME TO user_filters;
|
|
""" % (
|
|
select_clause,
|
|
)
|
|
|
|
execute_statements_from_stream(cur, StringIO(sql))
|