| Index: sql/recovery.cc
|
| diff --git a/sql/recovery.cc b/sql/recovery.cc
|
| index 7b9ca9f6fee65724a310e1f34620b97faf60bc7b..b79fe08598ec331a7452f70c9b56fdc23ed009d0 100644
|
| --- a/sql/recovery.cc
|
| +++ b/sql/recovery.cc
|
| @@ -98,7 +98,11 @@
|
| // static
|
| bool Recovery::FullRecoverySupported() {
|
| // TODO(shess): See comment in Init().
|
| +#if defined(USE_SYSTEM_SQLITE)
|
| + return false;
|
| +#else
|
| return true;
|
| +#endif
|
| }
|
|
|
| // static
|
| @@ -199,7 +203,16 @@
|
| return false;
|
| }
|
|
|
| - // Enable the recover virtual table for this connection.
|
| + // TODO(shess): Figure out a story for USE_SYSTEM_SQLITE. The
|
| + // virtual table implementation relies on SQLite internals for some
|
| + // types and functions, which could be copied inline to make it
|
| + // standalone. Or an alternate implementation could try to read
|
| + // through errors entirely at the SQLite level.
|
| + //
|
| + // For now, defer to the caller. The setup will succeed, but the
|
| + // later CREATE VIRTUAL TABLE call will fail, at which point the
|
| + // caller can fire Unrecoverable().
|
| +#if !defined(USE_SYSTEM_SQLITE)
|
| int rc = recoverVtableInit(recover_db_.db_);
|
| if (rc != SQLITE_OK) {
|
| RecordRecoveryEvent(RECOVERY_FAILED_VIRTUAL_TABLE_INIT);
|
| @@ -207,6 +220,10 @@
|
| << recover_db_.GetErrorMessage();
|
| return false;
|
| }
|
| +#else
|
| + // If this is infrequent enough, just wire it to Raze().
|
| + RecordRecoveryEvent(RECOVERY_FAILED_VIRTUAL_TABLE_SYSTEM_SQLITE);
|
| +#endif
|
|
|
| // Turn on |SQLITE_RecoveryMode| for the handle, which allows
|
| // reading certain broken databases.
|
|
|