Attempt to fix SQLite crash in migration.
This commit is contained in:
parent
4990778a97
commit
21a8434e4d
3 changed files with 20 additions and 5 deletions
|
@ -20,6 +20,7 @@ import org.signal.core.util.requireInt
|
|||
import org.signal.core.util.requireLong
|
||||
import org.signal.core.util.requireString
|
||||
import org.signal.core.util.select
|
||||
import org.signal.core.util.toSingleLine
|
||||
import org.signal.core.util.update
|
||||
import org.signal.core.util.withinTransaction
|
||||
import org.signal.libsignal.zkgroup.InvalidInputException
|
||||
|
@ -1639,10 +1640,6 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
|
|||
return Reader(cursor)
|
||||
}
|
||||
|
||||
private fun String.toSingleLine(): String {
|
||||
return this.trimIndent().split("\n").joinToString(separator = " ")
|
||||
}
|
||||
|
||||
private fun ConversationFilter.toQuery(): String {
|
||||
return when (this) {
|
||||
ConversationFilter.OFF -> ""
|
||||
|
|
|
@ -7,6 +7,7 @@ import org.signal.core.util.delete
|
|||
import org.signal.core.util.logging.Log
|
||||
import org.signal.core.util.readToList
|
||||
import org.signal.core.util.requireLong
|
||||
import org.signal.core.util.toSingleLine
|
||||
import org.signal.core.util.update
|
||||
|
||||
/**
|
||||
|
@ -49,7 +50,7 @@ object V166_ThreadAndMessageForeignKeys : SignalDatabaseMigration {
|
|||
COUNT(*) AS thread_count
|
||||
FROM thread
|
||||
GROUP BY thread_recipient_id HAVING thread_count > 1
|
||||
""".trimMargin()
|
||||
""".toSingleLine()
|
||||
).use { cursor ->
|
||||
while (cursor.moveToNext()) {
|
||||
val recipientId = cursor.requireLong("thread_recipient_id")
|
||||
|
|
|
@ -21,3 +21,20 @@ fun String.asListContains(item: String): Boolean {
|
|||
.map { it.substring(0, it.length - 1) }
|
||||
.any { item.startsWith(it) }
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns a multi-line string into a single-line string stripped of indentation, separated by spaces instead of newlines.
|
||||
*
|
||||
* e.g.
|
||||
*
|
||||
* a
|
||||
* b
|
||||
* c
|
||||
*
|
||||
* turns into
|
||||
*
|
||||
* a b c
|
||||
*/
|
||||
fun String.toSingleLine(): String {
|
||||
return this.trimIndent().split("\n").joinToString(separator = " ")
|
||||
}
|
Loading…
Add table
Reference in a new issue