Get a big backupV2 import fully working.

This commit is contained in:
Greyson Parrelli
2024-10-10 16:01:48 -04:00
parent 0d878ca70a
commit a90df1e262
27 changed files with 261 additions and 193 deletions

View File

@@ -55,16 +55,12 @@ class NameCollisionTables(
private val PROFILE_CHANGE_TIMEOUT = 1.days
fun createTables(db: SQLiteDatabase) {
db.execSQL(NameCollisionTable.CREATE_TABLE)
db.execSQL(NameCollisionMembershipTable.CREATE_TABLE)
}
val CREATE_TABLE = arrayOf(
NameCollisionTable.CREATE_TABLE,
NameCollisionMembershipTable.CREATE_TABLE
)
fun createIndexes(db: SQLiteDatabase) {
NameCollisionMembershipTable.CREATE_INDEXES.forEach {
db.execSQL(it)
}
}
val CREATE_INDEXES = NameCollisionMembershipTable.CREATE_INDEXES
}
/**

View File

@@ -14,6 +14,7 @@ import androidx.sqlite.db.SupportSQLiteQuery;
import net.zetetic.database.sqlcipher.SQLiteStatement;
import net.zetetic.database.sqlcipher.SQLiteTransactionListener;
import org.signal.core.util.logging.Log;
import org.signal.core.util.tracing.Tracer;
import java.io.IOException;

View File

@@ -180,10 +180,11 @@ class SearchTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
writableDatabase.withinTransaction { db ->
db.execSQL(
"""
INSERT INTO $FTS_TABLE_NAME ($ID, $BODY)
INSERT INTO $FTS_TABLE_NAME ($ID, $BODY, $THREAD_ID)
SELECT
${MessageTable.ID},
${MessageTable.BODY}
${MessageTable.BODY},
${MessageTable.THREAD_ID}
FROM
${MessageTable.TABLE_NAME}
WHERE

View File

@@ -113,7 +113,7 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data
db.execSQL(CallLinkTable.CREATE_TABLE)
db.execSQL(CallTable.CREATE_TABLE)
db.execSQL(KyberPreKeyTable.CREATE_TABLE)
NameCollisionTables.createTables(db)
executeStatements(db, NameCollisionTables.CREATE_TABLE)
db.execSQL(InAppPaymentTable.CREATE_TABLE)
db.execSQL(InAppPaymentSubscriberTable.CREATE_TABLE)
executeStatements(db, SearchTable.CREATE_TABLE)
@@ -144,12 +144,11 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data
executeStatements(db, ReactionTable.CREATE_INDEXES)
executeStatements(db, KyberPreKeyTable.CREATE_INDEXES)
executeStatements(db, ChatFolderTables.CREATE_INDEXES)
executeStatements(db, NameCollisionTables.CREATE_INDEXES)
executeStatements(db, SearchTable.CREATE_TRIGGERS)
executeStatements(db, MessageSendLogTables.CREATE_TRIGGERS)
NameCollisionTables.createIndexes(db)
DistributionListTables.insertInitialDistributionListAtCreationTime(db)
ChatFolderTables.insertInitialChatFoldersAtCreationTime(db)

View File

@@ -165,16 +165,16 @@ class SqlCipherErrorHandler(private val databaseName: String) : DatabaseErrorHan
}
private fun attemptToClearFullTextSearchIndex(db: SQLiteDatabase) {
try {
try {
db.reopenReadWrite()
} catch (e: Exception) {
Log.w(TAG, "Failed to re-open as read-write!", e)
}
SignalDatabase.messageSearch.fullyResetTables(db, useTransaction = false)
} catch (e: Throwable) {
Log.w(TAG, "Failed to clear full text search index.", e)
}
// try {
// try {
// db.reopenReadWrite()
// } catch (e: Exception) {
// Log.w(TAG, "Failed to re-open as read-write!", e)
// }
// SignalDatabase.messageSearch.fullyResetTables(db, useTransaction = false)
// } catch (e: Throwable) {
// Log.w(TAG, "Failed to clear full text search index.", e)
// }
}
private sealed class DiagnosticResults(val logs: String) {