Attempt to fix SQLite crash in migration.

main
Greyson Parrelli 2022-12-13 10:59:27 -05:00
rodzic 4990778a97
commit 21a8434e4d
3 zmienionych plików z 20 dodań i 5 usunięć

Wyświetl plik

@ -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 -> ""

Wyświetl plik

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

Wyświetl plik

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