summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2014-09-15 14:15:10 +0100
committerPaul "LeoNerd" Evans <paul@matrix.org>2014-09-15 14:15:10 +0100
commitb0406b9ead0e3b726ef2c675181d040ca392e85d (patch)
tree42fdeee7d4b5eb283f6a406463499ae05b9e5ffe /synapse/storage
parentMerge remote-tracking branch 'origin/develop' into test-sqlite-memory (diff)
parentCorrectly handle the 'age' key in events and pdus (diff)
downloadsynapse-b0406b9ead0e3b726ef2c675181d040ca392e85d.tar.xz
Merge remote-tracking branch 'origin/develop' into test-sqlite-memory
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/__init__.py8
-rw-r--r--synapse/storage/_base.py4
-rw-r--r--synapse/storage/roommember.py4
3 files changed, 13 insertions, 3 deletions
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py

index 0dbae504b2..88c9a5b88c 100644 --- a/synapse/storage/__init__.py +++ b/synapse/storage/__init__.py
@@ -36,7 +36,7 @@ from .registration import RegistrationStore from .room import RoomStore from .roommember import RoomMemberStore from .stream import StreamStore -from .pdu import StatePduStore, PduStore +from .pdu import StatePduStore, PduStore, PdusTable from .transactions import TransactionStore from .keys import KeyStore @@ -140,6 +140,12 @@ class DataStore(RoomMemberStore, RoomStore, del cols["content"] del cols["prev_pdus"] cols["content_json"] = json.dumps(pdu.content) + + unrec_keys.update({ + k: v for k, v in cols.items() + if k not in PdusTable.fields + }) + cols["unrecognized_keys"] = json.dumps(unrec_keys) logger.debug("Persisting: %s", repr(cols)) diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py
index efec111691..76ed7d06fb 100644 --- a/synapse/storage/_base.py +++ b/synapse/storage/_base.py
@@ -355,6 +355,10 @@ class SQLBaseStore(object): d["content"] = json.loads(d["content"]) del d["unrecognized_keys"] + if "age_ts" not in d: + # For compatibility + d["age_ts"] = d["ts"] if "ts" in d else 0 + return self.event_factory.create_event( etype=d["type"], **d diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py
index c98022410c..04b4067d03 100644 --- a/synapse/storage/roommember.py +++ b/synapse/storage/roommember.py
@@ -66,8 +66,8 @@ class RoomMemberStore(SQLBaseStore): # Check if this was the last person to have left. member_events = self._get_members_query_txn( txn, - where_clause="c.room_id = ? AND m.membership = ?", - where_values=(event.room_id, Membership.JOIN,) + where_clause="c.room_id = ? AND m.membership = ? AND m.user_id != ?", + where_values=(event.room_id, Membership.JOIN, target_user_id,) ) joined_domains = set()