summary refs log tree commit diff
path: root/synapse/storage/databases
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/storage/databases')
-rw-r--r--synapse/storage/databases/main/__init__.py2
-rw-r--r--synapse/storage/databases/main/events_forward_extremities.py64
2 files changed, 40 insertions, 26 deletions
diff --git a/synapse/storage/databases/main/__init__.py b/synapse/storage/databases/main/__init__.py
index 93b25af057..b936f54f1e 100644
--- a/synapse/storage/databases/main/__init__.py
+++ b/synapse/storage/databases/main/__init__.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 # Copyright 2014-2016 OpenMarket Ltd
 # Copyright 2018 New Vector Ltd
-# Copyright 2019 The Matrix.org Foundation C.I.C.
+# Copyright 2019-2021 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.
diff --git a/synapse/storage/databases/main/events_forward_extremities.py b/synapse/storage/databases/main/events_forward_extremities.py
index 83f751cf5b..e6c2d6e122 100644
--- a/synapse/storage/databases/main/events_forward_extremities.py
+++ b/synapse/storage/databases/main/events_forward_extremities.py
@@ -1,3 +1,18 @@
+# -*- coding: utf-8 -*-
+# Copyright 2021 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.
+
 import logging
 from typing import Dict, List
 
@@ -19,19 +34,19 @@ class EventForwardExtremitiesStore(SQLBaseStore):
 
         def delete_forward_extremities_for_room_txn(txn):
             # First we need to get the event_id to not delete
-            sql = (
-                "SELECT "
-                "   last_value(event_id) OVER w AS event_id"
-                "   FROM event_forward_extremities"
-                "   NATURAL JOIN events"
-                " where room_id = ?"
-                "   WINDOW w AS ("
-                "   PARTITION BY room_id"
-                "       ORDER BY stream_ordering"
-                "       range between unbounded preceding and unbounded following"
-                "   )"
-                "   ORDER BY stream_ordering"
-            )
+            sql = """
+                SELECT
+                    last_value(event_id) OVER w AS event_id
+                FROM event_forward_extremities
+                    NATURAL JOIN events
+                WHERE room_id = ?
+                    WINDOW w AS (
+                        PARTITION BY room_id
+                        ORDER BY stream_ordering 
+                        range between unbounded preceding and unbounded following
+                    )
+                ORDER BY stream_ordering
+            """
             txn.execute(sql, (room_id,))
             rows = txn.fetchall()
             try:
@@ -47,12 +62,10 @@ class EventForwardExtremitiesStore(SQLBaseStore):
                 raise SynapseError(400, msg)
 
             # Now delete the extra forward extremities
-            sql = (
-                "DELETE FROM event_forward_extremities "
-                "WHERE"
-                "   event_id != ?"
-                "   AND room_id = ?"
-            )
+            sql = """
+                DELETE FROM event_forward_extremities
+                WHERE event_id != ? AND room_id = ?
+            """
 
             txn.execute(sql, (event_id, room_id))
             logger.info(
@@ -78,14 +91,15 @@ class EventForwardExtremitiesStore(SQLBaseStore):
         """Get list of forward extremities for a room."""
 
         def get_forward_extremities_for_room_txn(txn):
-            sql = (
-                "SELECT event_id, state_group FROM event_forward_extremities NATURAL JOIN event_to_state_groups "
-                "WHERE room_id = ?"
-            )
+            sql = """
+                SELECT event_id, state_group 
+                FROM event_forward_extremities 
+                NATURAL JOIN event_to_state_groups
+                WHERE room_id = ?
+            """
 
             txn.execute(sql, (room_id,))
-            rows = txn.fetchall()
-            return [{"event_id": row[0], "state_group": row[1]} for row in rows]
+            return self.db_pool.cursor_to_dict(txn)
 
         return await self.db_pool.runInteraction(
             "get_forward_extremities_for_room", get_forward_extremities_for_room_txn,