summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Fang <quxiangfang@google.com>2021-07-12 12:53:01 -0700
committerJoe Hsu <joehsu@google.com>2021-07-13 11:11:52 +0000
commit19b4cae79283b8bcb059833ae29e53267ab4f858 (patch)
tree967802a607074ebde21e7a4bdf234df33f7a6972
parent65400af12058267d381318f1a4fb0105d22dfbfa (diff)
downloadTvProvider-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.java49
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 "