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