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

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

Issue 9071014: Database usage adjustment for .../history (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review fixes Created 8 years, 12 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
Index: chrome/browser/history/visit_database.cc
diff --git a/chrome/browser/history/visit_database.cc b/chrome/browser/history/visit_database.cc
index 59592a46f5f66dbc251332be2cc0b7df359c0fda..7d709a8e57526fee767a95dbac877a625280ab05 100644
--- a/chrome/browser/history/visit_database.cc
+++ b/chrome/browser/history/visit_database.cc
@@ -104,13 +104,17 @@ void VisitDatabase::FillVisitRow(sql::Statement& statement, VisitRow* visit) {
}
// static
-void VisitDatabase::FillVisitVector(sql::Statement& statement,
+bool VisitDatabase::FillVisitVector(sql::Statement& statement,
VisitVector* visits) {
+ if (!statement.is_valid())
+ return false;
+
while (statement.Step()) {
history::VisitRow visit;
FillVisitRow(statement, &visit);
visits->push_back(visit);
}
+ return true;
Scott Hess - ex-Googler 2012/01/10 22:29:49 WDYT about removing the is_valid() check and retur
Greg Billock 2012/01/11 23:42:12 Done.
}
VisitID VisitDatabase::AddVisit(VisitRow* visit, VisitSource source) {
@@ -118,12 +122,6 @@ VisitID VisitDatabase::AddVisit(VisitRow* visit, VisitSource source) {
"INSERT INTO visits "
"(url, visit_time, from_visit, transition, segment_id, is_indexed) "
"VALUES (?,?,?,?,?,?)"));
- if (!statement) {
- VLOG(0) << "Failed to build visit insert statement: "
- << "url_id = " << visit->url_id;
- return 0;
- }
-
statement.BindInt64(0, visit->url_id);
statement.BindInt64(1, visit->visit_time.ToInternalValue());
statement.BindInt64(2, visit->referring_visit);
@@ -143,14 +141,9 @@ VisitID VisitDatabase::AddVisit(VisitRow* visit, VisitSource source) {
// Record the source of this visit when it is not browsed.
sql::Statement statement1(GetDB().GetCachedStatement(SQL_FROM_HERE,
"INSERT INTO visit_source (id, source) VALUES (?,?)"));
- if (!statement1.is_valid()) {
- VLOG(0) << "Failed to build visit_source insert statement: "
- << "url_id = " << visit->visit_id;
- return 0;
- }
-
statement1.BindInt64(0, visit->visit_id);
statement1.BindInt64(1, source);
+
if (!statement1.Run()) {
VLOG(0) << "Failed to execute visit_source insert statement: "
<< "url_id = " << visit->visit_id;
@@ -166,27 +159,23 @@ void VisitDatabase::DeleteVisit(const VisitRow& visit) {
// "source" be the deleted visit's source.
sql::Statement update_chain(GetDB().GetCachedStatement(SQL_FROM_HERE,
"UPDATE visits SET from_visit=? WHERE from_visit=?"));
- if (!update_chain)
- return;
update_chain.BindInt64(0, visit.referring_visit);
update_chain.BindInt64(1, visit.visit_id);
- update_chain.Run();
+ if (!update_chain.Run())
+ return;
// Now delete the actual visit.
sql::Statement del(GetDB().GetCachedStatement(SQL_FROM_HERE,
"DELETE FROM visits WHERE id=?"));
- if (!del)
- return;
del.BindInt64(0, visit.visit_id);
- del.Run();
+ if (!del.Run())
+ return;
// Try to delete the entry in visit_source table as well.
// If the visit was browsed, there is no corresponding entry in visit_source
// table, and nothing will be deleted.
del.Assign(GetDB().GetCachedStatement(SQL_FROM_HERE,
"DELETE FROM visit_source WHERE id=?"));
- if (!del.is_valid())
- return;
del.BindInt64(0, visit.visit_id);
del.Run();
}
@@ -194,10 +183,8 @@ void VisitDatabase::DeleteVisit(const VisitRow& visit) {
bool VisitDatabase::GetRowForVisit(VisitID visit_id, VisitRow* out_visit) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits WHERE id=?"));
- if (!statement)
- return false;
-
statement.BindInt64(0, visit_id);
+
if (!statement.Step())
return false;
@@ -221,9 +208,6 @@ bool VisitDatabase::UpdateVisitRow(const VisitRow& visit) {
"UPDATE visits SET "
"url=?,visit_time=?,from_visit=?,transition=?,segment_id=?,is_indexed=? "
"WHERE id=?"));
- if (!statement)
- return false;
-
statement.BindInt64(0, visit.url_id);
statement.BindInt64(1, visit.visit_time.ToInternalValue());
statement.BindInt64(2, visit.referring_visit);
@@ -231,6 +215,7 @@ bool VisitDatabase::UpdateVisitRow(const VisitRow& visit) {
statement.BindInt64(4, visit.segment_id);
statement.BindInt64(5, visit.is_indexed);
statement.BindInt64(6, visit.visit_id);
+
return statement.Run();
}
@@ -242,12 +227,8 @@ bool VisitDatabase::GetVisitsForURL(URLID url_id, VisitVector* visits) {
"FROM visits "
"WHERE url=? "
"ORDER BY visit_time ASC"));
- if (!statement)
- return false;
-
statement.BindInt64(0, url_id);
- FillVisitVector(statement, visits);
- return true;
+ return FillVisitVector(statement, visits);
}
bool VisitDatabase::GetIndexedVisitsForURL(URLID url_id, VisitVector* visits) {
@@ -257,15 +238,11 @@ bool VisitDatabase::GetIndexedVisitsForURL(URLID url_id, VisitVector* visits) {
"SELECT" HISTORY_VISIT_ROW_FIELDS
"FROM visits "
"WHERE url=? AND is_indexed=1"));
- if (!statement)
- return false;
-
statement.BindInt64(0, url_id);
- FillVisitVector(statement, visits);
- return true;
+ return FillVisitVector(statement, visits);
}
-void VisitDatabase::GetAllVisitsInRange(base::Time begin_time,
+bool VisitDatabase::GetAllVisitsInRange(base::Time begin_time,
base::Time end_time,
int max_results,
VisitVector* visits) {
@@ -275,8 +252,6 @@ void VisitDatabase::GetAllVisitsInRange(base::Time begin_time,
"SELECT" HISTORY_VISIT_ROW_FIELDS "FROM visits "
"WHERE visit_time >= ? AND visit_time < ?"
"ORDER BY visit_time LIMIT ?"));
- if (!statement)
- return;
// See GetVisibleVisitsInRange for more info on how these times are bound.
int64 end = end_time.ToInternalValue();
@@ -285,10 +260,10 @@ void VisitDatabase::GetAllVisitsInRange(base::Time begin_time,
statement.BindInt64(2,
max_results ? max_results : std::numeric_limits<int64>::max());
- FillVisitVector(statement, visits);
+ return FillVisitVector(statement, visits);
}
-void VisitDatabase::GetVisitsInRangeForTransition(
+bool VisitDatabase::GetVisitsInRangeForTransition(
base::Time begin_time,
base::Time end_time,
int max_results,
@@ -302,8 +277,6 @@ void VisitDatabase::GetVisitsInRangeForTransition(
"WHERE visit_time >= ? AND visit_time < ? "
"AND (transition & ?) == ?"
"ORDER BY visit_time LIMIT ?"));
- if (!statement)
- return;
// See GetVisibleVisitsInRange for more info on how these times are bound.
int64 end = end_time.ToInternalValue();
@@ -314,7 +287,7 @@ void VisitDatabase::GetVisitsInRangeForTransition(
statement.BindInt64(4,
max_results ? max_results : std::numeric_limits<int64>::max());
- FillVisitVector(statement, visits);
+ return FillVisitVector(statement, visits);
}
void VisitDatabase::GetVisibleVisitsInRange(base::Time begin_time,
@@ -331,8 +304,6 @@ void VisitDatabase::GetVisibleVisitsInRange(base::Time begin_time,
"AND (transition & ?) NOT IN (?, ?, ?) " // NO SUBFRAME or
// KEYWORD_GENERATED
"ORDER BY visit_time DESC, id DESC"));
- if (!statement)
- return;
// Note that we use min/max values for querying unlimited ranges of time using
// the same statement. Since the time has an index, this will be about the
@@ -370,9 +341,6 @@ VisitID VisitDatabase::GetMostRecentVisitForURL(URLID url_id,
"WHERE url=? "
"ORDER BY visit_time DESC, id DESC "
"LIMIT 1"));
- if (!statement)
- return 0;
-
statement.BindInt64(0, url_id);
if (!statement.Step())
return 0; // No visits for this URL.
@@ -397,13 +365,10 @@ bool VisitDatabase::GetMostRecentVisitsForURL(URLID url_id,
"WHERE url=? "
"ORDER BY visit_time DESC, id DESC "
"LIMIT ?"));
- if (!statement)
- return false;
-
statement.BindInt64(0, url_id);
statement.BindInt(1, max_results);
- FillVisitVector(statement, visits);
- return true;
+
+ return FillVisitVector(statement, visits);
}
bool VisitDatabase::GetRedirectFromVisit(VisitID from_visit,
@@ -414,7 +379,7 @@ bool VisitDatabase::GetRedirectFromVisit(VisitID from_visit,
"FROM visits v JOIN urls u ON v.url = u.id "
"WHERE v.from_visit = ? "
"AND (v.transition & ?) != 0")); // IS_REDIRECT_MASK
- if (!statement)
+ if (!statement.is_valid())
return false;
Scott Hess - ex-Googler 2012/01/10 22:29:49 !Step() below should cover this, though the commen
Greg Billock 2012/01/11 23:42:12 Done.
statement.BindInt64(0, from_visit);
@@ -479,9 +444,6 @@ bool VisitDatabase::GetVisibleVisitCountToHost(const GURL& url,
"WHERE u.url >= ? AND u.url < ? "
"AND (transition & ?) != 0 "
"AND (transition & ?) NOT IN (?, ?, ?)"));
- if (!statement)
- return false;
-
statement.BindString(0, host_query_min);
statement.BindString(1,
host_query_min.substr(0, host_query_min.size() - 1) + '0');
@@ -497,6 +459,9 @@ bool VisitDatabase::GetVisibleVisitCountToHost(const GURL& url,
return true;
}
+ if (!statement.Succeeded())
+ return false;
+
*first_visit = base::Time::FromInternalValue(statement.ColumnInt64(0));
*count = statement.ColumnInt(1);
return true;
@@ -505,7 +470,7 @@ bool VisitDatabase::GetVisibleVisitCountToHost(const GURL& url,
bool VisitDatabase::GetStartDate(base::Time* first_visit) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"SELECT MIN(visit_time) FROM visits WHERE visit_time != 0"));
- if (!statement || !statement.Step() || statement.ColumnInt64(0) == 0) {
+ if (!statement.Step() || statement.ColumnInt64(0) == 0) {
Scott Hess - ex-Googler 2012/01/10 22:29:49 Odd. I wonder how this code came to be written th
*first_visit = base::Time::Now();
return false;
}
@@ -539,8 +504,6 @@ void VisitDatabase::GetVisitsSource(const VisitVector& visits,
}
sql.append(") ORDER BY id");
sql::Statement statement(GetDB().GetUniqueStatement(sql.c_str()));
- if (!statement)
- return;
// Get the source entries out of the query result.
while (statement.Step()) {

Powered by Google App Engine
This is Rietveld 408576698