Enable some extensions in libsqlite3.so. Move some code to libsqlite3.so to avoid duplication. Link executables against libsqlite3.so. Increase timeout for fuzzcheck. Fix building with dlopen() not available. --- /Makefile.in +++ /Makefile.in @@ -313,6 +313,9 @@ # Source code for extensions # SRC += \ + $(TOP)/ext/expert/sqlite3expert.c \ + $(TOP)/ext/expert/sqlite3expert.h +SRC += \ $(TOP)/ext/fts1/fts1.c \ $(TOP)/ext/fts1/fts1.h \ $(TOP)/ext/fts1/fts1_hash.c \ @@ -365,8 +368,24 @@ $(TOP)/ext/rbu/sqlite3rbu.h \ $(TOP)/ext/rbu/sqlite3rbu.c SRC += \ + $(TOP)/ext/misc/appendvfs.c \ + $(TOP)/ext/misc/carray.c \ + $(TOP)/ext/misc/completion.c \ + $(TOP)/ext/misc/csv.c \ + $(TOP)/ext/misc/dbdata.c \ + $(TOP)/ext/misc/eval.c \ + $(TOP)/ext/misc/fileio.c \ + $(TOP)/ext/misc/ieee754.c \ $(TOP)/ext/misc/json1.c \ - $(TOP)/ext/misc/stmt.c + $(TOP)/ext/misc/regexp.c \ + $(TOP)/ext/misc/sha1.c \ + $(TOP)/ext/misc/shathree.c \ + $(TOP)/ext/misc/sqlar.c \ + $(TOP)/ext/misc/stmt.c \ + $(TOP)/ext/misc/totype.c \ + $(TOP)/ext/misc/uint.c \ + $(TOP)/ext/misc/uuid.c \ + $(TOP)/ext/misc/zipfile.c # Generated source code files # @@ -437,33 +456,24 @@ # Statically linked extensions # TESTSRC += \ - $(TOP)/ext/expert/sqlite3expert.c \ $(TOP)/ext/expert/test_expert.c \ $(TOP)/ext/misc/amatch.c \ - $(TOP)/ext/misc/carray.c \ $(TOP)/ext/misc/closure.c \ - $(TOP)/ext/misc/csv.c \ - $(TOP)/ext/misc/eval.c \ $(TOP)/ext/misc/explain.c \ - $(TOP)/ext/misc/fileio.c \ $(TOP)/ext/misc/fuzzer.c \ $(TOP)/ext/fts5/fts5_tcl.c \ $(TOP)/ext/fts5/fts5_test_mi.c \ $(TOP)/ext/fts5/fts5_test_tok.c \ - $(TOP)/ext/misc/ieee754.c \ $(TOP)/ext/misc/mmapwarm.c \ $(TOP)/ext/misc/nextchar.c \ $(TOP)/ext/misc/normalize.c \ $(TOP)/ext/misc/percentile.c \ $(TOP)/ext/misc/prefixes.c \ - $(TOP)/ext/misc/regexp.c \ $(TOP)/ext/misc/remember.c \ $(TOP)/ext/misc/series.c \ $(TOP)/ext/misc/spellfix.c \ - $(TOP)/ext/misc/totype.c \ $(TOP)/ext/misc/unionvtab.c \ $(TOP)/ext/misc/wholenumber.c \ - $(TOP)/ext/misc/zipfile.c \ $(TOP)/ext/userauth/userauth.c # Source code to the library files needed by the test fixture @@ -645,25 +655,25 @@ libtclsqlite3.la: tclsqlite.lo libsqlite3.la $(LTLINK) -no-undefined -o $@ tclsqlite.lo \ - libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \ + libsqlite3.la @TCL_STUB_LIB_SPEC@ \ -rpath "$(TCLLIBDIR)" \ -version-info "8:6:8" \ -avoid-version -sqlite3$(TEXE): shell.c sqlite3.c - $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \ - shell.c sqlite3.c \ - $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)" +sqlite3$(TEXE): shell.c libsqlite3.la + $(LTLINK) $(READLINE_FLAGS) -o $@ \ + shell.c libsqlite3.la \ + $(LIBREADLINE) -sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h - $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS) +sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la + $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la -dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h - $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS) +dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la + $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la -scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo +scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la $(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \ - $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS) + $(TOP)/ext/misc/scrub.c libsqlite3.la srcck1$(BEXE): $(TOP)/tool/srcck1.c $(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c @@ -774,7 +784,7 @@ # Rule to build the amalgamation # sqlite3.lo: sqlite3.c - $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c + $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c # Rules to build the LEMON compiler generator # @@ -1074,15 +1084,6 @@ # Source files that go into making shell.c SHELL_SRC = \ $(TOP)/src/shell.c.in \ - $(TOP)/ext/misc/appendvfs.c \ - $(TOP)/ext/misc/shathree.c \ - $(TOP)/ext/misc/fileio.c \ - $(TOP)/ext/misc/completion.c \ - $(TOP)/ext/misc/sqlar.c \ - $(TOP)/ext/misc/uint.c \ - $(TOP)/ext/expert/sqlite3expert.c \ - $(TOP)/ext/expert/sqlite3expert.h \ - $(TOP)/ext/misc/zipfile.c \ $(TOP)/ext/misc/memtrace.c \ $(TOP)/src/test_windirent.c @@ -1251,11 +1252,11 @@ # Fuzz testing fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db - ./fuzzcheck$(TEXE) $(FUZZDATA) + ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA) ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db - valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA) + valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA) valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db # The veryquick.test TCL tests. @@ -1286,24 +1287,23 @@ smoketest: $(TESTPROGS) fuzzcheck$(TEXE) ./testfixture$(TEXE) $(TOP)/test/main.test $(TESTOPTS) -sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in +sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c -sqlite3_analyzer$(TEXE): sqlite3_analyzer.c - $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS) +sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la + $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL) -sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in +sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c -sqltclsh$(TEXE): sqltclsh.c - $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS) +sqltclsh$(TEXE): sqltclsh.c libsqlite3.la + $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL) -sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c - $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS) +sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la + $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la CHECKER_DEPS =\ $(TOP)/tool/mkccode.tcl \ - sqlite3.c \ $(TOP)/src/tclsqlite.c \ $(TOP)/ext/repair/sqlite3_checker.tcl \ $(TOP)/ext/repair/checkindex.c \ @@ -1314,36 +1314,36 @@ sqlite3_checker.c: $(CHECKER_DEPS) $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@ -sqlite3_checker$(TEXE): sqlite3_checker.c - $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS) +sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la + $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL) -dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo +dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la $(LTLINK) -DDBDUMP_STANDALONE -o $@ \ - $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS) + $(TOP)/ext/misc/dbdump.c libsqlite3.la -dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c - $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c +dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c + $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c -showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo - $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS) +showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la + $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la -showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo - $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS) +showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la + $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la -showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo - $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS) +showjournal$(TEXE): $(TOP)/tool/showjournal.c + $(LTLINK) -o $@ $(TOP)/tool/showjournal.c -showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo - $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS) +showwal$(TEXE): $(TOP)/tool/showwal.c + $(LTLINK) -o $@ $(TOP)/tool/showwal.c showshm$(TEXE): $(TOP)/tool/showshm.c $(LTLINK) -o $@ $(TOP)/tool/showshm.c -index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo - $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS) +index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la + $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la -changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo - $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS) +changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la + $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS) @@ -1368,11 +1368,11 @@ kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c $(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS) -rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo - $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS) +rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la + $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la -loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la - $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS) +loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la + $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ # This target will fail if the SQLite amalgamation contains any exported # symbols that do not begin with "sqlite3_". It is run as part of the --- /configure.ac +++ /configure.ac @@ -587,6 +587,9 @@ if test "${enable_load_extension}" = "yes" ; then OPT_FEATURE_FLAGS="" AC_SEARCH_LIBS(dlopen, dl) + if test "${ac_cv_search_dlopen}" = "no" ; then + OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1" + fi else OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1" fi --- /ext/repair/sqlite3_checker.c.in +++ /ext/repair/sqlite3_checker.c.in @@ -2,6 +2,7 @@ ** Read an SQLite database file and analyze its space utilization. Generate ** text on standard output. */ +#define SQLITE_CORE 1 #define TCLSH_INIT_PROC sqlite3_checker_init_proc #define SQLITE_ENABLE_DBPAGE_VTAB 1 #define SQLITE_ENABLE_JSON1 1 @@ -14,7 +15,7 @@ #define SQLITE_OMIT_SHARED_CACHE 1 #define SQLITE_DEFAULT_MEMSTATUS 0 #define SQLITE_MAX_EXPR_DEPTH 0 -INCLUDE sqlite3.c +#include "sqlite3.h" INCLUDE $ROOT/src/tclsqlite.c INCLUDE $ROOT/ext/misc/btreeinfo.c INCLUDE $ROOT/ext/repair/checkindex.c --- /src/main.c +++ /src/main.c @@ -50,12 +50,31 @@ #ifdef SQLITE_ENABLE_FTS5 int sqlite3Fts5Init(sqlite3*); #endif +#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) +int sqlite3DbdataRegister(sqlite3*); +#endif #ifdef SQLITE_ENABLE_JSON1 int sqlite3Json1Init(sqlite3*); #endif #ifdef SQLITE_ENABLE_STMTVTAB int sqlite3StmtVtabInit(sqlite3*); #endif +int sqlite3CarrayInit(sqlite3*); +int sqlite3CompletionVtabInit(sqlite3*); +int sqlite3CsvInit(sqlite3*); +int sqlite3EvalInit(sqlite3*); +int sqlite3FileioInit(sqlite3*); +int sqlite3IeeeInit(sqlite3*); +int sqlite3RegexpInit(sqlite3*); +int sqlite3ShaInit(sqlite3*); +int sqlite3ShathreeInit(sqlite3*); +int sqlite3TotypeInit(sqlite3*); +int sqlite3UintInit(sqlite3*); +int sqlite3UuidInit(sqlite3*); +#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) +int sqlite3ZipfileInit(sqlite3*); +int sqlite3SqlarInit(sqlite3*); +#endif /* ** An array of pointers to extension initializer functions for @@ -83,6 +102,9 @@ #ifdef SQLITE_ENABLE_DBPAGE_VTAB sqlite3DbpageRegister, #endif +#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) + sqlite3DbdataRegister, +#endif #ifdef SQLITE_ENABLE_DBSTAT_VTAB sqlite3DbstatRegister, #endif @@ -96,6 +118,22 @@ #ifdef SQLITE_ENABLE_BYTECODE_VTAB sqlite3VdbeBytecodeVtabInit, #endif + sqlite3CarrayInit, + sqlite3CompletionVtabInit, + sqlite3CsvInit, + sqlite3EvalInit, + sqlite3FileioInit, + sqlite3IeeeInit, + sqlite3RegexpInit, + sqlite3ShaInit, + sqlite3ShathreeInit, + sqlite3TotypeInit, + sqlite3UintInit, + sqlite3UuidInit, +#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) + sqlite3ZipfileInit, + sqlite3SqlarInit, +#endif }; #ifndef SQLITE_AMALGAMATION --- /src/shell.c.in +++ /src/shell.c.in @@ -69,6 +69,7 @@ #include #include #include "sqlite3.h" +#include "ext/expert/sqlite3expert.h" typedef sqlite3_int64 i64; typedef sqlite3_uint64 u64; typedef unsigned char u8; @@ -135,6 +136,10 @@ # define SHELL_USE_LOCAL_GETLINE 1 #endif +#ifdef SQLITE_HAVE_ZLIB +#include +#endif + #if defined(_WIN32) || defined(WIN32) # if SQLITE_OS_WINRT @@ -1005,22 +1010,7 @@ INCLUDE test_windirent.c #define dirent DIRENT #endif -INCLUDE ../ext/misc/shathree.c -INCLUDE ../ext/misc/fileio.c -INCLUDE ../ext/misc/completion.c -INCLUDE ../ext/misc/appendvfs.c INCLUDE ../ext/misc/memtrace.c -INCLUDE ../ext/misc/uint.c -#ifdef SQLITE_HAVE_ZLIB -INCLUDE ../ext/misc/zipfile.c -INCLUDE ../ext/misc/sqlar.c -#endif -INCLUDE ../ext/expert/sqlite3expert.h -INCLUDE ../ext/expert/sqlite3expert.c - -#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) -INCLUDE ../ext/misc/dbdata.c -#endif #if defined(SQLITE_ENABLE_SESSION) /* @@ -4261,17 +4251,6 @@ #ifndef SQLITE_OMIT_LOAD_EXTENSION sqlite3_enable_load_extension(p->db, 1); #endif - sqlite3_fileio_init(p->db, 0, 0); - sqlite3_shathree_init(p->db, 0, 0); - sqlite3_completion_init(p->db, 0, 0); - sqlite3_uint_init(p->db, 0, 0); -#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) - sqlite3_dbdata_init(p->db, 0, 0); -#endif -#ifdef SQLITE_HAVE_ZLIB - sqlite3_zipfile_init(p->db, 0, 0); - sqlite3_sqlar_init(p->db, 0, 0); -#endif sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0, shellAddSchemaName, 0, 0); sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0, @@ -6281,8 +6260,6 @@ ); goto end_ar_command; } - sqlite3_fileio_init(cmd.db, 0, 0); - sqlite3_sqlar_init(cmd.db, 0, 0); sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p, shellPutsFunc, 0, 0); @@ -10621,6 +10598,7 @@ #endif } data.out = stdout; + extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *); sqlite3_appendvfs_init(0,0,0); /* Go ahead and open the database file if it already exists. If the --- /src/test_config.c +++ /src/test_config.c @@ -540,6 +540,8 @@ Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY); #endif + Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY); + #ifdef SQLITE_OMIT_REINDEX Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY); #else @@ -662,6 +664,8 @@ Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY); #endif + Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY); + #ifdef SQLITE_OMIT_UTF16 Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY); #else --- /test/e_expr.test +++ /test/e_expr.test @@ -1078,7 +1078,7 @@ # # There is a regexp function if ICU is enabled though. # -ifcapable !icu { +ifcapable !icu&&!regexp { do_catchsql_test e_expr-18.1.1 { SELECT regexp('abc', 'def') } {1 {no such function: regexp}} --- /test/icu.test +++ /test/icu.test @@ -41,7 +41,7 @@ # test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'} 1 test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'} 1 - test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'} 0 + test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'} 0 test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1 test_expr icu-1.5 {i1=NULL} {i1 REGEXP '.ell.*'} {} --- /test/pragma.test +++ /test/pragma.test @@ -1360,17 +1360,32 @@ } ;# ifcapable trigger ifcapable schema_pragmas { - do_test pragma-11.1 { - execsql2 { - pragma collation_list; - } - } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY} - do_test pragma-11.2 { - db collate New_Collation blah... - execsql { - pragma collation_list; - } - } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY} + ifcapable uint { + do_test pragma-11.1 { + execsql2 { + pragma collation_list; + } + } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY} + do_test pragma-11.2 { + db collate New_Collation blah... + execsql { + pragma collation_list; + } + } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY} + } + ifcapable !uint { + do_test pragma-11.1 { + execsql2 { + pragma collation_list; + } + } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY} + do_test pragma-11.2 { + db collate New_Collation blah... + execsql { + pragma collation_list; + } + } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY} + } } ifcapable schema_pragmas&&tempdb { --- /test/sessionfuzz.c +++ /test/sessionfuzz.c @@ -700,42 +700,6 @@ #include #include "zlib.h" -/* -** Implementation of the "sqlar_uncompress(X,SZ)" SQL function -** -** Parameter SZ is interpreted as an integer. If it is less than or -** equal to zero, then this function returns a copy of X. Or, if -** SZ is equal to the size of X when interpreted as a blob, also -** return a copy of X. Otherwise, decompress blob X using zlib -** utility function uncompress() and return the results (another -** blob). -*/ -static void sqlarUncompressFunc( - sqlite3_context *context, - int argc, - sqlite3_value **argv -){ - uLong nData; - uLongf sz; - - assert( argc==2 ); - sz = sqlite3_value_int(argv[1]); - - if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){ - sqlite3_result_value(context, argv[0]); - }else{ - const Bytef *pData= sqlite3_value_blob(argv[0]); - Bytef *pOut = sqlite3_malloc(sz); - if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){ - sqlite3_result_error(context, "error in uncompress()", -1); - }else{ - sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT); - } - sqlite3_free(pOut); - } -} - - /* Run a chunk of SQL. If any errors happen, print an error message ** and exit. */ --- /tool/mksqlite3c.tcl +++ /tool/mksqlite3c.tcl @@ -117,6 +117,7 @@ rtree.h sqlite3session.h sqlite3.h + sqlite3expert.h sqlite3ext.h sqlite3rbu.h sqliteicu.h @@ -404,6 +405,23 @@ sqlite3session.c fts5.c stmt.c + appendvfs.c + carray.c + completion.c + csv.c + dbdata.c + eval.c + fileio.c + ieee754.c + regexp.c + sha1.c + shathree.c + sqlar.c + sqlite3expert.c + totype.c + uint.c + uuid.c + zipfile.c } { copy_file tsrc/$file } --- /tool/sqlite3_analyzer.c.in +++ /tool/sqlite3_analyzer.c.in @@ -14,9 +14,6 @@ #define SQLITE_DEFAULT_MEMSTATUS 0 #define SQLITE_MAX_EXPR_DEPTH 0 #define SQLITE_OMIT_LOAD_EXTENSION 1 -#ifndef USE_EXTERNAL_SQLITE -INCLUDE sqlite3.c -#endif INCLUDE $ROOT/src/tclsqlite.c const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){ --- /tool/sqltclsh.c.in +++ /tool/sqltclsh.c.in @@ -27,21 +27,13 @@ #define SQLITE_OMIT_SHARED_CACHE 1 #define SQLITE_DEFAULT_MEMSTATUS 0 #define SQLITE_MAX_EXPR_DEPTH 0 -INCLUDE sqlite3.c -INCLUDE $ROOT/ext/misc/appendvfs.c -#ifdef SQLITE_HAVE_ZLIB -INCLUDE $ROOT/ext/misc/zipfile.c -INCLUDE $ROOT/ext/misc/sqlar.c -#endif +#include "sqlite3.h" INCLUDE $ROOT/src/tclsqlite.c const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){ (void)interp; + extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *); sqlite3_appendvfs_init(0,0,0); -#ifdef SQLITE_HAVE_ZLIB - sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init); - sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init); -#endif return BEGIN_STRING