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

CLEAN: Less stack smashing and apply astyle

parent d22ed6a5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!142Fixed: Move command
Pipeline #2104 réussi avec des avertissements
...@@ -439,141 +439,135 @@ error: ...@@ -439,141 +439,135 @@ error:
bool bool
database_queue_move(volatile sqlite3 *db, int from, int to) database_queue_move(volatile sqlite3 *db, int from, int to)
{ {
/* stmt arguments in order: /* TODO: See if there is a solution with less lines of code */
* 1. to
* 2. to
* 3. from
*/
static const char *SQL_TEMPLATE_toINFfrom = static const char *SQL_TEMPLATE_toINFfrom =
"BEGIN TRANSACTION;" /* Clean queue_tmp */
"DELETE FROM queue_tmp;" "DELETE FROM queue_tmp;"
"DELETE FROM sqlite_sequence WHERE name = 'queue_tmp';"
/* Construct queue */
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
"WITH TEMP_TABLE AS (" "WITH TEMP_TABLE AS (SELECT"
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority"
" FROM queue)" " FROM queue)"
"SELECT POSITION, kara_id, priority" "SELECT POSITION, kara_id, priority"
" FROM TEMP_TABLE" " FROM TEMP_TABLE WHERE POSITION < %d AND POSITION != %d ORDER BY POSITION;"
" WHERE POSITION < %d AND POSITION != %d" /* Construct queue */
" ORDER BY POSITION;"
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
" VALUES(%d,(" " VALUES(%d,("
" WITH TEMP_TABLE AS (" " WITH TEMP_TABLE AS ("
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION,"
" FROM queue)" " kara_id, priority FROM queue)"
" SELECT kara_id" " SELECT kara_id FROM TEMP_TABLE WHERE POSITION = %d"
" FROM TEMP_TABLE"
" WHERE POSITION = %d"
" ),(" " ),("
" WITH TEMP_TABLE AS (" " WITH TEMP_TABLE AS ("
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION,"
" FROM queue)" " kara_id, priority FROM queue)"
" SELECT priority" " SELECT priority FROM TEMP_TABLE WHERE POSITION = %d"
" FROM TEMP_TABLE"
" WHERE POSITION = %d"
" ));"; " ));";
static const char *SQL_TEMPLATE_toSUPfrom_Part1 = static const char *SQL_TEMPLATE_toSUPfrom_Part1 =
"BEGIN TRANSACTION;" /* Clean queue_tmp */
"DELETE FROM queue_tmp;" "DELETE FROM queue_tmp;"
"DELETE FROM sqlite_sequence WHERE name = 'queue_tmp';"
/* Construct queue */
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
"WITH TEMP_TABLE AS (" "WITH TEMP_TABLE AS (SELECT"
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority"
" FROM queue)" " FROM queue)"
"SELECT POSITION, kara_id, priority" "SELECT POSITION, kara_id, priority"
" FROM TEMP_TABLE" " FROM TEMP_TABLE WHERE POSITION < %d ORDER BY POSITION;"
" WHERE POSITION < %d" /* Construct queue */
" ORDER BY POSITION;"
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
"WITH TEMP_TABLE AS (" "WITH TEMP_TABLE AS (SELECT"
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority"
" FROM queue)" " FROM queue)"
"SELECT POSITION - 1, kara_id, priority" "SELECT POSITION - 1, kara_id, priority"
" FROM TEMP_TABLE" " FROM TEMP_TABLE WHERE POSITION > %d AND POSITION < %d ORDER BY POSITION;";
" WHERE POSITION > %d AND POSITION < %d"
" ORDER BY POSITION;";
static const char *SQL_TEMPLATE_toSUPfrom_Part2 = static const char *SQL_TEMPLATE_toSUPfrom_Part2 =
/* Construct queue */
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
" VALUES(%d-1,(" " VALUES(%d-1,("
" WITH TEMP_TABLE AS (" " WITH TEMP_TABLE AS (SELECT"
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION,"
" FROM queue)" " kara_id, priority FROM queue)"
" SELECT kara_id" " SELECT kara_id FROM TEMP_TABLE WHERE POSITION = %d"
" FROM TEMP_TABLE"
" WHERE POSITION = %d"
" ),(" " ),("
" WITH TEMP_TABLE AS (" " WITH TEMP_TABLE AS (SELECT"
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION,"
" FROM queue)" " kara_id, priority FROM queue)"
" SELECT priority" " SELECT priority FROM TEMP_TABLE WHERE POSITION ="
" FROM TEMP_TABLE" " CASE WHEN (SELECT COUNT(*) FROM TEMP_TABLE)>=%d THEN %d ELSE %d-1 END"
" WHERE POSITION = "
" CASE"
" WHEN (SELECT COUNT(*) FROM TEMP_TABLE)>=%d THEN %d"
" ELSE %d-1"
" END"
"));"; "));";
static const char *SQL_TEMPLATE_PART_2_toINFfrom = static const char *SQL_TEMPLATE_PART_2_toINFfrom =
/* Construct queue */
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
"WITH TEMP_TABLE AS (" "WITH TEMP_TABLE AS (SELECT"
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION,"
" FROM queue)" " kara_id, priority FROM queue)"
"SELECT (POSITION+1) , kara_id, priority" "SELECT (POSITION+1) , kara_id, priority"
" FROM TEMP_TABLE" " FROM TEMP_TABLE WHERE POSITION >= %d AND POSITION < %d ORDER BY POSITION;"
" WHERE POSITION >= %d AND POSITION < %d"
" ORDER BY POSITION;"
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
"WITH TEMP_TABLE AS (" " WITH TEMP_TABLE AS (SELECT"
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION,"
" kara_id, priority"
" FROM queue)" " FROM queue)"
" SELECT POSITION , kara_id, priority" " SELECT POSITION , kara_id, priority"
" FROM TEMP_TABLE" " FROM TEMP_TABLE WHERE POSITION > %d AND POSITION >=%d ORDER BY POSITION;"
" WHERE POSITION > %d AND POSITION >=%d" /* Clean queue and insert back */
" ORDER BY POSITION;"
"DELETE FROM queue;" "DELETE FROM queue;"
"DELETE FROM sqlite_sequence WHERE name = 'queue';"
"INSERT INTO queue(position, kara_id, priority)" "INSERT INTO queue(position, kara_id, priority)"
" SELECT position, kara_id, priority" " SELECT position, kara_id, priority FROM queue_tmp ORDER BY priority, position;"
" FROM queue_tmp" /* Clean queue_tmp */
" ORDER BY priority, position;" "DELETE FROM sqlite_sequence WHERE name = 'queue_tmp';"
"DELETE FROM queue_tmp;" "DELETE FROM queue_tmp;";
"COMMIT;";
static const char *SQL_TEMPLATE_PART_2_toSUPfrom = static const char *SQL_TEMPLATE_PART_2_toSUPfrom =
/* Construct queue */
"INSERT INTO queue_tmp(position, kara_id,priority)" "INSERT INTO queue_tmp(position, kara_id,priority)"
"WITH TEMP_TABLE AS (" "WITH TEMP_TABLE AS ("
" SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION, kara_id, priority" " SELECT ROW_NUMBER() OVER(ORDER BY priority DESC, position ASC) AS POSITION,"
" FROM queue)" " kara_id, priority FROM queue)"
"SELECT POSITION , kara_id, priority" "SELECT POSITION , kara_id, priority"
" FROM TEMP_TABLE" " FROM TEMP_TABLE WHERE POSITION >= %d AND POSITION != %d ORDER BY POSITION;"
" WHERE POSITION >= %d AND POSITION != %d" /* Clean queue and insert back */
" ORDER BY POSITION;"
"DELETE FROM queue;" "DELETE FROM queue;"
"DELETE FROM sqlite_sequence WHERE name = 'queue';"
"INSERT INTO queue(position, kara_id, priority)" "INSERT INTO queue(position, kara_id, priority)"
" SELECT position, kara_id, priority" " SELECT position, kara_id, priority FROM queue_tmp ORDER BY priority, position;"
" FROM queue_tmp" /* Clean queue_tmp */
" ORDER BY priority, position;" "DELETE FROM sqlite_sequence WHERE name = 'queue_tmp';"
"DELETE FROM queue_tmp;" "DELETE FROM queue_tmp;";
"COMMIT;";
bool ret = false; char SQL[LKT_MAX_SQLITE_STATEMENT];
char SQL_Part1[LKT_MAX_SQLITE_STATEMENT];
char SQL_Part2[LKT_MAX_SQLITE_STATEMENT]; SQLITE_EXEC(db, "BEGIN TRANSACTION;", error_no_rollback);
char SQL_Part3[LKT_MAX_SQLITE_STATEMENT];
if (to < from) { if (to < from) {
safe_snprintf(SQL_Part1, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_toINFfrom, to, from, to, from, to); safe_snprintf(SQL, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_toINFfrom, to, from, to, from, to);
safe_snprintf(SQL_Part2, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_PART_2_toINFfrom, to, from, from, to); SQLITE_EXEC(db, SQL, error);
SQLITE_EXEC(db, SQL_Part1, error);
SQLITE_EXEC(db, SQL_Part2, error); safe_snprintf(SQL, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_PART_2_toINFfrom, to, from, from, to);
SQLITE_EXEC(db, SQL, error);
} }
else { else {
safe_snprintf(SQL_Part1, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_toSUPfrom_Part1, from, from, to); safe_snprintf(SQL, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_toSUPfrom_Part1, from, from, to);
safe_snprintf(SQL_Part2, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_toSUPfrom_Part2, to, from, to,to,to); SQLITE_EXEC(db, SQL, error);
safe_snprintf(SQL_Part3, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_PART_2_toSUPfrom, to, from, from, to);
SQLITE_EXEC(db, SQL_Part1, error); safe_snprintf(SQL, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_toSUPfrom_Part2, to, from, to, to, to);
SQLITE_EXEC(db, SQL_Part2, error); SQLITE_EXEC(db, SQL, error);
SQLITE_EXEC(db, SQL_Part3, error);
safe_snprintf(SQL, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE_PART_2_toSUPfrom, to, from, from, to);
SQLITE_EXEC(db, SQL, error);
} }
ret = true;
SQLITE_EXEC(db, "COMMIT;", error);
return true; return true;
error: error:
SQLITE_DO_ROLLBACK(db); SQLITE_DO_ROLLBACK(db);
return ret; error_no_rollback:
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