queue migrations slightly better to handle multiple queries (relevant to #1176)

This commit is contained in:
rtldg 2022-09-29 06:17:21 +00:00
parent b868208520
commit 2b2a1fcb12

View File

@ -58,8 +58,7 @@ static Database gH_SQL;
static int gI_Driver; static int gI_Driver;
static char gS_SQLPrefix[32]; static char gS_SQLPrefix[32];
int gI_MigrationsRequired; bool gB_MigrationsApplied[255];
int gI_MigrationsFinished;
public void RunOnDatabaseLoadedForward() public void RunOnDatabaseLoadedForward()
{ {
@ -269,20 +268,24 @@ public void SQL_SelectMigrations_Callback(Database db, DBResultSet results, cons
bMigrationApplied[results.FetchInt(0)] = true; bMigrationApplied[results.FetchInt(0)] = true;
} }
gB_MigrationsApplied = bMigrationApplied;
DoNextMigration();
}
void DoNextMigration()
{
for (int i = 0; i < MIGRATIONS_END; i++) for (int i = 0; i < MIGRATIONS_END; i++)
{ {
if (!bMigrationApplied[i]) if (!gB_MigrationsApplied[i])
{ {
gI_MigrationsRequired++; gB_MigrationsApplied[i] = true;
PrintToServer("--- Applying database migration %d ---", i); PrintToServer("--- Applying database migration %d ---", i);
ApplyMigration(i); ApplyMigration(i);
return;
} }
} }
if (!gI_MigrationsRequired)
{
RunOnDatabaseLoadedForward(); RunOnDatabaseLoadedForward();
}
} }
void ApplyMigration(int migration) void ApplyMigration(int migration)
@ -752,9 +755,5 @@ void InsertMigration(int migration)
public void SQL_MigrationApplied_Callback(Database db, DBResultSet results, const char[] error, any data) public void SQL_MigrationApplied_Callback(Database db, DBResultSet results, const char[] error, any data)
{ {
if (++gI_MigrationsFinished >= gI_MigrationsRequired) DoNextMigration();
{
gI_MigrationsRequired = gI_MigrationsFinished = 0;
RunOnDatabaseLoadedForward();
}
} }