if (!recreateWorkspaceTable(db)) {
break;
}
- case 22: {
+ case 22:
+ case 23:
if (!addIntegerColumn(db, Favorites.OPTIONS, 0)) {
// Old version remains, which means we wipe old data
break;
// Old version remains, which means we wipe old data
break;
}
- }
- case 23:
- // No-op
case 24:
ManagedProfileHeuristic.markExistingUsersForNoFolderCreation(mContext);
case 25:
"com.android.camera.CameraLauncher");
}
case 28: {
- db.beginTransaction();
- try {
- db.execSQL("ALTER TABLE favorites " +
- "ADD COLUMN subType INTEGER DEFAULT 0;");
- db.setTransactionSuccessful();
- db.endTransaction();
- return;
- } catch (SQLException ex) {
+ if (!ensureSubTypeColumn(db)) {
// Old version remains, which means we wipe old data
- Log.e(TAG, ex.getMessage(), ex);
- db.endTransaction();
+ break;
}
+ return;
}
}
return true;
}
+ @Thunk boolean ensureSubTypeColumn(SQLiteDatabase db) {
+ Cursor c = null;
+ try {
+ // Make sure subType exists
+ c = db.rawQuery("SELECT subType FROM favorites;", null);
+ } catch (SQLException ex) {
+ Log.e(TAG, ex.getMessage(), ex);
+ return addIntegerColumn(db, "subType", 0);
+ } finally {
+ if (c != null) {
+ c.close();
+ }
+ }
+ return true;
+ }
+
private boolean addProfileColumn(SQLiteDatabase db) {
UserManagerCompat userManager = UserManagerCompat.getInstance(mContext);
// Default to the serial number of this user, for older