mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-12-27 04:49:23 -05:00
Don't support limitless pagination
The pagination storage function supported not specifiying a limit on the number of events returned. This was triggered when using the search or context API with a limit of zero, which the storage function took to mean not being limited.
This commit is contained in:
parent
ad2823ee27
commit
5494c1d71e
@ -684,8 +684,7 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
|
|||||||
results to only those before
|
results to only those before
|
||||||
direction(char): Either 'b' or 'f' to indicate whether we are
|
direction(char): Either 'b' or 'f' to indicate whether we are
|
||||||
paginating forwards or backwards from `from_key`.
|
paginating forwards or backwards from `from_key`.
|
||||||
limit (int): The maximum number of events to return. Zero or less
|
limit (int): The maximum number of events to return.
|
||||||
means no limit.
|
|
||||||
event_filter (Filter|None): If provided filters the events to
|
event_filter (Filter|None): If provided filters the events to
|
||||||
those that match the filter.
|
those that match the filter.
|
||||||
|
|
||||||
@ -694,6 +693,9 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
|
|||||||
as a list of _EventDictReturn and a token that points to the end
|
as a list of _EventDictReturn and a token that points to the end
|
||||||
of the result set.
|
of the result set.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
assert int(limit) >= 0
|
||||||
|
|
||||||
# Tokens really represent positions between elements, but we use
|
# Tokens really represent positions between elements, but we use
|
||||||
# the convention of pointing to the event before the gap. Hence
|
# the convention of pointing to the event before the gap. Hence
|
||||||
# we have a bit of asymmetry when it comes to equalities.
|
# we have a bit of asymmetry when it comes to equalities.
|
||||||
@ -723,18 +725,14 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore):
|
|||||||
bounds += " AND " + filter_clause
|
bounds += " AND " + filter_clause
|
||||||
args.extend(filter_args)
|
args.extend(filter_args)
|
||||||
|
|
||||||
if int(limit) > 0:
|
|
||||||
args.append(int(limit))
|
args.append(int(limit))
|
||||||
limit_str = " LIMIT ?"
|
|
||||||
else:
|
|
||||||
limit_str = ""
|
|
||||||
|
|
||||||
sql = (
|
sql = (
|
||||||
"SELECT event_id, topological_ordering, stream_ordering"
|
"SELECT event_id, topological_ordering, stream_ordering"
|
||||||
" FROM events"
|
" FROM events"
|
||||||
" WHERE outlier = ? AND room_id = ? AND %(bounds)s"
|
" WHERE outlier = ? AND room_id = ? AND %(bounds)s"
|
||||||
" ORDER BY topological_ordering %(order)s,"
|
" ORDER BY topological_ordering %(order)s,"
|
||||||
" stream_ordering %(order)s %(limit)s"
|
" stream_ordering %(order)s LIMIT ?"
|
||||||
) % {
|
) % {
|
||||||
"bounds": bounds,
|
"bounds": bounds,
|
||||||
"order": order,
|
"order": order,
|
||||||
|
Loading…
Reference in New Issue
Block a user