Bail on where clause instead

This commit is contained in:
Erik Johnston 2017-04-11 16:24:31 +01:00
parent b48045a8f5
commit 85657eedf8

View File

@ -90,6 +90,7 @@ class ClientIpStore(background_updates.BackgroundUpdateStore):
are (user_id, device_id) tuples. The values are also dicts, with
keys giving the column names
"""
res = yield self.runInteraction(
"get_last_client_ip_by_device",
self._get_last_client_ip_by_device_txn,
@ -109,9 +110,6 @@ class ClientIpStore(background_updates.BackgroundUpdateStore):
@classmethod
def _get_last_client_ip_by_device_txn(cls, txn, devices, retcols):
if not devices:
return []
where_clauses = []
bindings = []
for (user_id, device_id) in devices:
@ -122,6 +120,9 @@ class ClientIpStore(background_updates.BackgroundUpdateStore):
where_clauses.append("(user_id = ? AND device_id = ?)")
bindings.extend((user_id, device_id))
if not where_clauses:
return []
inner_select = (
"SELECT MAX(last_seen) mls, user_id, device_id FROM user_ips "
"WHERE %(where)s "