Merge changes Ieecda65d,Idf3cbdab
* changes:
Fix bugs of database corruption following IO error on systems supporting atomic-write
Fix bugs of sqlite that returns SIGBUS on disk full in WAL mode
diff --git a/dist/sqlite3.c b/dist/sqlite3.c
index 11e6528..a43031b 100644
--- a/dist/sqlite3.c
+++ b/dist/sqlite3.c
@@ -112423,7 +112423,7 @@
extern "C" {
#endif /* __cplusplus */
-SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db, const char* registerAs); // Android Change
+SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db);
#if 0
} /* extern "C" */
@@ -114753,24 +114753,9 @@
#endif
#ifdef SQLITE_ENABLE_FTS3
- // Begin Android change
- #ifdef SQLITE_ENABLE_FTS3_BACKWARDS
- /* Also register as fts1 and fts2, for backwards compatability on
- ** systems known to have never seen a pre-fts3 database.
- */
if( !db->mallocFailed && rc==SQLITE_OK ){
- rc = sqlite3Fts3Init(db, "fts1");
+ rc = sqlite3Fts3Init(db);
}
-
- if( !db->mallocFailed && rc==SQLITE_OK ){
- rc = sqlite3Fts3Init(db, "fts2");
- }
- #endif
-
- if( !db->mallocFailed && rc==SQLITE_OK ){
- rc = sqlite3Fts3Init(db, "fts3");
- }
- // End Android change
#endif
#ifdef SQLITE_ENABLE_ICU
@@ -120194,7 +120179,7 @@
** SQLite. If fts3 is built as a dynamically loadable extension, this
** function is called by the sqlite3_extension_init() entry point.
*/
-SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db, const char* registerAs){ // Android Change
+SQLITE_PRIVATE int sqlite3Fts3Init(sqlite3 *db){
int rc = SQLITE_OK;
Fts3Hash *pHash = 0;
const sqlite3_tokenizer_module *pSimple = 0;
@@ -120254,12 +120239,19 @@
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 2))
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "optimize", 1))
){
+#ifdef SQLITE_ENABLE_FTS3_BACKWARDS
rc = sqlite3_create_module_v2(
- // Begin Android change
- // Also register as fts1 and fts2
- db, registerAs, &fts3Module, (void *)pHash, hashDestroy
- // End Android change
- );
+ db, "fts1", &fts3Module, (void *)pHash, 0
+ );
+ if(rc) return rc;
+ rc = sqlite3_create_module_v2(
+ db, "fts2", &fts3Module, (void *)pHash, 0
+ );
+ if(rc) return rc;
+#endif
+ rc = sqlite3_create_module_v2(
+ db, "fts3", &fts3Module, (void *)pHash, 0
+ );
if( rc==SQLITE_OK ){
rc = sqlite3_create_module_v2(
db, "fts4", &fts3Module, (void *)pHash, 0