From c959f41c681bdd7f58122ac5aa2b53bc562ea8a3 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 7 Mar 2024 09:34:54 -0500 Subject: [PATCH] Improve message send performance. --- .../thoughtcrime/securesms/database/MessageTable.kt | 10 +++++----- .../thoughtcrime/securesms/database/SmsDatabaseTest.kt | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index 049e5819ff..67e04562e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -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?) { diff --git a/app/src/test/java/org/thoughtcrime/securesms/database/SmsDatabaseTest.kt b/app/src/test/java/org/thoughtcrime/securesms/database/SmsDatabaseTest.kt index a07f5db505..e81e6e3ffe 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/database/SmsDatabaseTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/database/SmsDatabaseTest.kt @@ -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