Improve message send performance.

This commit is contained in:
Greyson Parrelli 2024-03-07 09:34:54 -05:00 committed by Alex Hart
parent 9ba755da16
commit c959f41c68
2 changed files with 8 additions and 5 deletions

View file

@ -1691,7 +1691,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
val query = meaningfulQuery and isNotJoinedType
val hasMeaningfulMessages = readableDatabase
.exists(TABLE_NAME)
.exists("$TABLE_NAME INDEXED BY $INDEX_THREAD_STORY_SCHEDULED_DATE_LATEST_REVISION_ID")
.where(query.where, query.whereArgs)
.run()
@ -1705,7 +1705,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
val query = buildMeaningfulMessagesQuery(threadId)
return readableDatabase
.exists(TABLE_NAME)
.exists("$TABLE_NAME INDEXED BY $INDEX_THREAD_STORY_SCHEDULED_DATE_LATEST_REVISION_ID")
.where(query.where, query.whereArgs)
.run()
}
@ -1722,7 +1722,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
return readableDatabase
.select(ID, HAS_DELIVERY_RECEIPT, HAS_READ_RECEIPT, TYPE)
.from(TABLE_NAME)
.from("$TABLE_NAME INDEXED BY $INDEX_THREAD_STORY_SCHEDULED_DATE_LATEST_REVISION_ID")
.where(query.where, query.whereArgs)
.orderBy("$DATE_RECEIVED DESC")
.limit(1)
@ -1746,7 +1746,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
private fun buildMeaningfulMessagesQuery(threadId: Long): SqlUtil.Query {
val query = """
$THREAD_ID = ? AND
$THREAD_ID = $threadId AND
$STORY_TYPE = 0 AND
$LATEST_REVISION_ID IS NULL AND
$PARENT_STORY_ID <= 0 AND
@ -1762,7 +1762,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
)
"""
return SqlUtil.buildQuery(query, threadId)
return SqlUtil.buildQuery(query)
}
fun setNetworkFailures(messageId: Long, failures: Set<NetworkFailure?>?) {

View file

@ -26,6 +26,9 @@ class SmsDatabaseTest {
fun setup() {
val sqlCipher = TestDatabaseUtil.inMemoryDatabase {
execSQL(MessageTable.CREATE_TABLE)
MessageTable.CREATE_INDEXS.forEach {
execSQL(it)
}
}
db = sqlCipher.writableDatabase