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

Unified Diff: sql/connection.h

Issue 2397753005: [sql] Allow storing mmap status in a VIEW instead of meta table. (Closed)
Patch Set: OK, its an older SQLite on iOS. Created 4 years, 1 month 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 | « content/browser/dom_storage/dom_storage_database.cc ('k') | sql/connection.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sql/connection.h
diff --git a/sql/connection.h b/sql/connection.h
index 5b8d39964ab2aa4e96312b790606c7b0bd0c8b29..0fb251dd8cc701b5f6a976f7a5851e3baa1549d6 100644
--- a/sql/connection.h
+++ b/sql/connection.h
@@ -150,6 +150,11 @@ class SQL_EXPORT Connection {
// other platforms.
void set_restrict_to_user() { restrict_to_user_ = true; }
+ // Call to use alternative status-tracking for mmap. Usually this is tracked
+ // in the meta table, but some databases have no meta table.
+ // TODO(shess): Maybe just have all databases use the alt option?
+ void set_mmap_alt_status() { mmap_alt_status_ = true; }
+
// Call to opt out of memory-mapped file I/O.
void set_mmap_disabled() { mmap_disabled_ = true; }
@@ -219,6 +224,9 @@ class SQL_EXPORT Connection {
EVENT_MMAP_SUCCESS_PARTIAL, // Read but did not reach EOF.
EVENT_MMAP_SUCCESS_NO_PROGRESS, // Read quota exhausted.
+ EVENT_MMAP_STATUS_FAILURE_READ, // Failure reading MmapStatus view.
+ EVENT_MMAP_STATUS_FAILURE_UPDATE,// Failure updating MmapStatus view.
+
// Leave this at the end.
// TODO(shess): |EVENT_MAX| causes compile fail on Windows.
EVENT_MAX_VALUE
@@ -443,11 +451,12 @@ class SQL_EXPORT Connection {
// Info querying -------------------------------------------------------------
- // Returns true if the given table (or index) exists. Instead of
- // test-then-create, callers should almost always prefer "CREATE TABLE IF NOT
- // EXISTS" or "CREATE INDEX IF NOT EXISTS".
- bool DoesTableExist(const char* table_name) const;
+ // Returns true if the given structure exists. Instead of test-then-create,
+ // callers should almost always prefer the "IF NOT EXISTS" version of the
+ // CREATE statement.
bool DoesIndexExist(const char* index_name) const;
+ bool DoesTableExist(const char* table_name) const;
+ bool DoesViewExist(const char* table_name) const;
// Returns true if a column with the given name exists in the given table.
bool DoesColumnExist(const char* table_name, const char* column_name) const;
@@ -508,6 +517,7 @@ class SQL_EXPORT Connection {
FRIEND_TEST_ALL_PREFIXES(SQLConnectionTest, CollectDiagnosticInfo);
FRIEND_TEST_ALL_PREFIXES(SQLConnectionTest, GetAppropriateMmapSize);
+ FRIEND_TEST_ALL_PREFIXES(SQLConnectionTest, GetAppropriateMmapSizeAltStatus);
FRIEND_TEST_ALL_PREFIXES(SQLConnectionTest, OnMemoryDump);
FRIEND_TEST_ALL_PREFIXES(SQLConnectionTest, RegisterIntentToUpload);
@@ -535,8 +545,8 @@ class SQL_EXPORT Connection {
base::ThreadRestrictions::AssertIOAllowed();
}
- // Internal helper for DoesTableExist and DoesIndexExist.
- bool DoesTableOrIndexExist(const char* name, const char* type) const;
+ // Internal helper for Does*Exist() functions.
+ bool DoesSchemaItemExist(const char* name, const char* type) const;
// Accessors for global error-expecter, for injecting behavior during tests.
// See test/scoped_error_expecter.h.
@@ -722,6 +732,10 @@ class SQL_EXPORT Connection {
// the file should only be read through once.
size_t GetAppropriateMmapSize();
+ // Helpers for GetAppropriateMmapSize().
+ bool GetMmapAltStatus(int64_t* status);
+ bool SetMmapAltStatus(int64_t status);
+
// The actual sqlite database. Will be NULL before Init has been called or if
// Init resulted in an error.
sqlite3* db_;
@@ -763,6 +777,9 @@ class SQL_EXPORT Connection {
// databases.
bool poisoned_;
+ // |true| to use alternate storage for tracking mmap status.
+ bool mmap_alt_status_;
+
// |true| if SQLite memory-mapped I/O is not desired for this connection.
bool mmap_disabled_;
« no previous file with comments | « content/browser/dom_storage/dom_storage_database.cc ('k') | sql/connection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698