Upgrade step to fill raw_contacts.last_time_contacted.
Replace raw_contacts.last_time_contacted with data_usage_stat.last_time_used
if it's bigger.
Bug 6326418
Change-Id: I052a7fb92e69cf35f8e37a9be1b074f480e96071
diff --git a/src/com/android/providers/contacts/ContactsDatabaseHelper.java b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
index 1f6c966..5ca4394 100644
--- a/src/com/android/providers/contacts/ContactsDatabaseHelper.java
+++ b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
@@ -108,7 +108,7 @@
* 700-799 Jelly Bean
* </pre>
*/
- static final int DATABASE_VERSION = 700;
+ static final int DATABASE_VERSION = 701;
private static final String DATABASE_NAME = "contacts2.db";
private static final String DATABASE_PRESENCE = "presence_db";
@@ -2375,6 +2375,11 @@
oldVersion = 700;
}
+ if (oldVersion < 701) {
+ upgradeToVersion701(db);
+ oldVersion = 701;
+ }
+
if (upgradeViewsAndTriggers) {
createContactsViews(db);
createGroupsView(db);
@@ -3685,6 +3690,17 @@
db.execSQL(sb.toString());
}
+ private void upgradeToVersion701(SQLiteDatabase db) {
+ db.execSQL("UPDATE raw_contacts SET last_time_contacted =" +
+ " max(ifnull(last_time_contacted, 0), " +
+ " ifnull((SELECT max(last_time_used) " +
+ " FROM data JOIN data_usage_stat ON (data._id = data_usage_stat.data_id)" +
+ " WHERE data.raw_contact_id = raw_contacts._id), 0))");
+ // Replace 0 with null. This isn't really necessary, but we do this anyway for consistency.
+ db.execSQL("UPDATE raw_contacts SET last_time_contacted = null" +
+ " where last_time_contacted = 0");
+ }
+
public String extractHandleFromEmailAddress(String email) {
Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(email);
if (tokens.length == 0) {