Empty draft created on deleting a group MMS message
Bug 7360609
Cleanup pdu table on db upgrade to remove all rows with a NULL threadId.
An earlier change made sure we only inserted rows with a valid threadId or
with 0. A NULL threadId in the pdu table causes deleting a thread to fail.
Change-Id: I38824aa879fed80fe2385633c46d3c7eab0ae3b8
diff --git a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
index 80473d1..036cad2 100644
--- a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
+++ b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
@@ -215,7 +215,7 @@
private static boolean sFakeLowStorageTest = false; // for testing only
static final String DATABASE_NAME = "mmssms.db";
- static final int DATABASE_VERSION = 56;
+ static final int DATABASE_VERSION = 57;
private final Context mContext;
private LowStorageMonitor mLowStorageMonitor;
@@ -1257,6 +1257,22 @@
} finally {
db.endTransaction();
}
+ // fall through
+ case 56:
+ if (currentVersion <= 56) {
+ return;
+ }
+
+ db.beginTransaction();
+ try {
+ upgradeDatabaseToVersion57(db);
+ db.setTransactionSuccessful();
+ } catch (Throwable ex) {
+ Log.e(TAG, ex.getMessage(), ex);
+ break;
+ } finally {
+ db.endTransaction();
+ }
return;
}
@@ -1453,6 +1469,11 @@
" INTEGER DEFAULT 0");
}
+ private void upgradeDatabaseToVersion57(SQLiteDatabase db) {
+ // Clear out bad rows, those with empty threadIds, from the pdu table.
+ db.execSQL("DELETE FROM " + MmsProvider.TABLE_PDU + " WHERE " + Mms.THREAD_ID + " IS NULL");
+ }
+
@Override
public synchronized SQLiteDatabase getWritableDatabase() {
SQLiteDatabase db = super.getWritableDatabase();