diff options
author | Henry Fang <quxiangfang@google.com> | 2021-07-12 12:53:01 -0700 |
---|---|---|
committer | Joe Hsu <joehsu@google.com> | 2021-07-13 11:11:52 +0000 |
commit | 19b4cae79283b8bcb059833ae29e53267ab4f858 (patch) | |
tree | 967802a607074ebde21e7a4bdf234df33f7a6972 | |
parent | 65400af12058267d381318f1a4fb0105d22dfbfa (diff) | |
download | TvProvider-19b4cae79283b8bcb059833ae29e53267ab4f858.tar.gz |
check whether the column exist before add it during db migration.
some APK manually added columns of next release to current release, and caused error in db migration
when framework update to next release.
bug: 191951969
Test: manually
Flash the device to Q (7524557); Execute ota process with the change;
Observe that the home page doesn't show "Unable to load Home"
Change-Id: Ic183b2c455c0f67732bdff53bcfa8e90ded12e23
-rw-r--r-- | src/com/android/providers/tv/TvProvider.java | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/src/com/android/providers/tv/TvProvider.java b/src/com/android/providers/tv/TvProvider.java index ebd3a5f..c0e5fc5 100644 --- a/src/com/android/providers/tv/TvProvider.java +++ b/src/com/android/providers/tv/TvProvider.java @@ -1033,20 +1033,41 @@ public class TvProvider extends ContentProvider { } } if (oldVersion <= 35) { - db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " - + Channels.COLUMN_GLOBAL_CONTENT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " - + Programs.COLUMN_EVENT_ID + " INTEGER NOT NULL DEFAULT 0;"); - db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " - + Programs.COLUMN_GLOBAL_CONTENT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " - + Programs.COLUMN_SPLIT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + RECORDED_PROGRAMS_TABLE + " ADD " - + RecordedPrograms.COLUMN_SPLIT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + PREVIEW_PROGRAMS_TABLE + " ADD " - + PreviewPrograms.COLUMN_SPLIT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + WATCH_NEXT_PROGRAMS_TABLE + " ADD " - + WatchNextPrograms.COLUMN_SPLIT_ID + " TEXT;"); + if (!getColumnNames(db, CHANNELS_TABLE) + .contains(Channels.COLUMN_GLOBAL_CONTENT_ID)) { + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_GLOBAL_CONTENT_ID+ " TEXT;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_EVENT_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_EVENT_ID + " INTEGER NOT NULL DEFAULT 0;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_GLOBAL_CONTENT_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_GLOBAL_CONTENT_ID + " TEXT;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_SPLIT_ID + " TEXT;"); + } + if (!getColumnNames(db, RECORDED_PROGRAMS_TABLE) + .contains(RecordedPrograms.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + RECORDED_PROGRAMS_TABLE + " ADD " + + RecordedPrograms.COLUMN_SPLIT_ID + " TEXT;"); + } + if (!getColumnNames(db, PREVIEW_PROGRAMS_TABLE) + .contains(PreviewPrograms.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + PREVIEW_PROGRAMS_TABLE + " ADD " + + PreviewPrograms.COLUMN_SPLIT_ID + " TEXT;"); + } + if (!getColumnNames(db, WATCH_NEXT_PROGRAMS_TABLE) + .contains(WatchNextPrograms.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + WATCH_NEXT_PROGRAMS_TABLE + " ADD " + + WatchNextPrograms.COLUMN_SPLIT_ID + " TEXT;"); + } } if (oldVersion <= 36) { db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " |