|
|
@@ -2111,7 +2111,14 @@ class EventsWorkerStore(SQLBaseStore): |
|
|
|
AND room_id = ? |
|
|
|
/* Make sure event is not rejected */ |
|
|
|
AND rejections.event_id IS NULL |
|
|
|
ORDER BY origin_server_ts %s |
|
|
|
/** |
|
|
|
* First sort by the message timestamp. If the message timestamps are the |
|
|
|
* same, we want the message that logically comes "next" (before/after |
|
|
|
* the given timestamp) based on the DAG and its topological order (`depth`). |
|
|
|
* Finally, we can tie-break based on when it was received on the server |
|
|
|
* (`stream_ordering`). |
|
|
|
*/ |
|
|
|
ORDER BY origin_server_ts %s, depth %s, stream_ordering %s |
|
|
|
LIMIT 1; |
|
|
|
""" |
|
|
|
|
|
|
@@ -2130,7 +2137,8 @@ class EventsWorkerStore(SQLBaseStore): |
|
|
|
order = "ASC" |
|
|
|
|
|
|
|
txn.execute( |
|
|
|
sql_template % (comparison_operator, order), (timestamp, room_id) |
|
|
|
sql_template % (comparison_operator, order, order, order), |
|
|
|
(timestamp, room_id), |
|
|
|
) |
|
|
|
row = txn.fetchone() |
|
|
|
if row: |
|
|
|