1 files changed, 20 insertions, 10 deletions
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py
index e404fa72de..a6aa64f9fb 100644
--- a/synapse/storage/registration.py
+++ b/synapse/storage/registration.py
@@ -458,17 +458,27 @@ class RegistrationStore(background_updates.BackgroundUpdateStore):
@defer.inlineCallbacks
def get_user_id_by_threepid(self, medium, address):
- ret = yield self._simple_select_one(
- "user_threepids",
- {
- "medium": medium,
- "address": address
- },
- ['user_id'], True, 'get_user_id_by_threepid'
+ def f(txn):
+ sql = (
+ "SELECT user_id"
+ " FROM user_threepids"
+ " WHERE medium = ? AND LOWER(address) = LOWER(?)"
+ )
+ txn.execute(sql, (medium, address))
+ row = txn.fetchone()
+ if not row:
+ return None
+ if txn.rowcount > 1:
+ raise StoreError(500, "More than one row matched")
+ return {
+ "user_id": row[0]
+ }
+
+ res = yield self.runInteraction(
+ "get_user_id_by_threepid", f
)
- if ret:
- defer.returnValue(ret['user_id'])
- defer.returnValue(None)
+
+ defer.returnValue(res)
def user_delete_threepids(self, user_id):
return self._simple_delete(
|