Skip to content
Extraits de code Groupes Projets
Vérifiée Valider 2c6d9b90 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

DB: Use the priority back propagation in the queue prev function

parent 2a7f7198
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!173Update priority on next/prev operations
...@@ -74,8 +74,10 @@ ...@@ -74,8 +74,10 @@
#define SQLITE_BEGIN_TRANSATION(db, error) SQLITE_EXEC(db, "BEGIN TRANSATION;", error) #define SQLITE_BEGIN_TRANSATION(db, error) SQLITE_EXEC(db, "BEGIN TRANSATION;", error)
#define SQLITE_END_TRANSATION(db, error) SQLITE_EXEC(db, "END TRANSATION;", error) #define SQLITE_END_TRANSATION(db, error) SQLITE_EXEC(db, "END TRANSATION;", error)
#define SQLITE_DO_ROLLBACK(db) \ #define SQLITE_DO_ROLLBACK(db) \
{ \
LOG_WARN("DB-DEBUG", "DO ROLLBACK \\o/"); \ LOG_WARN("DB-DEBUG", "DO ROLLBACK \\o/"); \
sqlite3_exec((sqlite3 *)db, "ROLLBACK TRANSACTION;\n", NULL, NULL, NULL); sqlite3_exec((sqlite3 *)db, "ROLLBACK TRANSACTION;\n", NULL, NULL, NULL); \
}
#define sqlite3_column_chars (const char *)sqlite3_column_text #define sqlite3_column_chars (const char *)sqlite3_column_text
......
...@@ -608,17 +608,18 @@ database_queue_prev(lkt_db *db, char filepath[PATH_MAX]) ...@@ -608,17 +608,18 @@ database_queue_prev(lkt_db *db, char filepath[PATH_MAX])
" END" " END"
" ORDER BY position DESC LIMIT 1;"; " ORDER BY position DESC LIMIT 1;";
char SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT]; char SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT];
bool status = false; int code = SQLITE_OK;
int code = SQLITE_OK, id;
sqlite3_stmt *stmt = NULL; sqlite3_stmt *stmt = NULL;
SQLITE_BEGIN_TRANSATION(db, error_failed_to_begin_transaction);
SQLITE_PREPARE(db, stmt, SQL_STMT, error); SQLITE_PREPARE(db, stmt, SQL_STMT, error);
code = sqlite3_step(stmt); code = sqlite3_step(stmt);
if (code == SQLITE_ROW) { if (code == SQLITE_ROW) {
id = MAX(1, sqlite3_column_int(stmt, 1)); int id = MAX(1, sqlite3_column_int(stmt, 1));
safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, "UPDATE queue_state SET current = %d;", static const char *SQL_TMPL_UPDATE = "UPDATE queue_state SET current = %d;";
id); safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, SQL_TMPL_UPDATE, id);
if (filepath != NULL) if (filepath != NULL)
strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX - 1); strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX - 1);
...@@ -639,10 +640,19 @@ database_queue_prev(lkt_db *db, char filepath[PATH_MAX]) ...@@ -639,10 +640,19 @@ database_queue_prev(lkt_db *db, char filepath[PATH_MAX])
} }
SQLITE_EXEC(db, SQL_UPDATE, error); SQLITE_EXEC(db, SQL_UPDATE, error);
status = true; unless (___database_back_propagate_priority(db))
goto error;
sqlite3_finalize(stmt);
SQLITE_END_TRANSATION(db, error);
return true;
error: error:
SQLITE_DO_ROLLBACK(db);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
return status; return false;
error_failed_to_begin_transaction:
return false;
} }
bool bool
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter