From e196e04de66c5a93177100a1abdb30e43e157a0c Mon Sep 17 00:00:00 2001 From: jedso <26863777+jedso@users.noreply.github.com> Date: Sat, 1 Oct 2022 21:34:28 +0930 Subject: [PATCH] Add query to check for NULL SQLite id row in mapzones --- .../sql-create-tables-and-migrations.sp | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/addons/sourcemod/scripting/include/shavit/sql-create-tables-and-migrations.sp b/addons/sourcemod/scripting/include/shavit/sql-create-tables-and-migrations.sp index 1849b6b3..5fac2298 100644 --- a/addons/sourcemod/scripting/include/shavit/sql-create-tables-and-migrations.sp +++ b/addons/sourcemod/scripting/include/shavit/sql-create-tables-and-migrations.sp @@ -51,6 +51,7 @@ enum Migration_AddMapzonesForm, // 25 Migration_AddMapzonesTarget, Migration_DeprecateExactTimeInt, + Migration_FixSQLiteMapzonesROWID, MIGRATIONS_END }; @@ -317,6 +318,7 @@ void ApplyMigration(int migration) case Migration_AddMapzonesForm: ApplyMigration_AddMapzonesForm(); case Migration_AddMapzonesTarget: ApplyMigration_AddMapzonesTarget(); case Migration_DeprecateExactTimeInt: ApplyMigration_DeprecateExactTimeInt(); + case Migration_FixSQLiteMapzonesROWID: ApplyMigration_FixSQLiteMapzonesROWID(); } } @@ -540,6 +542,29 @@ public void Trans_DeprecateExactTimeIntFailed(Database db, ArrayStack stack, int LogError("Timer (core) error! ExactTimeInt migration failed. %d %d Reason: %s", numQueries, failIndex, error); } +void ApplyMigration_FixSQLiteMapzonesROWID() +{ + if (gI_Driver != Driver_sqlite) + { + InsertMigration(Migration_FixSQLiteMapzonesROWID); + return; + } + + char sQuery[256]; + FormatEx(sQuery, sizeof(sQuery), "SELECT EXISTS(SELECT 1 FROM `%smapzones` WHERE id IS NULL);", gS_SQLPrefix); + + QueryLog(gH_SQL, SQL_FixSQLiteMapzonesROWID_Callback, sQuery, 0, DBPrio_High); +} + +public void SQL_FixSQLiteMapzonesROWID_Callback(Database db, DBResultSet results, const char[] error, any data) +{ + if (results == null) + { + LogError("Timer error! SQLiteMapzonesROWID migration failed. Reason: %s", error); + return; + } +} + public void SQL_TableMigrationSingleQuery_Callback(Database db, DBResultSet results, const char[] error, any data) { InsertMigration(data);