kopia lustrzana https://github.com/ryukoposting/Signal-Android
Attempt to fix SQLite crash in migration.
rodzic
4990778a97
commit
21a8434e4d
|
@ -20,6 +20,7 @@ import org.signal.core.util.requireInt
|
||||||
import org.signal.core.util.requireLong
|
import org.signal.core.util.requireLong
|
||||||
import org.signal.core.util.requireString
|
import org.signal.core.util.requireString
|
||||||
import org.signal.core.util.select
|
import org.signal.core.util.select
|
||||||
|
import org.signal.core.util.toSingleLine
|
||||||
import org.signal.core.util.update
|
import org.signal.core.util.update
|
||||||
import org.signal.core.util.withinTransaction
|
import org.signal.core.util.withinTransaction
|
||||||
import org.signal.libsignal.zkgroup.InvalidInputException
|
import org.signal.libsignal.zkgroup.InvalidInputException
|
||||||
|
@ -1639,10 +1640,6 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
|
||||||
return Reader(cursor)
|
return Reader(cursor)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun String.toSingleLine(): String {
|
|
||||||
return this.trimIndent().split("\n").joinToString(separator = " ")
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun ConversationFilter.toQuery(): String {
|
private fun ConversationFilter.toQuery(): String {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
ConversationFilter.OFF -> ""
|
ConversationFilter.OFF -> ""
|
||||||
|
|
|
@ -7,6 +7,7 @@ import org.signal.core.util.delete
|
||||||
import org.signal.core.util.logging.Log
|
import org.signal.core.util.logging.Log
|
||||||
import org.signal.core.util.readToList
|
import org.signal.core.util.readToList
|
||||||
import org.signal.core.util.requireLong
|
import org.signal.core.util.requireLong
|
||||||
|
import org.signal.core.util.toSingleLine
|
||||||
import org.signal.core.util.update
|
import org.signal.core.util.update
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,7 +50,7 @@ object V166_ThreadAndMessageForeignKeys : SignalDatabaseMigration {
|
||||||
COUNT(*) AS thread_count
|
COUNT(*) AS thread_count
|
||||||
FROM thread
|
FROM thread
|
||||||
GROUP BY thread_recipient_id HAVING thread_count > 1
|
GROUP BY thread_recipient_id HAVING thread_count > 1
|
||||||
""".trimMargin()
|
""".toSingleLine()
|
||||||
).use { cursor ->
|
).use { cursor ->
|
||||||
while (cursor.moveToNext()) {
|
while (cursor.moveToNext()) {
|
||||||
val recipientId = cursor.requireLong("thread_recipient_id")
|
val recipientId = cursor.requireLong("thread_recipient_id")
|
||||||
|
|
|
@ -21,3 +21,20 @@ fun String.asListContains(item: String): Boolean {
|
||||||
.map { it.substring(0, it.length - 1) }
|
.map { it.substring(0, it.length - 1) }
|
||||||
.any { item.startsWith(it) }
|
.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 = " ")
|
||||||
|
}
|
Ładowanie…
Reference in New Issue