kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix possible performance issues with reactions query.
rodzic
e94d4b64cf
commit
19c83de510
|
@ -99,8 +99,8 @@ public abstract class MessagingDatabase extends Database implements MmsSmsColumn
|
||||||
public void setReactionsSeen(long threadId) {
|
public void setReactionsSeen(long threadId) {
|
||||||
SQLiteDatabase db = databaseHelper.getWritableDatabase();
|
SQLiteDatabase db = databaseHelper.getWritableDatabase();
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
String whereClause = THREAD_ID + " = ?";
|
String whereClause = THREAD_ID + " = ? AND " + REACTIONS_UNREAD + " = ?";
|
||||||
String[] whereArgs = new String[]{String.valueOf(threadId)};
|
String[] whereArgs = new String[]{String.valueOf(threadId), "1"};
|
||||||
|
|
||||||
values.put(REACTIONS_UNREAD, 0);
|
values.put(REACTIONS_UNREAD, 0);
|
||||||
values.put(REACTIONS_LAST_SEEN, System.currentTimeMillis());
|
values.put(REACTIONS_LAST_SEEN, System.currentTimeMillis());
|
||||||
|
|
|
@ -175,6 +175,7 @@ public class MmsDatabase extends MessagingDatabase {
|
||||||
"CREATE INDEX IF NOT EXISTS mms_message_box_index ON " + TABLE_NAME + " (" + MESSAGE_BOX + ");",
|
"CREATE INDEX IF NOT EXISTS mms_message_box_index ON " + TABLE_NAME + " (" + MESSAGE_BOX + ");",
|
||||||
"CREATE INDEX IF NOT EXISTS mms_date_sent_index ON " + TABLE_NAME + " (" + DATE_SENT + ");",
|
"CREATE INDEX IF NOT EXISTS mms_date_sent_index ON " + TABLE_NAME + " (" + DATE_SENT + ");",
|
||||||
"CREATE INDEX IF NOT EXISTS mms_thread_date_index ON " + TABLE_NAME + " (" + THREAD_ID + ", " + DATE_RECEIVED + ");",
|
"CREATE INDEX IF NOT EXISTS mms_thread_date_index ON " + TABLE_NAME + " (" + THREAD_ID + ", " + DATE_RECEIVED + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS mms_reactions_unread_index ON " + TABLE_NAME + " (" + REACTIONS_UNREAD + ");"
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final String[] MMS_PROJECTION = new String[] {
|
private static final String[] MMS_PROJECTION = new String[] {
|
||||||
|
|
|
@ -138,7 +138,7 @@ public class MmsSmsDatabase extends Database {
|
||||||
|
|
||||||
public Cursor getUnread() {
|
public Cursor getUnread() {
|
||||||
String order = MmsSmsColumns.NORMALIZED_DATE_RECEIVED + " ASC";
|
String order = MmsSmsColumns.NORMALIZED_DATE_RECEIVED + " ASC";
|
||||||
String selection = MmsSmsColumns.NOTIFIED + " = 0 AND (" + MmsSmsColumns.READ + " = 0 OR " + MmsSmsColumns.REACTIONS_UNREAD + ")";
|
String selection = MmsSmsColumns.NOTIFIED + " = 0 AND (" + MmsSmsColumns.READ + " = 0 OR " + MmsSmsColumns.REACTIONS_UNREAD + " = 1)";
|
||||||
|
|
||||||
return queryTables(PROJECTION, selection, order, null);
|
return queryTables(PROJECTION, selection, order, null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,7 +110,8 @@ public class SmsDatabase extends MessagingDatabase {
|
||||||
"CREATE INDEX IF NOT EXISTS sms_read_and_notified_and_thread_id_index ON " + TABLE_NAME + "(" + READ + "," + NOTIFIED + "," + THREAD_ID + ");",
|
"CREATE INDEX IF NOT EXISTS sms_read_and_notified_and_thread_id_index ON " + TABLE_NAME + "(" + READ + "," + NOTIFIED + "," + THREAD_ID + ");",
|
||||||
"CREATE INDEX IF NOT EXISTS sms_type_index ON " + TABLE_NAME + " (" + TYPE + ");",
|
"CREATE INDEX IF NOT EXISTS sms_type_index ON " + TABLE_NAME + " (" + TYPE + ");",
|
||||||
"CREATE INDEX IF NOT EXISTS sms_date_sent_index ON " + TABLE_NAME + " (" + DATE_SENT + ");",
|
"CREATE INDEX IF NOT EXISTS sms_date_sent_index ON " + TABLE_NAME + " (" + DATE_SENT + ");",
|
||||||
"CREATE INDEX IF NOT EXISTS sms_thread_date_index ON " + TABLE_NAME + " (" + THREAD_ID + ", " + DATE_RECEIVED + ");"
|
"CREATE INDEX IF NOT EXISTS sms_thread_date_index ON " + TABLE_NAME + " (" + THREAD_ID + ", " + DATE_RECEIVED + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS sms_reactions_unread_index ON " + TABLE_NAME + " (" + REACTIONS_UNREAD + ");"
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final String[] MESSAGE_PROJECTION = new String[] {
|
private static final String[] MESSAGE_PROJECTION = new String[] {
|
||||||
|
|
|
@ -97,8 +97,9 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
|
||||||
private static final int USERNAMES = 36;
|
private static final int USERNAMES = 36;
|
||||||
private static final int REACTIONS = 37;
|
private static final int REACTIONS = 37;
|
||||||
private static final int STORAGE_SERVICE = 38;
|
private static final int STORAGE_SERVICE = 38;
|
||||||
|
private static final int REACTIONS_UNREAD_INDEX = 39;
|
||||||
|
|
||||||
private static final int DATABASE_VERSION = 38;
|
private static final int DATABASE_VERSION = 39;
|
||||||
private static final String DATABASE_NAME = "signal.db";
|
private static final String DATABASE_NAME = "signal.db";
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
|
@ -673,6 +674,11 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (oldVersion < REACTIONS_UNREAD_INDEX) {
|
||||||
|
db.execSQL("CREATE INDEX IF NOT EXISTS sms_reactions_unread_index ON sms (reactions_unread);");
|
||||||
|
db.execSQL("CREATE INDEX IF NOT EXISTS mms_reactions_unread_index ON mms (reactions_unread);");
|
||||||
|
}
|
||||||
|
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
} finally {
|
} finally {
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
|
|
Ładowanie…
Reference in New Issue