Add index for scheduled message queries.
This commit is contained in:
parent
595364b522
commit
65082893db
@ -320,6 +320,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
private const val INDEX_STARRED = "message_starred_index"
|
||||
private const val INDEX_NOTIFICATION_STATE = "message_notification_state_index"
|
||||
private const val INDEX_RATE_LIMITED = "message_rate_limited_index"
|
||||
private const val INDEX_SCHEDULED_NON_STORY = "message_scheduled_non_story_index"
|
||||
|
||||
@JvmField
|
||||
val CREATE_INDEXS = arrayOf(
|
||||
@ -356,7 +357,8 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
"CREATE INDEX IF NOT EXISTS $INDEX_NOTIFICATION_STATE ON $TABLE_NAME ($DATE_RECEIVED) WHERE $NOTIFIED = 0 AND $STORY_TYPE = 0 AND $LATEST_REVISION_ID IS NULL",
|
||||
"CREATE INDEX IF NOT EXISTS message_expire_started_index ON $TABLE_NAME ($EXPIRE_STARTED) WHERE $EXPIRE_STARTED > 0",
|
||||
"CREATE INDEX IF NOT EXISTS message_view_once_index ON $TABLE_NAME ($VIEW_ONCE) WHERE $VIEW_ONCE > 0",
|
||||
"CREATE INDEX IF NOT EXISTS $INDEX_RATE_LIMITED ON $TABLE_NAME ($ID) WHERE ($TYPE & ${MessageTypes.MESSAGE_RATE_LIMITED_BIT}) != 0"
|
||||
"CREATE INDEX IF NOT EXISTS $INDEX_RATE_LIMITED ON $TABLE_NAME ($ID) WHERE ($TYPE & ${MessageTypes.MESSAGE_RATE_LIMITED_BIT}) != 0",
|
||||
"CREATE INDEX IF NOT EXISTS $INDEX_SCHEDULED_NON_STORY ON $TABLE_NAME ($SCHEDULED_DATE) WHERE $STORY_TYPE = 0 AND $PARENT_STORY_ID <= 0 AND $SCHEDULED_DATE != -1"
|
||||
)
|
||||
|
||||
private val MMS_PROJECTION_BASE = arrayOf(
|
||||
@ -5722,8 +5724,8 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
fun getScheduledMessagesBefore(time: Long): List<MessageRecord> {
|
||||
val cursor = readableDatabase
|
||||
.select(*MMS_PROJECTION)
|
||||
.from(TABLE_NAME)
|
||||
.where("$STORY_TYPE = ? AND $PARENT_STORY_ID <= ? AND $SCHEDULED_DATE != ? AND $SCHEDULED_DATE <= ?", 0, 0, -1, time)
|
||||
.from("$TABLE_NAME INDEXED BY $INDEX_SCHEDULED_NON_STORY")
|
||||
.where("$STORY_TYPE = 0 AND $PARENT_STORY_ID <= 0 AND $SCHEDULED_DATE != -1 AND $SCHEDULED_DATE <= ?", time)
|
||||
.orderBy("$SCHEDULED_DATE ASC, $ID ASC")
|
||||
.run()
|
||||
|
||||
@ -5735,8 +5737,8 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
fun getOldestScheduledSendTimestamp(): MessageRecord? {
|
||||
val cursor = readableDatabase
|
||||
.select(*MMS_PROJECTION)
|
||||
.from(TABLE_NAME)
|
||||
.where("$STORY_TYPE = ? AND $PARENT_STORY_ID <= ? AND $SCHEDULED_DATE != ?", 0, 0, -1)
|
||||
.from("$TABLE_NAME INDEXED BY $INDEX_SCHEDULED_NON_STORY")
|
||||
.where("$STORY_TYPE = 0 AND $PARENT_STORY_ID <= 0 AND $SCHEDULED_DATE != -1")
|
||||
.orderBy("$SCHEDULED_DATE ASC, $ID ASC")
|
||||
.limit(1)
|
||||
.run()
|
||||
|
||||
@ -173,6 +173,7 @@ import org.thoughtcrime.securesms.database.helpers.migration.V317_AddMessageThre
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V318_AddMessageNotificationStateIndex
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V319_AddAttachmentAndMessageIndexes
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V320_AddAttachmentThumbnailFileAndUuidIndexes
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V321_AddScheduledMessageIndex
|
||||
import org.thoughtcrime.securesms.database.SQLiteDatabase as SignalSqliteDatabase
|
||||
|
||||
/**
|
||||
@ -353,10 +354,11 @@ object SignalDatabaseMigrations {
|
||||
317 to V317_AddMessageThreadDateReceivedUnreadIndex,
|
||||
318 to V318_AddMessageNotificationStateIndex,
|
||||
319 to V319_AddAttachmentAndMessageIndexes,
|
||||
320 to V320_AddAttachmentThumbnailFileAndUuidIndexes
|
||||
320 to V320_AddAttachmentThumbnailFileAndUuidIndexes,
|
||||
321 to V321_AddScheduledMessageIndex
|
||||
)
|
||||
|
||||
const val DATABASE_VERSION = 320
|
||||
const val DATABASE_VERSION = 321
|
||||
|
||||
@JvmStatic
|
||||
fun migrate(context: Application, db: SignalSqliteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
package org.thoughtcrime.securesms.database.helpers.migration
|
||||
|
||||
import android.app.Application
|
||||
import org.thoughtcrime.securesms.database.SQLiteDatabase
|
||||
|
||||
@Suppress("ClassName")
|
||||
object V321_AddScheduledMessageIndex : SignalDatabaseMigration {
|
||||
override fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
db.execSQL("CREATE INDEX IF NOT EXISTS message_scheduled_non_story_index ON message (scheduled_date) WHERE story_type = 0 AND parent_story_id <= 0 AND scheduled_date != -1")
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user