mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-05-14 15:08:21 +00:00
Crash proof database: reset if error occurs
This commit is contained in:
parent
c8fd5da2da
commit
e518f4cef8
@ -38,15 +38,21 @@ public class RepoDatabaseHelper extends SQLiteOpenHelper {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
if (oldVersion < 3) {
|
try {
|
||||||
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
|
if (oldVersion < 3) {
|
||||||
db.execSQL(
|
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
|
||||||
"CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " " +
|
db.execSQL(
|
||||||
"(id TEXT, name TEXT, version TEXT, versionCode INT, minMagisk INT, " +
|
"CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " " +
|
||||||
"author TEXT, description TEXT, repo_name TEXT, last_update INT, " +
|
"(id TEXT, name TEXT, version TEXT, versionCode INT, minMagisk INT, " +
|
||||||
"PRIMARY KEY(id))");
|
"author TEXT, description TEXT, repo_name TEXT, last_update INT, " +
|
||||||
mm.prefs.edit().remove(Const.Key.ETAG_KEY).apply();
|
"PRIMARY KEY(id))");
|
||||||
oldVersion = 3;
|
mm.prefs.edit().remove(Const.Key.ETAG_KEY).apply();
|
||||||
|
oldVersion = 3;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// Reset database
|
||||||
|
onDowngrade(db, DATABASE_VER, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,49 +114,54 @@ public class SuDatabaseHelper extends SQLiteOpenHelper {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
if (oldVersion == 0) {
|
try {
|
||||||
createTables(db);
|
if (oldVersion == 0) {
|
||||||
oldVersion = 3;
|
createTables(db);
|
||||||
}
|
oldVersion = 3;
|
||||||
if (oldVersion == 1) {
|
|
||||||
// We're dropping column app_name, rename and re-construct table
|
|
||||||
db.execSQL("ALTER TABLE " + POLICY_TABLE + " RENAME TO " + POLICY_TABLE + "_old");
|
|
||||||
|
|
||||||
// Create the new tables
|
|
||||||
createTables(db);
|
|
||||||
|
|
||||||
// Migrate old data to new tables
|
|
||||||
db.execSQL(
|
|
||||||
"INSERT INTO " + POLICY_TABLE + " SELECT " +
|
|
||||||
"uid, package_name, policy, until, logging, notification " +
|
|
||||||
"FROM " + POLICY_TABLE + "_old");
|
|
||||||
db.execSQL("DROP TABLE " + POLICY_TABLE + "_old");
|
|
||||||
|
|
||||||
File oldDB = Utils.getDatabasePath(MagiskManager.get(), "sulog.db");
|
|
||||||
if (oldDB.exists()) {
|
|
||||||
migrateLegacyLogList(oldDB, db);
|
|
||||||
MagiskManager.get().deleteDatabase("sulog.db");
|
|
||||||
}
|
}
|
||||||
++oldVersion;
|
if (oldVersion == 1) {
|
||||||
}
|
// We're dropping column app_name, rename and re-construct table
|
||||||
if (oldVersion == 2) {
|
db.execSQL("ALTER TABLE " + POLICY_TABLE + " RENAME TO " + POLICY_TABLE + "_old");
|
||||||
db.execSQL("UPDATE " + LOG_TABLE + " SET time=time*1000");
|
|
||||||
++oldVersion;
|
|
||||||
}
|
|
||||||
if (oldVersion == 3) {
|
|
||||||
db.execSQL(
|
|
||||||
"CREATE TABLE IF NOT EXISTS " + STRINGS_TABLE + " " +
|
|
||||||
"(key TEXT, value TEXT, PRIMARY KEY(key))");
|
|
||||||
++oldVersion;
|
|
||||||
}
|
|
||||||
if (oldVersion == 4) {
|
|
||||||
db.execSQL("UPDATE " + POLICY_TABLE + " SET uid=uid%100000");
|
|
||||||
++oldVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Utils.itemExist(GLOBAL_DB)) {
|
// Create the new tables
|
||||||
// Hard link our DB globally
|
createTables(db);
|
||||||
Shell.su_raw("ln " + getDbFile() + " " + GLOBAL_DB);
|
|
||||||
|
// Migrate old data to new tables
|
||||||
|
db.execSQL(
|
||||||
|
"INSERT INTO " + POLICY_TABLE + " SELECT " +
|
||||||
|
"uid, package_name, policy, until, logging, notification " +
|
||||||
|
"FROM " + POLICY_TABLE + "_old");
|
||||||
|
db.execSQL("DROP TABLE " + POLICY_TABLE + "_old");
|
||||||
|
|
||||||
|
File oldDB = Utils.getDatabasePath(MagiskManager.get(), "sulog.db");
|
||||||
|
if (oldDB.exists()) {
|
||||||
|
migrateLegacyLogList(oldDB, db);
|
||||||
|
MagiskManager.get().deleteDatabase("sulog.db");
|
||||||
|
}
|
||||||
|
++oldVersion;
|
||||||
|
}
|
||||||
|
if (oldVersion == 2) {
|
||||||
|
db.execSQL("UPDATE " + LOG_TABLE + " SET time=time*1000");
|
||||||
|
++oldVersion;
|
||||||
|
}
|
||||||
|
if (oldVersion == 3) {
|
||||||
|
db.execSQL(
|
||||||
|
"CREATE TABLE IF NOT EXISTS " + STRINGS_TABLE + " " +
|
||||||
|
"(key TEXT, value TEXT, PRIMARY KEY(key))");
|
||||||
|
++oldVersion;
|
||||||
|
}
|
||||||
|
if (oldVersion == 4) {
|
||||||
|
db.execSQL("UPDATE " + POLICY_TABLE + " SET uid=uid%100000");
|
||||||
|
++oldVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Utils.itemExist(GLOBAL_DB)) {
|
||||||
|
// Hard link our DB globally
|
||||||
|
Shell.su_raw("ln " + getDbFile() + " " + GLOBAL_DB);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
onDowngrade(db, DATABASE_VER, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user