blob: 8629618f6b623aac613d6332660085d59f955361 [file] [log] [blame]
diff -r -u -d orig/shell.c ./shell.c
--- orig/shell.c 2017-07-28 11:35:29.000000000 -0700
+++ ./shell.c 2017-07-28 12:06:22.358087037 -0700
@@ -52,6 +52,12 @@
#endif
#include <ctype.h>
#include <stdarg.h>
+// Begin Android Add
+#ifndef NO_ANDROID_FUNCS
+#include "IcuUtils.h"
+#include <sqlite3_android.h>
+#endif
+// End Android Add
#if !defined(_WIN32) && !defined(WIN32)
# include <signal.h>
@@ -3509,6 +3515,22 @@
sha3QueryFunc, 0, 0);
sqlite3_create_function(p->db, "sha3_query", 2, SQLITE_UTF8, 0,
sha3QueryFunc, 0, 0);
+
+ // Begin Android Add
+ #ifndef NO_ANDROID_FUNCS
+ InitializeIcuOrDie();
+ int err = register_localized_collators(p->db, "en_US", 0);
+ if (err != SQLITE_OK) {
+ fprintf(stderr, "register_localized_collators() failed\n");
+ exit(1);
+ }
+ err = register_android_functions(p->db, 0);
+ if (err != SQLITE_OK) {
+ fprintf(stderr, "register_android_functions() failed\n");
+ exit(1);
+ }
+ #endif
+ // End Android Add
}
}
diff -r -u -d orig/sqlite3.c ./sqlite3.c
--- orig/sqlite3.c 2017-07-28 11:35:29.000000000 -0700
+++ ./sqlite3.c 2017-07-28 12:06:22.402086153 -0700
@@ -33615,7 +33615,7 @@
SimulateIOError( rc=1 );
if( rc!=0 ){
storeLastErrno((unixFile*)id, errno);
- return SQLITE_IOERR_FSTAT;
+ return unixLogError(SQLITE_IOERR_FSTAT, "fstat", ((unixFile*)id)->zPath);
}
*pSize = buf.st_size;
@@ -33651,7 +33651,7 @@
struct stat buf; /* Used to hold return values of fstat() */
if( osFstat(pFile->h, &buf) ){
- return SQLITE_IOERR_FSTAT;
+ return unixLogError(SQLITE_IOERR_FSTAT, "fstat", pFile->zPath);
}
nSize = ((nByte+pFile->szChunk-1) / pFile->szChunk) * pFile->szChunk;
@@ -34259,7 +34259,7 @@
** with the same permissions.
*/
if( osFstat(pDbFd->h, &sStat) ){
- rc = SQLITE_IOERR_FSTAT;
+ rc = unixLogError(SQLITE_IOERR_FSTAT, "fstat", pDbFd->zPath);
goto shm_open_err;
}
@@ -116109,7 +116109,7 @@
}
if( pDb->pSchema->file_format>SQLITE_MAX_FILE_FORMAT ){
sqlite3SetString(pzErrMsg, db, "unsupported file format");
- rc = SQLITE_ERROR;
+ rc = SQLITE_CORRUPT_BKPT; // Android Change from "rc = SQLITE_ERROR;";
goto initone_error_out;
}
@@ -149944,13 +149944,25 @@
** module with sqlite.
*/
if( SQLITE_OK==rc
+#ifndef ANDROID /* fts3_tokenizer disabled for security reasons */
&& SQLITE_OK==(rc = sqlite3Fts3InitHashTable(db, pHash, "fts3_tokenizer"))
+#endif
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1))
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1))
&& SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 1))
&& 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(
+ 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, hashDestroy
);