mirror of
https://github.com/oxen-io/session-android.git
synced 2025-01-02 21:27:47 +00:00
Create DB indexes for optimized queries.
This commit is contained in:
parent
3a9908b40d
commit
c5ed820590
@ -26,7 +26,8 @@ import org.thoughtcrime.securesms.crypto.MasterSecret;
|
|||||||
public class DatabaseFactory {
|
public class DatabaseFactory {
|
||||||
|
|
||||||
private static final int INTRODUCED_IDENTITIES_VERSION = 2;
|
private static final int INTRODUCED_IDENTITIES_VERSION = 2;
|
||||||
private static final int DATABASE_VERSION = 2;
|
private static final int INTRODUCED_INDEXES_VERSION = 3;
|
||||||
|
private static final int DATABASE_VERSION = 3;
|
||||||
|
|
||||||
private static final String DATABASE_NAME = "messages.db";
|
private static final String DATABASE_NAME = "messages.db";
|
||||||
private static final Object lock = new Object();
|
private static final Object lock = new Object();
|
||||||
@ -140,20 +141,42 @@ public class DatabaseFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(SQLiteDatabase db) {
|
public void onCreate(SQLiteDatabase db) {
|
||||||
db.execSQL(SmsDatabase.CREATE_TABLE);
|
db.execSQL(SmsDatabase.CREATE_TABLE);
|
||||||
db.execSQL(MmsDatabase.CREATE_TABLE);
|
db.execSQL(MmsDatabase.CREATE_TABLE);
|
||||||
db.execSQL(PartDatabase.CREATE_TABLE);
|
db.execSQL(PartDatabase.CREATE_TABLE);
|
||||||
db.execSQL(ThreadDatabase.CREATE_TABLE);
|
db.execSQL(ThreadDatabase.CREATE_TABLE);
|
||||||
db.execSQL(MmsAddressDatabase.CREATE_TABLE);
|
db.execSQL(MmsAddressDatabase.CREATE_TABLE);
|
||||||
db.execSQL(IdentityDatabase.CREATE_TABLE);
|
db.execSQL(IdentityDatabase.CREATE_TABLE);
|
||||||
|
|
||||||
|
executeStatements(db, SmsDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, MmsDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, PartDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, ThreadDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, MmsAddressDatabase.CREATE_INDEXS);
|
||||||
|
|
||||||
// db.execSQL(CanonicalAddress.CREATE_TABLE);
|
// db.execSQL(CanonicalAddress.CREATE_TABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
if (oldVersion < INTRODUCED_IDENTITIES_VERSION)
|
if (oldVersion < INTRODUCED_IDENTITIES_VERSION) {
|
||||||
db.execSQL(IdentityDatabase.CREATE_TABLE);
|
db.execSQL(IdentityDatabase.CREATE_TABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldVersion < INTRODUCED_INDEXES_VERSION) {
|
||||||
|
executeStatements(db, SmsDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, MmsDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, PartDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, ThreadDatabase.CREATE_INDEXS);
|
||||||
|
executeStatements(db, MmsAddressDatabase.CREATE_INDEXS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void executeStatements(SQLiteDatabase db, String[] statements) {
|
||||||
|
for (String statement : statements)
|
||||||
|
db.execSQL(statement);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,10 @@ public class MmsAddressDatabase extends Database {
|
|||||||
MMS_ID + " INTEGER, " + TYPE + " INTEGER, " + ADDRESS + " TEXT, " +
|
MMS_ID + " INTEGER, " + TYPE + " INTEGER, " + ADDRESS + " TEXT, " +
|
||||||
ADDRESS_CHARSET + " INTEGER);";
|
ADDRESS_CHARSET + " INTEGER);";
|
||||||
|
|
||||||
|
public static final String[] CREATE_INDEXS = {
|
||||||
|
"CREATE INDEX IF NOT EXISTS mms_addresses_mms_id_index ON " + TABLE_NAME + " (" + MMS_ID + ");",
|
||||||
|
};
|
||||||
|
|
||||||
public MmsAddressDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
public MmsAddressDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
||||||
super(context, databaseHelper);
|
super(context, databaseHelper);
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,13 @@ public class MmsDatabase extends Database {
|
|||||||
CONTENT_CLASS + " INTEGER, " + RESPONSE_TEXT + " TEXT, " + DELIVERY_TIME + " INTEGER, " +
|
CONTENT_CLASS + " INTEGER, " + RESPONSE_TEXT + " TEXT, " + DELIVERY_TIME + " INTEGER, " +
|
||||||
DELIVERY_REPORT + " INTEGER);";
|
DELIVERY_REPORT + " INTEGER);";
|
||||||
|
|
||||||
|
public static final String[] CREATE_INDEXS = {
|
||||||
|
"CREATE INDEX IF NOT EXISTS mms_thread_id_index ON " + TABLE_NAME + " (" + THREAD_ID + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS mms_read_index ON " + TABLE_NAME + " (" + READ + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS mms_read_and_thread_id_index ON " + TABLE_NAME + "(" + READ + "," + THREAD_ID + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS mms_message_box_index ON " + TABLE_NAME + " (" + MESSAGE_BOX + ");"
|
||||||
|
};
|
||||||
|
|
||||||
public MmsDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
public MmsDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
||||||
super(context, databaseHelper);
|
super(context, databaseHelper);
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,10 @@ public class PartDatabase extends Database {
|
|||||||
CONTENT_LOCATION + " TEXT, " + CONTENT_TYPE_START + " INTEGER, " +
|
CONTENT_LOCATION + " TEXT, " + CONTENT_TYPE_START + " INTEGER, " +
|
||||||
CONTENT_TYPE_TYPE + " TEXT, " + ENCRYPTED + " INTEGER, " + DATA + " TEXT);";
|
CONTENT_TYPE_TYPE + " TEXT, " + ENCRYPTED + " INTEGER, " + DATA + " TEXT);";
|
||||||
|
|
||||||
|
public static final String[] CREATE_INDEXS = {
|
||||||
|
"CREATE INDEX IF NOT EXISTS part_mms_id_index ON " + TABLE_NAME + " (" + MMS_ID + ");"
|
||||||
|
};
|
||||||
|
|
||||||
public PartDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
public PartDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
||||||
super(context, databaseHelper);
|
super(context, databaseHelper);
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@ import java.util.Set;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class SmsDatabase extends Database {
|
public class SmsDatabase extends Database {
|
||||||
public static final String TRANSPORT = "transport_type";
|
|
||||||
|
|
||||||
public static final String TABLE_NAME = "sms";
|
public static final String TABLE_NAME = "sms";
|
||||||
public static final String ID = "_id";
|
public static final String ID = "_id";
|
||||||
@ -62,6 +61,13 @@ public class SmsDatabase extends Database {
|
|||||||
TYPE + " INTEGER, " + REPLY_PATH_PRESENT + " INTEGER, " + SUBJECT + " TEXT, " + BODY + " TEXT, " +
|
TYPE + " INTEGER, " + REPLY_PATH_PRESENT + " INTEGER, " + SUBJECT + " TEXT, " + BODY + " TEXT, " +
|
||||||
SERVICE_CENTER + " TEXT);";
|
SERVICE_CENTER + " TEXT);";
|
||||||
|
|
||||||
|
public static final String[] CREATE_INDEXS = {
|
||||||
|
"CREATE INDEX IF NOT EXISTS sms_thread_id_index ON " + TABLE_NAME + " (" + THREAD_ID + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS sms_read_index ON " + TABLE_NAME + " (" + READ + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS sms_read_and_thread_id_index ON " + TABLE_NAME + "(" + READ + "," + THREAD_ID + ");",
|
||||||
|
"CREATE INDEX IF NOT EXISTS sms_type_index ON " + TABLE_NAME + " (" + TYPE + ");"
|
||||||
|
};
|
||||||
|
|
||||||
public SmsDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
public SmsDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
||||||
super(context, databaseHelper);
|
super(context, databaseHelper);
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,10 @@ public class ThreadDatabase extends Database {
|
|||||||
READ + " INTEGER DEFAULT 1, " + TYPE + " INTEGER DEFAULT 0, " + ERROR + " INTEGER DEFAULT 0, " +
|
READ + " INTEGER DEFAULT 1, " + TYPE + " INTEGER DEFAULT 0, " + ERROR + " INTEGER DEFAULT 0, " +
|
||||||
HAS_ATTACHMENT + " INTEGER DEFAULT 0);";
|
HAS_ATTACHMENT + " INTEGER DEFAULT 0);";
|
||||||
|
|
||||||
|
public static final String[] CREATE_INDEXS = {
|
||||||
|
"CREATE INDEX IF NOT EXISTS thread_recipient_ids_index ON " + TABLE_NAME + " (" + RECIPIENT_IDS + ");",
|
||||||
|
};
|
||||||
|
|
||||||
public ThreadDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
public ThreadDatabase(Context context, SQLiteOpenHelper databaseHelper) {
|
||||||
super(context, databaseHelper);
|
super(context, databaseHelper);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user