diff --git a/src/database/config.c b/src/database/config.c
index eb09db8541c459fc983e2f50da364853b18380fd..f4de2a20c6891cf94b65f44f3c53b45f1cfd48b8 100644
--- a/src/database/config.c
+++ b/src/database/config.c
@@ -134,25 +134,6 @@ error:
     return ret;
 }
 
-bool
-database_config_queue_default(volatile sqlite3 *db)
-{
-    static const char *SQL_DEFAULT =
-        "UPDATE queue_state SET"
-        "  volume = 100,"
-        "  paused = 1,"
-        "  random = 0,"
-        "  repeat = 0,"
-        "  single = 0,"
-        "  consume = 0,"
-        "  current = NULL,"
-        "  duration = 0;";
-    SQLITE_EXEC(db, SQL_DEFAULT, error);
-    return true;
-error:
-    return false;
-}
-
 bool
 database_get_config(volatile sqlite3 *db, const char *option, int *value)
 {
diff --git a/src/database/queue.c b/src/database/queue.c
index 14c7312b3ea44b0d683d5e246e7d7c6451f6d5ec..2981a045b32636fa8c99ca5890a36d1547551d43 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -7,6 +7,31 @@
 #include <stdio.h>
 #include <string.h>
 
+#define sqlite_just_exec(func, query)                                   \
+    bool func (volatile sqlite3 *db) {                                  \
+        SQLITE_EXEC(db, "BEGIN TRANSACTION;" #query "COMMIT;", error);  \
+        return true;                                                    \
+        error:                                                          \
+        SQLITE_DO_ROLLBACK(db);                                         \
+        return false;                                                   \
+    }
+sqlite_just_exec(database_queue_toggle_pause, "UPDATE queue_state SET paused = 1 - paused;")
+sqlite_just_exec(database_queue_crop, "DELETE FROM queue WHERE queue.kara_id <> (SELECT current FROM queue_state LIMIT 1);")
+sqlite_just_exec(database_queue_stop, "UPDATE queue_state SET current = NULL;")
+sqlite_just_exec(database_queue_clear, "DELETE FROM queue;DELETE FROM sqlite_sequence WHERE name = 'queue';UPDATE queue_state SET current = NULL;")
+sqlite_just_exec(database_config_queue_default, "UPDATE queue_state SET volume = 100, paused = 1, random = 0, repeat = 0, single = 0, consume = 0, current = NULL, duration = 0;")
+#undef sqlite_just_exec
+
+bool
+database_queue_set_paused(volatile sqlite3 *db, bool paused)
+{
+    const char *SQL = paused ? "UPDATE queue_state SET paused = 1;" : "UPDATE queue_state SET paused = 0;";
+    SQLITE_EXEC(db, SQL, error);
+    return true;
+error:
+    return false;
+}
+
 /* Find in in database/open.c */
 extern int is_sql_str_invalid(const char *);
 
@@ -337,16 +362,6 @@ database_queue_skip_current(volatile sqlite3 *db, char filepath[PATH_MAX])
     }
 }
 
-bool
-database_queue_toggle_pause(volatile sqlite3 *db)
-{
-    static const char *SQL_STMT = "UPDATE queue_state SET paused = 1 - paused";
-    SQLITE_EXEC(db, SQL_STMT, error);
-    return true;
-error:
-    return false;
-}
-
 bool
 database_queue_prev(volatile sqlite3 *db, char filepath[PATH_MAX])
 {
@@ -396,33 +411,6 @@ error:
     return status;
 }
 
-bool
-database_queue_clear(volatile sqlite3 *db)
-{
-    static const char *SQL_STMT =
-        "BEGIN TRANSACTION;"
-        "DELETE FROM queue;"
-        "DELETE FROM sqlite_sequence WHERE name = 'queue';"
-        "UPDATE queue_state SET current = NULL;"
-        "COMMIT;";
-    SQLITE_EXEC(db, SQL_STMT, error);
-    return true;
-error:
-    SQLITE_DO_ROLLBACK(db);
-    return false;
-}
-
-bool
-database_queue_crop(volatile sqlite3 *db)
-{
-    static const char *SQL_STMT =
-        "DELETE FROM queue WHERE queue.kara_id <> (SELECT current FROM queue_state LIMIT 1);";
-    SQLITE_EXEC(db, SQL_STMT, error);
-    return true;
-error:
-    return false;
-}
-
 bool
 database_queue_move(volatile sqlite3 *db, int from, int to)
 {
@@ -483,16 +471,6 @@ error:
     return ret;
 }
 
-bool
-database_queue_stop(volatile sqlite3 *db)
-{
-    static const char *SQL_STMT = "UPDATE queue_state SET current = NULL;";
-    SQLITE_EXEC(db, SQL_STMT, error);
-    return true;
-error:
-    return false;
-}
-
 bool
 database_queue_set_current_index(volatile sqlite3 *db, int idx)
 {
@@ -544,16 +522,6 @@ error:
     return status;
 }
 
-bool
-database_queue_set_paused(volatile sqlite3 *db, bool paused)
-{
-    const char *SQL = paused ? "UPDATE queue_state SET paused = 1;" : "UPDATE queue_state SET paused = 0;";
-    SQLITE_EXEC(db, SQL, error);
-    return true;
-error:
-    return false;
-}
-
 bool
 database_queue_shuffle(volatile sqlite3 *db)
 {
diff --git a/src/database/update.c b/src/database/update.c
index 9bde1c69e48f48187b390a6be2a75eb5c3f40214..5a56f927f4eec26602f7e64aa57b4a7e715399d7 100644
--- a/src/database/update.c
+++ b/src/database/update.c
@@ -226,18 +226,11 @@ error:
     LOG_WARN_SCT("DB", "Failed to get informations about the last update: %s", sqlite3_errmsg((sqlite3 *) db));
 }
 
-void
-database_stamp(volatile sqlite3 *db)
-{
-    SQLITE_EXEC(db, "UPDATE misc SET last_update = strftime('%s','now');", error);
-error:
-    return;
-}
-
-void
-database_updated(volatile sqlite3 *db)
-{
-    SQLITE_EXEC(db, "UPDATE misc SET last_end_update = strftime('%s','now'), update_job = update_job + 1;", error);
-error:
-    return;
-}
+#define sqlite_just_exec(func, query)   \
+    void func (volatile sqlite3 *db) {  \
+        SQLITE_EXEC(db, #query, error); \
+        error: return;                  \
+    }
+sqlite_just_exec(database_stamp, "UPDATE misc SET last_update = strftime('%s','now');")
+sqlite_just_exec(database_updated, "UPDATE misc SET last_end_update = strftime('%s','now'), update_job = update_job + 1;")
+#undef sqlite_just_exec