Fix account_data not correctly send in a complete sync (#2379)

* Return the StreamPosition from the database and not the latest

* Fix linter issue
This commit is contained in:
Till 2022-04-26 15:50:56 +02:00 committed by GitHub
parent 5306c73b00
commit 4c19f22725
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 19 deletions

View file

@ -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(