From 5fab731c6479f4c668152a4e01b29aaff4da2113 Mon Sep 17 00:00:00 2001 From: Till Faelligen Date: Thu, 28 Apr 2022 12:06:37 +0200 Subject: [PATCH] Update query, use "from" as the initial lastPos --- syncapi/storage/postgres/presence_table.go | 6 +++--- syncapi/storage/sqlite3/presence_table.go | 6 +++--- syncapi/streams/stream_presence.go | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/syncapi/storage/postgres/presence_table.go b/syncapi/storage/postgres/presence_table.go index eb932741c..7194afea6 100644 --- a/syncapi/storage/postgres/presence_table.go +++ b/syncapi/storage/postgres/presence_table.go @@ -73,8 +73,8 @@ const selectMaxPresenceSQL = "" + const selectPresenceAfter = "" + " SELECT id, user_id, presence, status_msg, last_active_ts" + " FROM syncapi_presence" + - " WHERE id > $1 AND last_active_ts > $2" + - " ORDER BY id DESC, last_active_ts DESC LIMIT $3" + " WHERE id > $1 AND last_active_ts >= $2" + + " ORDER BY id ASC LIMIT $3" type presenceStatements struct { upsertPresenceStmt *sql.Stmt @@ -150,7 +150,7 @@ func (p *presenceStatements) GetPresenceAfter( ) (presences map[string]*types.PresenceInternal, err error) { presences = make(map[string]*types.PresenceInternal) stmt := sqlutil.TxStmt(txn, p.selectPresenceAfterStmt) - afterTS := gomatrixserverlib.AsTimestamp(time.Now().Add(-time.Minute * 5)) + afterTS := gomatrixserverlib.AsTimestamp(time.Now().Add(time.Minute * -5)) rows, err := stmt.QueryContext(ctx, after, afterTS, filter.Limit) if err != nil { return nil, err diff --git a/syncapi/storage/sqlite3/presence_table.go b/syncapi/storage/sqlite3/presence_table.go index ea1151fec..b61a825df 100644 --- a/syncapi/storage/sqlite3/presence_table.go +++ b/syncapi/storage/sqlite3/presence_table.go @@ -72,8 +72,8 @@ const selectMaxPresenceSQL = "" + const selectPresenceAfter = "" + " SELECT id, user_id, presence, status_msg, last_active_ts" + " FROM syncapi_presence" + - " WHERE id > $1 AND last_active_ts > $2" + - " ORDER BY id DESC, last_active_ts DESC LIMIT $3" + " WHERE id > $1 AND last_active_ts >= $2" + + " ORDER BY id ASC LIMIT $3" type presenceStatements struct { db *sql.DB @@ -164,7 +164,7 @@ func (p *presenceStatements) GetPresenceAfter( ) (presences map[string]*types.PresenceInternal, err error) { presences = make(map[string]*types.PresenceInternal) stmt := sqlutil.TxStmt(txn, p.selectPresenceAfterStmt) - afterTS := gomatrixserverlib.AsTimestamp(time.Now().Add(-time.Minute * 5)) + afterTS := gomatrixserverlib.AsTimestamp(time.Now().Add(time.Minute * -5)) rows, err := stmt.QueryContext(ctx, after, afterTS, filter.Limit) if err != nil { return nil, err diff --git a/syncapi/streams/stream_presence.go b/syncapi/streams/stream_presence.go index 05dbb532e..bd3251ffa 100644 --- a/syncapi/streams/stream_presence.go +++ b/syncapi/streams/stream_presence.go @@ -94,7 +94,7 @@ func (p *PresenceStreamProvider) IncrementalSync( } } - lastPos := to + lastPos := from for _, presence := range presences { if presence == nil { continue