From 9699ef26e4e83c2e092b281d286bce98ffc86442 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 4 May 2020 19:36:34 +0200 Subject: [PATCH] Fix issue 39 --- src/database/queue.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/database/queue.c b/src/database/queue.c index c936b1fc..5c7cc914 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -252,17 +252,20 @@ database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority) bool database_queue_del_id(volatile sqlite3 *db, int id) { +#define POS_OF_ID "(SELECT position FROM queue WHERE kara_id = %d)" static const char *SQL_TEMPLATE = "BEGIN TRANSACTION;" "WITH before(pos) AS (SELECT position FROM queue JOIN queue_state WHERE position < current ORDER BY position DESC LIMIT 1) " "UPDATE queue_state SET current = CASE" " WHEN current IS NULL THEN NULL" " ELSE (SELECT pos FROM before) " - "END WHERE current > (SELECT position FROM queue WHERE kara_id = %d);" + "END WHERE current > " POS_OF_ID ";" "DELETE FROM queue WHERE kara_id = %d;" + "UPDATE queue SET position = position - 1 WHERE position > " POS_OF_ID ";" "COMMIT TRANSACTION;"; +#undef POS_OF_ID char SQL[LKT_MAX_SQLITE_STATEMENT]; - snprintf(SQL, LKT_MAX_SQLITE_STATEMENT - 1, SQL_TEMPLATE, id, id, id); + snprintf(SQL, LKT_MAX_SQLITE_STATEMENT - 1, SQL_TEMPLATE, id, id, id, id); SQL[LKT_MAX_SQLITE_STATEMENT - 1] = '\0'; SQLITE_EXEC(db, SQL, error); return true; -- GitLab