mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-14 14:01:59 +01:00
disable optimisation for searching for state groups
when type filter includes wildcards on state_key
This commit is contained in:
parent
b2aba9e430
commit
865377a70d
1 changed files with 13 additions and 3 deletions
|
@ -264,11 +264,13 @@ class StateGroupWorkerStore(SQLBaseStore):
|
||||||
else:
|
else:
|
||||||
where_args = []
|
where_args = []
|
||||||
where_clauses = []
|
where_clauses = []
|
||||||
|
wildcard_types = False
|
||||||
if types is not None:
|
if types is not None:
|
||||||
for typ in types:
|
for typ in types:
|
||||||
if typ[1] is None:
|
if typ[1] is None:
|
||||||
where_clauses.append("(type = ?)")
|
where_clauses.append("(type = ?)")
|
||||||
where_args.extend(typ[0])
|
where_args.extend(typ[0])
|
||||||
|
wildcard_types = True
|
||||||
else:
|
else:
|
||||||
where_clauses.append("(type = ? AND state_key = ?)")
|
where_clauses.append("(type = ? AND state_key = ?)")
|
||||||
where_args.extend([typ[0], typ[1]])
|
where_args.extend([typ[0], typ[1]])
|
||||||
|
@ -302,9 +304,17 @@ class StateGroupWorkerStore(SQLBaseStore):
|
||||||
if (typ, state_key) not in results[group]
|
if (typ, state_key) not in results[group]
|
||||||
)
|
)
|
||||||
|
|
||||||
# If the lengths match then we must have all the types,
|
# If the number of entries inthe (type,state_key)->event_id dict
|
||||||
# so no need to go walk further down the tree.
|
# matches the number of (type,state_keys) types we were searching
|
||||||
if types is not None and len(results[group]) == len(types):
|
# for, then we must have found them all, so no need to go walk
|
||||||
|
# further down the tree... UNLESS our types filter contained
|
||||||
|
# wildcards (i.e. Nones) in which case we have to do an exhaustive
|
||||||
|
# search
|
||||||
|
if (
|
||||||
|
types is not None and
|
||||||
|
not wildcard_types and
|
||||||
|
len(results[group]) == len(types)
|
||||||
|
):
|
||||||
break
|
break
|
||||||
|
|
||||||
next_group = self._simple_select_one_onecol_txn(
|
next_group = self._simple_select_one_onecol_txn(
|
||||||
|
|
Loading…
Reference in a new issue