Skip to content

Commit

Permalink
Deprecate old Favicons database versions.
Browse files Browse the repository at this point in the history
Histograms show a non-zero number of users with very old databases at
startup.  These old databases likely result from some sort of
corruption or filesystem problem, and are unlikely to spontaneously
progress forward.  Since the number of databases involved is very low
(<.03% of users), just delete them in hopes that that allows forward
progress.

Arbitrarily set a 2-year deprecation deadline for this database.  This
is a few weeks early, as version 5 landed on 2011-10-12.

BUG=240396

Review URL: https://codereview.chromium.org/24443002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227433 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
shess@chromium.org committed Oct 8, 2013
1 parent f8feb29 commit fe4e3de
Show file tree
Hide file tree
Showing 17 changed files with 286 additions and 342 deletions.
40 changes: 20 additions & 20 deletions chrome/browser/history/android/android_provider_backend_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ TEST_F(AndroidProviderBackendTest, UpdateTables) {
ASSERT_TRUE(base::PathExists(thumbnail_db_name_));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
// Set url1 as bookmark.
AddBookmark(url1);
scoped_ptr<AndroidProviderBackend> backend(
Expand Down Expand Up @@ -415,7 +415,7 @@ TEST_F(AndroidProviderBackendTest, QueryHistoryAndBookmarks) {
ASSERT_TRUE(base::PathExists(thumbnail_db_name_));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
// Set url1 as bookmark.
AddBookmark(url1);

Expand Down Expand Up @@ -504,7 +504,7 @@ TEST_F(AndroidProviderBackendTest, InsertHistoryAndBookmark) {
row2.set_favicon(base::RefCountedBytes::TakeVector(&data));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -612,7 +612,7 @@ TEST_F(AndroidProviderBackendTest, DeleteHistoryAndBookmarks) {
row2.set_favicon(base::RefCountedBytes::TakeVector(&data));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));

scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
Expand Down Expand Up @@ -709,7 +709,7 @@ TEST_F(AndroidProviderBackendTest, DeleteHistoryAndBookmarks) {

TEST_F(AndroidProviderBackendTest, IsValidHistoryAndBookmarkRow) {
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -799,7 +799,7 @@ TEST_F(AndroidProviderBackendTest, UpdateURL) {
row2.set_favicon(base::RefCountedBytes::TakeVector(&data));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -978,7 +978,7 @@ TEST_F(AndroidProviderBackendTest, UpdateVisitCount) {
row2.set_favicon(base::RefCountedBytes::TakeVector(&data));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1058,7 +1058,7 @@ TEST_F(AndroidProviderBackendTest, UpdateLastVisitTime) {
row2.set_favicon(base::RefCountedBytes::TakeVector(&data));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1119,7 +1119,7 @@ TEST_F(AndroidProviderBackendTest, UpdateFavicon) {
row1.set_title(UTF8ToUTF16("cnn"));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1184,7 +1184,7 @@ TEST_F(AndroidProviderBackendTest, UpdateFavicon) {

TEST_F(AndroidProviderBackendTest, UpdateSearchTermTable) {
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1262,7 +1262,7 @@ TEST_F(AndroidProviderBackendTest, UpdateSearchTermTable) {

TEST_F(AndroidProviderBackendTest, QuerySearchTerms) {
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1295,7 +1295,7 @@ TEST_F(AndroidProviderBackendTest, QuerySearchTerms) {

TEST_F(AndroidProviderBackendTest, UpdateSearchTerms) {
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1399,7 +1399,7 @@ TEST_F(AndroidProviderBackendTest, UpdateSearchTerms) {

TEST_F(AndroidProviderBackendTest, DeleteSearchTerms) {
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1505,7 +1505,7 @@ TEST_F(AndroidProviderBackendTest, DeleteSearchTerms) {

TEST_F(AndroidProviderBackendTest, InsertSearchTerm) {
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1559,7 +1559,7 @@ TEST_F(AndroidProviderBackendTest, DeleteHistory) {
row2.set_favicon(base::RefCountedBytes::TakeVector(&data));

ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1611,7 +1611,7 @@ TEST_F(AndroidProviderBackendTest, DeleteHistory) {

TEST_F(AndroidProviderBackendTest, TestMultipleNestingTransaction) {
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1661,7 +1661,7 @@ TEST_F(AndroidProviderBackendTest, TestAndroidCTSComplianceForZeroVisitCount) {
// This is to verify the last visit time and created time are same when visit
// count is 0.
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1698,7 +1698,7 @@ TEST_F(AndroidProviderBackendTest, AndroidCTSComplianceFolderColumnExists) {
// returned when folder is 0 and the non bookmark rows returned when folder
// is 1.
ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, &history_db_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db_,
&thumbnail_db_, bookmark_model_, &delegate_));
Expand Down Expand Up @@ -1949,7 +1949,7 @@ TEST_F(AndroidProviderBackendTest, DeleteWithoutThumbnailDB) {
HistoryDatabase history_db;
ThumbnailDatabase thumbnail_db;
ASSERT_EQ(sql::INIT_OK, history_db.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db.Init(thumbnail_db_name_, &history_db));
ASSERT_EQ(sql::INIT_OK, thumbnail_db.Init(thumbnail_db_name_));

scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db,
Expand Down Expand Up @@ -2020,7 +2020,7 @@ TEST_F(AndroidProviderBackendTest, UpdateFaviconWithoutThumbnail) {
HistoryDatabase history_db;
ThumbnailDatabase thumbnail_db;
ASSERT_EQ(sql::INIT_OK, history_db.Init(history_db_name_));
ASSERT_EQ(sql::INIT_OK, thumbnail_db.Init(thumbnail_db_name_, &history_db));
ASSERT_EQ(sql::INIT_OK, thumbnail_db.Init(thumbnail_db_name_));
scoped_ptr<AndroidProviderBackend> backend(
new AndroidProviderBackend(android_cache_db_name_, &history_db,
&thumbnail_db, bookmark_model_, &delegate_));
Expand Down
2 changes: 1 addition & 1 deletion chrome/browser/history/expire_history_backend_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ class ExpireHistoryTest : public testing::Test,

base::FilePath thumb_name = path().Append(kThumbnailFile);
thumb_db_.reset(new ThumbnailDatabase);
if (thumb_db_->Init(thumb_name, main_db_.get()) != sql::INIT_OK)
if (thumb_db_->Init(thumb_name) != sql::INIT_OK)
thumb_db_.reset();

expirer_.SetDatabases(main_db_.get(), archived_db_.get(), thumb_db_.get());
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/history/history_backend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -633,8 +633,7 @@ void HistoryBackend::InitImpl(const std::string& languages) {
// renaming "thumbnail" references to "favicons" or something of the
// sort.
thumbnail_db_.reset(new ThumbnailDatabase());
if (thumbnail_db_->Init(thumbnail_name,
db_.get()) != sql::INIT_OK) {
if (thumbnail_db_->Init(thumbnail_name) != sql::INIT_OK) {
// Unlike the main database, we don't error out when the database is too
// new because this error is much less severe. Generally, this shouldn't
// happen since the thumbnail and main database versions should be in sync.
Expand Down
1 change: 0 additions & 1 deletion chrome/browser/history/history_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,6 @@ class HistoryBackend : public base::RefCountedThreadSafe<HistoryBackend>,
FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsSource);
FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsTransitions);
FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationVisitSource);
FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping);
FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
SetFaviconMappingsForPageAndRedirects);
FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
Expand Down
3 changes: 0 additions & 3 deletions chrome/browser/history/history_database.h
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,6 @@ class HistoryDatabase : public DownloadDatabase,
#endif
friend class ::HistoryQuickProviderTest;
friend class InMemoryURLIndexTest;
// This thumbnail migration test sidesteps full Init() to directly
// open |db_|.
FRIEND_TEST_ALL_PREFIXES(ThumbnailDatabaseTest, Version3);

// Overridden from URLDatabase:
virtual sql::Connection& GetDB() OVERRIDE;
Expand Down
95 changes: 28 additions & 67 deletions chrome/browser/history/thumbnail_database.cc
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,7 @@ bool InitTables(sql::Connection* db) {
"("
"id INTEGER PRIMARY KEY,"
"url LONGVARCHAR NOT NULL,"
// Set the default icon_type as FAVICON to be consistent with
// table upgrade in UpgradeToVersion4().
// default icon_type FAVICON to be consistent with past migration.
"icon_type INTEGER DEFAULT 1"
")";
if (!db->Execute(kFaviconsSql))
Expand Down Expand Up @@ -616,17 +615,26 @@ void DatabaseErrorCallback(sql::Connection* db,

namespace history {

// For this database, schema migrations are deprecated after two
// years. This means that the oldest non-deprecated version should be
// two years old or greater (thus the migrations to get there are
// older). Databases containing deprecated versions will be cleared
// at startup. Since this database is a cache, losing old data is not
// fatal (in fact, very old data may be expired immediately at startup
// anyhow).

// Version 7: 911a634d/r209424 by qsr@chromium.org on 2013-07-01
// Version 6: 610f923b/r152367 by pkotwicz@chromium.org on 2012-08-20
// Version 5: e2ee8ae9/r105004 by groby@chromium.org on 2011-10-12
// Version 4: 5f104d76/r77288 by sky@chromium.org on 2011-03-08
// Version 3: 09911bf3/r15 by initial.commit on 2008-07-26
// Version 4: 5f104d76/r77288 by sky@chromium.org on 2011-03-08 (deprecated)
// Version 3: 09911bf3/r15 by initial.commit on 2008-07-26 (deprecated)

// Version number of the database.
// NOTE(shess): When changing the version, add a new golden file for
// the new version and a test to verify that Init() works with it.
static const int kCurrentVersionNumber = 7;
static const int kCompatibleVersionNumber = 7;
static const int kDeprecatedVersionNumber = 4; // and earlier.

ThumbnailDatabase::IconMappingEnumerator::IconMappingEnumerator() {
}
Expand Down Expand Up @@ -656,13 +664,20 @@ ThumbnailDatabase::~ThumbnailDatabase() {
// The DBCloseScoper will delete the DB and the cache.
}

sql::InitStatus ThumbnailDatabase::Init(
const base::FilePath& db_name,
URLDatabase* url_db) {
sql::InitStatus ThumbnailDatabase::Init(const base::FilePath& db_name) {
sql::InitStatus status = OpenDatabase(&db_, db_name);
if (status != sql::INIT_OK)
return status;

// Clear databases which are too old to process.
DCHECK_LT(kDeprecatedVersionNumber, kCurrentVersionNumber);
sql::MetaTable::RazeIfDeprecated(&db_, kDeprecatedVersionNumber);

// TODO(shess): Sqlite.Version.Thumbnail shows versions 22, 23, and
// 25. Future versions are not destroyed because that could lead to
// data loss if the profile is opened by a later channel, but
// perhaps a heuristic like >kCurrentVersionNumber+3 could be used.

// Scope initialization in a transaction so we can't be partially initialized.
sql::Transaction transaction(&db_);
transaction.Begin();
Expand Down Expand Up @@ -693,17 +708,6 @@ sql::InitStatus ThumbnailDatabase::Init(
}

int cur_version = meta_table_.GetVersionNumber();
if (cur_version == 2) {
++cur_version;
if (!UpgradeToVersion3())
return CantUpgradeToVersion(cur_version);
}

if (cur_version == 3) {
++cur_version;
if (!UpgradeToVersion4() || !MigrateIconMappingData(url_db))
return CantUpgradeToVersion(cur_version);
}

if (!db_.DoesColumnExist("favicons", "icon_type")) {
LOG(ERROR) << "Raze because of missing favicon.icon_type";
Expand All @@ -713,12 +717,6 @@ sql::InitStatus ThumbnailDatabase::Init(
return sql::INIT_FAILURE;
}

if (cur_version == 4) {
++cur_version;
if (!UpgradeToVersion5())
return CantUpgradeToVersion(cur_version);
}

if (cur_version < 7 && !db_.DoesColumnExist("favicons", "sizes")) {
LOG(ERROR) << "Raze because of missing favicon.sizes";
RecordInvalidStructure(STRUCTURE_EVENT_VERSION5);
Expand Down Expand Up @@ -799,13 +797,6 @@ void ThumbnailDatabase::ComputeDatabaseMetrics() {
favicon_count.Step() ? favicon_count.ColumnInt(0) : 0);
}

bool ThumbnailDatabase::UpgradeToVersion3() {
// Version 3 migrated table thumbnails, which is obsolete.
meta_table_.SetVersionNumber(3);
meta_table_.SetCompatibleVersionNumber(std::min(3, kCompatibleVersionNumber));
return true;
}

bool ThumbnailDatabase::IsFaviconDBStructureIncorrect() {
return !db_.IsSQLValid("SELECT id, url, icon_type FROM favicons");
}
Expand Down Expand Up @@ -1193,20 +1184,6 @@ bool ThumbnailDatabase::InitIconMappingEnumerator(
return enumerator->statement_.is_valid();
}

bool ThumbnailDatabase::MigrateIconMappingData(URLDatabase* url_db) {
URLDatabase::IconMappingEnumerator e;
if (!url_db->InitIconMappingEnumeratorForEverything(&e))
return false;

IconMapping info;
while (e.GetNextIconMapping(&info)) {
// TODO: Using bulk insert to improve the performance.
if (!AddIconMapping(info.page_url, info.icon_id))
return false;
}
return true;
}

bool ThumbnailDatabase::RetainDataForPageUrls(
const std::vector<GURL>& urls_to_keep) {
sql::Transaction transaction(&db_);
Expand Down Expand Up @@ -1329,27 +1306,8 @@ bool ThumbnailDatabase::IsLatestVersion() {
return meta_table_.GetVersionNumber() == kCurrentVersionNumber;
}

bool ThumbnailDatabase::UpgradeToVersion4() {
// Set the default icon type as favicon, so the current data are set
// correctly.
if (!db_.Execute("ALTER TABLE favicons ADD icon_type INTEGER DEFAULT 1")) {
return false;
}
meta_table_.SetVersionNumber(4);
meta_table_.SetCompatibleVersionNumber(std::min(4, kCompatibleVersionNumber));
return true;
}

bool ThumbnailDatabase::UpgradeToVersion5() {
if (!db_.Execute("ALTER TABLE favicons ADD sizes LONGVARCHAR")) {
return false;
}
meta_table_.SetVersionNumber(5);
meta_table_.SetCompatibleVersionNumber(std::min(5, kCompatibleVersionNumber));
return true;
}

bool ThumbnailDatabase::UpgradeToVersion6() {
// Move bitmap data from favicons to favicon_bitmaps.
bool success =
db_.Execute("INSERT INTO favicon_bitmaps (icon_id, last_updated, "
"image_data, width, height)"
Expand All @@ -1358,8 +1316,8 @@ bool ThumbnailDatabase::UpgradeToVersion6() {
"id INTEGER PRIMARY KEY,"
"url LONGVARCHAR NOT NULL,"
"icon_type INTEGER DEFAULT 1,"
// Set the default icon_type as FAVICON to be consistent with
// table upgrade in UpgradeToVersion4().
// default icon_type FAVICON to be consistent with
// past migration.
"sizes LONGVARCHAR)") &&
db_.Execute("INSERT INTO temp_favicons (id, url, icon_type) "
"SELECT id, url, icon_type FROM favicons") &&
Expand All @@ -1374,10 +1332,13 @@ bool ThumbnailDatabase::UpgradeToVersion6() {
}

bool ThumbnailDatabase::UpgradeToVersion7() {
// Sizes column was never used, remove it.
bool success =
db_.Execute("CREATE TABLE temp_favicons ("
"id INTEGER PRIMARY KEY,"
"url LONGVARCHAR NOT NULL,"
// default icon_type FAVICON to be consistent with
// past migration.
"icon_type INTEGER DEFAULT 1)") &&
db_.Execute("INSERT INTO temp_favicons (id, url, icon_type) "
"SELECT id, url, icon_type FROM favicons") &&
Expand Down
Loading

0 comments on commit fe4e3de

Please sign in to comment.