mirror of
https://mau.dev/maunium/synapse.git
synced 2024-08-30 06:02:12 +00:00
Fix SQL for user search
fix some syntax errors for user search when search_all_users is enabled fixes #2801, hopefully
This commit is contained in:
parent
2186d7c06e
commit
46022025ea
@ -641,13 +641,12 @@ class UserDirectoryStore(SQLBaseStore):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if self.hs.config.user_directory_search_all_users:
|
if self.hs.config.user_directory_search_all_users:
|
||||||
# dummy to keep the number of binds & aliases the same
|
# make s.user_id null to keep the ordering algorithm happy
|
||||||
join_clause = """
|
join_clause = """
|
||||||
LEFT JOIN (
|
CROSS JOIN (SELECT NULL as user_id) AS s
|
||||||
SELECT NULL as user_id WHERE NULL = ?
|
|
||||||
) AS s USING (user_id)"
|
|
||||||
"""
|
"""
|
||||||
where_clause = ""
|
join_args = ()
|
||||||
|
where_clause = "1=1"
|
||||||
else:
|
else:
|
||||||
join_clause = """
|
join_clause = """
|
||||||
LEFT JOIN users_in_public_rooms AS p USING (user_id)
|
LEFT JOIN users_in_public_rooms AS p USING (user_id)
|
||||||
@ -656,6 +655,7 @@ class UserDirectoryStore(SQLBaseStore):
|
|||||||
WHERE user_id = ? AND share_private
|
WHERE user_id = ? AND share_private
|
||||||
) AS s USING (user_id)
|
) AS s USING (user_id)
|
||||||
"""
|
"""
|
||||||
|
join_args = (user_id,)
|
||||||
where_clause = "(s.user_id IS NOT NULL OR p.user_id IS NOT NULL)"
|
where_clause = "(s.user_id IS NOT NULL OR p.user_id IS NOT NULL)"
|
||||||
|
|
||||||
if isinstance(self.database_engine, PostgresEngine):
|
if isinstance(self.database_engine, PostgresEngine):
|
||||||
@ -697,7 +697,7 @@ class UserDirectoryStore(SQLBaseStore):
|
|||||||
avatar_url IS NULL
|
avatar_url IS NULL
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
""" % (join_clause, where_clause)
|
""" % (join_clause, where_clause)
|
||||||
args = (user_id, full_query, exact_query, prefix_query, limit + 1,)
|
args = join_args + (full_query, exact_query, prefix_query, limit + 1,)
|
||||||
elif isinstance(self.database_engine, Sqlite3Engine):
|
elif isinstance(self.database_engine, Sqlite3Engine):
|
||||||
search_query = _parse_query_sqlite(search_term)
|
search_query = _parse_query_sqlite(search_term)
|
||||||
|
|
||||||
@ -715,7 +715,7 @@ class UserDirectoryStore(SQLBaseStore):
|
|||||||
avatar_url IS NULL
|
avatar_url IS NULL
|
||||||
LIMIT ?
|
LIMIT ?
|
||||||
""" % (join_clause, where_clause)
|
""" % (join_clause, where_clause)
|
||||||
args = (user_id, search_query, limit + 1)
|
args = join_args + (search_query, limit + 1)
|
||||||
else:
|
else:
|
||||||
# This should be unreachable.
|
# This should be unreachable.
|
||||||
raise Exception("Unrecognized database engine")
|
raise Exception("Unrecognized database engine")
|
||||||
|
Loading…
Reference in New Issue
Block a user