Index: sql/connection.h |
diff --git a/sql/connection.h b/sql/connection.h |
index 1c4d72cfffe31dc0c1c60d1f10b90f5492e8bfe0..171cc07c041e9e65f46c25f073aad869e5d3fa22 100644 |
--- a/sql/connection.h |
+++ b/sql/connection.h |
@@ -28,6 +28,7 @@ class FilePath; |
namespace sql { |
+class Recovery; |
class Statement; |
// Uniquely identifies a statement. There are two modes of operation: |
@@ -160,6 +161,12 @@ class SQL_EXPORT Connection { |
// empty. You can call this or Open. |
bool OpenInMemory() WARN_UNUSED_RESULT; |
+ // Create a temporary on-disk database. The database will be |
+ // deleted after close. This kind of database is similar to |
+ // OpenInMemory() for small databases, but can page to disk if the |
+ // database becomes large. |
+ bool OpenTemporary() WARN_UNUSED_RESULT; |
+ |
// Returns true if the database has been successfully opened. |
bool is_open() const { return !!db_; } |
@@ -218,13 +225,17 @@ class SQL_EXPORT Connection { |
bool RazeWithTimout(base::TimeDelta timeout); |
// Breaks all outstanding transactions (as initiated by |
- // BeginTransaction()), calls Raze() to destroy the database, then |
- // closes the database. After this is called, any operations |
- // against the connections (or statements prepared by the |
- // connection) should fail safely. |
+ // BeginTransaction()), closes the SQLite database, and poisons the |
+ // object so that all future operations against the Connection (or |
+ // its Statements) fail safely, without side effects. |
// |
- // The value from Raze() is returned, with Close() called in all |
- // cases. |
+ // This is intended as an alternative to Close() in error callbacks. |
+ // Close() should still be called at some point. |
+ void Poison(); |
+ |
+ // Raze() the database and Poison() the handle. Returns the return |
+ // value from Raze(). |
+ // TODO(shess): Rename to RazeAndPoison(). |
bool RazeAndClose(); |
// Delete the underlying database files associated with |path|. |
@@ -254,10 +265,27 @@ class SQL_EXPORT Connection { |
void RollbackTransaction(); |
bool CommitTransaction(); |
+ // Rollback all outstanding transactions. Use with care, there may |
+ // be scoped transactions on the stack. |
+ void RollbackAllTransactions(); |
+ |
// Returns the current transaction nesting, which will be 0 if there are |
// no open transactions. |
int transaction_nesting() const { return transaction_nesting_; } |
+ // Attached databases--------------------------------------------------------- |
+ |
+ // SQLite supports attaching multiple database files to a single |
+ // handle. Attach the database in |other_db_path| to the current |
+ // handle under |attachment_point|. |attachment_point| should only |
+ // contain characters from [a-zA-Z0-9_]. |
+ // |
+ // Note that calling attach or detach with an open transaction is an |
+ // error. |
+ bool AttachDatabase(const base::FilePath& other_db_path, |
+ const char* attachment_point); |
+ bool DetachDatabase(const char* attachment_point); |
+ |
// Statements ---------------------------------------------------------------- |
// Executes the given SQL string, returning true on success. This is |
@@ -350,6 +378,9 @@ class SQL_EXPORT Connection { |
const char* GetErrorMessage() const; |
private: |
+ // For recovery module. |
+ friend class Recovery; |
+ |
// Allow test-support code to set/reset error ignorer. |
friend class ScopedErrorIgnorer; |