update null-check for duplicates, and add matching indexes to name and email columns
This commit is contained in:
@@ -54,7 +54,7 @@ import java.io.IOException;
|
|||||||
*/
|
*/
|
||||||
public class KeychainDatabase extends SQLiteOpenHelper {
|
public class KeychainDatabase extends SQLiteOpenHelper {
|
||||||
private static final String DATABASE_NAME = "openkeychain.db";
|
private static final String DATABASE_NAME = "openkeychain.db";
|
||||||
private static final int DATABASE_VERSION = 15;
|
private static final int DATABASE_VERSION = 16;
|
||||||
static Boolean apgHack = false;
|
static Boolean apgHack = false;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
@@ -311,6 +311,13 @@ public class KeychainDatabase extends SQLiteOpenHelper {
|
|||||||
db.execSQL("ALTER TABLE user_packets ADD COLUMN name TEXT");
|
db.execSQL("ALTER TABLE user_packets ADD COLUMN name TEXT");
|
||||||
db.execSQL("ALTER TABLE user_packets ADD COLUMN email TEXT");
|
db.execSQL("ALTER TABLE user_packets ADD COLUMN email TEXT");
|
||||||
db.execSQL("ALTER TABLE user_packets ADD COLUMN comment TEXT");
|
db.execSQL("ALTER TABLE user_packets ADD COLUMN comment TEXT");
|
||||||
|
case 15:
|
||||||
|
db.execSQL("CREATE INDEX uids_by_name ON user_packets (name COLLATE NOCASE)");
|
||||||
|
db.execSQL("CREATE INDEX uids_by_email ON user_packets (email COLLATE NOCASE)");
|
||||||
|
if (oldVersion == 14) {
|
||||||
|
// no consolidate necessary
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// always do consolidate after upgrade
|
// always do consolidate after upgrade
|
||||||
|
|||||||
@@ -312,15 +312,14 @@ public class KeychainProvider extends ContentProvider {
|
|||||||
projectionMap.put(KeyRings.EMAIL, Tables.USER_PACKETS + "." + UserPackets.EMAIL);
|
projectionMap.put(KeyRings.EMAIL, Tables.USER_PACKETS + "." + UserPackets.EMAIL);
|
||||||
projectionMap.put(KeyRings.COMMENT, Tables.USER_PACKETS + "." + UserPackets.COMMENT);
|
projectionMap.put(KeyRings.COMMENT, Tables.USER_PACKETS + "." + UserPackets.COMMENT);
|
||||||
projectionMap.put(KeyRings.HAS_DUPLICATE_USER_ID,
|
projectionMap.put(KeyRings.HAS_DUPLICATE_USER_ID,
|
||||||
"(EXISTS (SELECT * FROM " + Tables.USER_PACKETS + " AS dups"
|
"(EXISTS (SELECT * FROM " + Tables.USER_PACKETS + " AS dups"
|
||||||
+ " WHERE dups." + UserPackets.MASTER_KEY_ID
|
+ " WHERE dups." + UserPackets.MASTER_KEY_ID
|
||||||
+ " != " + Tables.KEYS + "." + Keys.MASTER_KEY_ID
|
+ " != " + Tables.KEYS + "." + Keys.MASTER_KEY_ID
|
||||||
+ " AND dups." + UserPackets.RANK + " = 0"
|
+ " AND dups." + UserPackets.RANK + " = 0"
|
||||||
+ " AND (dups." + UserPackets.USER_ID + " = " + Tables.USER_PACKETS + "." + UserPackets.USER_ID + " COLLATE NOCASE"
|
+ " AND dups." + UserPackets.NAME
|
||||||
+ " OR (dups." + UserPackets.NAME + " = " + Tables.USER_PACKETS + "." + UserPackets.NAME + " COLLATE NOCASE"
|
+ " = " + Tables.USER_PACKETS + "." + UserPackets.NAME + " COLLATE NOCASE"
|
||||||
+ " AND dups." + UserPackets.EMAIL + " = " + Tables.USER_PACKETS + "." + UserPackets.EMAIL + " COLLATE NOCASE"
|
+ " AND dups." + UserPackets.EMAIL
|
||||||
+ ")"
|
+ " = " + Tables.USER_PACKETS + "." + UserPackets.EMAIL + " COLLATE NOCASE"
|
||||||
+ ")"
|
|
||||||
+ ")) AS " + KeyRings.HAS_DUPLICATE_USER_ID);
|
+ ")) AS " + KeyRings.HAS_DUPLICATE_USER_ID);
|
||||||
projectionMap.put(KeyRings.VERIFIED, Tables.CERTS + "." + Certs.VERIFIED);
|
projectionMap.put(KeyRings.VERIFIED, Tables.CERTS + "." + Certs.VERIFIED);
|
||||||
projectionMap.put(KeyRings.PUBKEY_DATA,
|
projectionMap.put(KeyRings.PUBKEY_DATA,
|
||||||
|
|||||||
Reference in New Issue
Block a user