fix: idx cache inconsistency (#2231)

This commit is contained in:
Ellie Huxtable 2024-07-03 08:10:12 +01:00 committed by GitHub
parent c3723aaf27
commit 5fe8ae05e5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 10 deletions

View File

@ -219,15 +219,16 @@ impl Store for SqliteStore {
idx: RecordIdx,
limit: u64,
) -> Result<Vec<Record<EncryptedData>>> {
let res =
sqlx::query("select * from store where idx >= ?1 and host = ?2 and tag = ?3 limit ?4")
.bind(idx as i64)
.bind(host.0.as_hyphenated().to_string())
.bind(tag)
.bind(limit as i64)
.map(Self::query_row)
.fetch_all(&self.pool)
.await?;
let res = sqlx::query(
"select * from store where idx >= ?1 and host = ?2 and tag = ?3 order by idx asc limit ?4",
)
.bind(idx as i64)
.bind(host.0.as_hyphenated().to_string())
.bind(tag)
.bind(limit as i64)
.map(Self::query_row)
.fetch_all(&self.pool)
.await?;
Ok(res)
}

View File

@ -571,7 +571,7 @@ impl Database for Postgres {
"insert into store_idx_cache
(user_id, host, tag, idx)
values ($1, $2, $3, $4)
on conflict(user_id, host, tag) do update set idx = $4
on conflict(user_id, host, tag) do update set idx = greatest(idx, $4)
",
)
.bind(user.id)