Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Side by Side Diff: chrome/browser/history/thumbnail_database.cc

Issue 9005036: [sql] WARN_UNUSED_RESULT on Execute(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/history/thumbnail_database.h" 5 #include "chrome/browser/history/thumbnail_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 #if defined(OS_MACOSX) 78 #if defined(OS_MACOSX)
79 // Exclude the thumbnails file from backups. 79 // Exclude the thumbnails file from backups.
80 base::mac::SetFileBackupExclusion(db_name); 80 base::mac::SetFileBackupExclusion(db_name);
81 #endif 81 #endif
82 82
83 // Create the tables. 83 // Create the tables.
84 if (!meta_table_.Init(&db_, kCurrentVersionNumber, 84 if (!meta_table_.Init(&db_, kCurrentVersionNumber,
85 kCompatibleVersionNumber) || 85 kCompatibleVersionNumber) ||
86 !InitThumbnailTable() || 86 !InitThumbnailTable() ||
87 !InitFaviconsTable(&db_, false) || 87 !InitFaviconsTable(&db_, false) ||
88 !InitIconMappingTable(&db_, false)) { 88 !InitFaviconsIndex() ||
89 !InitIconMappingTable(&db_, false) ||
90 !InitIconMappingIndex()) {
89 db_.Close(); 91 db_.Close();
90 return sql::INIT_FAILURE; 92 return sql::INIT_FAILURE;
91 } 93 }
92 InitFaviconsIndex();
93 InitIconMappingIndex();
94 94
95 // Version check. We should not encounter a database too old for us to handle 95 // Version check. We should not encounter a database too old for us to handle
96 // in the wild, so we try to continue in that case. 96 // in the wild, so we try to continue in that case.
97 if (meta_table_.GetCompatibleVersionNumber() > kCurrentVersionNumber) { 97 if (meta_table_.GetCompatibleVersionNumber() > kCurrentVersionNumber) {
98 LOG(WARNING) << "Thumbnail database is too new."; 98 LOG(WARNING) << "Thumbnail database is too new.";
99 return sql::INIT_TOO_NEW; 99 return sql::INIT_TOO_NEW;
100 } 100 }
101 101
102 int cur_version = meta_table_.GetVersionNumber(); 102 int cur_version = meta_table_.GetVersionNumber();
103 if (cur_version == 2) { 103 if (cur_version == 2) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 // Set the default icon_type as FAVICON to be consistent with 212 // Set the default icon_type as FAVICON to be consistent with
213 // table upgrade in UpgradeToVersion4(). 213 // table upgrade in UpgradeToVersion4().
214 "icon_type INTEGER DEFAULT 1," 214 "icon_type INTEGER DEFAULT 1,"
215 "sizes LONGVARCHAR)"); 215 "sizes LONGVARCHAR)");
216 if (!db->Execute(sql.c_str())) 216 if (!db->Execute(sql.c_str()))
217 return false; 217 return false;
218 } 218 }
219 return true; 219 return true;
220 } 220 }
221 221
222 void ThumbnailDatabase::InitFaviconsIndex() { 222 bool ThumbnailDatabase::InitFaviconsIndex() {
223 // Add an index on the url column. We ignore errors. Since this is always 223 // Add an index on the url column.
224 // called during startup, the index will normally already exist. 224 return
225 db_.Execute("CREATE INDEX favicons_url ON favicons(url)"); 225 db_.Execute("CREATE INDEX IF NOT EXISTS favicons_url ON favicons(url)");
226 } 226 }
227 227
228 void ThumbnailDatabase::BeginTransaction() { 228 void ThumbnailDatabase::BeginTransaction() {
229 db_.BeginTransaction(); 229 db_.BeginTransaction();
230 } 230 }
231 231
232 void ThumbnailDatabase::CommitTransaction() { 232 void ThumbnailDatabase::CommitTransaction() {
233 db_.CommitTransaction(); 233 db_.CommitTransaction();
234 } 234 }
235 235
236 void ThumbnailDatabase::Vacuum() { 236 void ThumbnailDatabase::Vacuum() {
237 DCHECK(db_.transaction_nesting() == 0) << 237 DCHECK(db_.transaction_nesting() == 0) <<
238 "Can not have a transaction when vacuuming."; 238 "Can not have a transaction when vacuuming.";
239 db_.Execute("VACUUM"); 239 ignore_result(db_.Execute("VACUUM"));
240 } 240 }
241 241
242 void ThumbnailDatabase::SetPageThumbnail( 242 void ThumbnailDatabase::SetPageThumbnail(
243 const GURL& url, 243 const GURL& url,
244 URLID id, 244 URLID id,
245 const gfx::Image* thumbnail, 245 const gfx::Image* thumbnail,
246 const ThumbnailScore& score, 246 const ThumbnailScore& score,
247 base::Time time) { 247 base::Time time) {
248 if (use_top_sites_) { 248 if (use_top_sites_) {
249 LOG(WARNING) << "Use TopSites instead."; 249 LOG(WARNING) << "Use TopSites instead.";
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 bool ThumbnailDatabase::CommitTemporaryIconMappingTable() { 598 bool ThumbnailDatabase::CommitTemporaryIconMappingTable() {
599 // Delete the old icon_mapping table. 599 // Delete the old icon_mapping table.
600 if (!db_.Execute("DROP TABLE icon_mapping")) 600 if (!db_.Execute("DROP TABLE icon_mapping"))
601 return false; 601 return false;
602 602
603 // Rename the temporary one. 603 // Rename the temporary one.
604 if (!db_.Execute("ALTER TABLE temp_icon_mapping RENAME TO icon_mapping")) 604 if (!db_.Execute("ALTER TABLE temp_icon_mapping RENAME TO icon_mapping"))
605 return false; 605 return false;
606 606
607 // The renamed table needs the index (the temporary table doesn't have one). 607 // The renamed table needs the index (the temporary table doesn't have one).
608 InitIconMappingIndex(); 608 return InitIconMappingIndex();
609
610 return true;
611 } 609 }
612 610
613 FaviconID ThumbnailDatabase::CopyToTemporaryFaviconTable(FaviconID source) { 611 FaviconID ThumbnailDatabase::CopyToTemporaryFaviconTable(FaviconID source) {
614 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 612 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
615 "INSERT INTO temp_favicons (url, last_updated, image_data, icon_type)" 613 "INSERT INTO temp_favicons (url, last_updated, image_data, icon_type)"
616 "SELECT url, last_updated, image_data, icon_type " 614 "SELECT url, last_updated, image_data, icon_type "
617 "FROM favicons WHERE id = ?")); 615 "FROM favicons WHERE id = ?"));
618 if (!statement) 616 if (!statement)
619 return 0; 617 return 0;
620 statement.BindInt64(0, source); 618 statement.BindInt64(0, source);
621 if (!statement.Run()) 619 if (!statement.Run())
622 return 0; 620 return 0;
623 621
624 // We return the ID of the newly inserted favicon. 622 // We return the ID of the newly inserted favicon.
625 return db_.GetLastInsertRowId(); 623 return db_.GetLastInsertRowId();
626 } 624 }
627 625
628 bool ThumbnailDatabase::CommitTemporaryFaviconTable() { 626 bool ThumbnailDatabase::CommitTemporaryFaviconTable() {
629 // Delete the old favicons table. 627 // Delete the old favicons table.
630 if (!db_.Execute("DROP TABLE favicons")) 628 if (!db_.Execute("DROP TABLE favicons"))
631 return false; 629 return false;
632 630
633 // Rename the temporary one. 631 // Rename the temporary one.
634 if (!db_.Execute("ALTER TABLE temp_favicons RENAME TO favicons")) 632 if (!db_.Execute("ALTER TABLE temp_favicons RENAME TO favicons"))
635 return false; 633 return false;
636 634
637 // The renamed table needs the index (the temporary table doesn't have one). 635 // The renamed table needs the index (the temporary table doesn't have one).
638 InitFaviconsIndex(); 636 return InitFaviconsIndex();
639 return true;
640 } 637 }
641 638
642 bool ThumbnailDatabase::NeedsMigrationToTopSites() { 639 bool ThumbnailDatabase::NeedsMigrationToTopSites() {
643 return !use_top_sites_; 640 return !use_top_sites_;
644 } 641 }
645 642
646 bool ThumbnailDatabase::RenameAndDropThumbnails(const FilePath& old_db_file, 643 bool ThumbnailDatabase::RenameAndDropThumbnails(const FilePath& old_db_file,
647 const FilePath& new_db_file) { 644 const FilePath& new_db_file) {
648 // Init favicons table - same schema as the thumbnails. 645 // Init favicons table - same schema as the thumbnails.
649 sql::Connection favicons; 646 sql::Connection favicons;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 // Reset the DB to point to new file. 703 // Reset the DB to point to new file.
707 if (OpenDatabase(&db_, new_db_file) != sql::INIT_OK) 704 if (OpenDatabase(&db_, new_db_file) != sql::INIT_OK)
708 return false; 705 return false;
709 706
710 file_util::Delete(old_db_file, false); 707 file_util::Delete(old_db_file, false);
711 708
712 meta_table_.Reset(); 709 meta_table_.Reset();
713 if (!meta_table_.Init(&db_, kCurrentVersionNumber, kCompatibleVersionNumber)) 710 if (!meta_table_.Init(&db_, kCurrentVersionNumber, kCompatibleVersionNumber))
714 return false; 711 return false;
715 712
716 InitFaviconsIndex(); 713 if (!InitFaviconsIndex())
714 return false;
717 715
718 // Reopen the transaction. 716 // Reopen the transaction.
719 BeginTransaction(); 717 BeginTransaction();
720 use_top_sites_ = true; 718 use_top_sites_ = true;
721 return true; 719 return true;
722 } 720 }
723 721
724 bool ThumbnailDatabase::InitIconMappingTable(sql::Connection* db, 722 bool ThumbnailDatabase::InitIconMappingTable(sql::Connection* db,
725 bool is_temporary) { 723 bool is_temporary) {
726 const char* name = is_temporary ? "temp_icon_mapping" : "icon_mapping"; 724 const char* name = is_temporary ? "temp_icon_mapping" : "icon_mapping";
727 if (!db->DoesTableExist(name)) { 725 if (!db->DoesTableExist(name)) {
728 std::string sql; 726 std::string sql;
729 sql.append("CREATE TABLE "); 727 sql.append("CREATE TABLE ");
730 sql.append(name); 728 sql.append(name);
731 sql.append("(" 729 sql.append("("
732 "id INTEGER PRIMARY KEY," 730 "id INTEGER PRIMARY KEY,"
733 "page_url LONGVARCHAR NOT NULL," 731 "page_url LONGVARCHAR NOT NULL,"
734 "icon_id INTEGER)"); 732 "icon_id INTEGER)");
735 if (!db->Execute(sql.c_str())) 733 if (!db->Execute(sql.c_str()))
736 return false; 734 return false;
737 } 735 }
738 return true; 736 return true;
739 } 737 }
740 738
741 void ThumbnailDatabase::InitIconMappingIndex() { 739 bool ThumbnailDatabase::InitIconMappingIndex() {
742 // Add an index on the url column. We ignore errors. Since this is always 740 // Add an index on the url column.
743 // called during startup, the index will normally already exist. 741 return
744 db_.Execute("CREATE INDEX icon_mapping_page_url_idx" 742 db_.Execute("CREATE INDEX IF NOT EXISTS icon_mapping_page_url_idx"
745 " ON icon_mapping(page_url)"); 743 " ON icon_mapping(page_url)") &&
746 db_.Execute("CREATE INDEX icon_mapping_icon_id_idx ON icon_mapping(icon_id)"); 744 db_.Execute("CREATE INDEX IF NOT EXISTS icon_mapping_icon_id_idx"
745 " ON icon_mapping(icon_id)");
747 } 746 }
748 747
749 IconMappingID ThumbnailDatabase::AddIconMapping(const GURL& page_url, 748 IconMappingID ThumbnailDatabase::AddIconMapping(const GURL& page_url,
750 FaviconID icon_id, 749 FaviconID icon_id,
751 bool is_temporary) { 750 bool is_temporary) {
752 const char* name = is_temporary ? "temp_icon_mapping" : "icon_mapping"; 751 const char* name = is_temporary ? "temp_icon_mapping" : "icon_mapping";
753 const char* statement_name = 752 const char* statement_name =
754 is_temporary ? "add_temp_icon_mapping" : "add_icon_mapping"; 753 is_temporary ? "add_temp_icon_mapping" : "add_icon_mapping";
755 754
756 std::string sql; 755 std::string sql;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 if (!db_.Execute("ALTER TABLE favicons ADD sizes LONGVARCHAR")) { 791 if (!db_.Execute("ALTER TABLE favicons ADD sizes LONGVARCHAR")) {
793 NOTREACHED(); 792 NOTREACHED();
794 return false; 793 return false;
795 } 794 }
796 meta_table_.SetVersionNumber(5); 795 meta_table_.SetVersionNumber(5);
797 meta_table_.SetCompatibleVersionNumber(std::min(5, kCompatibleVersionNumber)); 796 meta_table_.SetCompatibleVersionNumber(std::min(5, kCompatibleVersionNumber));
798 return true; 797 return true;
799 } 798 }
800 799
801 } // namespace history 800 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698