From b2939d3df32f497f1b5936f598107c29b7649004 Mon Sep 17 00:00:00 2001 From: link2xt Date: Sun, 16 Oct 2022 16:31:53 +0000 Subject: [PATCH] imap: simplify UPSERT queries on `imap_sync` Use `excluded` and remove noop `WHERE` query. See for official SQLite documentation. --- CHANGELOG.md | 1 + src/imap.rs | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0803b71a7..e7677e674 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### API-Changes ### Changes +- simplify `UPSERT` queries #3676 ### Fixes diff --git a/src/imap.rs b/src/imap.rs index 08042f5b2..b732bfbd9 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -2157,8 +2157,8 @@ pub(crate) async fn set_uid_next(context: &Context, folder: &str, uid_next: u32) .sql .execute( "INSERT INTO imap_sync (folder, uid_next) VALUES (?,?) - ON CONFLICT(folder) DO UPDATE SET uid_next=? WHERE folder=?;", - paramsv![folder, uid_next, uid_next, folder], + ON CONFLICT(folder) DO UPDATE SET uid_next=excluded.uid_next", + paramsv![folder, uid_next], ) .await?; Ok(()) @@ -2189,8 +2189,8 @@ pub(crate) async fn set_uidvalidity( .sql .execute( "INSERT INTO imap_sync (folder, uidvalidity) VALUES (?,?) - ON CONFLICT(folder) DO UPDATE SET uidvalidity=? WHERE folder=?;", - paramsv![folder, uidvalidity, uidvalidity, folder], + ON CONFLICT(folder) DO UPDATE SET uidvalidity=excluded.uidvalidity", + paramsv![folder, uidvalidity], ) .await?; Ok(()) @@ -2212,8 +2212,8 @@ pub(crate) async fn set_modseq(context: &Context, folder: &str, modseq: u64) -> .sql .execute( "INSERT INTO imap_sync (folder, modseq) VALUES (?,?) - ON CONFLICT(folder) DO UPDATE SET modseq=? WHERE folder=?;", - paramsv![folder, modseq, modseq, folder], + ON CONFLICT(folder) DO UPDATE SET modseq=excluded.modseq", + paramsv![folder, modseq], ) .await?; Ok(())