mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-25 09:17:44 +00:00
Fix crash in backup restore related to sqlite_sequence.
The new JobManager stuff created a table that had an auto-incrementing ID, which was incorrectly being backed up and restored, causing a crash. Now we skip it on both import and export.
This commit is contained in:
parent
2701607810
commit
128da6db04
@ -84,7 +84,8 @@ public class FullBackupExporter extends FullBackupBase {
|
|||||||
!table.equals(OneTimePreKeyDatabase.TABLE_NAME) &&
|
!table.equals(OneTimePreKeyDatabase.TABLE_NAME) &&
|
||||||
!table.equals(SessionDatabase.TABLE_NAME) &&
|
!table.equals(SessionDatabase.TABLE_NAME) &&
|
||||||
!table.startsWith(SearchDatabase.SMS_FTS_TABLE_NAME) &&
|
!table.startsWith(SearchDatabase.SMS_FTS_TABLE_NAME) &&
|
||||||
!table.startsWith(SearchDatabase.MMS_FTS_TABLE_NAME))
|
!table.startsWith(SearchDatabase.MMS_FTS_TABLE_NAME) &&
|
||||||
|
!table.startsWith("sqlite_"))
|
||||||
{
|
{
|
||||||
count = exportTable(table, input, outputStream, null, null, count);
|
count = exportTable(table, input, outputStream, null, null, count);
|
||||||
}
|
}
|
||||||
|
@ -109,8 +109,9 @@ public class FullBackupImporter extends FullBackupBase {
|
|||||||
private static void processStatement(@NonNull SQLiteDatabase db, SqlStatement statement) {
|
private static void processStatement(@NonNull SQLiteDatabase db, SqlStatement statement) {
|
||||||
boolean isForSmsFtsSecretTable = statement.getStatement().contains(SearchDatabase.SMS_FTS_TABLE_NAME + "_");
|
boolean isForSmsFtsSecretTable = statement.getStatement().contains(SearchDatabase.SMS_FTS_TABLE_NAME + "_");
|
||||||
boolean isForMmsFtsSecretTable = statement.getStatement().contains(SearchDatabase.MMS_FTS_TABLE_NAME + "_");
|
boolean isForMmsFtsSecretTable = statement.getStatement().contains(SearchDatabase.MMS_FTS_TABLE_NAME + "_");
|
||||||
|
boolean isForSqliteSecretTable = statement.getStatement().toLowerCase().startsWith("create table sqlite_");
|
||||||
|
|
||||||
if (isForSmsFtsSecretTable || isForMmsFtsSecretTable) {
|
if (isForSmsFtsSecretTable || isForMmsFtsSecretTable || isForSqliteSecretTable) {
|
||||||
Log.i(TAG, "Ignoring import for statement: " + statement.getStatement());
|
Log.i(TAG, "Ignoring import for statement: " + statement.getStatement());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -165,7 +166,7 @@ public class FullBackupImporter extends FullBackupBase {
|
|||||||
String name = cursor.getString(0);
|
String name = cursor.getString(0);
|
||||||
String type = cursor.getString(1);
|
String type = cursor.getString(1);
|
||||||
|
|
||||||
if ("table".equals(type)) {
|
if ("table".equals(type) && !name.startsWith("sqlite_")) {
|
||||||
db.execSQL("DROP TABLE IF EXISTS " + name);
|
db.execSQL("DROP TABLE IF EXISTS " + name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user