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

Unified Diff: chrome/browser/history/visitsegment_database.cc

Issue 9071014: Database usage adjustment for .../history (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Simplify SQL Created 8 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/history/visitsegment_database.h ('k') | chrome/browser/webdata/keyword_table.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/history/visitsegment_database.cc
diff --git a/chrome/browser/history/visitsegment_database.cc b/chrome/browser/history/visitsegment_database.cc
index c8bbfd35811479e7359bc94b0c55eb6f2781af77..6ab38e3f7152a71abdf47a4dd192d2a6daacd14d 100644
--- a/chrome/browser/history/visitsegment_database.cc
+++ b/chrome/browser/history/visitsegment_database.cc
@@ -48,12 +48,11 @@ bool VisitSegmentDatabase::InitSegmentTables() {
"name VARCHAR,"
"url_id INTEGER NON NULL,"
"pres_index INTEGER DEFAULT -1 NOT NULL)")) {
- NOTREACHED();
return false;
}
- if (!GetDB().Execute("CREATE INDEX segments_name ON segments(name)")) {
- NOTREACHED();
+ if (!GetDB().Execute(
+ "CREATE INDEX segments_name ON segments(name)")) {
return false;
}
}
@@ -71,13 +70,11 @@ bool VisitSegmentDatabase::InitSegmentTables() {
"segment_id INTEGER NOT NULL,"
"time_slot INTEGER NOT NULL,"
"visit_count INTEGER DEFAULT 0 NOT NULL)")) {
- NOTREACHED();
return false;
}
if (!GetDB().Execute(
"CREATE INDEX segment_usage_time_slot_segment_id ON "
"segment_usage(time_slot, segment_id)")) {
- NOTREACHED();
return false;
}
}
@@ -144,10 +141,8 @@ SegmentID VisitSegmentDatabase::GetSegmentNamed(
const std::string& segment_name) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"SELECT id FROM segments WHERE name = ?"));
- if (!statement)
- return 0;
-
statement.BindString(0, segment_name);
+
if (statement.Step())
return statement.ColumnInt64(0);
return 0;
@@ -157,21 +152,17 @@ bool VisitSegmentDatabase::UpdateSegmentRepresentationURL(SegmentID segment_id,
URLID url_id) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"UPDATE segments SET url_id = ? WHERE id = ?"));
- if (!statement)
- return false;
-
statement.BindInt64(0, url_id);
statement.BindInt64(1, segment_id);
+
return statement.Run();
}
URLID VisitSegmentDatabase::GetSegmentRepresentationURL(SegmentID segment_id) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"SELECT url_id FROM segments WHERE id = ?"));
- if (!statement)
- return 0;
-
statement.BindInt64(0, segment_id);
+
if (statement.Step())
return statement.ColumnInt64(0);
return 0;
@@ -181,14 +172,12 @@ SegmentID VisitSegmentDatabase::CreateSegment(URLID url_id,
const std::string& segment_name) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"INSERT INTO segments (name, url_id) VALUES (?,?)"));
- if (!statement)
- return false;
-
statement.BindString(0, segment_name);
statement.BindInt64(1, url_id);
+
if (statement.Run())
return GetDB().GetLastInsertRowId();
- return false;
+ return 0;
}
bool VisitSegmentDatabase::IncreaseSegmentVisitCount(SegmentID segment_id,
@@ -199,31 +188,27 @@ bool VisitSegmentDatabase::IncreaseSegmentVisitCount(SegmentID segment_id,
sql::Statement select(GetDB().GetCachedStatement(SQL_FROM_HERE,
"SELECT id, visit_count FROM segment_usage "
"WHERE time_slot = ? AND segment_id = ?"));
- if (!select)
- return false;
-
select.BindInt64(0, t.ToInternalValue());
select.BindInt64(1, segment_id);
+
+ if (!select.is_valid())
+ return false;
+
if (select.Step()) {
sql::Statement update(GetDB().GetCachedStatement(SQL_FROM_HERE,
"UPDATE segment_usage SET visit_count = ? WHERE id = ?"));
- if (!update)
- return false;
-
update.BindInt64(0, select.ColumnInt64(1) + static_cast<int64>(amount));
update.BindInt64(1, select.ColumnInt64(0));
- return update.Run();
+ return update.Run();
} else {
sql::Statement insert(GetDB().GetCachedStatement(SQL_FROM_HERE,
"INSERT INTO segment_usage "
"(segment_id, time_slot, visit_count) VALUES (?, ?, ?)"));
- if (!insert)
- return false;
-
insert.BindInt64(0, segment_id);
insert.BindInt64(1, t.ToInternalValue());
insert.BindInt64(2, static_cast<int64>(amount));
+
return insert.Run();
}
}
@@ -245,10 +230,8 @@ void VisitSegmentDatabase::QuerySegmentUsage(
"SELECT segment_id, time_slot, visit_count "
"FROM segment_usage WHERE time_slot >= ? "
"ORDER BY segment_id"));
- if (!statement) {
- NOTREACHED() << GetDB().GetErrorMessage();
+ if (!statement.is_valid())
return;
- }
base::Time ts = from_time.LocalMidnight();
statement.BindInt64(0, ts.ToInternalValue());
@@ -304,10 +287,10 @@ void VisitSegmentDatabase::QuerySegmentUsage(
"SELECT urls.url, urls.title FROM urls "
"JOIN segments ON segments.url_id = urls.id "
"WHERE segments.id = ?"));
- if (!statement2) {
- NOTREACHED() << GetDB().GetErrorMessage();
+
+ if (!statement2.is_valid())
return;
- }
+
for (size_t i = 0; i < results->size(); ++i) {
PageUsageData* pud = (*results)[i];
statement2.BindInt64(0, pud->GetID());
@@ -319,70 +302,43 @@ void VisitSegmentDatabase::QuerySegmentUsage(
}
}
-void VisitSegmentDatabase::DeleteSegmentData(base::Time older_than) {
+bool VisitSegmentDatabase::DeleteSegmentData(base::Time older_than) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"DELETE FROM segment_usage WHERE time_slot < ?"));
- if (!statement)
- return;
-
statement.BindInt64(0, older_than.LocalMidnight().ToInternalValue());
- if (!statement.Run())
- NOTREACHED();
+
+ return statement.Run();
}
-void VisitSegmentDatabase::SetSegmentPresentationIndex(SegmentID segment_id,
+bool VisitSegmentDatabase::SetSegmentPresentationIndex(SegmentID segment_id,
int index) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"UPDATE segments SET pres_index = ? WHERE id = ?"));
- if (!statement)
- return;
-
statement.BindInt(0, index);
statement.BindInt64(1, segment_id);
- if (!statement.Run())
- NOTREACHED();
- else
- DCHECK_EQ(1, GetDB().GetLastChangeCount());
+
+ bool success = statement.Run();
+ DCHECK_EQ(1, GetDB().GetLastChangeCount());
+ return success;
}
bool VisitSegmentDatabase::DeleteSegmentForURL(URLID url_id) {
- sql::Statement select(GetDB().GetCachedStatement(SQL_FROM_HERE,
- "SELECT id FROM segments WHERE url_id = ?"));
- if (!select)
+ sql::Statement delete_usage(GetDB().GetCachedStatement(SQL_FROM_HERE,
+ "DELETE FROM segment_usage WHERE segment_id IN "
+ "(SELECT id FROM segments WHERE url_id = ?)"));
+ delete_usage.BindInt64(0, url_id);
+
+ if (!delete_usage.Run())
return false;
sql::Statement delete_seg(GetDB().GetCachedStatement(SQL_FROM_HERE,
- "DELETE FROM segments WHERE id = ?"));
- if (!delete_seg)
- return false;
+ "DELETE FROM segments WHERE url_id = ?"));
+ delete_seg.BindInt64(0, url_id);
- sql::Statement delete_usage(GetDB().GetCachedStatement(SQL_FROM_HERE,
- "DELETE FROM segment_usage WHERE segment_id = ?"));
- if (!delete_usage)
+ if (!delete_seg.Run())
return false;
- bool r = true;
- select.BindInt64(0, url_id);
- // In theory there could not be more than one segment using that URL but we
- // loop anyway to cleanup any inconsistency.
- while (select.Step()) {
- SegmentID segment_id = select.ColumnInt64(0);
-
- delete_usage.BindInt64(0, segment_id);
- if (!delete_usage.Run()) {
- NOTREACHED();
- r = false;
- }
-
- delete_seg.BindInt64(0, segment_id);
- if (!delete_seg.Run()) {
- NOTREACHED();
- r = false;
- }
- delete_usage.Reset();
- delete_seg.Reset();
- }
- return r;
+ return delete_seg.Run();
}
} // namespace history
« no previous file with comments | « chrome/browser/history/visitsegment_database.h ('k') | chrome/browser/webdata/keyword_table.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698