From bfe9fb66797191be60107f4f820c29f7b2d5cdcf Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 1 Oct 2024 16:22:17 -0400 Subject: [PATCH] Remove very old database migration. The migration was done over 4.5 years ago and has been causing random problems ever since. --- .../securesms/database/JobDatabase.kt | 74 ------------------- .../securesms/database/KeyValueDatabase.java | 48 ------------ .../securesms/database/MegaphoneDatabase.java | 30 -------- 3 files changed, 152 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.kt index feab88373b..42d35c8530 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.kt @@ -7,9 +7,7 @@ import android.database.Cursor import androidx.core.content.contentValuesOf import net.zetetic.database.sqlcipher.SQLiteDatabase import net.zetetic.database.sqlcipher.SQLiteOpenHelper -import org.signal.core.util.CursorUtil import org.signal.core.util.SqlUtil -import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.delete import org.signal.core.util.forEach import org.signal.core.util.insertInto @@ -128,21 +126,6 @@ class JobDatabase( db.execSQL(Jobs.CREATE_TABLE) db.execSQL(Constraints.CREATE_TABLE) db.execSQL(Dependencies.CREATE_TABLE) - - if (SignalDatabase.hasTable("job_spec")) { - Log.i(TAG, "Found old job_spec table. Migrating data.") - migrateJobSpecsFromPreviousDatabase(SignalDatabase.rawDatabase, db) - } - - if (SignalDatabase.hasTable("constraint_spec")) { - Log.i(TAG, "Found old constraint_spec table. Migrating data.") - migrateConstraintSpecsFromPreviousDatabase(SignalDatabase.rawDatabase, db) - } - - if (SignalDatabase.hasTable("dependency_spec")) { - Log.i(TAG, "Found old dependency_spec table. Migrating data.") - migrateDependencySpecsFromPreviousDatabase(SignalDatabase.rawDatabase, db) - } } override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { @@ -161,14 +144,7 @@ class JobDatabase( override fun onOpen(db: SQLiteDatabase) { Log.i(TAG, "onOpen()") - db.setForeignKeyConstraintsEnabled(true) - - SignalExecutors.BOUNDED.execute { - dropTableIfPresent("job_spec") - dropTableIfPresent("constraint_spec") - dropTableIfPresent("dependency_spec") - } } @Synchronized @@ -488,13 +464,6 @@ class JobDatabase( return writableDatabase } - private fun dropTableIfPresent(table: String) { - if (SignalDatabase.hasTable(table)) { - Log.i(TAG, "Dropping original $table table from the main database.") - SignalDatabase.rawDatabase.execSQL("DROP TABLE $table") - } - } - /** Should only be used for debugging! */ fun debugResetBackoffInterval() { writableDatabase.update(Jobs.TABLE_NAME, contentValuesOf(Jobs.NEXT_BACKOFF_INTERVAL to 0), null, null) @@ -539,48 +508,5 @@ class JobDatabase( } return instance!! } - - private fun migrateJobSpecsFromPreviousDatabase(oldDb: SQLiteDatabase, newDb: SQLiteDatabase) { - oldDb.rawQuery("SELECT * FROM job_spec", null).use { cursor -> - while (cursor.moveToNext()) { - val values = ContentValues() - values.put(Jobs.JOB_SPEC_ID, CursorUtil.requireString(cursor, "job_spec_id")) - values.put(Jobs.FACTORY_KEY, CursorUtil.requireString(cursor, "factory_key")) - values.put(Jobs.QUEUE_KEY, CursorUtil.requireString(cursor, "queue_key")) - values.put(Jobs.CREATE_TIME, CursorUtil.requireLong(cursor, "create_time")) - values.put(Jobs.LAST_RUN_ATTEMPT_TIME, 0) - values.put(Jobs.NEXT_BACKOFF_INTERVAL, 0) - values.put(Jobs.RUN_ATTEMPT, CursorUtil.requireInt(cursor, "run_attempt")) - values.put(Jobs.MAX_ATTEMPTS, CursorUtil.requireInt(cursor, "max_attempts")) - values.put(Jobs.LIFESPAN, CursorUtil.requireLong(cursor, "lifespan")) - values.put(Jobs.SERIALIZED_DATA, CursorUtil.requireString(cursor, "serialized_data")) - values.put(Jobs.SERIALIZED_INPUT_DATA, CursorUtil.requireString(cursor, "serialized_input_data")) - values.put(Jobs.IS_RUNNING, CursorUtil.requireInt(cursor, "is_running")) - newDb.insert(Jobs.TABLE_NAME, null, values) - } - } - } - - private fun migrateConstraintSpecsFromPreviousDatabase(oldDb: SQLiteDatabase, newDb: SQLiteDatabase) { - oldDb.rawQuery("SELECT * FROM constraint_spec", null).use { cursor -> - while (cursor.moveToNext()) { - val values = ContentValues() - values.put(Constraints.JOB_SPEC_ID, CursorUtil.requireString(cursor, "job_spec_id")) - values.put(Constraints.FACTORY_KEY, CursorUtil.requireString(cursor, "factory_key")) - newDb.insert(Constraints.TABLE_NAME, null, values) - } - } - } - - private fun migrateDependencySpecsFromPreviousDatabase(oldDb: SQLiteDatabase, newDb: SQLiteDatabase) { - oldDb.rawQuery("SELECT * FROM dependency_spec", null).use { cursor -> - while (cursor.moveToNext()) { - val values = ContentValues() - values.put(Dependencies.JOB_SPEC_ID, CursorUtil.requireString(cursor, "job_spec_id")) - values.put(Dependencies.DEPENDS_ON_JOB_SPEC_ID, CursorUtil.requireString(cursor, "depends_on_job_spec_id")) - newDb.insert(Dependencies.TABLE_NAME, null, values) - } - } - } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java index f39e2e8a5d..4f7c0380ac 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java @@ -82,13 +82,7 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase @Override public void onCreate(SQLiteDatabase db) { Log.i(TAG, "onCreate()"); - db.execSQL(CREATE_TABLE); - - if (SignalDatabase.hasTable("key_value")) { - Log.i(TAG, "Found old key_value table. Migrating data."); - migrateDataFromPreviousDatabase(SignalDatabase.getRawDatabase(), db); - } } @Override @@ -99,15 +93,7 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase @Override public void onOpen(SQLiteDatabase db) { Log.i(TAG, "onOpen()"); - db.setForeignKeyConstraintsEnabled(true); - - SignalExecutors.BOUNDED.execute(() -> { - if (SignalDatabase.hasTable("key_value")) { - Log.i(TAG, "Dropping original key_value table from the main database."); - SignalDatabase.getRawDatabase().execSQL("DROP TABLE key_value"); - } - }); } @Override @@ -200,40 +186,6 @@ public class KeyValueDatabase extends SQLiteOpenHelper implements SignalDatabase return getWritableDatabase(); } - private static void migrateDataFromPreviousDatabase(@NonNull SQLiteDatabase oldDb, @NonNull SQLiteDatabase newDb) { - try (Cursor cursor = oldDb.rawQuery("SELECT * FROM key_value", null)) { - while (cursor.moveToNext()) { - int type = CursorUtil.requireInt(cursor, "type"); - ContentValues values = new ContentValues(); - values.put(KEY, CursorUtil.requireString(cursor, "key")); - values.put(TYPE, type); - - switch (type) { - case 0: - values.put(VALUE, CursorUtil.requireBlob(cursor, "value")); - break; - case 1: - values.put(VALUE, CursorUtil.requireBoolean(cursor, "value")); - break; - case 2: - values.put(VALUE, CursorUtil.requireFloat(cursor, "value")); - break; - case 3: - values.put(VALUE, CursorUtil.requireInt(cursor, "value")); - break; - case 4: - values.put(VALUE, CursorUtil.requireLong(cursor, "value")); - break; - case 5: - values.put(VALUE, CursorUtil.requireString(cursor, "value")); - break; - } - - newDb.insert(TABLE_NAME, null, values); - } - } - } - public void clear() { getWritableDatabase().delete(TABLE_NAME, null, null); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java index 8965df5442..5aca02eef7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java @@ -73,13 +73,7 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas @Override public void onCreate(SQLiteDatabase db) { Log.i(TAG, "onCreate()"); - db.execSQL(CREATE_TABLE); - - if (SignalDatabase.hasTable("megaphone")) { - Log.i(TAG, "Found old megaphone table. Migrating data."); - migrateDataFromPreviousDatabase(SignalDatabase.getRawDatabase(), db); - } } @Override @@ -90,15 +84,7 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas @Override public void onOpen(SQLiteDatabase db) { Log.i(TAG, "onOpen()"); - db.setForeignKeyConstraintsEnabled(true); - - SignalExecutors.BOUNDED.execute(() -> { - if (SignalDatabase.hasTable("megaphone")) { - Log.i(TAG, "Dropping original megaphone table from the main database."); - SignalDatabase.getRawDatabase().execSQL("DROP TABLE megaphone"); - } - }); } public void insert(@NonNull Collection events) { @@ -201,20 +187,4 @@ public class MegaphoneDatabase extends SQLiteOpenHelper implements SignalDatabas public @NonNull SQLiteDatabase getSqlCipherDatabase() { return getWritableDatabase(); } - - private static void migrateDataFromPreviousDatabase(@NonNull SQLiteDatabase oldDb, @NonNull SQLiteDatabase newDb) { - try (Cursor cursor = oldDb.rawQuery("SELECT * FROM megaphone", null)) { - while (cursor.moveToNext()) { - ContentValues values = new ContentValues(); - - values.put(EVENT, CursorUtil.requireString(cursor, "event")); - values.put(SEEN_COUNT, CursorUtil.requireInt(cursor, "seen_count")); - values.put(LAST_SEEN, CursorUtil.requireLong(cursor, "last_seen")); - values.put(FIRST_VISIBLE, CursorUtil.requireLong(cursor, "first_visible")); - values.put(FINISHED, CursorUtil.requireInt(cursor, "finished")); - - newDb.insert(TABLE_NAME, null, values); - } - } - } }