Disable foreign key constraints during backup restore updgrades.
This commit is contained in:
parent
ae33c8db1b
commit
b988e4a813
1 changed files with 9 additions and 4 deletions
|
@ -6,7 +6,6 @@ import androidx.annotation.VisibleForTesting
|
||||||
import net.zetetic.database.sqlcipher.SQLiteOpenHelper
|
import net.zetetic.database.sqlcipher.SQLiteOpenHelper
|
||||||
import org.signal.core.util.SqlUtil
|
import org.signal.core.util.SqlUtil
|
||||||
import org.signal.core.util.logging.Log
|
import org.signal.core.util.logging.Log
|
||||||
import org.signal.core.util.withinTransaction
|
|
||||||
import org.thoughtcrime.securesms.crypto.AttachmentSecret
|
import org.thoughtcrime.securesms.crypto.AttachmentSecret
|
||||||
import org.thoughtcrime.securesms.crypto.DatabaseSecret
|
import org.thoughtcrime.securesms.crypto.DatabaseSecret
|
||||||
import org.thoughtcrime.securesms.crypto.MasterSecret
|
import org.thoughtcrime.securesms.crypto.MasterSecret
|
||||||
|
@ -281,9 +280,11 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun runPostBackupRestoreTasks(database: net.zetetic.database.sqlcipher.SQLiteDatabase) {
|
fun runPostBackupRestoreTasks(database: net.zetetic.database.sqlcipher.SQLiteDatabase) {
|
||||||
synchronized(SignalDatabase::class.java) {
|
synchronized(SignalDatabase::class.java) {
|
||||||
database.withinTransaction { db ->
|
database.setForeignKeyConstraintsEnabled(false)
|
||||||
instance!!.onUpgrade(db, db.getVersion(), -1)
|
database.beginTransaction()
|
||||||
instance!!.markCurrent(db)
|
try {
|
||||||
|
instance!!.onUpgrade(database, database.getVersion(), -1)
|
||||||
|
instance!!.markCurrent(database)
|
||||||
instance!!.messageTable.deleteAbandonedMessages()
|
instance!!.messageTable.deleteAbandonedMessages()
|
||||||
instance!!.messageTable.trimEntriesForExpiredMessages()
|
instance!!.messageTable.trimEntriesForExpiredMessages()
|
||||||
instance!!.reactionTable.deleteAbandonedReactions()
|
instance!!.reactionTable.deleteAbandonedReactions()
|
||||||
|
@ -293,6 +294,10 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data
|
||||||
instance!!.rawWritableDatabase.execSQL("DROP TABLE IF EXISTS job_spec")
|
instance!!.rawWritableDatabase.execSQL("DROP TABLE IF EXISTS job_spec")
|
||||||
instance!!.rawWritableDatabase.execSQL("DROP TABLE IF EXISTS constraint_spec")
|
instance!!.rawWritableDatabase.execSQL("DROP TABLE IF EXISTS constraint_spec")
|
||||||
instance!!.rawWritableDatabase.execSQL("DROP TABLE IF EXISTS dependency_spec")
|
instance!!.rawWritableDatabase.execSQL("DROP TABLE IF EXISTS dependency_spec")
|
||||||
|
database.setTransactionSuccessful()
|
||||||
|
} finally {
|
||||||
|
database.endTransaction()
|
||||||
|
database.setForeignKeyConstraintsEnabled(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
instance!!.rawWritableDatabase.close()
|
instance!!.rawWritableDatabase.close()
|
||||||
|
|
Loading…
Add table
Reference in a new issue