aboutsummaryrefslogtreecommitdiff
path: root/syncapi/storage/sqlite3
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-04-26 15:50:56 +0200
committerGitHub <noreply@github.com>2022-04-26 14:50:56 +0100
commit4c19f22725b8f534163ad37845650005b32172ad (patch)
tree20bbdc12e6166192d40118bc7253e43d2aff6a18 /syncapi/storage/sqlite3
parent5306c73b008567d855ca548d195abf3dfaf8917c (diff)
Fix account_data not correctly send in a complete sync (#2379)
* Return the StreamPosition from the database and not the latest * Fix linter issue
Diffstat (limited to 'syncapi/storage/sqlite3')
-rw-r--r--syncapi/storage/sqlite3/account_data_table.go18
1 files changed, 11 insertions, 7 deletions
diff --git a/syncapi/storage/sqlite3/account_data_table.go b/syncapi/storage/sqlite3/account_data_table.go
index 71a09817..e0d97ec3 100644
--- a/syncapi/storage/sqlite3/account_data_table.go
+++ b/syncapi/storage/sqlite3/account_data_table.go
@@ -43,7 +43,7 @@ const insertAccountDataSQL = "" +
// further parameters are added by prepareWithFilters
const selectAccountDataInRangeSQL = "" +
- "SELECT room_id, type FROM syncapi_account_data_type" +
+ "SELECT id, room_id, type FROM syncapi_account_data_type" +
" WHERE user_id = $1 AND id > $2 AND id <= $3"
const selectMaxAccountDataIDSQL = "" +
@@ -95,7 +95,7 @@ func (s *accountDataStatements) SelectAccountDataInRange(
userID string,
r types.Range,
filter *gomatrixserverlib.EventFilter,
-) (data map[string][]string, err error) {
+) (data map[string][]string, pos types.StreamPosition, err error) {
data = make(map[string][]string)
stmt, params, err := prepareWithFilters(
s.db, nil, selectAccountDataInRangeSQL,
@@ -112,11 +112,12 @@ func (s *accountDataStatements) SelectAccountDataInRange(
}
defer internal.CloseAndLogIfError(ctx, rows, "selectAccountDataInRange: rows.close() failed")
- for rows.Next() {
- var dataType string
- var roomID string
+ var dataType string
+ var roomID string
+ var id types.StreamPosition
- if err = rows.Scan(&roomID, &dataType); err != nil {
+ for rows.Next() {
+ if err = rows.Scan(&id, &roomID, &dataType); err != nil {
return
}
@@ -125,9 +126,12 @@ func (s *accountDataStatements) SelectAccountDataInRange(
} else {
data[roomID] = []string{dataType}
}
+ if id > pos {
+ pos = id
+ }
}
- return data, nil
+ return data, pos, nil
}
func (s *accountDataStatements) SelectMaxAccountDataID(