summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-03-23 16:13:05 +0000
committerErik Johnston <erik@matrix.org>2016-03-23 16:25:54 +0000
commitacdfef7b1443a8260c43e31e9944b74dfdf286dc (patch)
treecba181b0c3da5e0b53e76e45e71bbba510c09f15 /synapse/storage
parentIntern sender, event_id and room_id in events (diff)
downloadsynapse-acdfef7b1443a8260c43e31e9944b74dfdf286dc.tar.xz
Intern all the things
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/_base.py3
-rw-r--r--synapse/storage/receipts.py21
-rw-r--r--synapse/storage/state.py10
3 files changed, 17 insertions, 17 deletions
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py
index 583b77a835..b75b79df36 100644
--- a/synapse/storage/_base.py
+++ b/synapse/storage/_base.py
@@ -18,6 +18,7 @@ from synapse.api.errors import StoreError
 from synapse.util.logcontext import LoggingContext, PreserveLoggingContext
 from synapse.util.caches.dictionary_cache import DictionaryCache
 from synapse.util.caches.descriptors import Cache
+from synapse.util.caches import intern_dict
 import synapse.metrics
 
 
@@ -350,7 +351,7 @@ class SQLBaseStore(object):
         """
         col_headers = list(column[0] for column in cursor.description)
         results = list(
-            dict(zip(col_headers, row)) for row in cursor.fetchall()
+            intern_dict(dict(zip(col_headers, row))) for row in cursor.fetchall()
         )
         return results
 
diff --git a/synapse/storage/receipts.py b/synapse/storage/receipts.py
index dbc074d6b5..6b9d848eaa 100644
--- a/synapse/storage/receipts.py
+++ b/synapse/storage/receipts.py
@@ -62,18 +62,17 @@ class ReceiptsStore(SQLBaseStore):
 
     @cachedInlineCallbacks(num_args=2)
     def get_receipts_for_user(self, user_id, receipt_type):
-        def f(txn):
-            sql = (
-                "SELECT room_id,event_id "
-                "FROM receipts_linearized "
-                "WHERE user_id = ? AND receipt_type = ? "
-            )
-            txn.execute(sql, (user_id, receipt_type))
-            return txn.fetchall()
+        rows = yield self._simple_select_list(
+            table="receipts_linearized",
+            keyvalues={
+                "user_id": user_id,
+                "receipt_type": receipt_type,
+            },
+            retcols=("room_id", "event_id"),
+            desc="get_receipts_for_user",
+        )
 
-        defer.returnValue(dict(
-            (yield self.runInteraction("get_receipts_for_user", f))
-        ))
+        defer.returnValue({row["room_id"]: row["event_id"] for row in rows})
 
     @defer.inlineCallbacks
     def get_linearized_receipts_for_rooms(self, room_ids, to_key, from_key=None):
diff --git a/synapse/storage/state.py b/synapse/storage/state.py
index 1982b1c607..03eecbbbb6 100644
--- a/synapse/storage/state.py
+++ b/synapse/storage/state.py
@@ -156,9 +156,7 @@ class StateStore(SQLBaseStore):
 
     @defer.inlineCallbacks
     def get_current_state_for_key(self, room_id, event_type, state_key):
-        event_ids = yield self._get_current_state_for_key(
-            room_id, intern_string(event_type), intern_string(state_key)
-        )
+        event_ids = yield self._get_current_state_for_key(room_id, event_type, state_key)
         events = yield self._get_events(event_ids, get_prev_content=False)
         defer.returnValue(events)
 
@@ -205,7 +203,7 @@ class StateStore(SQLBaseStore):
 
             results = {}
             for row in rows:
-                key = (intern_string(row["type"]), intern_string(row["state_key"]))
+                key = (row["type"], row["state_key"])
                 results.setdefault(row["state_group"], {})[key] = row["event_id"]
             return results
 
@@ -286,7 +284,9 @@ class StateStore(SQLBaseStore):
             desc="_get_state_group_for_events",
         )
 
-        defer.returnValue({row["event_id"]: row["state_group"] for row in rows})
+        defer.returnValue({
+            intern(row["event_id"].encode('ascii')): row["state_group"] for row in rows
+        })
 
     def _get_some_state_from_cache(self, group, types):
         """Checks if group is in cache. See `_get_state_for_groups`