| Index: sql/recovery.h
|
| diff --git a/sql/recovery.h b/sql/recovery.h
|
| index 8efd71877318b04f1df5486f135257038717918d..a829e77057f8f71083b42e81575ec4c169f40758 100644
|
| --- a/sql/recovery.h
|
| +++ b/sql/recovery.h
|
| @@ -18,13 +18,17 @@ class FilePath;
|
|
|
| namespace sql {
|
|
|
| -// Recovery module for sql/. The basic idea is to create a fresh
|
| -// database and populate it with the recovered contents of the
|
| -// original database. If recovery is successful, the recovered
|
| -// database is backed up over the original database. If recovery is
|
| -// not successful, the original database is razed. In either case,
|
| -// the original handle is poisoned so that operations on the stack do
|
| -// not accidentally disrupt the restored data.
|
| +// Recovery module for sql/. The basic idea is to create a fresh database and
|
| +// populate it with the recovered contents of the original database. If
|
| +// recovery is successful, the recovered database is backed up over the original
|
| +// database. If recovery is not successful, the original database is razed. In
|
| +// either case, the original handle is poisoned so that operations on the stack
|
| +// do not accidentally disrupt the restored data.
|
| +//
|
| +// RecoverDatabaseOrRaze() automates this, including recoverying the schema of
|
| +// from the suspect database. If a database requires special handling, such as
|
| +// recovering between different schema, or tables requiring post-processing,
|
| +// then the module can be used manually like:
|
| //
|
| // {
|
| // std::unique_ptr<sql::Recovery> r =
|
| @@ -151,6 +155,22 @@ class SQL_EXPORT Recovery {
|
| // Only valid to call after successful SetupMeta().
|
| bool GetMetaVersionNumber(int* version_number);
|
|
|
| + // Attempt to recover the database by creating a new database with schema from
|
| + // |db|, then copying over as much data as possible. After this call, the
|
| + // |db| handle will be poisoned (though technically remaining open) so that
|
| + // future calls will return errors until the handle is re-opened.
|
| + //
|
| + // If a corrupt database contains tables without unique indices, the resulting
|
| + // table may contain duplication. If this is not acceptable, the client
|
| + // should use the manual process as described in the example at the top of the
|
| + // file, cleaning up data at the appropriate points.
|
| + static void RecoverDatabase(Connection* db, const base::FilePath& db_path);
|
| +
|
| + // Returns true for SQLite errors which RecoverDatabase() can plausibly fix.
|
| + // This does not guarantee that RecoverDatabase() will successfully recover
|
| + // the database.
|
| + static bool ShouldRecover(int extended_error);
|
| +
|
| private:
|
| explicit Recovery(Connection* connection);
|
|
|
|
|