Cleaning up the contacts DB during upgrade to version 203
Bug: 2709359
Change-Id: I3912e935aba3b5ff40347616843e8caffccacead
diff --git a/src/com/android/providers/contacts/ContactsDatabaseHelper.java b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
index 6a76a0b..6a5015f 100644
--- a/src/com/android/providers/contacts/ContactsDatabaseHelper.java
+++ b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
@@ -1547,6 +1547,15 @@
}
private void upgradeToVersion203(SQLiteDatabase db) {
+ // Garbage-collect first. A bug in Eclair was sometimes leaving
+ // raw_contacts in the database that no longer had contacts associated
+ // with them. To avoid failures during this database upgrade, drop
+ // the orphaned raw_contacts.
+ db.execSQL(
+ "DELETE FROM raw_contacts" +
+ " WHERE contact_id NOT NULL" +
+ " AND contact_id NOT IN (SELECT _id FROM contacts)");
+
db.execSQL(
"ALTER TABLE " + Tables.CONTACTS +
" ADD " + Contacts.NAME_RAW_CONTACT_ID + " INTEGER REFERENCES raw_contacts(_id)");