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

Unified Diff: chrome/browser/meta_table_helper.cc

Issue 150094: Refactor MetaTableHelper to remove redundant table name prefixing with databa... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 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/meta_table_helper.cc
===================================================================
--- chrome/browser/meta_table_helper.cc (revision 19705)
+++ chrome/browser/meta_table_helper.cc (working copy)
@@ -12,6 +12,24 @@
static const char kVersionKey[] = "version";
static const char kCompatibleVersionKey[] = "last_compatible_version";
+// static
+void MetaTableHelper::PrimeCache(const std::string& db_name, sqlite3* db) {
+ // A statement must be open for the preload command to work. If the meta
+ // table doesn't exist, it probably means this is a new database and there
+ // is nothing to preload (so it's OK we do nothing).
+ SQLStatement dummy;
+ if (!DoesSqliteTableExist(db, db_name.c_str(), "meta"))
+ return;
+ std::string sql("SELECT * from ");
+ appendMetaTableName(db_name, &sql);
+ if (dummy.prepare(db, sql.c_str()) != SQLITE_OK)
+ return;
+ if (dummy.step() != SQLITE_ROW)
+ return;
+
+ sqlite3Preload(db);
+}
+
MetaTableHelper::MetaTableHelper() : db_(NULL) {
}
@@ -28,13 +46,9 @@
if (!DoesSqliteTableExist(db_, db_name.c_str(), "meta")) {
// Build the sql.
std::string sql("CREATE TABLE ");
- if (!db_name.empty()) {
- // Want a table name of the form db_name.meta
- sql.append(db_name);
- sql.push_back('.');
- }
- sql.append("meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY,"
- "value LONGVARCHAR)");
+ appendMetaTableName(db_name, &sql);
+ sql.append("(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY,"
+ "value LONGVARCHAR)");
if (sqlite3_exec(db_, sql.c_str(), NULL, NULL, NULL) != SQLITE_OK)
return false;
@@ -130,15 +144,22 @@
return version;
}
+// static
+void MetaTableHelper::appendMetaTableName(const std::string& db_name,
+ std::string* sql) {
+ if (!db_name.empty()) {
+ sql->append(db_name);
+ sql->push_back('.');
+ }
+ sql->append("meta");
+}
+
bool MetaTableHelper::PrepareSetStatement(SQLStatement* statement,
const std::string& key) {
DCHECK(db_ && statement);
std::string sql("INSERT OR REPLACE INTO ");
- if (db_name_.size() > 0) {
- sql.append(db_name_);
- sql.push_back('.');
- }
- sql.append("meta(key,value) VALUES(?,?)");
+ appendMetaTableName(db_name_, &sql);
+ sql.append("(key,value) VALUES(?,?)");
if (statement->prepare(db_, sql.c_str()) != SQLITE_OK) {
NOTREACHED() << sqlite3_errmsg(db_);
return false;
@@ -151,11 +172,8 @@
const std::string& key) {
DCHECK(db_ && statement);
std::string sql("SELECT value FROM ");
- if (db_name_.size() > 0) {
- sql.append(db_name_);
- sql.push_back('.');
- }
- sql.append("meta WHERE key = ?");
+ appendMetaTableName(db_name_, &sql);
+ sql.append(" WHERE key = ?");
if (statement->prepare(db_, sql.c_str()) != SQLITE_OK) {
NOTREACHED() << sqlite3_errmsg(db_);
return false;

Powered by Google App Engine
This is Rietveld 408576698