Index: chrome/browser/history/android/android_urls_database.cc |
diff --git a/chrome/browser/history/android/android_urls_database.cc b/chrome/browser/history/android/android_urls_database.cc |
index 1527b6ac415d54603f1c36e2952362943f8b9b04..e602bc6b608d70da419d7ef9e1f3f021f41f7797 100644 |
--- a/chrome/browser/history/android/android_urls_database.cc |
+++ b/chrome/browser/history/android/android_urls_database.cc |
@@ -18,7 +18,7 @@ bool AndroidURLsDatabase::CreateAndroidURLsTable() { |
const char* name = "android_urls"; |
if (!GetDB().DoesTableExist(name)) { |
std::string sql; |
- sql.append("CREATE TABLE "); |
+ sql.append("CREATE TABLE IF NOT EXISTS "); |
sky
2012/04/13 21:32:05
How come you need this if not exists? Doesn't line
michaelbai
2012/04/13 23:02:35
Yes, they are not needed.
On 2012/04/13 21:32:05,
|
sql.append(name); |
sql.append("(" |
"id INTEGER PRIMARY KEY," |
@@ -30,13 +30,13 @@ bool AndroidURLsDatabase::CreateAndroidURLsTable() { |
return false; |
} |
- if (!GetDB().Execute("CREATE INDEX android_urls_raw_url_idx" |
+ if (!GetDB().Execute("CREATE INDEX IF NOT EXISTS android_urls_raw_url_idx" |
" ON android_urls(raw_url)")) { |
LOG(ERROR) << GetDB().GetErrorMessage(); |
return false; |
} |
- if (!GetDB().Execute("CREATE INDEX android_urls_url_id_idx" |
+ if (!GetDB().Execute("CREATE INDEX IF NOT EXISTS android_urls_url_id_idx" |
" ON android_urls(url_id)")) { |
LOG(ERROR) << GetDB().GetErrorMessage(); |
return false; |
@@ -144,4 +144,25 @@ bool AndroidURLsDatabase::ClearAndroidURLRows() { |
return GetDB().Execute("DELETE FROM android_urls"); |
} |
+bool AndroidURLsDatabase::MigrateToVersion22() { |
+ if (!GetDB().DoesTableExist("android_urls")) |
+ return true; |
+ |
+ if (!GetDB().Execute("ALTER TABLE android_urls RENAME TO android_urls_tmp")) |
+ return false; |
+ |
+ if (!CreateAndroidURLsTable()) |
+ return false; |
+ |
+ if (!GetDB().Execute( |
+ "INSERT INTO android_urls (id, raw_url, url_id) " |
+ "SELECT id, raw_url, url_id FROM android_urls_tmp")) |
+ return false; |
+ |
+ if (!GetDB().Execute("DROP TABLE android_urls_tmp")) |
+ return false; |
+ |
+ return true; |
+} |
+ |
} // namespace history |