diff options
author | tsergeant <tsergeant@chromium.org> | 2016-03-09 18:27:29 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-10 02:29:52 +0000 |
commit | fb9ae22304e7322598f0d9518015f9b5508d1466 (patch) | |
tree | 64202042d04841b04000f3b0c3f007c78ba6f0d2 /sql | |
parent | 153adf5d846b2c7da69b426ba14e4b140f8888be (diff) | |
download | chromium_src-fb9ae22304e7322598f0d9518015f9b5508d1466.zip chromium_src-fb9ae22304e7322598f0d9518015f9b5508d1466.tar.gz chromium_src-fb9ae22304e7322598f0d9518015f9b5508d1466.tar.bz2 |
Revert of [sqlite] sql::Recovery working under USE_SYSTEM_SQLITE. (patchset #2 id:20001 of https://codereview.chromium.org/1782633002/ )
Reason for revert:
Causing compile failures on iOS:
https://build.chromium.org/p/chromium.mac/builders/iOS_Simulator_GN_%28dbg%29/builds/2931
https://build.chromium.org/p/chromium.mac/builders/iOS_Device_GN/builds/2630
Original issue's description:
> [sqlite] sql::Recovery working under USE_SYSTEM_SQLITE.
>
> Removes the USE_SYSTEM_SQLITE conditional sections in sql::Recover
> implementation and tests. third_party/sqlite includes sqlite_recover
> library for the USE_SYSTEM_SQLITE case, with recover.c compiled against
> the system version of SQLite.
>
> Additionally remove interiorCursorEOF() from recover.c, as it was
> unused, rather than adding a compile flag to allow it.
>
> [Relands https://codereview.chromium.org/1757653002/ ]
>
> BUG=584407
> TBR=sdefresne@chromium.org
>
> Committed: https://crrev.com/81bdd5bca887096575be7d13127095ed56b3d3c4
> Cr-Commit-Position: refs/heads/master@{#380287}
TBR=sdefresne@chromium.org,shess@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=584407
Review URL: https://codereview.chromium.org/1781973002
Cr-Commit-Position: refs/heads/master@{#380311}
Diffstat (limited to 'sql')
-rw-r--r-- | sql/BUILD.gn | 2 | ||||
-rw-r--r-- | sql/recovery.cc | 19 | ||||
-rw-r--r-- | sql/recovery_unittest.cc | 4 | ||||
-rw-r--r-- | sql/sql.gyp | 12 |
4 files changed, 22 insertions, 15 deletions
diff --git a/sql/BUILD.gn b/sql/BUILD.gn index 8c1cbb7..4ffa421 100644 --- a/sql/BUILD.gn +++ b/sql/BUILD.gn @@ -113,8 +113,6 @@ test("sql_unittests") { # '../testing/android/native_test.gyp:native_test_native_code', # ], #}], - - # TODO(GYP): dep on copy_test_data_ios action. } if (is_android) { diff --git a/sql/recovery.cc b/sql/recovery.cc index 7b9ca9f..b79fe08 100644 --- a/sql/recovery.cc +++ b/sql/recovery.cc @@ -98,7 +98,11 @@ void RecordRecoveryEvent(RecoveryEventType recovery_event) { // 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 @@ bool Recovery::Init(const base::FilePath& db_path) { 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 @@ bool Recovery::Init(const base::FilePath& db_path) { << 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. diff --git a/sql/recovery_unittest.cc b/sql/recovery_unittest.cc index d3b04b1..e4fdb7b1 100644 --- a/sql/recovery_unittest.cc +++ b/sql/recovery_unittest.cc @@ -172,6 +172,9 @@ TEST_F(SQLRecoveryTest, RecoverBasic) { ExecuteWithResults(&db(), kXSql, "|", "\n")); } +// The recovery virtual table is only supported for Chromium's SQLite. +#if !defined(USE_SYSTEM_SQLITE) + // Test operation of the virtual table used by sql::Recovery. TEST_F(SQLRecoveryTest, VirtualTable) { const char kCreateSql[] = "CREATE TABLE x (t TEXT)"; @@ -734,6 +737,7 @@ TEST_F(SQLRecoveryTest, Bug387868) { EXPECT_TRUE(sql::Recovery::Recovered(std::move(recovery))); } } +#endif // !defined(USE_SYSTEM_SQLITE) // Memory-mapped I/O interacts poorly with I/O errors. Make sure the recovery // database doesn't accidentally enable it. diff --git a/sql/sql.gyp b/sql/sql.gyp index cde3057..30bd76d 100644 --- a/sql/sql.gyp +++ b/sql/sql.gyp @@ -114,18 +114,6 @@ '../testing/android/native_test.gyp:native_test_native_code', ], }], - ['OS == "ios"', { - 'actions': [{ - 'action_name': 'copy_test_data', - 'variables': { - 'test_data_files': [ - 'test/data', - ], - 'test_data_prefix' : 'sql', - }, - 'includes': [ '../build/copy_test_data_ios.gypi' ], - }], - }], ], # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 'msvs_disabled_warnings': [4267, ], |