summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorMatthew Hodgson <matthew@matrix.org>2018-03-13 18:13:44 +0000
committerMatthew Hodgson <matthew@matrix.org>2018-03-13 18:13:44 +0000
commitb2aba9e43053f9f297671fce0051bfc18a8b655a (patch)
tree8da9cb939d1263f350e46db950c54c0abf44c4f2 /synapse
parentPR feedbackz (diff)
downloadsynapse-b2aba9e43053f9f297671fce0051bfc18a8b655a.tar.xz
build where_clause sanely
Diffstat (limited to 'synapse')
-rw-r--r--synapse/storage/state.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/synapse/storage/state.py b/synapse/storage/state.py
index 77259a3141..82740266bf 100644
--- a/synapse/storage/state.py
+++ b/synapse/storage/state.py
@@ -263,18 +263,16 @@ class StateGroupWorkerStore(SQLBaseStore):
                         results[group][key] = event_id
         else:
             where_args = []
+            where_clauses = []
             if types is not None:
-                where_clause = "AND ("
                 for typ in types:
                     if typ[1] is None:
-                        where_clause += "(type = ?)"
+                        where_clauses.append("(type = ?)")
                         where_args.extend(typ[0])
                     else:
-                        where_clause += "(type = ? AND state_key = ?)"
+                        where_clauses.append("(type = ? AND state_key = ?)")
                         where_args.extend([typ[0], typ[1]])
-                    if typ != types[-1]:
-                        where_clause += " OR "
-                where_clause += ")"
+                where_clause = "AND (%s)" % (" OR ".join(where_clauses))
             else:
                 where_clause = ""