Index: sql/connection.cc |
diff --git a/sql/connection.cc b/sql/connection.cc |
index a904632eb517e066596855ab980fe3ce8a80aff3..79264916c0274c3cda466ccee94750b35e3f798d 100644 |
--- a/sql/connection.cc |
+++ b/sql/connection.cc |
@@ -1628,18 +1628,6 @@ bool Connection::OpenInternal(const std::string& file_name, |
// secure_delete. |
ignore_result(Execute("PRAGMA journal_mode = TRUNCATE")); |
- // Enable memory-mapped access. This value will be capped by |
- // SQLITE_MAX_MMAP_SIZE, which could be different between 32-bit and 64-bit |
- // platforms. |
- mmap_enabled_ = false; |
- if (!mmap_disabled_) |
- ignore_result(Execute("PRAGMA mmap_size = 268435456")); // 256MB. |
- { |
- Statement s(GetUniqueStatement("PRAGMA mmap_size")); |
- if (s.Step() && s.ColumnInt64(0) > 0) |
- mmap_enabled_ = true; |
- } |
- |
const base::TimeDelta kBusyTimeout = |
base::TimeDelta::FromSeconds(kBusyTimeoutSeconds); |
@@ -1668,6 +1656,25 @@ bool Connection::OpenInternal(const std::string& file_name, |
return false; |
} |
+ // Enable memory-mapped access. The explicit-disable case is because SQLite |
+ // can be built to default-enable mmap. This value will be capped by |
+ // SQLITE_MAX_MMAP_SIZE, which could be different between 32-bit and 64-bit |
+ // platforms. |
+ if (mmap_disabled_) { |
+ ignore_result(Execute("PRAGMA mmap_size = 0")); |
+ } else { |
+ ignore_result(Execute("PRAGMA mmap_size = 268435456")); // 256MB. |
+ } |
+ |
+ // Determine if memory-mapping has actually been enabled. The Execute() above |
+ // can succeed without changing the amount mapped. |
+ mmap_enabled_ = false; |
+ { |
+ Statement s(GetUniqueStatement("PRAGMA mmap_size")); |
+ if (s.Step() && s.ColumnInt64(0) > 0) |
+ mmap_enabled_ = true; |
+ } |
+ |
Scott Hess - ex-Googler
2015/11/04 23:36:42
Hmm, and I moved the stanza down here because it s
|
return true; |
} |