| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef SQL_CONNECTION_H_ | 5 #ifndef SQL_CONNECTION_H_ |
| 6 #define SQL_CONNECTION_H_ | 6 #define SQL_CONNECTION_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 EVENT_CHANGES_AUTOCOMMIT, | 197 EVENT_CHANGES_AUTOCOMMIT, |
| 198 | 198 |
| 199 // Number of rows changed by statements in transactions. | 199 // Number of rows changed by statements in transactions. |
| 200 EVENT_CHANGES, | 200 EVENT_CHANGES, |
| 201 | 201 |
| 202 // Count actual SQLite transaction statements (not including nesting). | 202 // Count actual SQLite transaction statements (not including nesting). |
| 203 EVENT_BEGIN, | 203 EVENT_BEGIN, |
| 204 EVENT_COMMIT, | 204 EVENT_COMMIT, |
| 205 EVENT_ROLLBACK, | 205 EVENT_ROLLBACK, |
| 206 | 206 |
| 207 // Track success and failure in GetAppropriateMmapSize(). | |
| 208 // GetAppropriateMmapSize() should record at most one of these per run. The | |
| 209 // case of mapping everything is not recorded. | |
| 210 EVENT_MMAP_META_MISSING, // No meta table present. | |
| 211 EVENT_MMAP_META_FAILURE_READ, // Failed reading meta table. | |
| 212 EVENT_MMAP_META_FAILURE_UPDATE, // Failed updating meta table. | |
| 213 EVENT_MMAP_VFS_FAILURE, // Failed to access VFS. | |
| 214 EVENT_MMAP_FAILED, // Failure from past run. | |
| 215 EVENT_MMAP_FAILED_NEW, // Read error in this run. | |
| 216 EVENT_MMAP_SUCCESS_NEW, // Read to EOF in this run. | |
| 217 EVENT_MMAP_SUCCESS_PARTIAL, // Read but did not reach EOF. | |
| 218 EVENT_MMAP_SUCCESS_NO_PROGRESS, // Read quota exhausted. | |
| 219 | |
| 220 // Leave this at the end. | 207 // Leave this at the end. |
| 221 // TODO(shess): |EVENT_MAX| causes compile fail on Windows. | 208 // TODO(shess): |EVENT_MAX| causes compile fail on Windows. |
| 222 EVENT_MAX_VALUE | 209 EVENT_MAX_VALUE |
| 223 }; | 210 }; |
| 224 void RecordEvent(Events event, size_t count); | 211 void RecordEvent(Events event, size_t count); |
| 225 void RecordOneEvent(Events event) { | 212 void RecordOneEvent(Events event) { |
| 226 RecordEvent(event, 1); | 213 RecordEvent(event, 1); |
| 227 } | 214 } |
| 228 | 215 |
| 229 // Run "PRAGMA integrity_check" and post each line of | 216 // Run "PRAGMA integrity_check" and post each line of |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 // database is razed or recovered, or if the diagnostic code adds new | 682 // database is razed or recovered, or if the diagnostic code adds new |
| 696 // capabilities. | 683 // capabilities. |
| 697 bool RegisterIntentToUpload() const; | 684 bool RegisterIntentToUpload() const; |
| 698 | 685 |
| 699 // Helper to collect diagnostic info for a corrupt database. | 686 // Helper to collect diagnostic info for a corrupt database. |
| 700 std::string CollectCorruptionInfo(); | 687 std::string CollectCorruptionInfo(); |
| 701 | 688 |
| 702 // Helper to collect diagnostic info for errors. | 689 // Helper to collect diagnostic info for errors. |
| 703 std::string CollectErrorInfo(int error, Statement* stmt) const; | 690 std::string CollectErrorInfo(int error, Statement* stmt) const; |
| 704 | 691 |
| 705 // Calculates a value appropriate to pass to "PRAGMA mmap_size = ". So errors | |
| 706 // can make it unsafe to map a file, so the file is read using regular I/O, | |
| 707 // with any errors causing 0 (don't map anything) to be returned. If the | |
| 708 // entire file is read without error, a large value is returned which will | |
| 709 // allow the entire file to be mapped in most cases. | |
| 710 // | |
| 711 // Results are recorded in the database's meta table for future reference, so | |
| 712 // the file should only be read through once. | |
| 713 size_t GetAppropriateMmapSize(); | |
| 714 | |
| 715 // The actual sqlite database. Will be NULL before Init has been called or if | 692 // The actual sqlite database. Will be NULL before Init has been called or if |
| 716 // Init resulted in an error. | 693 // Init resulted in an error. |
| 717 sqlite3* db_; | 694 sqlite3* db_; |
| 718 | 695 |
| 719 // Parameters we'll configure in sqlite before doing anything else. Zero means | 696 // Parameters we'll configure in sqlite before doing anything else. Zero means |
| 720 // use the default value. | 697 // use the default value. |
| 721 int page_size_; | 698 int page_size_; |
| 722 int cache_size_; | 699 int cache_size_; |
| 723 bool exclusive_locking_; | 700 bool exclusive_locking_; |
| 724 bool restrict_to_user_; | 701 bool restrict_to_user_; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 // Source for timing information, provided to allow tests to inject time | 765 // Source for timing information, provided to allow tests to inject time |
| 789 // changes. | 766 // changes. |
| 790 scoped_ptr<TimeSource> clock_; | 767 scoped_ptr<TimeSource> clock_; |
| 791 | 768 |
| 792 DISALLOW_COPY_AND_ASSIGN(Connection); | 769 DISALLOW_COPY_AND_ASSIGN(Connection); |
| 793 }; | 770 }; |
| 794 | 771 |
| 795 } // namespace sql | 772 } // namespace sql |
| 796 | 773 |
| 797 #endif // SQL_CONNECTION_H_ | 774 #endif // SQL_CONNECTION_H_ |
| OLD | NEW |