mirror of
https://github.com/chatmail/core.git
synced 2026-05-16 05:16:39 +03:00
fix: reduce number of repeat_vars() calls
SQL statements fail if the number of variables exceeds `SQLITE_LIMIT_VARIABLE_NUMBER`. Remaining repeat_vars() calls are difficult to replace and use arrays passed from the UI, e.g. forwarded message IDs or marked as seen IDs.
This commit is contained in:
@@ -129,17 +129,14 @@ impl ContactId {
|
||||
) -> Result<()> {
|
||||
context
|
||||
.sql
|
||||
.execute(
|
||||
&format!(
|
||||
"UPDATE contacts SET origin=? WHERE id IN ({}) AND origin<?",
|
||||
sql::repeat_vars(ids.len())
|
||||
),
|
||||
rusqlite::params_from_iter(
|
||||
params_iter(&[origin])
|
||||
.chain(params_iter(ids))
|
||||
.chain(params_iter(&[origin])),
|
||||
),
|
||||
)
|
||||
.transaction(|transaction| {
|
||||
let mut stmt = transaction
|
||||
.prepare("UPDATE contacts SET origin=?1 WHERE id = ?2 AND origin < ?1")?;
|
||||
for id in ids {
|
||||
stmt.execute((origin, id))?;
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
.await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user