Remove very old database migration.

The migration was done over 4.5 years ago and has been causing random
problems ever since.
This commit is contained in:
Greyson Parrelli 2024-10-01 16:22:17 -04:00
parent d2ba42074f
commit bfe9fb6679
3 changed files with 0 additions and 152 deletions

View file

@ -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)
}
}
}
}
}

View file

@ -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);
}

View file

@ -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<Event> 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);
}
}
}
}