Fix ON CONFLICT on sync API account data
MODIFY
syncapi/storage/postgres/account_data_table.go
syncapi/storage/postgres/account_data_table.go
@@ -53,7 +53,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS syncapi_account_data_id_idx ON syncapi_account
const insertAccountDataSQL = "" +
"INSERT INTO syncapi_account_data_type (user_id, room_id, type) VALUES ($1, $2, $3)" +
" ON CONFLICT ON CONSTRAINT syncapi_account_data_unique" +
- " DO UPDATE SET id = EXCLUDED.id" +
+ " DO UPDATE SET id = nextval('syncapi_stream_id')" +
" RETURNING id"
const selectAccountDataInRangeSQL = "" +

MODIFY
syncapi/storage/sqlite3/account_data_table.go
syncapi/storage/sqlite3/account_data_table.go
@@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS syncapi_account_data_type (
const insertAccountDataSQL = "" +
"INSERT INTO syncapi_account_data_type (id, user_id, room_id, type) VALUES ($1, $2, $3, $4)" +
" ON CONFLICT (user_id, room_id, type) DO UPDATE" +
- " SET id = EXCLUDED.id"
+ " SET id = $5"
const selectAccountDataInRangeSQL = "" +
"SELECT room_id, type FROM syncapi_account_data_type" +
@@ -86,7 +86,7 @@ func (s *accountDataStatements) InsertAccountData(
if err != nil {
return
}
- _, err = sqlutil.TxStmt(txn, s.insertAccountDataStmt).ExecContext(ctx, pos, userID, roomID, dataType)
+ _, err = sqlutil.TxStmt(txn, s.insertAccountDataStmt).ExecContext(ctx, pos, userID, roomID, dataType, pos)
return
}

Fix ON CONFLICT on sync API account data (#1745) (#1750)