parent
be39a18cc5
commit
9d092bcf34
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,12 +1,6 @@
|
||||
DIST sqlite-autoconf-3250300.tar.gz 2764429 BLAKE2B 6a79a8785c1e84002c031a86c6563e937a45d6ef4aae1b941d42c06cb8630210c33583f25e41f3f90b181ce47da650f81845ad88cafbf9c764164cf8b5d92e81 SHA512 5bc501d15367e097f4070185974b0c3a8246c06b205fb2258ed18870ff3fbf120ac5e0ba031a6744af89f7659206e28e7de2f0367bdb190b8412e453b43de4ba
|
||||
DIST sqlite-autoconf-3260000.tar.gz 2779667 BLAKE2B f4d737eb2249ce32fcb7541ba92f7362d417e84adb5f5c63778b6f427b3270b7e0b16e19daaef7fc7e4fca9ab462c96cdb00c65a731a90102f6bb256a27d84ae SHA512 8c3306b3814a0e9bc69b741f62bdb6efc9f1e07163ca3e3a1581994465de163a7924223522e812d6b3663c1525c7012a6f6d73ad333556eba9f97ce9326fbdb8
|
||||
DIST sqlite-autoconf-3270100.tar.gz 2797765 BLAKE2B a610528b626229e5379037cb2b8b405a564fecf7f999608bcd41b4ee3531259216c69897e4f2e1cdd78d092edf62c3fec40b6cb377d3c767b9f1bee05b09fa01 SHA512 1dca61b82ce1dbae2fe9c568ff97e0671900bab46b354bd0aadc1946cbc46b3ea84bd1504ae922f795d1ce10791bf7861a2873f045887646609e26b74919e8e4
|
||||
DIST sqlite-autoconf-3270200.tar.gz 2797531 BLAKE2B e4d0de32308e519e4f5f68dc0ff1e2098209325ab962a09814aa6af517cb408d1ac70f32fff56cca4ad78bec7d6dedb5b21f222ae391e0fe7e20df5abd37f65a SHA512 0ac2515c7816932a4f725e657122c9f202bd7aba637bad9af5b4592b85efdd10a55ad34ac621b60a7aea91b1021c2ef0924c6ddfe05b2edb4f70e3d34b005972
|
||||
DIST sqlite-doc-3250300.zip 9265285 BLAKE2B 0722f00d849b18dabf82d317eb0deeb5567534a9cb55e189f28b18e7a26b863190911a02a26e21cf39b3106e7e1a872c445a3d8b53876a16d245e77affb6abc4 SHA512 a57cefbb2338a87721fb34f7a0d19129a58fbce026f80719af7dbbeb7512c91ab59e07719d860cc1cf742807ab7b0b5f92cff3bf52f4dbbad8c6ca34ad0a68ac
|
||||
DIST sqlite-doc-3260000.zip 9321276 BLAKE2B 8e3802212eb938a3997bf8eef971baf8802895a8c38e959b2409857228e9a92b24c3f51679f7dc4847df8d9800f0fff2c09e391b3e30de8b2782bbc5267d5d40 SHA512 e59f74369adb3ffe3afc235e4369101b8ba077f9cac34d524e2425278c3a30f63340613e5baa0fc3c693265525377b6830a1c6b5e97fb06702b89eb604b1eade
|
||||
DIST sqlite-doc-3270100.zip 9361284 BLAKE2B d9705bc5d3a40ec70df2fa16c9f3f7d3d4824ddcb59e101bc6d45bc5f6396c11ed9e5d548f59bc2f48cb515417bb03419e67f669a7e85678d05cb0c71a3a2c27 SHA512 a56cfe57702ab1ab342c24536bcd3c01c3c57fb9e863fc775f07275d236fc0617f7eb832ca5173bf5c4c5c4b7a0b4b80e2d19b91e7724b838bf141cf0852cc1f
|
||||
DIST sqlite-autoconf-3280000.tar.gz 2810415 BLAKE2B e1af03476d97f96ef78d4e0a9df6ae69a06fb08e48046c843ed668b3f8c00c58263df07a4e8a22a1c7cfc920fd005fa6c2525dceeec4f724b43df7589ca3f777 SHA512 e800c0d9e6c8c01ccf1d714c6c4da4b98e9610c4c06557dda6393d0792a8ae09788703d4a74dcb21844c49b3629ff7ed95a4a86ff79872aafd2b49c672c7a570
|
||||
DIST sqlite-doc-3270200.zip 9371606 BLAKE2B 6d65f59f21eafab82ede6c89d09b8828e5a5e6f7ad7233877fe938773be0aee6fd347d7bba0101cc1d2e376181e4cfbcc2e36d47567b65af9167c4d1ba7f3540 SHA512 00a7c51aeaea2d9338662553c331addca8cd4ae656f4090630b4b2c2e6ceffffd9bd3c6a97117915577cfd6dafeddf9da21f865ab378f86c4832ba0b1c419a2f
|
||||
DIST sqlite-src-3250300.zip 11384253 BLAKE2B dbc1d989b1f7ae26e34d629ae7926cfebacc0e3b9e07abb98ac6e6d2d801f111624d5b3f5a1d486580559ff0b42140bb798aa862df60946efa77d8b26c47fbd0 SHA512 7d6a38aea5626f7a32960fcdd109c647dd24a22ecf0772f01ffdba389f70fdfe6455f69733b22c220d4114a7d61d3d10097c23859d303e02d126988a1f663b65
|
||||
DIST sqlite-src-3260000.zip 11939787 BLAKE2B 89fc5294c203473a8817d23496b05b743aa9d64ac7c67c258432b6a48dfe41d554b09ed14820854333fe555442029e9c9ccea736be7b10be42d9184502938557 SHA512 02faacd831781f25a12ffc8858d648f481d8bbdb68814b18c4c96e3a661233d0e25d675b95feeb35eee4b5ea88e5e0a1fc5fbaecbe434d3f7246d80e81bff6a3
|
||||
DIST sqlite-src-3270100.zip 12247922 BLAKE2B 324488f345e1b15c4d31772d709a7591e9e278842267d84e44cf62e63cbf0acc4a8da2e0d280a5d43d48f67235c067fd97f791d67916803746c83310cbb62c49 SHA512 5ae0d3ee747df85e5dcd7cb64057ec64843079cfcf163558aa793194ec8ba0ad5570d9c8cb152b6510357ec074da6dba7cfd2f64466f06565c54cd175d9f8945
|
||||
DIST sqlite-doc-3280000.zip 9421770 BLAKE2B 695eab96f718307a7aff8a171d9e416ddb4b17039ef7230a458dc7d256e2f07a5b41d3aa1a3f085e5e418c297b5dd1d2ba5e4827434329d1ed61d3dd1f618f3d SHA512 83e23dff00614d31d501c66c29d8d4aa780b38859242b58937243235d185fe3db2f9f3c1accf9bf2df0b457a6e32612a00e82f503a8665aad4f19602e2b36396
|
||||
DIST sqlite-src-3270200.zip 12248529 BLAKE2B b3c79b85bbfa376b31ebb4ad33aea3f0b60c1f6d1e6505e02758cffff41e44ea0c5b8c24892f0757502ed6213c0f97f00957632ddf0e5ffe25e9f8b7f62c6e9a SHA512 52f61e2fa54558b953dba62b27961eef8563f40e6b4a62638087cb22c7d1fdf2c915ea1071939e2e98f3ce6041da2c9bfb1bdbc1e8b8b4a049b8148e878a4e5e
|
||||
DIST sqlite-src-3280000.zip 12477204 BLAKE2B e62e0f36f0bebf89990f8ec91cb1e508a5ebc92bb212eaf9c80eb0febecb5623f5938ecd31c210837314f1f9aab19a18189824f82a106799384d8184ca5f65ab SHA512 49c35c65fa686a2326e13218db583c54fa5fe8f48f0caddd11a942601803b3023f7d32ffbab16641e0d72dc9ed288ad26eaa7226c865ac54e1f181859125651f
|
||||
|
@ -1,407 +0,0 @@
|
||||
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
|
||||
@@ -310,6 +310,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 \
|
||||
@@ -359,8 +362,11 @@
|
||||
$(TOP)/ext/rbu/sqlite3rbu.h \
|
||||
$(TOP)/ext/rbu/sqlite3rbu.c
|
||||
SRC += \
|
||||
+ $(TOP)/ext/misc/appendvfs.c \
|
||||
$(TOP)/ext/misc/json1.c \
|
||||
- $(TOP)/ext/misc/stmt.c
|
||||
+ $(TOP)/ext/misc/sqlar.c \
|
||||
+ $(TOP)/ext/misc/stmt.c \
|
||||
+ $(TOP)/ext/misc/zipfile.c
|
||||
|
||||
# Generated source code files
|
||||
#
|
||||
@@ -430,7 +436,6 @@
|
||||
# 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 \
|
||||
@@ -453,8 +458,7 @@
|
||||
$(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/misc/wholenumber.c
|
||||
|
||||
# Source code to the library files needed by the test fixture
|
||||
#
|
||||
@@ -620,25 +624,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
|
||||
@@ -717,7 +721,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
|
||||
#
|
||||
@@ -1017,14 +1021,9 @@
|
||||
# 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/expert/sqlite3expert.c \
|
||||
- $(TOP)/ext/expert/sqlite3expert.h \
|
||||
- $(TOP)/ext/misc/zipfile.c \
|
||||
$(TOP)/src/test_windirent.c
|
||||
|
||||
shell.c: $(SHELL_SRC) $(TOP)/tool/mkshellc.tcl
|
||||
@@ -1183,15 +1182,15 @@
|
||||
|
||||
# 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
|
||||
|
||||
fastfuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
|
||||
- ./fuzzcheck$(TEXE) --limit-mem 100M $(FUZZDATA)
|
||||
+ ./fuzzcheck$(TEXE) --limit-mem 100M --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.
|
||||
@@ -1222,24 +1221,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 \
|
||||
@@ -1250,30 +1248,30 @@
|
||||
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
|
||||
|
||||
-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
|
||||
|
||||
-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
|
||||
|
||||
rollback-test$(TEXE): $(TOP)/tool/rollback-test.c sqlite3.lo
|
||||
$(LTLINK) -o $@ $(TOP)/tool/rollback-test.c sqlite3.lo $(TLIBS)
|
||||
@@ -1295,11 +1293,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/misc/sqlar.c
|
||||
+++ /ext/misc/sqlar.c
|
||||
@@ -14,6 +14,8 @@
|
||||
** for working with sqlar archives and used by the shell tool's built-in
|
||||
** sqlar support.
|
||||
*/
|
||||
+#ifdef SQLITE_HAVE_ZLIB
|
||||
+
|
||||
#include "sqlite3ext.h"
|
||||
SQLITE_EXTENSION_INIT1
|
||||
#include <zlib.h>
|
||||
@@ -119,3 +121,5 @@
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
+
|
||||
+#endif /* SQLITE_HAVE_ZLIB */
|
||||
--- /ext/misc/zipfile.c
|
||||
+++ /ext/misc/zipfile.c
|
||||
@@ -24,6 +24,8 @@
|
||||
** * No support for zip64 extensions
|
||||
** * Only the "inflate/deflate" (zlib) compression method is supported
|
||||
*/
|
||||
+#ifdef SQLITE_HAVE_ZLIB
|
||||
+
|
||||
#include "sqlite3ext.h"
|
||||
SQLITE_EXTENSION_INIT1
|
||||
#include <stdio.h>
|
||||
@@ -2175,3 +2177,5 @@
|
||||
(void)pzErrMsg; /* Unused parameter */
|
||||
return zipfileRegister(db);
|
||||
}
|
||||
+
|
||||
+#endif /* SQLITE_HAVE_ZLIB */
|
||||
--- /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/shell.c.in
|
||||
+++ /src/shell.c.in
|
||||
@@ -61,6 +61,7 @@
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "sqlite3.h"
|
||||
+#include "ext/expert/sqlite3expert.h"
|
||||
typedef sqlite3_int64 i64;
|
||||
typedef sqlite3_uint64 u64;
|
||||
typedef unsigned char u8;
|
||||
@@ -127,6 +128,10 @@
|
||||
# define SHELL_USE_LOCAL_GETLINE 1
|
||||
#endif
|
||||
|
||||
+#ifdef SQLITE_HAVE_ZLIB
|
||||
+#include <zlib.h>
|
||||
+#endif
|
||||
+
|
||||
|
||||
#if defined(_WIN32) || defined(WIN32)
|
||||
# include <io.h>
|
||||
@@ -936,13 +941,6 @@
|
||||
INCLUDE ../ext/misc/shathree.c
|
||||
INCLUDE ../ext/misc/fileio.c
|
||||
INCLUDE ../ext/misc/completion.c
|
||||
-INCLUDE ../ext/misc/appendvfs.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_ENABLE_SESSION)
|
||||
/*
|
||||
@@ -3654,7 +3652,9 @@
|
||||
sqlite3_shathree_init(p->db, 0, 0);
|
||||
sqlite3_completion_init(p->db, 0, 0);
|
||||
#ifdef SQLITE_HAVE_ZLIB
|
||||
+ extern int sqlite3_zipfile_init(sqlite3 *, char **, const sqlite3_api_routines *);
|
||||
sqlite3_zipfile_init(p->db, 0, 0);
|
||||
+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
|
||||
sqlite3_sqlar_init(p->db, 0, 0);
|
||||
#endif
|
||||
sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
|
||||
@@ -5549,6 +5549,7 @@
|
||||
goto end_ar_command;
|
||||
}
|
||||
sqlite3_fileio_init(cmd.db, 0, 0);
|
||||
+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
|
||||
sqlite3_sqlar_init(cmd.db, 0, 0);
|
||||
sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
|
||||
shellPutsFunc, 0, 0);
|
||||
@@ -8584,6 +8585,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
|
||||
--- /tool/mksqlite3c.tcl
|
||||
+++ /tool/mksqlite3c.tcl
|
||||
@@ -117,6 +117,7 @@
|
||||
rtree.h
|
||||
sqlite3session.h
|
||||
sqlite3.h
|
||||
+ sqlite3expert.h
|
||||
sqlite3ext.h
|
||||
sqlite3rbu.h
|
||||
sqliteicu.h
|
||||
@@ -403,6 +404,10 @@
|
||||
sqlite3session.c
|
||||
fts5.c
|
||||
stmt.c
|
||||
+ appendvfs.c
|
||||
+ sqlar.c
|
||||
+ sqlite3expert.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,19 +27,17 @@
|
||||
#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
|
||||
+ extern int sqlite3_sqlar_init(sqlite3 *, char **, const sqlite3_api_routines *);
|
||||
sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
|
||||
+ extern int sqlite3_zipfile_init(sqlite3 *, char **, const sqlite3_api_routines *);
|
||||
sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
|
||||
#endif
|
||||
|
@ -1,70 +0,0 @@
|
||||
https://sqlite.org/src/info/d04b2013b5436430
|
||||
|
||||
--- /test/like3.test
|
||||
+++ /test/like3.test
|
||||
@@ -130,12 +130,14 @@
|
||||
do_execsql_test like3-5.110 {
|
||||
SELECT x FROM t5a WHERE x LIKE '/a%';
|
||||
} {/abc}
|
||||
+ifcapable !icu {
|
||||
do_eqp_test like3-5.111 {
|
||||
SELECT x FROM t5a WHERE x LIKE '/a%';
|
||||
} {
|
||||
QUERY PLAN
|
||||
`--SEARCH TABLE t5a USING COVERING INDEX sqlite_autoindex_t5a_1 (x>? AND x<?)
|
||||
}
|
||||
+}
|
||||
do_execsql_test like3-5.120 {
|
||||
SELECT x FROM t5a WHERE x LIKE '^12%' ESCAPE '^';
|
||||
} {123}
|
||||
--- /test/window6.test
|
||||
+++ /test/window6.test
|
||||
@@ -147,17 +147,17 @@
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
-do_execsql_test 6.0 {
|
||||
- SELECT LIKE('!', '', '!') x WHERE x;
|
||||
-} {}
|
||||
-
|
||||
-do_execsql_test 6.1 {
|
||||
- SELECT LIKE("!","","!")""WHeRE"";
|
||||
-} {}
|
||||
-
|
||||
-do_catchsql_test 6.2 {
|
||||
- SELECT LIKE("!","","!")""window"";
|
||||
-} {1 {near "window": syntax error}}
|
||||
+ifcapable !icu {
|
||||
+ do_execsql_test 6.0 {
|
||||
+ SELECT LIKE('!', '', '!') x WHERE x;
|
||||
+ } {}
|
||||
+ do_execsql_test 6.1 {
|
||||
+ SELECT LIKE("!","","!")""WHeRE"";
|
||||
+ } {}
|
||||
+ do_catchsql_test 6.2 {
|
||||
+ SELECT LIKE("!","","!")""window"";
|
||||
+ } {1 {near "window": syntax error}}
|
||||
+}
|
||||
|
||||
reset_db
|
||||
do_execsql_test 7.0 {
|
||||
@@ -166,9 +166,11 @@
|
||||
INSERT INTO t1 VALUES('');
|
||||
}
|
||||
|
||||
-do_execsql_test 7.1 {
|
||||
- SELECT count(*) FROM t1 WHERE x LIKE '!' ESCAPE '!';
|
||||
-} {0}
|
||||
+ifcapable !icu {
|
||||
+ do_execsql_test 7.1 {
|
||||
+ SELECT count(*) FROM t1 WHERE x LIKE '!' ESCAPE '!';
|
||||
+ } {0}
|
||||
+}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -336,4 +338,3 @@
|
||||
}
|
||||
|
||||
finish_test
|
||||
-
|
@ -0,0 +1,954 @@
|
||||
https://sqlite.org/src/info/b2ce5ed175cb5029
|
||||
https://sqlite.org/src/info/6e4a5f22811bcd14
|
||||
https://sqlite.org/src/info/516ca8945150bdc1
|
||||
https://sqlite.org/src/info/e1724f1d618cfbcf
|
||||
https://sqlite.org/src/info/c621fc668c6538f9
|
||||
https://sqlite.org/src/info/c509d8a8aebe0da4
|
||||
https://sqlite.org/src/info/a9b90aa12eecdd9f
|
||||
|
||||
--- /ext/fts3/fts3_write.c
|
||||
+++ /ext/fts3/fts3_write.c
|
||||
@@ -3754,7 +3754,7 @@
|
||||
}
|
||||
p->iOff += fts3GetVarint32(&p->aNode[p->iOff], &nSuffix);
|
||||
|
||||
- if( nPrefix>p->iOff || nSuffix>p->nNode-p->iOff ){
|
||||
+ if( nPrefix>p->term.n || nSuffix>p->nNode-p->iOff || nSuffix==0 ){
|
||||
return FTS_CORRUPT_VTAB;
|
||||
}
|
||||
blobGrowBuffer(&p->term, nPrefix+nSuffix, &rc);
|
||||
@@ -3773,7 +3773,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- assert( p->iOff<=p->nNode );
|
||||
+ assert_fts3_nc( p->iOff<=p->nNode );
|
||||
return rc;
|
||||
}
|
||||
|
||||
--- /ext/fts5/fts5_buffer.c
|
||||
+++ /ext/fts5/fts5_buffer.c
|
||||
@@ -178,7 +178,11 @@
|
||||
i64 iOff = *piOff;
|
||||
int iVal;
|
||||
fts5FastGetVarint32(a, i, iVal);
|
||||
- if( iVal==1 ){
|
||||
+ if( iVal<=1 ){
|
||||
+ if( iVal==0 ){
|
||||
+ *pi = i;
|
||||
+ return 0;
|
||||
+ }
|
||||
fts5FastGetVarint32(a, i, iVal);
|
||||
iOff = ((i64)iVal) << 32;
|
||||
fts5FastGetVarint32(a, i, iVal);
|
||||
--- /ext/fts5/test/fts5corrupt3.test
|
||||
+++ /ext/fts5/test/fts5corrupt3.test
|
||||
@@ -8128,6 +8128,215 @@
|
||||
INSERT INTO t1(t1) VALUES('optimize')
|
||||
} {1 {database disk image is malformed}}
|
||||
|
||||
+#-------------------------------------------------------------------------
|
||||
+reset_db
|
||||
+do_test 58.0 {
|
||||
+ sqlite3 db {}
|
||||
+ db deserialize [decode_hexdb {
|
||||
+.open --hexdb
|
||||
+| size 24576 pagesize 4096 filename crash-5a5acd0ab42d31.db
|
||||
+| page 1 offset 0
|
||||
+| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
|
||||
+| 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00 .....@ ........
|
||||
+| 96: 00 00 00 00 0d 00 00 00 06 0e 0f 00 0f aa 0f 53 ...............S
|
||||
+| 112: 0e e8 0e 8b 0e 33 0e 0f 00 00 00 00 00 00 00 00 .....3..........
|
||||
+| 3584: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 ................
|
||||
+| 3600: 06 06 17 11 11 01 31 74 61 62 6c 65 62 62 62 62 ......1tablebbbb
|
||||
+| 3616: 06 43 52 45 41 54 45 20 54 41 42 4c 45 20 62 62 .CREATE TABLE bb
|
||||
+| 3632: 28 61 29 56 05 06 17 1f 1f 01 7d 74 61 62 6c 65 (a)V.......table
|
||||
+| 3648: 74 31 5f 63 2a 6e 66 69 68 74 31 5f 63 6f 6e 66 t1_c*nfiht1_conf
|
||||
+| 3664: 69 67 05 43 52 45 41 54 45 20 54 41 42 4c 45 20 ig.CREATE TABLE
|
||||
+| 3680: 27 74 31 5f 63 6f 6e 66 69 67 27 28 6b 20 50 52 't1_config'(k PR
|
||||
+| 3696: 49 4d 41 52 59 20 4b 45 59 2c 20 76 29 20 57 49 IMARY KEY, v) WI
|
||||
+| 3712: 54 48 4f 55 54 20 52 4f 57 49 44 5b 04 07 17 21 THOUT ROWID[...!
|
||||
+| 3728: 21 01 81 01 74 61 62 6c 65 74 31 5f 64 6f 73 73 !...tablet1_doss
|
||||
+| 3744: 69 7a 65 74 31 5f 64 6f 63 73 69 7a 65 04 43 52 izet1_docsize.CR
|
||||
+| 3760: 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 5f 64 EATE TABLE 't1_d
|
||||
+| 3776: 6f 63 73 69 7a 65 27 28 69 64 20 49 4e 54 45 47 ocsize'(id INTEG
|
||||
+| 3792: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 ER PRIMARY KEY,
|
||||
+| 3808: 73 7a 20 42 4c 4f 42 29 69 03 07 17 19 19 01 81 sz BLOB)i.......
|
||||
+| 3824: 2d 74 61 62 6c 65 74 31 5f 69 64 78 74 31 5f 69 -tablet1_idxt1_i
|
||||
+| 3840: 64 78 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 dx.CREATE TABLE
|
||||
+| 3856: 27 74 31 5f 69 64 78 27 28 73 65 67 69 64 2c 20 't1_idx'(segid,
|
||||
+| 3872: 74 65 72 6d 2c 20 70 67 6e 6f 2c 20 50 52 49 4d term, pgno, PRIM
|
||||
+| 3888: 41 52 59 20 4b 45 59 28 73 65 67 69 64 2c 20 74 ARY KEY(segid, t
|
||||
+| 3904: 65 72 6d 29 29 20 57 49 54 48 4f 55 54 20 52 4f erm)) WITHOUT RO
|
||||
+| 3920: 57 49 44 55 02 07 17 1b 1b 01 81 01 74 61 62 6c WIDU........tabl
|
||||
+| 3936: 65 74 31 5f 64 61 74 61 74 31 5f 64 61 74 61 02 et1_datat1_data.
|
||||
+| 3952: 43 52 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 CREATE TABLE 't1
|
||||
+| 3968: 5f 64 61 74 61 27 28 69 64 20 49 4e 54 45 47 45 _data'(id INTEGE
|
||||
+| 3984: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 R PRIMARY KEY, b
|
||||
+| 4000: 6c 6f 63 6b 20 42 4c 4f 42 29 54 01 07 17 11 11 lock BLOB)T.....
|
||||
+| 4016: 08 81 15 74 61 62 6c 65 74 31 74 31 43 52 45 41 ...tablet1t1CREA
|
||||
+| 4032: 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 TE VIRTUAL TABLE
|
||||
+| 4048: 20 74 31 20 55 53 49 4e 47 20 66 74 73 35 28 61 t1 USING fts5(a
|
||||
+| 4064: 2c 62 2c 70 72 65 66 69 78 3d 22 32 2c 32 2c 33 ,b,prefix=.2,2,3
|
||||
+| 4080: 2c 34 22 2c 20 63 6f 6e 74 65 6e 74 3d 22 22 29 ,4., content=..)
|
||||
+| page 2 offset 4096
|
||||
+| 0: 0d 0b 6a 00 37 09 4c 02 0f e7 09 4c 0f c6 0f a4 ..j.7.L....L....
|
||||
+| 16: 0f 88 0f 6d 0f 4b 0f 2c 0f 0e 0e ec 0e cd 0e ae ...m.K.,........
|
||||
+| 32: 0e 8e 0e 6c 0e 4b 0e 29 0e 08 0d e6 0d c4 0d b5 ...l.K.)........
|
||||
+| 48: 0d 97 0d 76 0d 54 0d 30 fd 15 0c f3 0c d3 0c b5 ...v.T.0........
|
||||
+| 64: 0c 95 0c 73 0c 54 0c 32 0c 10 0b ee 0b cc 0b b0 ...s.T.2........
|
||||
+| 80: 0b 8d 0b 7e 0b 48 0b 2e 0b 0b 0a ef 0a cc 0a ad ...~.H..........
|
||||
+| 96: 0a 8c 0a 6d 0a 4d 0a 2b 0a 0c 00 00 00 00 00 00 ...m.M.+........
|
||||
+| 2368: 00 00 00 00 00 00 00 00 00 00 00 00 15 0a 03 00 ................
|
||||
+| 2384: 30 00 00 00 9c 01 03 35 00 03 01 01 12 02 01 12 0......5........
|
||||
+| 2400: 03 01 11 1c 8c 80 80 80 80 10 03 00 3e 00 00 00 ............>...
|
||||
+| 2416: 17 01 05 05 34 74 61 62 6c 03 02 03 01 04 77 68 ....4tabl.....wh
|
||||
+| 2432: 65 72 03 02 06 09 1b 8c 80 80 80 80 0f 03 00 3c er.............<
|
||||
+| 2448: 00 00 00 16 05 34 66 74 73 34 03 02 02 01 04 6e .....4fts4.....n
|
||||
+| 2464: 75 6d 62 03 06 01 04 09 1b 8c 80 80 80 80 0e 03 umb.............
|
||||
+| 2480: 00 3c 00 00 00 16 04 33 74 68 65 03 06 01 01 04 .<.....3the.....
|
||||
+| 2496: 01 03 77 68 65 03 02 04 04 0a 1b 8c 80 80 80 80 ..whe...........
|
||||
+| 2512: 0d 03 00 3c 00 00 00 16 04 33 6e 75 6d 03 06 01 ...<.....3num...
|
||||
+| 2528: 01 05 01 03 74 61 62 05 62 03 04 0a 19 8c 80 80 ....tab.b.......
|
||||
+| 2544: 80 80 0c 03 00 38 00 00 00 14 03 39 a7 68 03 02 .....8.....9.h..
|
||||
+| 2560: 04 10 04 33 66 74 73 03 02 02 04 07 18 8c 80 80 ...3fts.........
|
||||
+| 2576: 80 80 0b 03 00 36 00 00 00 13 03 32 74 61 03 02 .....6.....2ta..
|
||||
+| 2592: 03 02 01 68 03 06 01 01 04 04 07 1b 8c 80 80 80 ...h............
|
||||
+| 2608: 80 0a 03 00 3c 00 00 00 16 03 32 6e 75 03 06 01 ....<.....2nu...
|
||||
+| 2624: 01 05 01 02 6f 66 03 06 01 01 06 04 09 19 8c 80 ....of..........
|
||||
+| 2640: 80 80 80 09 03 00 38 00 00 00 14 03 32 66 74 03 ......8.....2ft.
|
||||
+| 2656: 02 02 01 02 69 73 03 06 01 01 03 04 07 18 8c 80 ....is..........
|
||||
+| 2672: 80 80 80 08 03 00 36 00 00 00 13 02 31 74 03 08 ......6.....1t..
|
||||
+| 2688: 03 01 01 04 01 01 77 03 02 04 04 09 1a 8c 80 80 ......w.........
|
||||
+| 2704: 80 80 07 03 00 3a ff 00 00 15 02 31 6e 03 08 01 .....:.....1n...
|
||||
+| 2720: 01 02 05 01 01 6f 03 06 01 01 06 04 09 18 8c 80 .....o..........
|
||||
+| 2736: 80 80 80 06 03 00 36 00 00 00 13 04 02 31 66 03 ......6......1f.
|
||||
+| 2752: 02 01 f1 01 69 03 06 01 01 03 05 06 1c 8c 80 80 ....i...........
|
||||
+| 2768: 80 80 05 03 00 3e 00 00 00 17 04 30 74 68 65 03 .....>.....0the.
|
||||
+| 2784: 06 01 01 14 01 05 77 68 65 72 65 03 02 04 0a 15 ......where.....
|
||||
+| 2800: 8c 80 80 80 80 04 03 00 30 00 00 00 11 01 01 06 ........0.......
|
||||
+| 2816: 06 30 74 61 62 6c cc 03 02 03 07 1c 8c 80 80 80 .0tabl..........
|
||||
+| 2832: 80 03 03 00 3e 00 00 00 17 07 30 6e 75 6d 62 65 ....>.....0numbe
|
||||
+| 2848: 72 03 06 01 01 05 01 02 6f 66 02 06 04 0d 13 8c r.......of......
|
||||
+| 2864: 80 80 80 80 02 03 00 2c 00 00 00 0f 01 01 03 02 .......,........
|
||||
+| 2880: 30 6e 03 06 01 01 02 07 1b 8c 80 80 80 80 01 03 0n..............
|
||||
+| 2896: 00 3c 00 00 00 16 08 30 66 74 73 34 61 75 78 03 .<.....0fts4aux.
|
||||
+| 2912: 02 02 01 02 69 73 03 06 04 0c 00 00 00 14 2a 00 ....is........*.
|
||||
+| 2928: 00 00 01 01 02 24 00 02 01 01 12 02 01 12 08 88 .....$..........
|
||||
+| 2944: 80 80 80 80 12 03 00 16 00 00 00 05 02 1c 88 80 ................
|
||||
+| 2960: 80 80 80 11 03 00 3e 00 00 00 17 05 34 72 6f 77 ......>.....4row
|
||||
+| 2976: 73 02 06 01 01 05 01 04 74 68 65 72 02 02 04 0b s.......ther....
|
||||
+| 2992: 15 88 80 80 80 80 10 03 00 3e 10 00 00 11 02 01 .........>......
|
||||
+| 3008: 01 07 05 34 62 65 74 77 02 02 04 08 1b 88 80 80 ...4betw........
|
||||
+| 3024: 80 80 0f 03 00 3c 00 00 00 16 04 04 33 72 6f 77 .....<......3row
|
||||
+| 3040: 02 06 01 01 05 01 03 74 68 65 02 08 05 0a 1b 88 .......the......
|
||||
+| 3056: 80 80 80 80 0e 03 05 0c 00 00 00 16 01 01 02 04 ................
|
||||
+| 3072: 33 61 72 65 02 02 03 01 03 62 65 74 02 02 07 08 3are.....bet....
|
||||
+| 3088: 1b 88 80 80 80 80 0d 03 00 3c 00 00 00 16 03 32 .........<.....2
|
||||
+| 3104: 74 68 02 08 02 01 01 07 00 04 33 61 6e 64 02 06 th........3and..
|
||||
+| 3120: 04 01 1b 88 80 80 80 80 0c 03 00 3c 00 00 00 16 ...........<....
|
||||
+| 3136: 03 32 69 6e 02 06 01 01 06 01 02 72 6f 02 06 01 .2in.......ro...
|
||||
+| 3152: 01 05 04 09 18 88 80 80 80 80 0b 03 00 36 00 00 .............6..
|
||||
+| 3168: 00 13 02 03 32 61 72 02 02 03 01 02 62 65 02 02 ....2ar.....be..
|
||||
+| 3184: 04 05 07 1b 88 80 bf 80 80 0a 03 00 3c 00 00 00 ............<...
|
||||
+| 3200: 16 02 31 74 02 08 02 01 01 07 00 03 32 61 6e 02 ..1t........2an.
|
||||
+| 3216: 06 01 01 04 09 19 88 80 80 80 80 09 03 00 38 00 ..............8.
|
||||
+| 3232: 00 00 14 02 31 6e 02 06 01 01 03 01 01 72 02 06 ....1n.......r..
|
||||
+| 3248: 01 01 05 03 08 17 88 80 80 80 80 08 03 00 34 00 ..............4.
|
||||
+| 3264: 01 00 12 02 31 62 02 02 04 01 01 69 02 06 01 01 ....1b.....i....
|
||||
+| 3280: 06 04 06 19 88 80 80 80 80 07 03 00 38 00 00 00 ............8...
|
||||
+| 3296: 14 04 02 31 32 02 02 05 01 01 61 02 08 03 01 01 ...12.....a.....
|
||||
+| 3312: 02 05 06 1b 88 80 80 80 80 06 03 00 3c 00 00 00 ............<...
|
||||
+| 3328: 16 06 30 74 68 65 72 65 02 12 02 00 02 31 31 02 ..0there.....11.
|
||||
+| 3344: 06 01 01 04 0a 15 88 80 80 80 80 05 03 00 30 00 ..............0.
|
||||
+| 3360: 00 00 11 01 01 05 04 30 74 68 65 02 06 71 01 07 .......0the..q..
|
||||
+| 3376: 07 1c 88 80 80 80 80 04 03 00 3e 00 00 00 17 01 ..........>.....
|
||||
+| 3392: 01 06 02 30 6e 02 06 01 01 03 01 04 72 6f 77 73 ...0n.......rows
|
||||
+| 3408: 02 06 07 08 1b 88 80 80 80 80 03 03 00 3c 00 00 .............<..
|
||||
+| 3424: 00 16 08 30 62 65 74 77 65 65 6e 02 02 04 01 02 ...0between.....
|
||||
+| 3440: 69 6e 02 06 04 0c 1a 88 80 80 80 80 02 03 00 3a in.............:
|
||||
+| 3456: 08 f0 00 15 04 30 61 6e 64 02 06 01 01 02 02 02 .....0and.......
|
||||
+| 3472: 72 65 02 02 03 04 0a 17 88 80 80 80 80 01 03 00 re..............
|
||||
+| 3488: 34 00 00 00 12 02 30 31 02 06 01 01 04 01 01 32 4.....01.......2
|
||||
+| 3504: 02 02 07 04 08 08 84 80 80 80 80 12 03 00 16 00 ................
|
||||
+| 3520: 00 00 05 04 1b 84 80 80 80 80 11 03 00 3c 00 00 .............<..
|
||||
+| 3536: 00 16 05 34 74 61 62 6c 01 06 01 01 05 02 03 65 ...4tabl.......e
|
||||
+| 3552: 72 6d 01 02 04 0b 1b 84 80 80 80 80 10 03 00 3c rm.............<
|
||||
+| 3568: 00 00 00 16 05 34 65 61 63 68 01 02 03 01 04 70 .....4each.....p
|
||||
+| 3584: 72 65 73 01 02 05 04 09 1a 84 80 80 80 80 0f 03 res.............
|
||||
+| 3600: 00 3a 00 00 00 15 04 33 74 65 72 01 02 04 02 02 .:.....3ter.....
|
||||
+| 3616: 68 65 01 06 01 01 03 04 08 1b 84 80 80 80 80 0e he..............
|
||||
+| 3632: 03 00 3c 00 00 00 16 04 33 70 72 65 01 02 05 01 ..<.....3pre....
|
||||
+| 3648: 03 74 61 62 01 06 01 01 05 04 08 1a 84 80 80 80 .tab............
|
||||
+| 3664: 80 0d 03 00 3a 00 00 00 15 04 33 66 6f 72 01 02 ....:.....3for..
|
||||
+| 3680: 02 02 02 74 73 01 06 01 01 04 03 f8 1b 84 80 80 ...ts...........
|
||||
+| 3696: 80 80 0c 03 00 3c 00 00 00 16 03 32 74 68 01 06 .....<.....2th..
|
||||
+| 3712: 01 01 03 00 04 33 65 61 63 01 02 03 04 09 18 84 .....3eac.......
|
||||
+| 3728: 80 80 80 80 0b 03 00 36 00 00 00 13 03 32 74 61 .......6.....2ta
|
||||
+| 3744: 01 06 01 01 05 02 01 65 00 02 04 04 09 19 84 80 .......e........
|
||||
+| 3760: 80 80 80 0a 03 10 38 00 00 00 14 03 32 69 6e 01 ......8.....2in.
|
||||
+| 3776: 06 01 01 02 01 02 70 72 01 02 05 04 09 18 84 80 ......pr........
|
||||
+| 3792: 80 80 80 09 03 00 36 00 00 00 13 03 32 66 6f 01 ......6.....2fo.
|
||||
+| 3808: 02 02 02 01 74 01 06 01 01 04 04 07 1b 84 80 80 ....t...........
|
||||
+| 3824: 80 80 08 03 00 3c 00 00 00 16 02 31 74 01 0a 04 .....<.....1t...
|
||||
+| 3840: 01 00 03 04 00 03 32 65 61 01 02 03 04 0a 17 84 ......2ea.......
|
||||
+| 3856: 80 80 80 80 07 03 00 34 00 00 00 12 02 31 69 01 .......4.....1i.
|
||||
+| 3872: 06 01 01 02 de 01 70 01 02 05 04 08 18 84 80 80 ......p.........
|
||||
+| 3888: 80 80 06 03 00 36 00 00 00 13 02 31 65 01 02 03 .....6.....1e...
|
||||
+| 3904: 01 01 66 01 08 02 01 01 04 04 06 1b 84 80 80 80 ..f.............
|
||||
+| 3920: 80 05 03 00 3c 00 00 00 16 05 30 74 65 72 6d 01 ....<.....0term.
|
||||
+| 3936: 02 04 02 02 68 65 01 06 01 01 03 04 09 14 84 80 ....he..........
|
||||
+| 3952: 80 80 80 04 03 00 2e 00 00 00 10 06 30 74 61 62 ............0tab
|
||||
+| 3968: 6c 65 01 06 01 01 05 04 15 84 80 80 80 80 03 03 le..............
|
||||
+| 3984: 00 30 00 00 00 11 02 08 30 70 72 65 73 65 6e 74 .0......0present
|
||||
+| 4000: 01 02 05 05 1b 84 80 80 80 80 02 03 00 3c 00 00 .............<..
|
||||
+| 4016: 00 16 04 30 66 74 73 01 06 01 01 04 01 02 69 6e ...0fts.......in
|
||||
+| 4032: 01 06 01 01 04 0a 1a 84 80 80 80 80 01 03 00 3a ...............:
|
||||
+| 4048: 00 00 00 15 05 30 65 61 63 68 00 f2 03 01 03 66 .....0each.....f
|
||||
+| 4064: 6f 72 01 02 02 04 09 06 01 03 00 12 03 0b 0f 00 or..............
|
||||
+| 4080: 00 08 8c 80 80 80 80 11 03 00 16 00 00 00 05 04 ................
|
||||
+| page 3 offset 8192
|
||||
+| 0: 0a 00 00 00 32 0e 4f 00 0f fa 0f f1 0f e9 0f e1 ....2.O.........
|
||||
+| 16: 0f d8 0f d1 0f c9 0f c1 0f b9 0f c1 0f a9 0f a0 ................
|
||||
+| 32: 0f 98 0f 90 0f 87 0f 80 0f 78 0f 71 0f 68 0f 5f .........x.q.h._
|
||||
+| 48: 0f 56 0f 4d 0f 41 0f 38 0f 2f 0f 26 0f 1d 0f 13 .V.M.A.8./.&....
|
||||
+| 64: 0f 0a 0f 01 0e f7 0e ee 0e e6 0e dd 0e d7 0e cd ................
|
||||
+| 80: 0e c3 0e ba 0e b0 0e a8 0e 9f 0e 96 0e 8e 0e 85 ................
|
||||
+| 3648: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 ................
|
||||
+| 3664: 04 01 10 01 03 34 74 20 07 04 01 0e 01 03 34 1e .....4t ......4.
|
||||
+| 3680: 09 04 01 12 34 03 33 74 68 1c 08 04 01 10 01 03 ....4.3th.......
|
||||
+| 3696: 33 6e 1a 08 04 01 10 01 03 32 77 18 08 04 01 10 3n.......2w.....
|
||||
+| 3712: 01 03 32 74 16 08 04 01 10 01 03 32 6e 14 07 04 ..2t.......2n...
|
||||
+| 3728: 01 0e 01 03 32 12 08 04 01 0f f1 03 31 74 10 08 ....2.......1t..
|
||||
+| 3744: 04 01 10 01 03 31 6e 0e 07 04 01 0e 01 03 30 fc .....1n.......0.
|
||||
+| 3760: 09 04 01 12 01 03 30 74 68 0a 08 04 01 10 01 03 ......0th.......
|
||||
+| 3776: 30 74 08 09 04 01 12 01 03 30 6e 75 06 08 04 01 0t.......0nu....
|
||||
+| 3792: 10 01 03 30 6e 04 06 04 01 0c 01 05 52 08 04 01 ...0n.......R...
|
||||
+| 3808: 10 01 02 34 72 22 07 04 01 0e 01 02 34 20 08 04 ...4r.......4 ..
|
||||
+| 3824: 01 10 01 02 33 72 1e 09 04 01 12 01 02 33 61 72 ....3r.......3ar
|
||||
+| 3840: 1c 08 04 01 10 01 02 32 74 1a 08 04 01 10 b3 02 .......2t.......
|
||||
+| 3856: 32 69 18 09 04 01 12 01 02 32 61 72 16 08 04 01 2i.......2ar....
|
||||
+| 3872: 10 01 02 31 74 14 08 04 01 10 01 02 31 6e 12 08 ...1t.......1n..
|
||||
+| 3888: 04 01 10 01 02 31 62 10 08 04 01 10 01 02 31 32 .....1b.......12
|
||||
+| 3904: 0e 0b 04 01 16 01 02 30 74 68 65 72 0c 08 04 01 .......0ther....
|
||||
+| 3920: 10 01 02 30 74 0a 08 04 01 10 01 02 30 6e 08 08 ...0t.......0n..
|
||||
+| 3936: 04 01 10 01 02 30 62 06 09 04 01 10 01 02 30 61 .....0b.......0a
|
||||
+| 3952: 04 06 04 01 0c 01 02 02 07 04 09 10 01 34 74 22 .............4t.
|
||||
+| 3968: 06 04 09 0e 01 34 20 08 04 09 12 01 33 74 65 1e .....4 .....3te.
|
||||
+| 3984: 07 04 09 10 01 33 70 1c 07 f4 09 11 01 33 66 1a .....3p......3f.
|
||||
+| 4000: 08 04 09 12 01 32 74 68 18 07 04 09 10 01 32 e4 .....2th......2.
|
||||
+| 4016: 16 07 04 09 10 01 32 69 14 07 04 09 10 01 32 66 ......2i......2f
|
||||
+| 4032: 12 07 04 09 10 01 31 74 10 07 04 09 10 01 31 69 ......1t......1i
|
||||
+| 4048: 0e 06 04 09 0e 01 31 0c 08 04 09 12 01 30 74 65 ......1......0te
|
||||
+| 4064: 0a 07 04 09 10 01 30 74 08 00 00 00 00 00 00 00 ......0t........
|
||||
+| page 4 offset 12288
|
||||
+| 4064: 00 00 00 00 00 00 00 00 00 00 00 05 03 03 00 10 ................
|
||||
+| 4080: 03 05 05 02 03 00 10 04 06 05 01 03 00 10 04 04 ................
|
||||
+| page 5 offset 16384
|
||||
+| 0: 0a 00 00 00 02 0f eb 00 0f eb 0f f4 00 00 00 00 ................
|
||||
+| 4064: 00 00 00 00 00 00 00 00 00 00 00 08 03 15 01 70 ...............p
|
||||
+| 4080: 67 73 7a 18 0b 03 1b 01 76 65 72 73 69 6f 6e 04 gsz.....version.
|
||||
+| page 6 offset 20480
|
||||
+| 4080: 00 00 23 03 02 01 03 03 02 00 00 00 00 00 00 00 ..#.............
|
||||
+| end crash-5a5acd0ab42d31.db
|
||||
+}]} {}
|
||||
+
|
||||
+do_execsql_test 58.1 {
|
||||
+ SELECT * FROM t1('t*');
|
||||
+} {{} {} {} {} {} {}}
|
||||
|
||||
sqlite3_fts5_may_be_corrupt 0
|
||||
finish_test
|
||||
--- /src/btree.c
|
||||
+++ /src/btree.c
|
||||
@@ -4284,10 +4284,9 @@
|
||||
rc = newDatabase(pBt);
|
||||
pBt->nPage = get4byte(28 + pBt->pPage1->aData);
|
||||
|
||||
- /* The database size was written into the offset 28 of the header
|
||||
- ** when the transaction started, so we know that the value at offset
|
||||
- ** 28 is nonzero. */
|
||||
- assert( pBt->nPage>0 );
|
||||
+ /* pBt->nPage might be zero if the database was corrupt when
|
||||
+ ** the transaction was started. Otherwise, it must be at least 1. */
|
||||
+ assert( CORRUPT_DB || pBt->nPage>0 );
|
||||
}
|
||||
sqlite3BtreeLeave(p);
|
||||
}
|
||||
@@ -7637,6 +7636,7 @@
|
||||
u16 maskPage = pOld->maskPage;
|
||||
u8 *piCell = aData + pOld->cellOffset;
|
||||
u8 *piEnd;
|
||||
+ VVA_ONLY( int nCellAtStart = b.nCell; )
|
||||
|
||||
/* Verify that all sibling pages are of the same "type" (table-leaf,
|
||||
** table-interior, index-leaf, or index-interior).
|
||||
@@ -7665,6 +7665,10 @@
|
||||
*/
|
||||
memset(&b.szCell[b.nCell], 0, sizeof(b.szCell[0])*(limit+pOld->nOverflow));
|
||||
if( pOld->nOverflow>0 ){
|
||||
+ if( limit<pOld->aiOvfl[0] ){
|
||||
+ rc = SQLITE_CORRUPT_BKPT;
|
||||
+ goto balance_cleanup;
|
||||
+ }
|
||||
limit = pOld->aiOvfl[0];
|
||||
for(j=0; j<limit; j++){
|
||||
b.apCell[b.nCell] = aData + (maskPage & get2byteAligned(piCell));
|
||||
@@ -7684,6 +7688,7 @@
|
||||
piCell += 2;
|
||||
b.nCell++;
|
||||
}
|
||||
+ assert( (b.nCell-nCellAtStart)==(pOld->nCell+pOld->nOverflow) );
|
||||
|
||||
cntOld[i] = b.nCell;
|
||||
if( i<nOld-1 && !leafData){
|
||||
--- /src/resolve.c
|
||||
+++ /src/resolve.c
|
||||
@@ -866,7 +866,9 @@
|
||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||
if( pExpr->y.pWin ){
|
||||
Select *pSel = pNC->pWinSelect;
|
||||
- sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef);
|
||||
+ if( IN_RENAME_OBJECT==0 ){
|
||||
+ sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef);
|
||||
+ }
|
||||
sqlite3WalkExprList(pWalker, pExpr->y.pWin->pPartition);
|
||||
sqlite3WalkExprList(pWalker, pExpr->y.pWin->pOrderBy);
|
||||
sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter);
|
||||
--- /src/vdbe.c
|
||||
+++ /src/vdbe.c
|
||||
@@ -264,7 +264,7 @@
|
||||
** is clear. Otherwise, if this is an ephemeral cursor created by
|
||||
** OP_OpenDup, the cursor will not be closed and will still be part
|
||||
** of a BtShared.pCursor list. */
|
||||
- p->apCsr[iCur]->isEphemeral = 0;
|
||||
+ if( p->apCsr[iCur]->pBtx==0 ) p->apCsr[iCur]->isEphemeral = 0;
|
||||
sqlite3VdbeFreeCursor(p, p->apCsr[iCur]);
|
||||
p->apCsr[iCur] = 0;
|
||||
}
|
||||
@@ -3686,7 +3686,10 @@
|
||||
if( pCx ){
|
||||
/* If the ephermeral table is already open, erase all existing content
|
||||
** so that the table is empty again, rather than creating a new table. */
|
||||
- rc = sqlite3BtreeClearTable(pCx->pBtx, pCx->pgnoRoot, 0);
|
||||
+ assert( pCx->isEphemeral );
|
||||
+ if( pCx->pBtx ){
|
||||
+ rc = sqlite3BtreeClearTable(pCx->pBtx, pCx->pgnoRoot, 0);
|
||||
+ }
|
||||
}else{
|
||||
pCx = allocateCursor(p, pOp->p1, pOp->p2, -1, CURTYPE_BTREE);
|
||||
if( pCx==0 ) goto no_mem;
|
||||
--- /test/altertab3.test
|
||||
+++ /test/altertab3.test
|
||||
@@ -142,6 +142,39 @@
|
||||
ALTER TABLE Table0 RENAME Col0 TO Col0;
|
||||
}
|
||||
|
||||
+#-------------------------------------------------------------------------
|
||||
+reset_db
|
||||
+do_execsql_test 7.1.0 {
|
||||
+ CREATE TABLE t1(a,b,c);
|
||||
+ CREATE TRIGGER AFTER INSERT ON t1 BEGIN
|
||||
+ SELECT a, rank() OVER w1 FROM t1
|
||||
+ WINDOW w1 AS (PARTITION BY b, percent_rank() OVER w1);
|
||||
+ END;
|
||||
+}
|
||||
+
|
||||
+do_execsql_test 7.1.2 {
|
||||
+ ALTER TABLE t1 RENAME TO t1x;
|
||||
+ SELECT sql FROM sqlite_master;
|
||||
+} {
|
||||
+ {CREATE TABLE "t1x"(a,b,c)}
|
||||
+ {CREATE TRIGGER AFTER INSERT ON "t1x" BEGIN
|
||||
+ SELECT a, rank() OVER w1 FROM "t1x"
|
||||
+ WINDOW w1 AS (PARTITION BY b, percent_rank() OVER w1);
|
||||
+ END}
|
||||
+}
|
||||
+
|
||||
+do_execsql_test 7.2.1 {
|
||||
+ DROP TRIGGER after;
|
||||
+ CREATE TRIGGER AFTER INSERT ON t1x BEGIN
|
||||
+ SELECT a, rank() OVER w1 FROM t1x
|
||||
+ WINDOW w1 AS (PARTITION BY b, percent_rank() OVER w1 ORDER BY d);
|
||||
+ END;
|
||||
+}
|
||||
+
|
||||
+do_catchsql_test 7.2.2 {
|
||||
+ ALTER TABLE t1x RENAME TO t1;
|
||||
+} {1 {error in trigger AFTER: no such column: d}}
|
||||
+
|
||||
finish_test
|
||||
|
||||
|
||||
--- /test/corruptL.test
|
||||
+++ /test/corruptL.test
|
||||
@@ -838,4 +838,32 @@
|
||||
INSERT INTO t3 SELECT * FROM t2;
|
||||
} {1 {database disk image is malformed}}
|
||||
|
||||
+#-------------------------------------------------------------------------
|
||||
+reset_db
|
||||
+do_test 9.0 {
|
||||
+ sqlite3 db {}
|
||||
+ db deserialize [decode_hexdb {
|
||||
+| size 8192 pagesize 4096 filename crash-ab10597e4e1c32.db
|
||||
+| page 1 offset 0
|
||||
+| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
|
||||
+| 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00 .....@ ........
|
||||
+| 96: 00 00 00 00 0d 00 00 00 01 0f d6 00 0f d6 00 00 ................
|
||||
+| 4048: 00 00 00 00 00 00 28 01 06 17 11 11 01 3d 74 61 ......(......=ta
|
||||
+| 4064: 62 6c 65 74 31 74 31 02 43 52 45 41 54 45 20 54 blet1t1.CREATE T
|
||||
+| 4080: 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 2c 64 29 ABLE t1(a,b,c,d)
|
||||
+| page 2 offset 4096
|
||||
+| 0: 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
||||
+| end crash-ab10597e4e1c32.db
|
||||
+}]} {}
|
||||
+
|
||||
+do_execsql_test 9.1 {
|
||||
+ SAVEPOINT one;
|
||||
+}
|
||||
+do_catchsql_test 9.3 {
|
||||
+ INSERT INTO t1(b,c) VALUES(5,6);
|
||||
+} {1 {database disk image is malformed}}
|
||||
+do_execsql_test 9.3 {
|
||||
+ ROLLBACK TO one;
|
||||
+}
|
||||
+
|
||||
finish_test
|
||||
--- /test/fts3corrupt4.test
|
||||
+++ /test/fts3corrupt4.test
|
||||
@@ -3915,5 +3915,491 @@
|
||||
SELECT 'FyzLy'FROM t1 WHERE t1 MATCH 'j';
|
||||
} {1 {database disk image is malformed}}
|
||||
|
||||
+#-------------------------------------------------------------------------
|
||||
+reset_db
|
||||
+do_test 24.0 {
|
||||
+ sqlite3 db {}
|
||||
+ db deserialize [decode_hexdb {
|
||||
+.open --hexdb
|
||||
+| size 28672 pagesize 4096 filename crash-369d042958c29b.db
|
||||
+| page 1 offset 0
|
||||
+| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
|
||||
+| 16: 10 00 01 01 00 40 20 20 00 00 03 10 00 00 00 00 .....@ ........
|
||||
+| 96: 00 00 00 00 0d 0e b1 00 06 0d a4 00 0f 8d 0f 21 ...............!
|
||||
+| 112: 0e b9 0d c8 0e 7e 0d a4 00 00 00 00 00 00 00 00 .....~..........
|
||||
+| 3488: 00 00 00 00 22 07 06 17 11 11 01 31 74 61 62 6c ...........1tabl
|
||||
+| 3504: 65 74 32 74 32 07 43 52 45 41 54 45 20 54 41 42 et2t2.CREATE TAB
|
||||
+| 3520: 4c 45 20 74 32 28 78 29 81 33 05 07 17 1f 1f 01 LE t2(x).3......
|
||||
+| 3536: 82 35 74 61 62 6c 65 74 31 5f 73 65 67 64 69 72 .5tablet1_segdir
|
||||
+| 3552: 74 31 5f 73 65 67 64 69 72 05 43 52 45 41 54 45 t1_segdir.CREATE
|
||||
+| 3568: 20 54 41 42 4c 45 20 27 74 31 5f 73 65 67 64 69 TABLE 't1_segdi
|
||||
+| 3584: 72 27 28 6c 65 76 65 6c 20 49 4e 54 45 47 45 52 r'(level INTEGER
|
||||
+| 3600: 2c 69 64 78 20 49 4e 54 45 47 45 52 2c 73 74 61 ,idx INTEGER,sta
|
||||
+| 3616: 72 74 5f 62 6c 6f 63 6b 20 49 4e 54 45 47 45 52 rt_block INTEGER
|
||||
+| 3632: 2c 6c 65 61 76 65 73 5f 65 6e 64 5f 62 6c 6f 63 ,leaves_end_bloc
|
||||
+| 3648: 6b 20 49 4e 54 45 47 45 52 2c 65 6e 64 5f 62 6c k INTEGER,end_bl
|
||||
+| 3664: 6f 63 6b 20 49 4e 54 45 47 45 52 2c 72 6f 6f 74 ock INTEGER,root
|
||||
+| 3680: 20 42 4c 4f 42 2c 50 52 49 4d 41 52 59 20 4b 45 BLOB,PRIMARY KE
|
||||
+| 3696: 59 28 6c 65 76 65 6c 2c 20 69 64 78 29 29 31 06 Y(level, idx))1.
|
||||
+| 3712: 06 17 45 1f 01 00 69 6e 64 65 78 73 71 6c 69 74 ..E...indexsqlit
|
||||
+| 3728: 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 31 5f 73 e_autoindex_t1_s
|
||||
+| 3744: 65 67 64 69 72 5f 31 74 31 5f 73 65 67 64 69 72 egdir_1t1_segdir
|
||||
+| 3760: 06 0f c7 00 08 00 10 00 00 66 04 07 17 23 23 01 .........f...##.
|
||||
+| 3776: 81 13 74 61 62 6c 65 74 31 5f 73 65 67 6d 65 6e ..tablet1_segmen
|
||||
+| 3792: 64 73 74 31 5f 73 65 67 6d 65 6e 74 73 04 43 52 dst1_segments.CR
|
||||
+| 3808: 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 5f 73 EATE TABLE 't1_s
|
||||
+| 3824: 65 67 6d 65 6e 74 73 27 28 62 6c 6f 63 6b 69 64 egments'(blockid
|
||||
+| 3840: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 INTEGER PRIMARY
|
||||
+| 3856: 20 4b 45 59 2c 20 62 6c 6f 63 6b 20 42 4c 4f 42 KEY, block BLOB
|
||||
+| 3872: 29 6a 03 07 17 21 21 01 81 1f 74 61 62 6c 65 74 )j...!!...tablet
|
||||
+| 3888: 31 4f 63 6f 6e 74 65 6e 74 74 31 5f 63 6f 6e 74 1Ocontentt1_cont
|
||||
+| 3904: 65 6e 74 03 43 52 45 41 54 45 20 54 41 42 4c 45 ent.CREATE TABLE
|
||||
+| 3920: 20 27 74 31 5f 63 6f 6e 74 65 6e 74 27 28 64 6f 't1_content'(do
|
||||
+| 3936: 63 69 64 20 49 4e 54 45 47 45 52 20 50 52 39 4d cid INTEGER PR9M
|
||||
+| 3952: 41 52 59 20 4b 45 59 2c 20 27 63 30 61 27 2c 20 ARY KEY, 'c0a',
|
||||
+| 3968: 27 63 31 62 27 2c 20 27 63 32 63 27 29 38 02 06 'c1b', 'c2c')8..
|
||||
+| 3984: 17 11 11 08 5f 74 61 62 6c 65 74 31 74 31 43 52 ...._tablet1t1CR
|
||||
+| 4000: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 EATE VIRTUAL TAB
|
||||
+| 4016: 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74 73 33 LE t1 USING fts3
|
||||
+| 4032: 28 61 2c 62 2c 63 29 00 00 00 00 00 00 00 00 00 (a,b,c).........
|
||||
+| page 3 offset 8192
|
||||
+| 0: 0d 00 00 00 26 0b 48 0e 0f d8 0f af 0f 86 0f 74 ....&.H........t
|
||||
+| 16: 0f 61 0f 4e 0f 2f 0f 0f 0e ef 0e d7 0e be 0e a5 .a.N./..........
|
||||
+| 32: 0e 8d 0e 74 0e 5b 0e 40 0e 24 0e 08 0d ef 0d d5 ...t.[.@.$......
|
||||
+| 48: 0d bb 0d a0 0e 94 03 28 0d 4f 0d 35 0d 1b 05 0b .......(.O.5....
|
||||
+| 64: 0c da 0c b9 0c 99 0c 78 0c 57 0c 3e 0c 24 0c 0a .......x.W.>.$..
|
||||
+| 2880: 00 00 00 00 00 00 00 00 81 3f 25 06 00 72 7f 00 .........?%..r..
|
||||
+| 2896: 00 43 4f 4d 50 49 4c 45 52 3d 67 63 63 2d 35 2e .COMPILER=gcc-5.
|
||||
+| 2912: 34 2e 30 20 32 30 31 36 30 36 30 39 20 44 55 42 4.0 20160609 DUB
|
||||
+| 2928: 55 47 20 45 4e 41 e4 7c 45 20 44 42 53 54 41 54 UG ENA.|E DBSTAT
|
||||
+| 2944: e4 d1 54 41 42 20 45 4e 41 42 4c 45 20 46 54 53 ..TAB ENABLE FTS
|
||||
+| 2960: 34 20 45 4e 41 42 4c 45 20 46 54 53 35 20 45 4e 4 ENABLE FTS5 EN
|
||||
+| 2976: 41 42 4c 45 20 47 45 4f 50 4f 4c 59 20 45 4e 41 ABLE GEOPOLY ENA
|
||||
+| 2992: 42 4c 45 20 4a 53 4f 4e 31 20 45 4e 41 42 4c 45 BLE JSON1 ENABLE
|
||||
+| 3008: 20 4d 45 4d 53 59 53 35 20 45 4e 41 42 4c 45 20 MEMSYS5 ENABLE
|
||||
+| 3024: 42 54 52 45 45 20 4d 41 58 20 4d 45 4d 4f 52 59 BTREE MAX MEMORY
|
||||
+| 3040: 3d 35 30 30 30 30 30 30 30 20 4f 4c 49 54 20 4c =50000000 OLIT L
|
||||
+| 3056: 4f 41 43 20 45 58 54 45 4e 53 49 4f 4e 21 54 48 OAC EXTENSION!TH
|
||||
+| 3072: 52 45 41 44 53 41 46 45 3d 30 18 24 05 00 25 0f READSAFE=0.$..%.
|
||||
+| 3088: 19 54 48 52 45 41 44 53 41 46 45 3d 30 58 42 49 .THREADSAFE=0XBI
|
||||
+| 3104: 4e 41 52 59 18 23 05 00 25 0f 19 54 48 52 45 41 NARY.#..%..THREA
|
||||
+| 3120: 44 53 41 4b 75 3d 30 58 4d 4f 43 41 53 45 17 22 DSAKu=0XMOCASE..
|
||||
+| 3136: 05 00 25 0f 17 54 48 52 45 41 44 53 41 46 46 3d ..%..THREADSAFF=
|
||||
+| 3152: 30 58 52 54 52 49 4d 1f 21 05 00 33 0f 19 4f 4d 0XRTRIM.!..3..OM
|
||||
+| 3168: 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 52 49 4f IT LOAD EXTENRIO
|
||||
+| 3184: 4e 58 42 49 4e 41 52 59 1f 20 05 00 33 0f 19 4f NXBINARY. ..3..O
|
||||
+| 3200: 4d 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 53 49 MIT LOAD EXTENSI
|
||||
+| 3216: 4f 4e 58 4e 4f 43 41 53 45 1e 1f 05 00 33 0f 17 ONXNOCASE....3..
|
||||
+| 3232: 4f 4d 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 53 OMIT LOAD EXTENS
|
||||
+| 3248: 49 4f 4e 58 52 54 52 49 4d 1f 1e 05 00 33 0f 19 IONXRTRIM....3..
|
||||
+| 3264: 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 30 30 MAX MEMORY=50000
|
||||
+| 3280: 30 30 30 58 42 49 4e 41 52 59 1f 1d 05 00 33 0f 000XBINARY....3.
|
||||
+| 3296: 19 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 30 .MAX MEMORY=5000
|
||||
+| 3312: 30 30 30 30 58 4e 4f 43 41 53 45 1e 1c 05 00 33 0000XNOCASE....3
|
||||
+| 3328: 0f 17 4d 42 b8 20 4d 45 4d 4f 52 59 3d 35 30 30 ..MB. MEMORY=500
|
||||
+| 3344: 30 30 30 30 30 58 52 54 52 49 4d 18 1b 05 00 25 00000XRTRIM....%
|
||||
+| 3360: 0f 19 45 4e 41 42 4c 45 20 52 54 52 45 45 58 42 ..ENABLE RTREEXB
|
||||
+| 3376: 49 4e 41 52 59 18 1a 05 0d a5 0f 19 45 4e 41 42 INARY.......ENAB
|
||||
+| 3392: 4c 45 20 52 54 52 45 45 58 4e 4f 43 41 53 45 17 LE RTREEXNOCASE.
|
||||
+| 3408: 19 1c 00 25 0f 17 45 4e 41 42 4c 45 20 52 54 52 ...%..ENABLE RTR
|
||||
+| 3424: 45 45 58 52 54 52 49 4d 1a 18 05 00 29 0f 19 45 EEXRTRIM....)..E
|
||||
+| 3440: 4e 41 42 4c 45 20 4d 45 4d 53 59 53 35 58 42 49 NABLE MEMSYS5XBI
|
||||
+| 3456: 4e 41 52 59 1a 17 05 00 29 0f 19 45 4e 41 42 4c NARY....)..ENABL
|
||||
+| 3472: 45 20 4d 45 4d 53 59 53 35 58 4e 4f 43 41 53 45 E MEMSYS5XNOCASE
|
||||
+| 3488: 19 16 05 00 29 0f 17 45 4e 41 42 4c 45 20 4d 45 ....)..ENABLE ME
|
||||
+| 3504: 4d 53 59 53 35 58 52 54 52 49 4d 18 14 05 01 25 MSYS5XRTRIM....%
|
||||
+| 3520: 0f 19 45 4e 12 42 4c 45 20 4a 53 4f 4e 31 58 42 ..EN.BLE JSON1XB
|
||||
+| 3536: 49 4e 41 52 59 18 14 05 00 25 09 d9 45 4e 41 42 INARY....%..ENAB
|
||||
+| 3552: 4c 45 20 4a 53 4f 3e 31 58 4e 4f 43 41 53 45 17 LE JSO>1XNOCASE.
|
||||
+| 3568: 13 05 00 25 0f 17 45 4e 40 42 4c 45 20 4a 53 4f ...%..EN@BLE JSO
|
||||
+| 3584: 4e 31 58 52 54 52 49 4d 1a 12 05 82 29 0f 19 45 N1XRTRIM....)..E
|
||||
+| 3600: 4e 41 42 4c 45 20 47 45 4f 50 4f 4c 59 58 42 49 NABLE GEOPOLYXBI
|
||||
+| 3616: 4e 41 52 59 1a 11 05 c9 29 e8 19 46 4e 41 42 4c NARY....)..FNABL
|
||||
+| 3632: 48 c0 47 45 4f 50 4f 4c 59 58 4e 74 43 41 53 45 H.GEOPOLYXNtCASE
|
||||
+| 3648: 19 10 05 00 29 0f 17 45 4e 41 42 4c 45 20 47 45 ....)..ENABLE GE
|
||||
+| 3664: 4f 50 4f 4c 59 58 52 54 52 49 4d 17 0f 05 00 23 OPOLYXRTRIM....#
|
||||
+| 3680: 0f 19 45 4e 41 42 4c 45 30 46 54 53 35 58 42 49 ..ENABLE0FTS5XBI
|
||||
+| 3696: 4e 41 52 59 17 0e 05 00 23 0f 19 45 4e 41 42 4c NARY....#..ENABL
|
||||
+| 3712: 45 20 46 54 53 35 58 4e 4f 43 41 53 45 16 0e 05 E FTS5XNOCASE...
|
||||
+| 3728: 00 23 0f 17 45 4e 41 42 4c 45 20 46 54 53 35 58 .#..ENABLE FTS5X
|
||||
+| 3744: 52 54 52 49 4d 17 0c 05 00 23 0f 19 45 4e 41 42 RTRIM....#..ENAB
|
||||
+| 3760: 4c 45 20 46 54 53 34 58 42 49 4e 41 52 59 17 0b LE FTS4XBINARY..
|
||||
+| 3776: 05 00 23 0f 19 45 4e 41 42 4c 45 20 46 54 53 34 ..#..ENABLE FTS4
|
||||
+| 3792: 58 4e 4f 43 41 53 45 16 0a 05 00 23 0f 17 45 4e XNOCASE....#..EN
|
||||
+| 3808: 41 42 4c 45 20 46 54 53 34 58 52 54 52 49 4d 1e ABLE FTS4XRTRIM.
|
||||
+| 3824: 09 05 00 31 0f 19 45 4e 42 42 4c 45 20 44 42 53 ...1..ENBBLE DBS
|
||||
+| 3840: 54 41 54 20 56 54 41 42 58 42 49 4e 41 52 59 1e TAT VTABXBINARY.
|
||||
+| 3856: 08 05 00 31 0f 19 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS
|
||||
+| 3872: 54 41 54 20 56 54 41 42 58 4e 4f 43 41 53 45 1d TAT VTABXNOCASE.
|
||||
+| 3888: 07 05 00 31 0f 17 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS
|
||||
+| 3904: 54 41 54 20 56 54 41 42 58 52 54 52 4a 4d 11 06 TAT VTABXRTRJM..
|
||||
+| 3920: 05 f0 17 0f 19 44 45 42 55 47 58 42 49 4e 41 52 .....DEBUGXBINAR
|
||||
+| 3936: 59 11 05 05 00 17 0e 19 44 45 42 55 47 58 4e 4f Y.......DEBUGXNO
|
||||
+| 3952: 43 41 53 45 10 04 05 00 17 0f 16 44 45 42 55 47 CASE.......DEBUG
|
||||
+| 3968: 58 52 54 52 49 4d 27 03 05 00 43 0f 19 43 4f 4d XRTRIM'...C..COM
|
||||
+| 3984: 50 49 4c 45 52 3d 67 63 63 2d 35 2e 34 2e 30 20 PILER=gcc-5.4.0
|
||||
+| 4000: 32 30 31 36 30 36 30 39 58 42 49 4e 41 52 59 27 20160609XBINARY'
|
||||
+| 4016: 02 05 00 43 0f 19 43 4f 4d 50 49 4c 45 52 3d 67 ...C..COMPILER=g
|
||||
+| 4032: 63 63 2d 35 2e 34 2e 30 20 32 30 31 36 30 36 30 cc-5.4.0 2016060
|
||||
+| 4048: 39 58 4e 4f 43 41 53 45 26 01 06 00 43 0f 17 43 9XNOCASE&...C..C
|
||||
+| 4064: 4f 4d 50 49 4b 45 52 3d 67 63 63 2d 35 2e 34 2e OMPIKER=gcc-5.4.
|
||||
+| 4080: 30 20 32 30 31 36 30 36 40 39 58 29 54 52 49 4d 0 201606@9X)TRIM
|
||||
+| page 4 offset 12288
|
||||
+| 0: 0d 00 10 00 00 10 00 00 00 00 00 00 00 01 00 00 ................
|
||||
+| page 5 offset 16384
|
||||
+| 0: 0d 00 00 00 02 0b a0 00 0c ad 0b a0 00 00 00 00 ................
|
||||
+| 2976: 82 0a 02 08 08 09 08 08 17 84 06 30 20 32 35 33 ...........0 253
|
||||
+| 2992: 00 01 30 04 25 06 1b 00 00 08 32 30 31 36 30 36 ..0.%.....201606
|
||||
+| 3008: 30 39 03 25 07 00 00 01 34 03 25 05 00 00 01 35 09.%....4.%....5
|
||||
+| 3024: 03 25 04 00 01 07 30 30 30 30 30 30 30 03 25 1a .%....0000000.%.
|
||||
+| 3040: 00 00 08 63 6f 6d 70 69 6c 65 72 03 25 02 00 00 ...compiler.%...
|
||||
+| 3056: 06 64 62 73 74 61 74 03 25 0a 00 01 04 65 62 75 .dbstat.%....ebu
|
||||
+| 3072: 67 03 25 08 00 00 06 65 6e 61 62 6c 65 09 25 09 g.%....enable.%.
|
||||
+| 3088: 05 04 04 04 04 04 00 01 08 78 74 65 6e 73 69 6f .........xtensio
|
||||
+| 3104: 6e 03 25 1d 00 00 04 66 74 73 34 03 25 0d 00 03 n.%....fts4.%...
|
||||
+| 3120: 01 35 03 25 0f 00 00 03 67 63 63 03 25 03 00 01 .5.%....gcc.%...
|
||||
+| 3136: 06 65 6f 70 6f 6c 79 03 25 11 00 00 05 6a 73 6f .eopoly.%....jso
|
||||
+| 3152: 6e 31 03 25 13 00 00 04 6c 6f 61 64 03 25 1c 00 n1.%....load.%..
|
||||
+| 3168: 00 03 6d 61 78 03 25 18 00 01 05 65 6e 6f 72 79 ..max.%....enory
|
||||
+| 3184: 03 25 19 00 03 04 ce 79 73 4d 03 25 15 00 00 04 .%.....ysM.%....
|
||||
+| 3200: 6f 6d 69 74 03 25 1b 00 00 05 72 74 72 65 65 03 omit.%....rtree.
|
||||
+| 3216: 25 17 00 00 0a 74 68 72 65 61 64 73 61 66 65 03 %....threadsafe.
|
||||
+| 3232: 25 0e 00 00 04 76 74 61 62 03 25 0b 00 86 50 01 %....vtab.%...P.
|
||||
+| 3248: 08 08 08 08 08 17 8d 12 30 20 38 33 35 00 01 30 ........0 835..0
|
||||
+| 3264: 12 01 06 00 01 06 00 01 06 00 1f 03 00 01 03 09 ................
|
||||
+| 3280: 51 03 00 00 08 32 30 31 36 30 36 30 39 09 01 07 Q....20160609...
|
||||
+| 3296: 00 01 07 00 01 07 00 00 01 34 09 01 05 00 01 05 .........4......
|
||||
+| 3312: 00 01 05 00 00 01 35 09 01 04 00 01 04 00 01 04 ......5.........
|
||||
+| 3328: 00 01 07 30 30 30 30 30 30 30 09 1c 04 00 01 04 ...0000000......
|
||||
+| 3344: 00 01 04 00 00 06 62 69 6e 61 72 79 3c 03 01 02 ......binary<...
|
||||
+| 3360: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||
+| 3376: 00 03 01 02 02 00 02 f1 02 02 00 03 01 02 02 00 ................
|
||||
+| 3392: 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 03 ................
|
||||
+| 3408: 01 02 02 00 03 01 02 02 00 00 08 63 6f 6d 70 69 ...........compi
|
||||
+| 3424: 6c 65 72 09 01 02 00 01 02 00 01 02 00 00 06 67 ler............g
|
||||
+| 3440: d2 73 74 61 74 09 07 03 00 01 03 00 01 03 00 01 .stat...........
|
||||
+| 3456: 04 65 62 75 67 09 04 02 00 01 02 00 01 02 00 00 .ebug...........
|
||||
+| 3472: 06 65 6e 6f 82 6c 65 3f 07 02 00 01 02 00 01 02 .eno.le?........
|
||||
+| 3488: b0 01 02 00 01 02 00 11 02 00 01 02 00 01 02 00 ................
|
||||
+| 3504: 01 02 00 01 02 00 01 02 00 01 a6 00 01 02 00 01 ................
|
||||
+| 3520: 02 05 51 02 00 01 02 00 01 02 00 01 02 00 01 02 ..Q.............
|
||||
+| 3536: 00 01 02 00 01 02 00 01 08 78 74 65 6e 73 69 6f .........xtensio
|
||||
+| 3552: 6e 09 1f 04 00 01 04 00 00 04 00 00 04 66 74 73 n............fts
|
||||
+| 3568: 34 09 0a 03 00 01 03 00 01 03 00 03 01 35 09 0d 4............5..
|
||||
+| 3584: 03 00 01 03 00 01 03 00 00 03 67 63 63 09 01 03 ..........gcc...
|
||||
+| 3600: 00 01 03 00 01 03 00 01 06 65 6f 70 73 6c 79 09 .........eopsly.
|
||||
+| 3616: 10 03 00 01 03 00 01 03 00 00 05 6a 73 6f 6e 31 ...........json1
|
||||
+| 3632: 09 13 03 00 01 03 00 01 03 00 00 04 6c 6f 61 64 ............load
|
||||
+| 3648: 09 1f 03 00 01 03 00 01 03 00 00 03 6d 61 78 09 ............max.
|
||||
+| 3664: 1c 02 00 01 02 00 01 02 00 01 05 65 6d 6f 72 79 ...........emory
|
||||
+| 3680: 09 1c 03 00 01 03 00 01 03 00 03 04 73 79 73 35 ............sys5
|
||||
+| 3696: 09 16 03 00 01 03 00 01 03 00 00 06 6e 6f 63 61 ............noca
|
||||
+| 3712: 73 65 3c 02 01 02 02 00 03 01 12 02 00 03 01 02 se<.............
|
||||
+| 3728: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||
+| 3744: 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 ................
|
||||
+| 3760: 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 00 ................
|
||||
+| 3776: 04 6f 6d 69 74 09 1f 02 00 01 02 00 01 02 00 00 .omit...........
|
||||
+| 3792: 05 72 74 72 65 65 09 19 03 00 01 03 00 01 03 00 .rtree..........
|
||||
+| 3808: 03 02 69 6d 3c 01 01 02 02 00 03 01 02 02 00 03 ..im<...........
|
||||
+| 3824: 01 02 02 00 03 01 02 02 00 03 01 02 02 00 03 01 ................
|
||||
+| 3840: 02 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 ................
|
||||
+| 3856: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||
+| 3872: 00 00 0a 74 68 72 65 61 64 73 61 66 65 09 22 02 ...threadsafe...
|
||||
+| 3888: 00 01 02 00 01 02 00 00 04 76 74 61 62 09 07 04 .........vtab...
|
||||
+| 3904: 00 01 04 00 01 03 ff ff 01 78 b4 01 01 01 01 02 .........x......
|
||||
+| 3920: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||
+| 3936: 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 01 ................
|
||||
+| 3952: 01 01 02 00 01 01 01 07 30 01 01 01 02 00 01 01 ........0.......
|
||||
+| 3968: 01 02 00 11 01 01 02 00 01 01 01 02 00 11 01 01 ................
|
||||
+| 3984: 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 ................
|
||||
+| 4000: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||
+| 4016: 01 01 01 01 ff 01 01 01 02 00 01 01 01 02 00 01 ................
|
||||
+| 4032: 01 01 02 00 01 01 01 02 00 01 01 01 02 00 01 01 ................
|
||||
+| 4048: 01 02 00 01 01 09 c2 00 01 01 01 02 00 01 01 01 ................
|
||||
+| 4064: 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 ................
|
||||
+| 4080: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||
+| page 6 offset 20480
|
||||
+| 0: 0a 00 00 00 02 0f f5 00 0f fb 0f f5 00 00 00 00 ................
|
||||
+| 4080: 00 00 00 00 00 05 04 08 09 01 02 04 04 08 08 09 ................
|
||||
+| page 7 offset 24576
|
||||
+| 0: 0d 00 00 00 05 0f b8 00 0e f4 0f e9 10 d6 0f c7 ................
|
||||
+| 4016: 00 00 00 00 00 00 00 00 0d 05 02 23 61 75 74 6f ...........#auto
|
||||
+| 4032: 6d 65 72 67 65 3d 35 0d 04 02 23 6d 65 72 67 65 merge=5...#merge
|
||||
+| 4048: 3d 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =1..............
|
||||
+| end crash-369d042958c29b.db
|
||||
+}]} {}
|
||||
+
|
||||
+do_catchsql_test 24.1 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT '4hE'+x FROM c WHERE x<72)
|
||||
+ INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 24.2 {
|
||||
+ UPDATE t1 SET b=quote((true) ) WHERE t1 MATCH 'h';
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 24.3 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<72)
|
||||
+ INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 24.4 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT null<<x FROM c WHERE x<72)
|
||||
+ INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 24.5 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT 3+x FROM c WHERE x<72)
|
||||
+ INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 24.7 {
|
||||
+ INSERT INTO t1(t1) SELECT x FROM t2;
|
||||
+} {1 {database disk image is malformed}}
|
||||
+
|
||||
+#-------------------------------------------------------------------------
|
||||
+#-------------------------------------------------------------------------
|
||||
+reset_db
|
||||
+do_test 25.0 {
|
||||
+ sqlite3 db {}
|
||||
+ db deserialize [decode_hexdb {
|
||||
+.open --hexdb
|
||||
+| size 28672 pagesize 4096 filename crash-dde9e76ed8ab2d.db
|
||||
+| page 1 offset 0
|
||||
+| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
|
||||
+| 16: 10 00 01 01 00 40 20 20 00 00 03 10 00 00 00 00 .....@ ........
|
||||
+| 96: 00 00 00 00 0d 0e b1 00 06 0d a4 00 0f 8d 0f 21 ...............!
|
||||
+| 112: 0e b9 0d c8 0e 7e 0d a4 00 00 00 00 00 00 00 00 .....~..........
|
||||
+| 3488: 00 00 00 00 22 07 06 17 11 11 01 31 74 61 62 6c ...........1tabl
|
||||
+| 3504: 65 74 32 74 32 07 43 52 45 41 54 45 20 54 41 42 et2t2.CREATE TAB
|
||||
+| 3520: 4c 45 20 74 32 28 78 29 81 33 05 07 17 1f 1f 01 LE t2(x).3......
|
||||
+| 3536: 82 35 74 61 62 6c 65 74 31 5f 73 65 67 64 69 72 .5tablet1_segdir
|
||||
+| 3552: 74 31 5f 73 65 67 64 69 72 05 43 52 45 41 54 45 t1_segdir.CREATE
|
||||
+| 3568: 20 54 41 42 4c 45 20 27 74 31 5f 73 65 67 64 69 TABLE 't1_segdi
|
||||
+| 3584: 72 27 28 6c 65 76 65 6c 20 49 4e 54 45 47 45 52 r'(level INTEGER
|
||||
+| 3600: 2c 69 64 78 20 49 4e 54 45 47 45 52 2c 73 74 61 ,idx INTEGER,sta
|
||||
+| 3616: 72 74 5f 62 6c 6f 63 6b 20 49 4e 54 45 47 45 52 rt_block INTEGER
|
||||
+| 3632: 2c 6c 65 61 76 65 73 5f 65 6e 64 5f 62 6c 6f 63 ,leaves_end_bloc
|
||||
+| 3648: 6b 20 49 4e 54 45 47 45 52 2c 65 6e 64 5f 62 6c k INTEGER,end_bl
|
||||
+| 3664: 6f 63 6b 20 49 4e 54 45 47 45 52 2c 72 6f 6f 74 ock INTEGER,root
|
||||
+| 3680: 20 42 4c 4f 42 2c 50 52 49 4d 41 52 59 20 4b 45 BLOB,PRIMARY KE
|
||||
+| 3696: 59 28 6c 65 76 65 6c 2c 20 69 64 78 29 29 31 06 Y(level, idx))1.
|
||||
+| 3712: 06 17 45 1f 01 00 69 6e 64 65 78 73 71 6c 69 74 ..E...indexsqlit
|
||||
+| 3728: 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 31 5f 73 e_autoindex_t1_s
|
||||
+| 3744: 65 67 64 69 72 5f 31 74 31 5f 73 65 67 64 69 72 egdir_1t1_segdir
|
||||
+| 3760: 06 0f c7 00 08 00 00 00 00 66 04 07 17 23 23 01 .........f...##.
|
||||
+| 3776: 81 13 74 61 62 6c 65 74 31 5f 73 65 67 6d 65 6e ..tablet1_segmen
|
||||
+| 3792: 64 73 74 31 5f 73 65 67 6d 65 6e 74 73 04 43 52 dst1_segments.CR
|
||||
+| 3808: 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 5f 73 EATE TABLE 't1_s
|
||||
+| 3824: 65 67 6d 65 6e 74 73 27 28 62 6c 6f 63 6b 69 64 egments'(blockid
|
||||
+| 3840: 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 INTEGER PRIMARY
|
||||
+| 3856: 20 4b 45 59 2c 20 62 6c 6f 63 6b 20 42 4c 4f 42 KEY, block BLOB
|
||||
+| 3872: 29 6a 03 07 17 21 21 01 81 1f 74 61 62 6c 65 74 )j...!!...tablet
|
||||
+| 3888: 31 5f 63 6f 6e 74 65 6e 74 74 31 5f 63 6f 6e 74 1_contentt1_cont
|
||||
+| 3904: 65 6e 74 03 43 52 45 41 54 45 20 54 41 42 4c 45 ent.CREATE TABLE
|
||||
+| 3920: 20 27 74 31 5f 63 6f 6e 74 65 6e 74 27 28 64 6f 't1_content'(do
|
||||
+| 3936: 63 69 64 20 49 4e 54 45 47 45 52 20 50 52 39 4d cid INTEGER PR9M
|
||||
+| 3952: 41 52 59 20 4b 45 59 2c 20 27 63 30 61 27 2c 20 ARY KEY, 'c0a',
|
||||
+| 3968: 27 63 31 62 27 2c 20 27 63 32 63 27 29 38 02 06 'c1b', 'c2c')8..
|
||||
+| 3984: 17 11 11 08 5f 74 61 62 6c 65 74 31 74 31 43 52 ...._tablet1t1CR
|
||||
+| 4000: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 EATE VIRTUAL TAB
|
||||
+| 4016: 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74 73 33 LE t1 USING fts3
|
||||
+| 4032: 28 61 2c 62 2c 63 29 00 00 00 00 00 00 00 00 00 (a,b,c).........
|
||||
+| page 3 offset 8192
|
||||
+| 0: 0d 00 00 00 26 0b 48 0e 0f d8 0f af 0f 86 0f 74 ....&.H........t
|
||||
+| 16: 0f 61 0f 4e 0f 2f 0f 0f 0e ef 0e d7 0e be 0e a5 .a.N./..........
|
||||
+| 32: 0e 8d 0e 74 0e 5b 0e 40 0e 24 0e 08 0d ef 0d d5 ...t.[.@.$......
|
||||
+| 48: 0d bb 0d a0 0e 94 03 28 0d 4f 0d 35 0d 1b 05 0b .......(.O.5....
|
||||
+| 64: 0c da 0c b9 0c 99 0c 78 0c 57 0c 3e 0c 24 0c 0a .......x.W.>.$..
|
||||
+| 2880: 00 00 00 00 00 00 00 00 81 3f 25 06 00 72 7f 00 .........?%..r..
|
||||
+| 2896: 00 43 4f 4d 50 49 4c 45 52 3d 67 63 63 2d 35 2e .COMPILER=gcc-5.
|
||||
+| 2912: 34 2e 30 20 32 30 31 36 30 36 30 39 20 44 55 42 4.0 20160609 DUB
|
||||
+| 2928: 55 47 20 45 4e 41 e4 7c 45 20 44 42 53 54 41 54 UG ENA.|E DBSTAT
|
||||
+| 2944: e4 46 54 41 42 20 45 4e 41 42 4c 45 20 46 54 53 .FTAB ENABLE FTS
|
||||
+| 2960: 34 20 45 4e 41 42 4c 45 20 46 54 53 35 20 45 4e 4 ENABLE FTS5 EN
|
||||
+| 2976: 41 42 4c 45 20 47 45 4f 50 4f 4c 59 20 45 4e 41 ABLE GEOPOLY ENA
|
||||
+| 2992: 42 4c 45 20 4a 53 4f 4e 31 20 45 4e 41 42 4c 45 BLE JSON1 ENABLE
|
||||
+| 3008: 20 4d 45 4d 53 59 53 35 20 45 4e 41 42 4c 45 20 MEMSYS5 ENABLE
|
||||
+| 3024: 42 54 52 45 45 20 4d 41 58 20 4d 45 4d 4f 52 59 BTREE MAX MEMORY
|
||||
+| 3040: 3d 35 30 30 30 30 30 30 30 20 4f 4c 49 54 20 4c =50000000 OLIT L
|
||||
+| 3056: 4f 41 43 20 45 58 54 45 4e 53 49 4f 4e 21 54 48 OAC EXTENSION!TH
|
||||
+| 3072: 52 45 41 44 53 41 46 45 3d 30 18 24 05 00 25 0f READSAFE=0.$..%.
|
||||
+| 3088: 19 54 48 52 45 41 44 53 41 46 45 3d 30 58 42 49 .THREADSAFE=0XBI
|
||||
+| 3104: 4e 41 52 59 18 23 05 00 25 0f 19 54 48 52 45 41 NARY.#..%..THREA
|
||||
+| 3120: 44 53 41 4b 75 3d 30 58 4d 4f 43 41 53 45 17 22 DSAKu=0XMOCASE..
|
||||
+| 3136: 05 00 25 0f 17 54 48 52 45 41 44 53 41 46 46 3d ..%..THREADSAFF=
|
||||
+| 3152: 30 58 52 54 52 49 4d 1f 21 05 00 33 0f 19 4f 4d 0XRTRIM.!..3..OM
|
||||
+| 3168: 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 52 49 4f IT LOAD EXTENRIO
|
||||
+| 3184: 4e 58 42 49 4e 41 52 59 1f 20 05 00 33 0f 19 4f NXBINARY. ..3..O
|
||||
+| 3200: 4d 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 53 49 MIT LOAD EXTENSI
|
||||
+| 3216: 4f 4e 58 4e 4f 43 41 53 45 1e 1f 05 00 33 0f 17 ONXNOCASE....3..
|
||||
+| 3232: 4f 4d 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 53 OMIT LOAD EXTENS
|
||||
+| 3248: 49 4f 4e 58 52 54 52 49 4d 1f 1e 05 00 33 0f 19 IONXRTRIM....3..
|
||||
+| 3264: 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 30 30 MAX MEMORY=50000
|
||||
+| 3280: 30 30 30 58 42 49 4e 41 52 59 1f 1d 05 00 33 0f 000XBINARY....3.
|
||||
+| 3296: 19 4d 41 58 20 4d 45 4d 4f 52 59 3d 35 30 30 30 .MAX MEMORY=5000
|
||||
+| 3312: 30 30 30 30 58 4e 4f 43 41 53 45 1e 1c 05 00 33 0000XNOCASE....3
|
||||
+| 3328: 0f 17 4d 42 b8 20 4d 45 4d 4f 52 59 3d 35 30 30 ..MB. MEMORY=500
|
||||
+| 3344: 30 30 30 30 30 58 52 54 52 49 4d 18 1b 05 00 25 00000XRTRIM....%
|
||||
+| 3360: 0f 19 45 4e 41 42 4c 45 20 52 54 52 45 45 58 42 ..ENABLE RTREEXB
|
||||
+| 3376: 49 4e 41 52 59 18 1a 05 0d a5 0f 19 45 4e 41 42 INARY.......ENAB
|
||||
+| 3392: 4c 45 20 52 54 52 45 45 58 4e 4f 43 41 53 45 17 LE RTREEXNOCASE.
|
||||
+| 3408: 19 1c 00 25 0f 17 45 4e 41 42 4c 45 20 52 54 52 ...%..ENABLE RTR
|
||||
+| 3424: 45 45 58 52 54 52 49 4d 1a 18 05 00 29 0f 19 45 EEXRTRIM....)..E
|
||||
+| 3440: 4e 41 42 4c 45 20 4d 45 4d 53 59 53 35 58 42 49 NABLE MEMSYS5XBI
|
||||
+| 3456: 4e 41 52 59 1a 17 05 00 29 0f 19 45 4e 41 42 4c NARY....)..ENABL
|
||||
+| 3472: 45 20 4d 45 4d 53 59 53 35 58 4e 4f 43 41 53 45 E MEMSYS5XNOCASE
|
||||
+| 3488: 19 16 05 00 29 0f 17 45 4e 41 42 4c 45 20 4d 45 ....)..ENABLE ME
|
||||
+| 3504: 4d 53 59 53 35 58 52 54 52 49 4d 18 14 05 01 25 MSYS5XRTRIM....%
|
||||
+| 3520: 0f 19 45 4e 12 42 4c 45 20 4a 53 4f 4e 31 58 42 ..EN.BLE JSON1XB
|
||||
+| 3536: 49 4e 41 52 59 18 14 05 00 25 09 d9 45 4e 41 42 INARY....%..ENAB
|
||||
+| 3552: 4c 45 20 4a 53 4f 3e 31 58 4e 4f 43 41 53 45 17 LE JSO>1XNOCASE.
|
||||
+| 3568: 13 05 00 25 0f 17 45 4e 40 42 4c 45 20 4a 53 4f ...%..EN@BLE JSO
|
||||
+| 3584: 4e 31 58 52 54 52 49 4d 1a 12 05 82 29 0f 19 45 N1XRTRIM....)..E
|
||||
+| 3600: 4e 41 42 4c 45 20 47 45 4f 50 4f 4c 59 58 42 49 NABLE GEOPOLYXBI
|
||||
+| 3616: 4e 41 52 59 1a 11 05 c9 29 e8 19 46 4e 41 42 4c NARY....)..FNABL
|
||||
+| 3632: 48 c0 47 45 4f 50 4f 4c 59 58 4e 74 43 41 53 45 H.GEOPOLYXNtCASE
|
||||
+| 3648: 19 10 05 00 29 0f 17 45 4e 41 42 4c 45 20 47 45 ....)..ENABLE GE
|
||||
+| 3664: 4f 50 4f 4c 59 58 52 54 52 49 4d 17 0f 05 00 23 OPOLYXRTRIM....#
|
||||
+| 3680: 0f 19 45 4e 41 42 4c 45 30 46 54 53 35 58 42 49 ..ENABLE0FTS5XBI
|
||||
+| 3696: 4e 41 52 59 17 0e 05 00 23 0f 19 45 4e 41 42 4c NARY....#..ENABL
|
||||
+| 3712: 45 20 46 54 53 35 58 4e 4f 43 41 53 45 16 0e 05 E FTS5XNOCASE...
|
||||
+| 3728: 00 23 0f 17 45 4e 41 42 4c 45 20 46 54 53 35 58 .#..ENABLE FTS5X
|
||||
+| 3744: 52 54 52 49 4d 17 0c 05 00 23 0f 19 45 4e 41 42 RTRIM....#..ENAB
|
||||
+| 3760: 4c 45 20 46 54 53 34 58 42 49 4e 41 52 59 17 0b LE FTS4XBINARY..
|
||||
+| 3776: 05 00 23 0f 19 45 4e 41 42 4c 45 20 46 54 53 34 ..#..ENABLE FTS4
|
||||
+| 3792: 58 4e 4f 43 41 53 45 16 0a 05 00 23 0f 17 45 4e XNOCASE....#..EN
|
||||
+| 3808: 41 42 4c 45 20 46 54 53 34 58 52 54 52 49 4d 1e ABLE FTS4XRTRIM.
|
||||
+| 3824: 09 05 00 31 0f 19 45 4e 42 42 4c 45 20 44 42 53 ...1..ENBBLE DBS
|
||||
+| 3840: 54 41 54 20 56 54 41 42 58 42 49 4e 41 52 59 1e TAT VTABXBINARY.
|
||||
+| 3856: 08 05 00 31 0f 19 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS
|
||||
+| 3872: 54 41 54 20 56 54 41 42 58 4e 4f 43 41 53 45 1d TAT VTABXNOCASE.
|
||||
+| 3888: 07 05 00 31 0f 17 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS
|
||||
+| 3904: 54 41 54 20 56 54 41 42 58 52 54 52 4a 4d 11 06 TAT VTABXRTRJM..
|
||||
+| 3920: 05 f0 17 0f 19 44 45 42 55 47 58 42 49 4e 41 52 .....DEBUGXBINAR
|
||||
+| 3936: 59 11 05 05 00 17 0e 19 44 45 42 55 47 58 4e 4f Y.......DEBUGXNO
|
||||
+| 3952: 43 41 53 45 10 04 05 00 17 0f 16 44 45 42 55 47 CASE.......DEBUG
|
||||
+| 3968: 58 52 54 52 49 4d 27 03 05 00 43 0f 19 43 4f 4d XRTRIM'...C..COM
|
||||
+| 3984: 50 49 4c 45 52 3d 67 63 63 2d 35 2e 34 2e 30 20 PILER=gcc-5.4.0
|
||||
+| 4000: 32 30 31 36 30 36 30 39 58 42 49 4e 41 52 59 27 20160609XBINARY'
|
||||
+| 4016: 02 05 00 43 0f 19 43 4f 4d 50 49 4c 45 52 3d 67 ...C..COMPILER=g
|
||||
+| 4032: 63 63 2d 35 2e 34 2e 30 20 32 30 31 36 30 36 30 cc-5.4.0 2016060
|
||||
+| 4048: 39 58 4e 4f 43 41 53 45 26 01 06 00 43 0f 17 43 9XNOCASE&...C..C
|
||||
+| 4064: 4f 4d 50 49 4b 45 52 3d 67 63 63 2d 35 2e 34 2e OMPIKER=gcc-5.4.
|
||||
+| 4080: 30 20 32 30 31 36 30 36 40 39 58 29 54 52 49 4d 0 201606@9X)TRIM
|
||||
+| page 4 offset 12288
|
||||
+| 0: 0d 00 10 00 00 10 00 00 00 00 00 00 00 01 00 00 ................
|
||||
+| page 5 offset 16384
|
||||
+| 0: 0d 00 00 00 02 0b a0 00 0c ad 0b a0 00 00 00 00 ................
|
||||
+| 2976: 82 0a 02 08 08 09 08 08 17 84 06 30 20 32 35 33 ...........0 253
|
||||
+| 2992: 00 01 30 04 25 06 1b 00 00 08 32 30 31 36 30 36 ..0.%.....201606
|
||||
+| 3008: 30 39 03 25 07 00 00 01 34 03 25 05 00 00 01 35 09.%....4.%....5
|
||||
+| 3024: 03 25 04 00 01 07 30 30 30 30 30 30 30 03 25 1a .%....0000000.%.
|
||||
+| 3040: 00 00 08 63 6f 6d 70 69 6c 65 72 03 25 02 00 00 ...compiler.%...
|
||||
+| 3056: 06 64 62 73 74 61 74 03 25 0a 00 01 04 65 62 75 .dbstat.%....ebu
|
||||
+| 3072: 67 03 25 08 00 00 06 65 6e 61 62 6c 65 09 25 09 g.%....enable.%.
|
||||
+| 3088: 05 04 04 04 04 04 00 01 08 78 74 65 6e 73 69 6f .........xtensio
|
||||
+| 3104: 6e 03 25 1d 00 00 04 66 74 73 34 03 25 0d 00 03 n.%....fts4.%...
|
||||
+| 3120: 01 35 03 25 0f 00 00 03 67 63 63 03 25 03 00 01 .5.%....gcc.%...
|
||||
+| 3136: 06 65 6f 70 6f 6c 79 03 25 11 00 00 05 6a 73 6f .eopoly.%....jso
|
||||
+| 3152: 6e 31 03 25 13 00 00 04 6c 6f 61 64 03 25 1c 00 n1.%....load.%..
|
||||
+| 3168: 00 03 6d 61 78 03 25 18 00 01 05 65 6e 6f 72 79 ..max.%....enory
|
||||
+| 3184: 03 25 19 00 03 04 ce 79 73 4d 03 25 15 00 00 04 .%.....ysM.%....
|
||||
+| 3200: 6f 6d 69 74 03 25 1b 00 00 05 72 74 72 65 65 03 omit.%....rtree.
|
||||
+| 3216: 25 17 00 00 0a 74 68 72 65 61 64 73 61 66 65 03 %....threadsafe.
|
||||
+| 3232: 25 0e 00 00 04 76 74 61 62 03 25 0b 00 86 50 01 %....vtab.%...P.
|
||||
+| 3248: 08 08 08 08 08 17 8d 12 30 20 38 33 35 00 01 30 ........0 835..0
|
||||
+| 3264: 12 01 06 00 01 06 00 01 06 00 1f 03 00 01 03 09 ................
|
||||
+| 3280: 51 03 00 00 08 32 30 31 36 30 36 30 39 09 01 07 Q....20160609...
|
||||
+| 3296: 00 01 07 00 01 07 00 00 01 34 09 01 05 00 01 05 .........4......
|
||||
+| 3312: 00 01 05 00 00 01 35 09 01 04 00 01 04 00 01 04 ......5.........
|
||||
+| 3328: 00 01 07 30 30 30 30 30 30 30 09 1c 04 00 01 04 ...0000000......
|
||||
+| 3344: 00 01 04 00 00 06 62 69 6e 61 72 79 3c 03 01 02 ......binary<...
|
||||
+| 3360: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||
+| 3376: 00 03 01 02 02 00 02 f1 02 02 00 03 01 02 02 00 ................
|
||||
+| 3392: 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 03 ................
|
||||
+| 3408: 01 02 02 00 03 01 02 02 00 00 08 63 6f 6d 70 69 ...........compi
|
||||
+| 3424: 6c 65 72 09 01 02 00 01 02 00 01 02 00 00 06 67 ler............g
|
||||
+| 3440: d2 73 74 61 74 09 07 03 00 01 03 00 01 03 00 01 .stat...........
|
||||
+| 3456: 04 65 62 75 67 09 04 02 00 01 02 00 01 02 00 00 .ebug...........
|
||||
+| 3472: 06 65 6e 6f 82 6c 65 3f 07 02 00 01 02 00 01 02 .eno.le?........
|
||||
+| 3488: b0 01 02 00 01 02 00 11 02 00 01 02 00 01 02 00 ................
|
||||
+| 3504: 01 02 00 01 02 00 01 02 00 01 a6 00 01 02 00 01 ................
|
||||
+| 3520: 02 05 51 02 00 01 02 00 01 02 00 01 02 00 01 02 ..Q.............
|
||||
+| 3536: 00 01 02 00 01 02 00 01 08 78 74 65 6e 73 69 6f .........xtensio
|
||||
+| 3552: 6e 09 1f 04 00 01 04 00 00 04 00 00 04 66 74 73 n............fts
|
||||
+| 3568: 34 09 0a 03 00 01 03 00 01 03 00 03 01 35 09 0d 4............5..
|
||||
+| 3584: 03 00 01 03 00 01 03 00 00 03 67 63 63 09 01 03 ..........gcc...
|
||||
+| 3600: 00 01 03 00 01 03 00 01 06 65 6f 70 73 6c 79 09 .........eopsly.
|
||||
+| 3616: 10 03 00 01 03 00 01 03 00 00 05 6a 73 6f 6e 31 ...........json1
|
||||
+| 3632: 09 13 03 00 01 03 00 01 03 00 00 04 6c 6f 61 64 ............load
|
||||
+| 3648: 09 1f 03 00 01 03 00 01 03 00 00 03 6d 61 78 09 ............max.
|
||||
+| 3664: 1c 02 00 01 02 00 01 02 00 01 05 65 6d 6f 72 79 ...........emory
|
||||
+| 3680: 09 1c 03 00 01 03 00 01 03 00 03 04 73 79 73 35 ............sys5
|
||||
+| 3696: 09 16 03 00 01 03 00 01 03 00 00 06 6e 6f 63 61 ............noca
|
||||
+| 3712: 73 65 3c 02 01 02 02 00 03 01 12 02 00 03 01 02 se<.............
|
||||
+| 3728: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||
+| 3744: 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 ................
|
||||
+| 3760: 03 01 02 02 00 03 01 02 02 00 03 01 02 02 00 00 ................
|
||||
+| 3776: 0e 9f 6d 69 74 09 1f 02 00 01 02 00 01 02 00 00 ..mit...........
|
||||
+| 3792: 05 72 74 72 65 65 09 19 03 00 01 03 00 01 03 00 .rtree..........
|
||||
+| 3808: 03 02 69 6d 3c 01 01 02 02 00 03 01 02 02 00 03 ..im<...........
|
||||
+| 3824: 01 02 02 00 03 01 02 02 00 03 01 02 02 00 03 01 ................
|
||||
+| 3840: 02 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 ................
|
||||
+| 3856: 02 00 03 01 02 02 00 03 01 02 02 00 03 01 02 02 ................
|
||||
+| 3872: 00 00 0a 74 68 72 65 61 64 73 61 66 65 09 22 02 ...threadsafe...
|
||||
+| 3888: 00 01 02 00 01 02 00 00 04 76 74 61 62 09 07 04 .........vtab...
|
||||
+| 3904: 00 01 04 00 01 04 00 00 01 78 b4 01 01 01 01 02 .........x......
|
||||
+| 3920: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||
+| 3936: 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 01 ................
|
||||
+| 3952: 01 01 02 00 01 01 01 07 30 01 01 01 02 00 01 01 ........0.......
|
||||
+| 3968: 01 02 00 11 01 01 02 00 01 01 01 02 00 11 01 01 ................
|
||||
+| 3984: 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 ................
|
||||
+| 4000: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||
+| 4016: 01 01 01 01 ff 01 01 01 02 00 01 01 01 02 00 01 ................
|
||||
+| 4032: 01 01 02 00 01 01 01 02 00 01 01 01 02 00 01 01 ................
|
||||
+| 4048: 01 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 ................
|
||||
+| 4064: 02 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 ................
|
||||
+| 4080: 00 01 01 01 02 00 01 01 01 02 00 01 01 01 02 00 ................
|
||||
+| page 6 offset 20480
|
||||
+| 0: 0a 00 00 00 02 0f f5 00 0f fb 0f f5 00 00 00 00 ................
|
||||
+| 4080: 00 00 00 00 00 05 04 08 09 01 02 04 04 08 08 09 ................
|
||||
+| page 7 offset 24576
|
||||
+| 0: 0d 00 00 00 05 0f b8 00 0e f4 0f e9 10 d6 0f c7 ................
|
||||
+| 4016: 00 00 00 00 00 00 00 00 0d 05 02 23 61 75 74 6f ...........#auto
|
||||
+| 4032: 6d 65 72 67 65 3d 35 0d 04 02 23 6d 65 72 67 65 merge=5...#merge
|
||||
+| 4048: 3d 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =1..............
|
||||
+| end crash-dde9e76ed8ab2d.db
|
||||
+}]} {}
|
||||
+
|
||||
+do_catchsql_test 25.1 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x%1 FROM c WHERE x<599237)
|
||||
+ INSERT INTO t1( a ) SELECT randomblob(3000) FROM t2 ;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 25.2 {
|
||||
+ UPDATE t1 SET b=quote((true) ) WHERE t1 MATCH 'h*';
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 25.3 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x +x FROM c WHERE 72<x)
|
||||
+ INSERT INTO t1(a) SELECT randomblob(2829) FROM c;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 25.4 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x%1 FROM c WHERE 599237<x)
|
||||
+ INSERT INTO t1(a) SELECT randomblob(3000) FROM t2 ;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 25.5 {
|
||||
+ WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x%1 FROM c WHERE x<599237)
|
||||
+ INSERT INTO t1( a ) SELECT randomblob(3000) FROM t2 ;
|
||||
+} {0 {}}
|
||||
+
|
||||
+do_catchsql_test 25.6 {
|
||||
+ INSERT INTO t1(t1) SELECT x FROM t2;
|
||||
+ INSERT INTO t1(t1) SELECT x FROM t2;
|
||||
+} {1 {database disk image is malformed}}
|
||||
+
|
||||
finish_test
|
||||
|
||||
--- /test/with3.test
|
||||
+++ /test/with3.test
|
||||
@@ -130,4 +130,40 @@
|
||||
`--SEARCH TABLE w1 USING INTEGER PRIMARY KEY (rowid=?)
|
||||
}
|
||||
|
||||
+do_execsql_test 4.0 {
|
||||
+ WITH t5(t5col1) AS (
|
||||
+ SELECT (
|
||||
+ WITH t3(t3col1) AS (
|
||||
+ WITH t2 AS (
|
||||
+ WITH t1 AS (SELECT 1 AS c1 GROUP BY 1)
|
||||
+ SELECT a.c1 FROM t1 AS a, t1 AS b
|
||||
+ WHERE anoncol1 = 1
|
||||
+ )
|
||||
+ SELECT (SELECT 1 FROM t2) FROM t2
|
||||
+ )
|
||||
+ SELECT t3col1 FROM t3 WHERE t3col1
|
||||
+ ) FROM (SELECT 1 AS anoncol1)
|
||||
+ )
|
||||
+ SELECT t5col1, t5col1 FROM t5
|
||||
+} {1 1}
|
||||
+do_execsql_test 4.1 {
|
||||
+ SELECT EXISTS (
|
||||
+ WITH RECURSIVE Table0 AS (
|
||||
+ WITH RECURSIVE Table0(Col0) AS (SELECT ALL 1 )
|
||||
+ SELECT ALL (
|
||||
+ WITH RECURSIVE Table0 AS (
|
||||
+ WITH RECURSIVE Table0 AS (
|
||||
+ WITH RECURSIVE Table0 AS (SELECT DISTINCT 1 GROUP BY 1 )
|
||||
+ SELECT DISTINCT * FROM Table0 NATURAL INNER JOIN Table0
|
||||
+ WHERE Col0 = 1
|
||||
+ )
|
||||
+ SELECT ALL (SELECT DISTINCT * FROM Table0) FROM Table0 WHERE Col0 = 1
|
||||
+ )
|
||||
+ SELECT ALL * FROM Table0 NATURAL INNER JOIN Table0
|
||||
+ ) FROM Table0 )
|
||||
+ SELECT DISTINCT * FROM Table0 NATURAL INNER JOIN Table0
|
||||
+ );
|
||||
+} {1}
|
||||
+
|
||||
+
|
||||
finish_test
|
@ -0,0 +1,19 @@
|
||||
https://sqlite.org/src/info/af53c41a127c314c
|
||||
|
||||
--- /test/like3.test
|
||||
+++ /test/like3.test
|
||||
@@ -182,6 +182,7 @@
|
||||
# Verify that the LIKE optimization works with an ESCAPE clause when
|
||||
# using PRAGMA case_sensitive_like=ON.
|
||||
#
|
||||
+ifcapable !icu {
|
||||
do_execsql_test like3-6.100 {
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1(path TEXT COLLATE nocase PRIMARY KEY,a,b,c) WITHOUT ROWID;
|
||||
@@ -229,5 +230,6 @@
|
||||
QUERY PLAN
|
||||
`--SEARCH TABLE t2 USING INDEX t2path2 (path>? AND path<?)
|
||||
}
|
||||
+}
|
||||
|
||||
finish_test
|
@ -0,0 +1,114 @@
|
||||
https://sqlite.org/src/info/b2ce5ed175cb5029
|
||||
https://sqlite.org/src/info/6e4a5f22811bcd14
|
||||
https://sqlite.org/src/info/516ca8945150bdc1
|
||||
https://sqlite.org/src/info/e1724f1d618cfbcf
|
||||
https://sqlite.org/src/info/c621fc668c6538f9
|
||||
https://sqlite.org/src/info/c509d8a8aebe0da4
|
||||
https://sqlite.org/src/info/a9b90aa12eecdd9f
|
||||
|
||||
--- /sqlite3.c
|
||||
+++ /sqlite3.c
|
||||
@@ -67472,10 +67472,9 @@
|
||||
rc = newDatabase(pBt);
|
||||
pBt->nPage = get4byte(28 + pBt->pPage1->aData);
|
||||
|
||||
- /* The database size was written into the offset 28 of the header
|
||||
- ** when the transaction started, so we know that the value at offset
|
||||
- ** 28 is nonzero. */
|
||||
- assert( pBt->nPage>0 );
|
||||
+ /* pBt->nPage might be zero if the database was corrupt when
|
||||
+ ** the transaction was started. Otherwise, it must be at least 1. */
|
||||
+ assert( CORRUPT_DB || pBt->nPage>0 );
|
||||
}
|
||||
sqlite3BtreeLeave(p);
|
||||
}
|
||||
@@ -70825,6 +70824,7 @@
|
||||
u16 maskPage = pOld->maskPage;
|
||||
u8 *piCell = aData + pOld->cellOffset;
|
||||
u8 *piEnd;
|
||||
+ VVA_ONLY( int nCellAtStart = b.nCell; )
|
||||
|
||||
/* Verify that all sibling pages are of the same "type" (table-leaf,
|
||||
** table-interior, index-leaf, or index-interior).
|
||||
@@ -70853,6 +70853,10 @@
|
||||
*/
|
||||
memset(&b.szCell[b.nCell], 0, sizeof(b.szCell[0])*(limit+pOld->nOverflow));
|
||||
if( pOld->nOverflow>0 ){
|
||||
+ if( limit<pOld->aiOvfl[0] ){
|
||||
+ rc = SQLITE_CORRUPT_BKPT;
|
||||
+ goto balance_cleanup;
|
||||
+ }
|
||||
limit = pOld->aiOvfl[0];
|
||||
for(j=0; j<limit; j++){
|
||||
b.apCell[b.nCell] = aData + (maskPage & get2byteAligned(piCell));
|
||||
@@ -70872,6 +70876,7 @@
|
||||
piCell += 2;
|
||||
b.nCell++;
|
||||
}
|
||||
+ assert( (b.nCell-nCellAtStart)==(pOld->nCell+pOld->nOverflow) );
|
||||
|
||||
cntOld[i] = b.nCell;
|
||||
if( i<nOld-1 && !leafData){
|
||||
@@ -83747,7 +83752,7 @@
|
||||
** is clear. Otherwise, if this is an ephemeral cursor created by
|
||||
** OP_OpenDup, the cursor will not be closed and will still be part
|
||||
** of a BtShared.pCursor list. */
|
||||
- p->apCsr[iCur]->isEphemeral = 0;
|
||||
+ if( p->apCsr[iCur]->pBtx==0 ) p->apCsr[iCur]->isEphemeral = 0;
|
||||
sqlite3VdbeFreeCursor(p, p->apCsr[iCur]);
|
||||
p->apCsr[iCur] = 0;
|
||||
}
|
||||
@@ -87258,7 +87263,10 @@
|
||||
if( pCx ){
|
||||
/* If the ephermeral table is already open, erase all existing content
|
||||
** so that the table is empty again, rather than creating a new table. */
|
||||
- rc = sqlite3BtreeClearTable(pCx->pBtx, pCx->pgnoRoot, 0);
|
||||
+ assert( pCx->isEphemeral );
|
||||
+ if( pCx->pBtx ){
|
||||
+ rc = sqlite3BtreeClearTable(pCx->pBtx, pCx->pgnoRoot, 0);
|
||||
+ }
|
||||
}else{
|
||||
pCx = allocateCursor(p, pOp->p1, pOp->p2, -1, CURTYPE_BTREE);
|
||||
if( pCx==0 ) goto no_mem;
|
||||
@@ -95979,7 +95987,9 @@
|
||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||
if( pExpr->y.pWin ){
|
||||
Select *pSel = pNC->pWinSelect;
|
||||
- sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef);
|
||||
+ if( IN_RENAME_OBJECT==0 ){
|
||||
+ sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef);
|
||||
+ }
|
||||
sqlite3WalkExprList(pWalker, pExpr->y.pWin->pPartition);
|
||||
sqlite3WalkExprList(pWalker, pExpr->y.pWin->pOrderBy);
|
||||
sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter);
|
||||
@@ -174132,7 +174142,7 @@
|
||||
}
|
||||
p->iOff += fts3GetVarint32(&p->aNode[p->iOff], &nSuffix);
|
||||
|
||||
- if( nPrefix>p->iOff || nSuffix>p->nNode-p->iOff ){
|
||||
+ if( nPrefix>p->term.n || nSuffix>p->nNode-p->iOff || nSuffix==0 ){
|
||||
return FTS_CORRUPT_VTAB;
|
||||
}
|
||||
blobGrowBuffer(&p->term, nPrefix+nSuffix, &rc);
|
||||
@@ -174151,7 +174161,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- assert( p->iOff<=p->nNode );
|
||||
+ assert_fts3_nc( p->iOff<=p->nNode );
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -204287,7 +204297,11 @@
|
||||
i64 iOff = *piOff;
|
||||
int iVal;
|
||||
fts5FastGetVarint32(a, i, iVal);
|
||||
- if( iVal==1 ){
|
||||
+ if( iVal<=1 ){
|
||||
+ if( iVal==0 ){
|
||||
+ *pi = i;
|
||||
+ return 0;
|
||||
+ }
|
||||
fts5FastGetVarint32(a, i, iVal);
|
||||
iOff = ((i64)iVal) << 32;
|
||||
fts5FastGetVarint32(a, i, iVal);
|
@ -1,320 +0,0 @@
|
||||
# Copyright 1999-2018 Arfrever Frehtes Taifersar Arahesis and others
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
|
||||
inherit autotools flag-o-matic multilib-minimal toolchain-funcs
|
||||
|
||||
SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))"
|
||||
DOC_PV="${SRC_PV}"
|
||||
# DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))"
|
||||
|
||||
DESCRIPTION="SQL database engine"
|
||||
HOMEPAGE="https://sqlite.org/"
|
||||
SRC_URI="doc? ( https://sqlite.org/2018/${PN}-doc-${DOC_PV}.zip )
|
||||
tcl? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
|
||||
test? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
|
||||
tools? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
|
||||
!tcl? ( !test? ( !tools? ( https://sqlite.org/2018/${PN}-autoconf-${SRC_PV}.tar.gz ) ) )"
|
||||
|
||||
LICENSE="public-domain"
|
||||
SLOT="3"
|
||||
KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 s390 ~sh sparc x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
IUSE="debug doc icu +readline secure-delete static-libs tcl test tools"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="doc? ( app-arch/unzip )
|
||||
tcl? (
|
||||
app-arch/unzip
|
||||
>=dev-lang/tcl-8.6:0
|
||||
)
|
||||
test? (
|
||||
app-arch/unzip
|
||||
>=dev-lang/tcl-8.6:0
|
||||
)
|
||||
tools? (
|
||||
app-arch/unzip
|
||||
>=dev-lang/tcl-8.6:0
|
||||
)"
|
||||
RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}]
|
||||
icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] )
|
||||
readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] )
|
||||
tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )
|
||||
tools? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )"
|
||||
DEPEND="${RDEPEND}
|
||||
test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )"
|
||||
|
||||
full_archive() {
|
||||
use tcl || use test || use tools
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
if full_archive; then
|
||||
S="${WORKDIR}/${PN}-src-${SRC_PV}"
|
||||
else
|
||||
S="${WORKDIR}/${PN}-autoconf-${SRC_PV}"
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
if full_archive; then
|
||||
eapply "${FILESDIR}/${PN}-3.25.0-full_archive-build.patch"
|
||||
eapply "${FILESDIR}/${PN}-3.25.2-full_archive-tests.patch"
|
||||
|
||||
eapply_user
|
||||
|
||||
# Fix AC_CHECK_FUNCS.
|
||||
# https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html
|
||||
sed -e "s/AC_CHECK_FUNCS(.*)/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" -i configure.ac || die "sed failed"
|
||||
else
|
||||
eapply "${FILESDIR}/${PN}-3.25.0-nonfull_archive-build.patch"
|
||||
|
||||
eapply_user
|
||||
|
||||
# Fix AC_CHECK_FUNCS.
|
||||
# https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html
|
||||
sed \
|
||||
-e "s/AC_CHECK_FUNCS(\[fdatasync.*/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" \
|
||||
-e "/AC_CHECK_FUNCS(posix_fallocate)/d" \
|
||||
-i configure.ac || die "sed failed"
|
||||
fi
|
||||
|
||||
eautoreconf
|
||||
|
||||
multilib_copy_sources
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" options=()
|
||||
|
||||
options+=(
|
||||
--enable-$(full_archive && echo load-extension || echo dynamic-extensions)
|
||||
--enable-threadsafe
|
||||
)
|
||||
if ! full_archive; then
|
||||
options+=(--disable-static-shell)
|
||||
fi
|
||||
|
||||
# Support detection of misuse of SQLite API.
|
||||
# https://sqlite.org/compile.html#enable_api_armor
|
||||
append-cppflags -DSQLITE_ENABLE_API_ARMOR
|
||||
|
||||
# Support column metadata functions.
|
||||
# https://sqlite.org/c3ref/column_database_name.html
|
||||
append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA
|
||||
|
||||
# Support sqlite_dbpage virtual table.
|
||||
# https://sqlite.org/compile.html#enable_dbpage_vtab
|
||||
append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
|
||||
|
||||
# Support dbstat virtual table.
|
||||
# https://sqlite.org/dbstat.html
|
||||
append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
|
||||
|
||||
# Support sqlite3_serialize() and sqlite3_deserialize() functions.
|
||||
# https://sqlite.org/compile.html#enable_deserialize
|
||||
# https://sqlite.org/c3ref/serialize.html
|
||||
# https://sqlite.org/c3ref/deserialize.html
|
||||
append-cppflags -DSQLITE_ENABLE_DESERIALIZE
|
||||
|
||||
# Support comments in output of EXPLAIN.
|
||||
# https://sqlite.org/compile.html#enable_explain_comments
|
||||
append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
|
||||
|
||||
# Support Full-Text Search versions 3, 4 and 5.
|
||||
# https://sqlite.org/fts3.html
|
||||
# https://sqlite.org/fts5.html
|
||||
append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
|
||||
options+=(--enable-fts5)
|
||||
|
||||
# Support hidden columns.
|
||||
append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
|
||||
|
||||
# Support JSON1 extension.
|
||||
# https://sqlite.org/json1.html
|
||||
append-cppflags -DSQLITE_ENABLE_JSON1
|
||||
|
||||
# Support memsys5 memory allocator.
|
||||
# https://sqlite.org/malloc.html#memsys5
|
||||
append-cppflags -DSQLITE_ENABLE_MEMSYS5
|
||||
|
||||
# Support sqlite_offset() function.
|
||||
# https://sqlite.org/lang_corefunc.html#sqlite_offset
|
||||
append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC
|
||||
|
||||
# Support pre-update hook functions.
|
||||
# https://sqlite.org/c3ref/preupdate_count.html
|
||||
append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK
|
||||
|
||||
# Support Resumable Bulk Update extension.
|
||||
# https://sqlite.org/rbu.html
|
||||
append-cppflags -DSQLITE_ENABLE_RBU
|
||||
|
||||
# Support R*Trees.
|
||||
# https://sqlite.org/rtree.html
|
||||
# https://sqlite.org/geopoly.html
|
||||
append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY
|
||||
|
||||
# Support scan status functions.
|
||||
# https://sqlite.org/c3ref/stmt_scanstatus.html
|
||||
# https://sqlite.org/c3ref/stmt_scanstatus_reset.html
|
||||
append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS
|
||||
|
||||
# Support sqlite_stmt virtual table.
|
||||
# https://sqlite.org/stmt.html
|
||||
append-cppflags -DSQLITE_ENABLE_STMTVTAB
|
||||
|
||||
# Support Session extension.
|
||||
# https://sqlite.org/sessionintro.html
|
||||
options+=(--enable-session)
|
||||
|
||||
# Support unknown() function.
|
||||
# https://sqlite.org/compile.html#enable_unknown_sql_function
|
||||
append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
|
||||
|
||||
# Support unlock notification.
|
||||
# https://sqlite.org/unlock_notify.html
|
||||
append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY
|
||||
|
||||
# Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements.
|
||||
# https://sqlite.org/compile.html#enable_update_delete_limit
|
||||
append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
|
||||
|
||||
# Support PRAGMA function_list, PRAGMA module_list and PRAGMA pragma_list statements.
|
||||
# https://sqlite.org/pragma.html#pragma_function_list
|
||||
# https://sqlite.org/pragma.html#pragma_module_list
|
||||
# https://sqlite.org/pragma.html#pragma_pragma_list
|
||||
append-cppflags -DSQLITE_INTROSPECTION_PRAGMAS
|
||||
|
||||
# Support soundex() function.
|
||||
# https://sqlite.org/lang_corefunc.html#soundex
|
||||
append-cppflags -DSQLITE_SOUNDEX
|
||||
|
||||
# Support URI filenames.
|
||||
# https://sqlite.org/uri.html
|
||||
append-cppflags -DSQLITE_USE_URI
|
||||
|
||||
# debug USE flag.
|
||||
if full_archive; then
|
||||
options+=($(use_enable debug))
|
||||
else
|
||||
if use debug; then
|
||||
append-cppflags -DSQLITE_DEBUG
|
||||
else
|
||||
append-cppflags -DNDEBUG
|
||||
fi
|
||||
fi
|
||||
|
||||
# icu USE flag.
|
||||
if use icu; then
|
||||
# Support ICU extension.
|
||||
# https://sqlite.org/compile.html#enable_icu
|
||||
append-cppflags -DSQLITE_ENABLE_ICU
|
||||
if full_archive; then
|
||||
sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
|
||||
else
|
||||
sed -e "s/^LIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
# readline USE flag.
|
||||
options+=(
|
||||
--disable-editline
|
||||
$(use_enable readline)
|
||||
)
|
||||
if full_archive && use readline; then
|
||||
options+=(--with-readline-inc="-I${EPREFIX}/usr/include/readline")
|
||||
fi
|
||||
|
||||
# secure-delete USE flag.
|
||||
if use secure-delete; then
|
||||
# Enable secure_delete pragma by default.
|
||||
# https://sqlite.org/pragma.html#pragma_secure_delete
|
||||
append-cppflags -DSQLITE_SECURE_DELETE
|
||||
fi
|
||||
|
||||
# static-libs USE flag.
|
||||
options+=($(use_enable static-libs static))
|
||||
|
||||
# tcl, test, tools USE flags.
|
||||
if full_archive; then
|
||||
options+=(--enable-tcl)
|
||||
fi
|
||||
|
||||
if [[ "${CHOST}" == *-mint* ]]; then
|
||||
append-cppflags -DSQLITE_OMIT_WAL
|
||||
fi
|
||||
|
||||
if [[ "${ABI}" == "x86" ]]; then
|
||||
if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then
|
||||
append-cflags -mfpmath=sse
|
||||
else
|
||||
append-cflags -ffloat-store
|
||||
fi
|
||||
fi
|
||||
|
||||
econf "${options[@]}"
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}"
|
||||
|
||||
if use tools && multilib_is_native_abi; then
|
||||
emake changeset dbdump dbhash rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
if [[ "${EUID}" -eq 0 ]]; then
|
||||
ewarn "Skipping tests due to root permissions"
|
||||
return
|
||||
fi
|
||||
|
||||
emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test)
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install
|
||||
|
||||
if use tools && multilib_is_native_abi; then
|
||||
install_tool() {
|
||||
if [[ -f ".libs/${1}" ]]; then
|
||||
newbin ".libs/${1}" "${2}"
|
||||
else
|
||||
newbin "${1}" "${2}"
|
||||
fi
|
||||
}
|
||||
|
||||
install_tool changeset sqlite3-changeset
|
||||
install_tool dbdump sqlite3-db-dump
|
||||
install_tool dbhash sqlite3-db-hash
|
||||
install_tool rbu sqlite3-rbu
|
||||
install_tool scrub sqlite3-scrub
|
||||
install_tool showdb sqlite3-show-db
|
||||
install_tool showjournal sqlite3-show-journal
|
||||
install_tool showshm sqlite3-show-shm
|
||||
install_tool showstat4 sqlite3-show-stat4
|
||||
install_tool showwal sqlite3-show-wal
|
||||
install_tool sqldiff sqlite3-diff
|
||||
install_tool sqlite3_analyzer sqlite3-analyzer
|
||||
install_tool sqlite3_checker sqlite3-checker
|
||||
install_tool sqlite3_expert sqlite3-expert
|
||||
install_tool sqltclsh sqlite3-tclsh
|
||||
|
||||
unset -f install_tool
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
find "${D}" -name "*.la" -delete || die
|
||||
|
||||
doman sqlite3.1
|
||||
|
||||
if use doc; then
|
||||
rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt}
|
||||
(
|
||||
docinto html
|
||||
dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"*
|
||||
)
|
||||
fi
|
||||
}
|
@ -1,325 +0,0 @@
|
||||
# Copyright 1999-2018 Arfrever Frehtes Taifersar Arahesis and others
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="7"
|
||||
|
||||
inherit autotools flag-o-matic multilib-minimal toolchain-funcs
|
||||
|
||||
SRC_PV="$(printf "%u%02u%02u%02u" $(ver_rs 1- " "))"
|
||||
DOC_PV="${SRC_PV}"
|
||||
# DOC_PV="$(printf "%u%02u%02u00" $(ver_rs 1-3 " "))"
|
||||
|
||||
DESCRIPTION="SQL database engine"
|
||||
HOMEPAGE="https://sqlite.org/"
|
||||
SRC_URI="doc? ( https://sqlite.org/2018/${PN}-doc-${DOC_PV}.zip )
|
||||
tcl? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
|
||||
test? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
|
||||
tools? ( https://sqlite.org/2018/${PN}-src-${SRC_PV}.zip )
|
||||
!tcl? ( !test? ( !tools? ( https://sqlite.org/2018/${PN}-autoconf-${SRC_PV}.tar.gz ) ) )"
|
||||
|
||||
LICENSE="public-domain"
|
||||
SLOT="3"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
IUSE="debug doc icu +readline secure-delete static-libs tcl test tools"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="doc? ( app-arch/unzip )
|
||||
tcl? (
|
||||
app-arch/unzip
|
||||
>=dev-lang/tcl-8.6:0
|
||||
)
|
||||
test? (
|
||||
app-arch/unzip
|
||||
>=dev-lang/tcl-8.6:0
|
||||
)
|
||||
tools? (
|
||||
app-arch/unzip
|
||||
>=dev-lang/tcl-8.6:0
|
||||
)"
|
||||
RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}]
|
||||
icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] )
|
||||
readline? ( sys-libs/readline:0=[${MULTILIB_USEDEP}] )
|
||||
tcl? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )
|
||||
tools? ( dev-lang/tcl:0=[${MULTILIB_USEDEP}] )"
|
||||
DEPEND="${RDEPEND}
|
||||
test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )"
|
||||
|
||||
full_archive() {
|
||||
use tcl || use test || use tools
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
if full_archive; then
|
||||
S="${WORKDIR}/${PN}-src-${SRC_PV}"
|
||||
else
|
||||
S="${WORKDIR}/${PN}-autoconf-${SRC_PV}"
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
if full_archive; then
|
||||
eapply "${FILESDIR}/${PN}-3.26.0-full_archive-build.patch"
|
||||
|
||||
eapply_user
|
||||
|
||||
# Fix AC_CHECK_FUNCS.
|
||||
# https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html
|
||||
sed -e "s/AC_CHECK_FUNCS(.*)/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" -i configure.ac || die "sed failed"
|
||||
else
|
||||
eapply "${FILESDIR}/${PN}-3.25.0-nonfull_archive-build.patch"
|
||||
|
||||
eapply_user
|
||||
|
||||
# Fix AC_CHECK_FUNCS.
|
||||
# https://mailinglists.sqlite.org/cgi-bin/mailman/private/sqlite-dev/2016-March/002762.html
|
||||
sed \
|
||||
-e "s/AC_CHECK_FUNCS(\[fdatasync.*/AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])/" \
|
||||
-e "/AC_CHECK_FUNCS(posix_fallocate)/d" \
|
||||
-i configure.ac || die "sed failed"
|
||||
fi
|
||||
|
||||
eautoreconf
|
||||
|
||||
multilib_copy_sources
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local CPPFLAGS="${CPPFLAGS}" CFLAGS="${CFLAGS}" options=()
|
||||
|
||||
options+=(
|
||||
--enable-$(full_archive && echo load-extension || echo dynamic-extensions)
|
||||
--enable-threadsafe
|
||||
)
|
||||
if ! full_archive; then
|
||||
options+=(--disable-static-shell)
|
||||
fi
|
||||
|
||||
# Support detection of misuse of SQLite API.
|
||||
# https://sqlite.org/compile.html#enable_api_armor
|
||||
append-cppflags -DSQLITE_ENABLE_API_ARMOR
|
||||
|
||||
# Support column metadata functions.
|
||||
# https://sqlite.org/c3ref/column_database_name.html
|
||||
append-cppflags -DSQLITE_ENABLE_COLUMN_METADATA
|
||||
|
||||
# Support sqlite_dbpage virtual table.
|
||||
# https://sqlite.org/compile.html#enable_dbpage_vtab
|
||||
append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
|
||||
|
||||
# Support dbstat virtual table.
|
||||
# https://sqlite.org/dbstat.html
|
||||
append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
|
||||
|
||||
# Support sqlite3_serialize() and sqlite3_deserialize() functions.
|
||||
# https://sqlite.org/compile.html#enable_deserialize
|
||||
# https://sqlite.org/c3ref/serialize.html
|
||||
# https://sqlite.org/c3ref/deserialize.html
|
||||
append-cppflags -DSQLITE_ENABLE_DESERIALIZE
|
||||
|
||||
# Support comments in output of EXPLAIN.
|
||||
# https://sqlite.org/compile.html#enable_explain_comments
|
||||
append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
|
||||
|
||||
# Support Full-Text Search versions 3, 4 and 5.
|
||||
# https://sqlite.org/fts3.html
|
||||
# https://sqlite.org/fts5.html
|
||||
append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
|
||||
options+=(--enable-fts5)
|
||||
|
||||
# Support hidden columns.
|
||||
append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
|
||||
|
||||
# Support JSON1 extension.
|
||||
# https://sqlite.org/json1.html
|
||||
append-cppflags -DSQLITE_ENABLE_JSON1
|
||||
|
||||
# Support memsys5 memory allocator.
|
||||
# https://sqlite.org/malloc.html#memsys5
|
||||
append-cppflags -DSQLITE_ENABLE_MEMSYS5
|
||||
|
||||
# Support sqlite3_normalized_sql() function.
|
||||
# https://sqlite.org/c3ref/expanded_sql.html
|
||||
append-cppflags -DSQLITE_ENABLE_NORMALIZE
|
||||
|
||||
# Support sqlite_offset() function.
|
||||
# https://sqlite.org/lang_corefunc.html#sqlite_offset
|
||||
append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC
|
||||
|
||||
# Support pre-update hook functions.
|
||||
# https://sqlite.org/c3ref/preupdate_count.html
|
||||
append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK
|
||||
|
||||
# Support Resumable Bulk Update extension.
|
||||
# https://sqlite.org/rbu.html
|
||||
append-cppflags -DSQLITE_ENABLE_RBU
|
||||
|
||||
# Support R*Trees.
|
||||
# https://sqlite.org/rtree.html
|
||||
# https://sqlite.org/geopoly.html
|
||||
append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY
|
||||
|
||||
# Support scan status functions.
|
||||
# https://sqlite.org/c3ref/stmt_scanstatus.html
|
||||
# https://sqlite.org/c3ref/stmt_scanstatus_reset.html
|
||||
append-cppflags -DSQLITE_ENABLE_STMT_SCANSTATUS
|
||||
|
||||
# Support sqlite_stmt virtual table.
|
||||
# https://sqlite.org/stmt.html
|
||||
append-cppflags -DSQLITE_ENABLE_STMTVTAB
|
||||
|
||||
# Support Session extension.
|
||||
# https://sqlite.org/sessionintro.html
|
||||
options+=(--enable-session)
|
||||
|
||||
# Support unknown() function.
|
||||
# https://sqlite.org/compile.html#enable_unknown_sql_function
|
||||
append-cppflags -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION
|
||||
|
||||
# Support unlock notification.
|
||||
# https://sqlite.org/unlock_notify.html
|
||||
append-cppflags -DSQLITE_ENABLE_UNLOCK_NOTIFY
|
||||
|
||||
# Support LIMIT and ORDER BY clauses on DELETE and UPDATE statements.
|
||||
# https://sqlite.org/compile.html#enable_update_delete_limit
|
||||
append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
|
||||
|
||||
# Support PRAGMA function_list, PRAGMA module_list and PRAGMA pragma_list statements.
|
||||
# https://sqlite.org/pragma.html#pragma_function_list
|
||||
# https://sqlite.org/pragma.html#pragma_module_list
|
||||
# https://sqlite.org/pragma.html#pragma_pragma_list
|
||||
append-cppflags -DSQLITE_INTROSPECTION_PRAGMAS
|
||||
|
||||
# Support soundex() function.
|
||||
# https://sqlite.org/lang_corefunc.html#soundex
|
||||
append-cppflags -DSQLITE_SOUNDEX
|
||||
|
||||
# Support URI filenames.
|
||||
# https://sqlite.org/uri.html
|
||||
append-cppflags -DSQLITE_USE_URI
|
||||
|
||||
# debug USE flag.
|
||||
if full_archive; then
|
||||
options+=($(use_enable debug))
|
||||
else
|
||||
if use debug; then
|
||||
append-cppflags -DSQLITE_DEBUG
|
||||
else
|
||||
append-cppflags -DNDEBUG
|
||||
fi
|
||||
fi
|
||||
|
||||
# icu USE flag.
|
||||
if use icu; then
|
||||
# Support ICU extension.
|
||||
# https://sqlite.org/compile.html#enable_icu
|
||||
append-cppflags -DSQLITE_ENABLE_ICU
|
||||
if full_archive; then
|
||||
sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
|
||||
else
|
||||
sed -e "s/^LIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
# readline USE flag.
|
||||
options+=(
|
||||
--disable-editline
|
||||
$(use_enable readline)
|
||||
)
|
||||
if full_archive && use readline; then
|
||||
options+=(--with-readline-inc="-I${EPREFIX}/usr/include/readline")
|
||||
fi
|
||||
|
||||
# secure-delete USE flag.
|
||||
if use secure-delete; then
|
||||
# Enable secure_delete pragma by default.
|
||||
# https://sqlite.org/pragma.html#pragma_secure_delete
|
||||
append-cppflags -DSQLITE_SECURE_DELETE
|
||||
fi
|
||||
|
||||
# static-libs USE flag.
|
||||
options+=($(use_enable static-libs static))
|
||||
|
||||
# tcl, test, tools USE flags.
|
||||
if full_archive; then
|
||||
options+=(--enable-tcl)
|
||||
fi
|
||||
|
||||
if [[ "${CHOST}" == *-mint* ]]; then
|
||||
append-cppflags -DSQLITE_OMIT_WAL
|
||||
fi
|
||||
|
||||
if [[ "${ABI}" == "x86" ]]; then
|
||||
if $(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P -dM - < /dev/null 2> /dev/null | grep -q "^#define __SSE__ 1$"; then
|
||||
append-cflags -mfpmath=sse
|
||||
else
|
||||
append-cflags -ffloat-store
|
||||
fi
|
||||
fi
|
||||
|
||||
econf "${options[@]}"
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}"
|
||||
|
||||
if use tools && multilib_is_native_abi; then
|
||||
emake changeset dbdump dbhash rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
if [[ "${EUID}" -eq 0 ]]; then
|
||||
ewarn "Skipping tests due to root permissions"
|
||||
return
|
||||
fi
|
||||
|
||||
local -x SQLITE_HISTORY="${T}/sqlite_history_${ABI}"
|
||||
|
||||
emake HAVE_TCL="$(usex tcl 1 "")" $(use debug && echo fulltest || echo test)
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake DESTDIR="${D}" HAVE_TCL="$(usex tcl 1 "")" TCLLIBDIR="${EPREFIX}/usr/$(get_libdir)/${P}" install
|
||||
|
||||
if use tools && multilib_is_native_abi; then
|
||||
install_tool() {
|
||||
if [[ -f ".libs/${1}" ]]; then
|
||||
newbin ".libs/${1}" "${2}"
|
||||
else
|
||||
newbin "${1}" "${2}"
|
||||
fi
|
||||
}
|
||||
|
||||
install_tool changeset sqlite3-changeset
|
||||
install_tool dbdump sqlite3-db-dump
|
||||
install_tool dbhash sqlite3-db-hash
|
||||
install_tool rbu sqlite3-rbu
|
||||
install_tool scrub sqlite3-scrub
|
||||
install_tool showdb sqlite3-show-db
|
||||
install_tool showjournal sqlite3-show-journal
|
||||
install_tool showshm sqlite3-show-shm
|
||||
install_tool showstat4 sqlite3-show-stat4
|
||||
install_tool showwal sqlite3-show-wal
|
||||
install_tool sqldiff sqlite3-diff
|
||||
install_tool sqlite3_analyzer sqlite3-analyzer
|
||||
install_tool sqlite3_checker sqlite3-checker
|
||||
install_tool sqlite3_expert sqlite3-expert
|
||||
install_tool sqltclsh sqlite3-tclsh
|
||||
|
||||
unset -f install_tool
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
find "${D}" -name "*.la" -delete || die
|
||||
|
||||
doman sqlite3.1
|
||||
|
||||
if use doc; then
|
||||
rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt}
|
||||
(
|
||||
docinto html
|
||||
dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"*
|
||||
)
|
||||
fi
|
||||
}
|
Binary file not shown.
@ -1 +0,0 @@
|
||||
DIST go-resiliency-1.0.0.tar.gz 9504 BLAKE2B e05b171936acce07e086dbce0020aa5ba93ff53c057d589edfb1937ff106e7e4a30b65101406c9fde63269dfd289a09d52d7efdae1450c4703dc83e259e07700 SHA512 3847a9280543796fa3b5569d817e580f55819aa99e04a7737b235cb8ef578db018c51537f292e3f59ed10004cb0a7eabdf9870000fff25af4bf6d2af70510657
|
@ -1,24 +0,0 @@
|
||||
# Copyright 1999-2018 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=5
|
||||
|
||||
EGO_SRC=github.com/eapache/go-resiliency
|
||||
EGO_PN=${EGO_SRC}/...
|
||||
|
||||
if [[ ${PV} = *9999* ]]; then
|
||||
inherit golang-vcs
|
||||
else
|
||||
KEYWORDS="~amd64"
|
||||
SRC_URI="https://${EGO_SRC}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||
inherit golang-vcs-snapshot
|
||||
fi
|
||||
inherit golang-build
|
||||
|
||||
DESCRIPTION="Resiliency patterns for golang"
|
||||
HOMEPAGE="https://github.com/eapache/go-resiliency"
|
||||
LICENSE="MIT"
|
||||
SLOT="0/${PV}"
|
||||
IUSE=""
|
||||
DEPEND=""
|
||||
RDEPEND=""
|
@ -1,24 +0,0 @@
|
||||
# Copyright 1999-2018 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=5
|
||||
|
||||
EGO_SRC=github.com/eapache/go-resiliency
|
||||
EGO_PN=${EGO_SRC}/...
|
||||
|
||||
if [[ ${PV} = *9999* ]]; then
|
||||
inherit golang-vcs
|
||||
else
|
||||
KEYWORDS="~amd64"
|
||||
SRC_URI="https://${EGO_SRC}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
|
||||
inherit golang-vcs-snapshot
|
||||
fi
|
||||
inherit golang-build
|
||||
|
||||
DESCRIPTION="Resiliency patterns for golang"
|
||||
HOMEPAGE="https://github.com/eapache/go-resiliency"
|
||||
LICENSE="MIT"
|
||||
SLOT="0/${PV}"
|
||||
IUSE=""
|
||||
DEPEND=""
|
||||
RDEPEND=""
|
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<email>zmedico@gentoo.org</email>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="github">eapache/go-resiliency</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
Binary file not shown.
@ -1,2 +1,3 @@
|
||||
DIST bglibs-1.041.tar.gz 317199 BLAKE2B 808bfbc713aaf06c5eb828b4bf0f5b789969afaa078b68292f209d7612860d4a5de793ec8768c63908a48f98841d30a0b2bd9a40b45ce94cb0a539ebcb2cbdbb SHA512 63f1cbef024f528d13a23f84f11b014be2ee9a9c8c40f49f8a114a6b4407c1279860a049f3dd67cfa7306a5326bbb93bb57b134af05031ec3c00f5f49784f6bc
|
||||
DIST bglibs-1.106.tar.gz 481564 BLAKE2B 838bd29753b254efc90c8c2c2e4d4920de2e931f823d32393184156f76967ec1995f1e79d2879169dd509cddd298b2389a4ca0109b81245fc617575f3ccf7405 SHA512 c1ae4bb9978b09ffe01231738d1f249c2040a51c2a0bbc4b04389a7085a3885cca6483f1bfe65deca213d991273bb3b7b925ebde8b6e2cd9182d8a57cb9a49d8
|
||||
DIST bglibs-2.04.tar.gz 713673 BLAKE2B 9e1353b3221ef6a8cfb256ec8616d1e208777b20ecade3e6ae17faca6b42222e18aa601a948e6201139378bf6f8131a2b7a053d77b198176776d42a1af611186 SHA512 094268cad7d4bacf65c0dd3d42fde2e6bac34da0fd6193b1c8202c018e752b3ef80a86c38e687467fb3a4e97130126fe74ee4a86063e4b25ee291de573984a6f
|
||||
|
@ -0,0 +1,72 @@
|
||||
# Copyright 1999-2019 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
inherit toolchain-funcs
|
||||
|
||||
DESCRIPTION="Bruce Guenter's Libraries Collection"
|
||||
HOMEPAGE="https://untroubled.org/bglibs/"
|
||||
SRC_URI="https://untroubled.org/bglibs/archive/${P}.tar.gz"
|
||||
|
||||
LICENSE="LGPL-2.1"
|
||||
SLOT="0/2"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86"
|
||||
IUSE="doc"
|
||||
|
||||
RDEPEND=""
|
||||
DEPEND=""
|
||||
BDEPEND="doc? (
|
||||
app-doc/doxygen
|
||||
dev-tex/xcolor
|
||||
dev-texlive/texlive-latex
|
||||
dev-texlive/texlive-latexextra
|
||||
virtual/latex-base
|
||||
)
|
||||
"
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
# disable tests as we want them manually
|
||||
sed -i '/^all:/s|selftests||' "${S}"/Makefile || die
|
||||
sed -i '/selftests/d' "${S}"/TARGETS || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
echo "${ED}/usr/bin" > conf-bin || die
|
||||
echo "${ED}/usr/$(get_libdir)/bglibs" > conf-lib || die
|
||||
echo "${ED}/usr/include" > conf-include || die
|
||||
echo "${ED}/usr/share/man" > conf-man || die
|
||||
echo "$(tc-getCC) ${CFLAGS}" > conf-cc || die
|
||||
echo "$(tc-getCC) ${LDFLAGS}" > conf-ld || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
default
|
||||
if use doc; then
|
||||
emake -C doc/latex pdf
|
||||
fi
|
||||
}
|
||||
|
||||
src_test() {
|
||||
einfo "Running selftests"
|
||||
emake selftests
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
|
||||
# Install .so into LDPATH
|
||||
mv "${ED}"/usr/$(get_libdir)/bglibs/libbg.so.2.0.0 "${ED}"/usr/$(get_libdir)/ || die
|
||||
dosym libbg.so.2.0.0 /usr/$(get_libdir)/libbg.so.2
|
||||
dosym libbg.so.2.0.0 /usr/$(get_libdir)/libbg.so
|
||||
dosym ../libbg.so.2.0.0 /usr/$(get_libdir)/bglibs/libbg.so.2.0.0
|
||||
|
||||
rm "${ED}"/usr/$(get_libdir)/bglibs/libbg.la || die
|
||||
|
||||
dodoc ANNOUNCEMENT NEWS README ChangeLog TODO VERSION
|
||||
dodoc -r doc/html/
|
||||
if use doc; then
|
||||
dodoc doc/latex/refman.pdf
|
||||
fi
|
||||
}
|
@ -1 +0,0 @@
|
||||
DIST blitz-0.10.tar.gz 3777276 BLAKE2B 0817a5189c0967c073a3da8fecef6159d53c058e93222bf03f9b33a51bc9b5a6a1976f94d8a6ca6f33ddcefe222eece011443fb2f29555ee2e156c24749249ba SHA512 04fb0c8735d8ae173e6e907bd04fd739c482b7816c25b7dfe58c8641b90c17321e9a6849ced73a04ca9cc55439070de1a1e395497887317b553b0550fa0a2462
|
@ -1,65 +0,0 @@
|
||||
# Copyright 1999-2013 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=5
|
||||
|
||||
AUTOTOOLS_AUTORECONF=1
|
||||
inherit autotools-utils
|
||||
|
||||
DESCRIPTION="High-performance C++ numeric library"
|
||||
HOMEPAGE="http://blitz.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="|| ( LGPL-3 Artistic-2 BSD )"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~ppc-macos ~x86-linux ~x86-macos"
|
||||
|
||||
IUSE="boost debug doc examples static-libs"
|
||||
|
||||
RDEPEND="boost? ( >=dev-libs/boost-1.40 )"
|
||||
DEPEND="${RDEPEND}
|
||||
doc? ( app-doc/doxygen[dot] )"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${P}-docs.patch"
|
||||
"${FILESDIR}/${P}-gcc47.patch"
|
||||
"${FILESDIR}/${P}-set-default-arg-value.patch"
|
||||
)
|
||||
|
||||
src_configure() {
|
||||
# blas / fortran only needed for benchmarks
|
||||
use doc && doxygen -u doc/doxygen/Doxyfile.in
|
||||
local myeconfargs=(
|
||||
--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
|
||||
--enable-shared
|
||||
--disable-cxx-flags-preset
|
||||
--disable-fortran
|
||||
--without-blas
|
||||
$(use_enable boost serialization)
|
||||
$(use_enable debug)
|
||||
$(use_enable doc doxygen)
|
||||
$(use_enable doc html-docs)
|
||||
$(use_with boost boost "${EPREFIX}/usr")
|
||||
$(use_with boost boost-serialization)
|
||||
)
|
||||
autotools-utils_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
autotools-utils_src_compile LDFLAGS="${LDFLAGS}" lib
|
||||
use doc && autotools-utils_src_compile info html pdf
|
||||
}
|
||||
|
||||
src_test() {
|
||||
pushd ${AUTOTOOLS_BUILD_DIR} > /dev/null
|
||||
emake check-testsuite check-examples
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
src_install () {
|
||||
autotools-utils_src_install $(use doc && echo install-html install-pdf)
|
||||
if use examples; then
|
||||
insinto /usr/share/doc/${PF}/examples
|
||||
doins examples/*.{cpp,f}
|
||||
fi
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=4
|
||||
|
||||
AUTOTOOLS_AUTORECONF=1
|
||||
|
||||
inherit autotools-utils multilib
|
||||
|
||||
DESCRIPTION="High-performance C++ numeric library"
|
||||
HOMEPAGE="http://blitz.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
|
||||
|
||||
SLOT="0"
|
||||
LICENSE="|| ( LGPL-3 Artistic-2 BSD )"
|
||||
KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~ppc-macos ~x86-linux ~x86-macos"
|
||||
IUSE="boost debug doc examples static-libs"
|
||||
|
||||
RDEPEND="boost? ( >=dev-libs/boost-1.40 )"
|
||||
DEPEND="${RDEPEND}
|
||||
doc? ( app-doc/doxygen[dot] )"
|
||||
|
||||
PATCHES=( "${FILESDIR}"/${P}-{docs,gcc47,set-default-arg-value}.patch )
|
||||
|
||||
src_configure() {
|
||||
# blas / fortran only needed for benchmarks
|
||||
use doc && doxygen -u doc/doxygen/Doxyfile.in
|
||||
local myeconfargs=(
|
||||
--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
|
||||
--enable-shared
|
||||
--disable-cxx-flags-preset
|
||||
--disable-fortran
|
||||
--without-blas
|
||||
$(use_enable boost serialization)
|
||||
$(use_enable debug)
|
||||
$(use_enable doc doxygen)
|
||||
$(use_enable doc html-docs)
|
||||
$(use_with boost boost "${EPREFIX}/usr")
|
||||
$(use_with boost boost-serialization)
|
||||
)
|
||||
autotools-utils_src_configure
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
autotools-utils_src_compile lib
|
||||
use doc && autotools-utils_src_compile info html pdf
|
||||
}
|
||||
|
||||
src_test() {
|
||||
pushd ${AUTOTOOLS_BUILD_DIR} > /dev/null
|
||||
emake check-testsuite check-examples
|
||||
popd > /dev/null
|
||||
}
|
||||
|
||||
src_install () {
|
||||
autotools-utils_src_install $(use doc&& echo install-html install-pdf)
|
||||
if use examples; then
|
||||
insinto /usr/share/doc/${PF}/examples
|
||||
doins examples/*.{cpp,f}
|
||||
fi
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
* respect user's docdir,htmldir,pdfdir at configuration time
|
||||
* install recursive for doxygen generated
|
||||
* works for out-of-source directory installation
|
||||
|
||||
bicatali@gentoo.org Aug 2012
|
||||
|
||||
diff -Nur doc.orig/doxygen/Makefile.am doc/doxygen/Makefile.am
|
||||
--- doc.orig/doxygen/Makefile.am 2012-05-11 13:11:13.000000000 -0700
|
||||
+++ doc/doxygen/Makefile.am 2012-08-13 13:44:27.616583722 -0700
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
# Support doxygen documentation ?
|
||||
|
||||
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/doxygen
|
||||
|
||||
DISTCLEANFILES = Doxyfile doxygen-warning
|
||||
|
||||
@@ -84,29 +83,27 @@
|
||||
$(RM) -rf latex; \
|
||||
fi
|
||||
|
||||
-# Install hooks
|
||||
-make-install-dirs:
|
||||
- @if test '!' -d $(DESTDIR)$(docdir) ; \
|
||||
- then mkdir -p $(DESTDIR)$(docdir) ; \
|
||||
- fi
|
||||
|
||||
-install-data-hook: make-install-dirs
|
||||
+install-data-hook:
|
||||
@if test -d html; then \
|
||||
- echo Installing HTML documentation into $(DESTDIR)$(docdir) ; \
|
||||
- $(INSTALL_DATA) html/* $(DESTDIR)$(docdir) ; \
|
||||
+ echo Installing HTML documentation into $(DESTDIR)$(htmldir) ; \
|
||||
+ $(MKDIR_P) $(DESTDIR)$(htmldir) ; \
|
||||
+ cp -r html/* $(DESTDIR)$(htmldir) ; \
|
||||
fi
|
||||
@if test -f $(PACKAGE).pdf; then \
|
||||
- echo Installing PDF manual into $(DESTDIR)$(docdir) ; \
|
||||
- $(INSTALL_DATA) $(PACKAGE).pdf $(DESTDIR)$(docdir) ; \
|
||||
+ echo Installing PDF manual into $(DESTDIR)$(pdfdir) ; \
|
||||
+ $(MKDIR_P) $(DESTDIR)$(pdfdir) ; \
|
||||
+ $(INSTALL_DATA) $(PACKAGE).pdf $(DESTDIR)$(pdfdir) ; \
|
||||
fi
|
||||
@if test -f $(PACKAGE).ps; then \
|
||||
- echo Installing PS manual into $(DESTDIR)$(docdir) ; \
|
||||
- $(INSTALL_DATA) $(PACKAGE).ps $(DESTDIR)$(docdir) ; \
|
||||
+ echo Installing PS manual into $(DESTDIR)$(psdir) ; \
|
||||
+ $(MKDIR_P) $(DESTDIR)$(psdir) ; \
|
||||
+ $(INSTALL_DATA) $(PACKAGE).ps $(DESTDIR)$(psdir) ; \
|
||||
fi
|
||||
|
||||
uninstall-hook:
|
||||
@echo Uninstalling doxygen documentation directory ; \
|
||||
- rm -rf "$(DESTDIR)$(docdir)";
|
||||
+ rm -rf "$(DESTDIR)$(htmldir)" "$(DESTDIR)$(psdir)" "$(DESTDIR)$(pdfdir)" ;
|
||||
|
||||
|
||||
|
||||
diff -Nur doc.orig/Makefile.am doc/Makefile.am
|
||||
--- doc.orig/Makefile.am 2012-05-11 13:11:13.000000000 -0700
|
||||
+++ doc/Makefile.am 2012-08-13 13:54:04.490647132 -0700
|
||||
@@ -4,8 +4,6 @@
|
||||
|
||||
SUBDIRS = examples stencils doxygen
|
||||
|
||||
-# docdir directory to install the doc (pdf ps html)
|
||||
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
|
||||
|
||||
DVIPS=export TEXPICTS=$(srcdir); dvips
|
||||
AM_MAKEINFOFLAGS = --no-split -I$(srcdir)
|
||||
@@ -78,7 +76,7 @@
|
||||
# Install also the images into the directory html
|
||||
install-html-local:
|
||||
test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
|
||||
- $(INSTALL_DATA) *.gif *.jpg $(DESTDIR)$(htmldir)
|
||||
+ $(INSTALL_DATA) $(srcdir)/*.gif $(srcdir)/*.jpg $(DESTDIR)$(htmldir)
|
||||
|
||||
.PHONY: html
|
||||
|
||||
@@ -86,7 +84,7 @@
|
||||
|
||||
# Install also the images into the directory containing the html files
|
||||
install-html-local:
|
||||
- $(INSTALL_DATA) *.gif *.jpg blitz.html
|
||||
+ $(INSTALL_DATA) $(srcdir)/*.gif $(srcdir)/*.jpg $(top_builddir)/doc/blitz.html
|
||||
|
||||
endif
|
||||
|
@ -1,33 +0,0 @@
|
||||
diff -ur blitz-0.10/blitz/bzdebug.h blitz-0.10.new/blitz/bzdebug.h
|
||||
--- blitz-0.10/blitz/bzdebug.h 2012-05-11 22:11:13.000000000 +0200
|
||||
+++ blitz-0.10.new/blitz/bzdebug.h 2012-06-28 15:42:38.060656045 +0200
|
||||
@@ -117,15 +117,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
- #define BZASSERT(X) checkAssert(X, __FILE__, __LINE__)
|
||||
- #define BZPRECONDITION(X) checkAssert(X, __FILE__, __LINE__)
|
||||
- #define BZPOSTCONDITION(X) checkAssert(X, __FILE__, __LINE__)
|
||||
- #define BZSTATECHECK(X,Y) checkAssert(X == Y, __FILE__, __LINE__)
|
||||
+ #define BZASSERT(X) blitz::checkAssert(X, __FILE__, __LINE__)
|
||||
+ #define BZPRECONDITION(X) blitz::checkAssert(X, __FILE__, __LINE__)
|
||||
+ #define BZPOSTCONDITION(X) blitz::checkAssert(X, __FILE__, __LINE__)
|
||||
+ #define BZSTATECHECK(X,Y) blitz::checkAssert(X == Y, __FILE__, __LINE__)
|
||||
#define BZPRECHECK(X,Y) \
|
||||
{ \
|
||||
if ((assertFailMode == false) && (!(X))) \
|
||||
BZ_STD_SCOPE(cerr) << Y << BZ_STD_SCOPE(endl); \
|
||||
- checkAssert(X, __FILE__, __LINE__); \
|
||||
+ blitz::checkAssert(X, __FILE__, __LINE__); \
|
||||
}
|
||||
|
||||
#define BZ_DEBUG_MESSAGE(X) \
|
||||
@@ -138,7 +138,7 @@
|
||||
}
|
||||
|
||||
#define BZ_DEBUG_PARAM(X) X
|
||||
- #define BZ_PRE_FAIL checkAssert(0)
|
||||
+ #define BZ_PRE_FAIL blitz::checkAssert(0)
|
||||
#define BZ_ASM_DEBUG_MARKER
|
||||
|
||||
#elif defined(BZ_DEBUG)
|
@ -1,107 +0,0 @@
|
||||
Set default variable to allow both --enable-x/--disable-x and
|
||||
--with-x/--without-x to work as expected.
|
||||
|
||||
bicatali@gentoo.org 08/2012
|
||||
|
||||
--- configure.ac.orig 2012-08-20 17:46:41.000000000 +0100
|
||||
+++ configure.ac 2012-08-20 17:56:23.000000000 +0100
|
||||
@@ -37,7 +37,7 @@
|
||||
# Option to disable Fortran (benchmarks will not compile)
|
||||
AC_MSG_CHECKING([whether to enable Fortran compilation for benchmark codes])
|
||||
AC_ARG_ENABLE(fortran,
|
||||
- AS_HELP_STRING([--enable-fortran],[Enable Fortran compilation]),,[
|
||||
+ AS_HELP_STRING([--enable-fortran],[Enable Fortran compilation]),enable_fortran=$enableval,[
|
||||
enable_fortran="yes"])
|
||||
AC_MSG_RESULT([$enable_fortran])
|
||||
AM_CONDITIONAL(FORTRAN_ENABLED, [test $enable_fortran = yes])
|
||||
@@ -96,7 +96,7 @@
|
||||
# Option to enable thread-safety (requires thread support or OpenMP)
|
||||
AC_MSG_CHECKING([whether to enable Blitz thread-safety features])
|
||||
AC_ARG_ENABLE(threadsafe,
|
||||
- AS_HELP_STRING([--enable-threadsafe],[Enable thread-safety features]),,[
|
||||
+ AS_HELP_STRING([--enable-threadsafe],[Enable thread-safety features]),enable_threadsafe=$enableval,[
|
||||
enable_threadsafe="no"])
|
||||
AC_MSG_RESULT([$enable_threadsafe])
|
||||
if test "$enable_threadsafe" = yes; then
|
||||
@@ -106,17 +106,22 @@
|
||||
AC_MSG_CHECKING([if we are using Intel Threading Building Blocks])
|
||||
AC_ARG_WITH([tbb],
|
||||
AS_HELP_STRING([--with-tbb],[Use Intel Threading Building Blocks atomic types]),
|
||||
- [
|
||||
+ [if test x$withval != xno; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_CHECK_HEADERS([tbb/atomic.h],,AC_MSG_ERROR([tbb/atomic.h not found]))
|
||||
AC_DEFINE([THREADSAFE_USE_TBB],[1],[Use TBB atomic types])
|
||||
+ else
|
||||
+ AC_MSG_RESULT([no])
|
||||
+ fi
|
||||
],AC_MSG_RESULT([no]))
|
||||
|
||||
AC_MSG_CHECKING([for SIMD instruction width])
|
||||
AC_ARG_ENABLE([simd-width],
|
||||
AS_HELP_STRING([--enable-simd-width=n],[Facilitate compiler vectorization optimizations for SIMD instruction width of n bytes.]),
|
||||
- [ AC_ALIGNMENT_DIRECTIVE
|
||||
- AC_DEFINE([USE_ALIGNMENT_PRAGMAS],[1],[Specifies whether compiler alignment pragmas should be used]) ],
|
||||
+ [if test x$enableval != xno; then
|
||||
+ AC_ALIGNMENT_DIRECTIVE
|
||||
+ AC_DEFINE([USE_ALIGNMENT_PRAGMAS],[1],[Specifies whether compiler alignment pragmas should be used])
|
||||
+ fi ],
|
||||
[enable_simd_width=no]
|
||||
)
|
||||
AC_MSG_RESULT([$enable_simd_width])
|
||||
@@ -130,12 +135,15 @@
|
||||
AC_MSG_CHECKING([whether to pad array lengths to SIMD instruction width])
|
||||
AC_ARG_ENABLE([array-length-padding],
|
||||
AS_HELP_STRING([--enable-array-length-padding],[Sets the default array padding policy to pad all lowest-rank lengths to nearest larger SIMD width. Caution: This means that arrays will in general be non-contiguous.]),
|
||||
- [
|
||||
+ [if test x$enableval != xno; then
|
||||
AC_MSG_RESULT([yes])
|
||||
if test "$enable_simd_width" == [1] ; then
|
||||
AC_MSG_WARN([This option is useless without a SIMD width >1.])
|
||||
fi
|
||||
AC_DEFINE([PAD_ARRAYS],1,[Pad array lengths to SIMD width.])
|
||||
+ else
|
||||
+ AC_MSG_RESULT([no])
|
||||
+ fi
|
||||
],AC_MSG_RESULT([no]))
|
||||
|
||||
AC_MSG_CHECKING([whether to enable Blitz 64-bit dimensions])
|
||||
@@ -147,10 +155,14 @@
|
||||
AC_MSG_CHECKING([whether to enable serialization support])
|
||||
AC_ARG_ENABLE([serialization],
|
||||
AS_HELP_STRING([--enable-serialization],[Enable serialization support using Boost::Serialization]), [
|
||||
+ if test x$enableval != xno; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AX_BOOST_BASE([1.40.0])
|
||||
AX_BOOST_SERIALIZATION
|
||||
AC_CHECK_HEADERS([boost/mpi.hpp])
|
||||
+ else
|
||||
+ AC_MSG_RESULT([no])
|
||||
+ fi
|
||||
], AC_MSG_RESULT([no]))
|
||||
|
||||
# check for PAPI library
|
||||
diff -Nur m4.orig/ac_prog_doxygen.m4 m4/ac_prog_doxygen.m4
|
||||
--- m4.orig/ac_prog_doxygen.m4 2012-08-20 18:03:12.000000000 +0100
|
||||
+++ m4/ac_prog_doxygen.m4 2012-08-20 18:00:46.000000000 +0100
|
||||
@@ -3,16 +3,16 @@
|
||||
AC_DEFUN([AC_PROG_DOXYGEN],
|
||||
[
|
||||
AC_ARG_ENABLE(doxygen,
|
||||
-AS_HELP_STRING([--enable-doxygen],[enable documentation generation with doxygen (no)]),[],[enable_doxygen=no])
|
||||
+AS_HELP_STRING([--enable-doxygen],[enable documentation generation with doxygen (no)]),[enable_doxygen=$enableval],[enable_doxygen=no])
|
||||
|
||||
AC_ARG_ENABLE(dot,
|
||||
-AS_HELP_STRING([--enable-dot],[use 'dot' to generate graphs in doxygen (no)]),[],[enable_dot=no])
|
||||
+AS_HELP_STRING([--enable-dot],[use 'dot' to generate graphs in doxygen (no)]),[enable_dot=$enableval],[enable_dot=no])
|
||||
AC_ARG_ENABLE(html-docs,
|
||||
AS_HELP_STRING([--enable-html-docs],[enable HTML generation with doxygen (no)]),
|
||||
-[],[ enable_html_docs=no])
|
||||
+[enable_html_docs=$enableval],[ enable_html_docs=no])
|
||||
AC_ARG_ENABLE(latex-docs,
|
||||
AS_HELP_STRING([--enable-latex-docs],
|
||||
-[enable LaTeX documentation generation with doxygen (no)]),[],[enable_latex_docs=no])
|
||||
+[enable LaTeX documentation generation with doxygen (no)]),[enable_latex_docs=$enableval],[enable_latex_docs=no])
|
||||
|
||||
if test "x$enable_doxygen" = xno; then
|
||||
enable_doc=no
|
@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<!-- maintainer-needed -->
|
||||
<longdescription lang="en">
|
||||
Blitz++ is a meta-template library for array
|
||||
manipulation in C++ with a speed comparable to Fortran
|
||||
implementations, while preserving an object-oriented
|
||||
interface. These results are being obtained not through better
|
||||
optimizing compilers, preprocessors, or language extensions, but
|
||||
through the use of template techniques. By using templates cleverly,
|
||||
optimizations such as loop fusion, unrolling, tiling, and algorithm
|
||||
specialization can be performed automatically at compile time.
|
||||
</longdescription>
|
||||
<use>
|
||||
<flag name="boost">Enable usage of boost::serialization</flag>
|
||||
</use>
|
||||
<upstream>
|
||||
<remote-id type="sourceforge">blitz</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -1 +0,0 @@
|
||||
DIST handystats-1.11.3.zip 142270 BLAKE2B 1e166bb48c201c38ef856fd5e57ac21bff6c90e172dc3b22fcf60ef377e9a43d7778569dd10236d9e934068d0af9a81956c391c3b4c080b649b41e4573be0c6b SHA512 0ece97c1cea48112514098f9481195ccfa7e5dcd1025c4f0dca5aa8266f783cd9f0c96af17f3942bcf13a7d89e51107a12c44f39ede0fa8d17412a25f89cc331
|
@ -1,21 +0,0 @@
|
||||
# Copyright 1999-2018 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit cmake-utils
|
||||
|
||||
DESCRIPTION="C++ library for collecting user-defined in-process runtime statistics"
|
||||
HOMEPAGE="https://github.com/shindo/handystats"
|
||||
SRC_URI="https://github.com/shindo/${PN}/archive/${PV}.zip -> ${P}.zip"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE=""
|
||||
|
||||
RESTRICT="test"
|
||||
|
||||
DEPEND="
|
||||
dev-cpp/gtest
|
||||
dev-libs/boost"
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<email>patrick@gentoo.org</email>
|
||||
<name>Patrick Lauer</name>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="github">shindo/handystats</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
@ -1,202 +0,0 @@
|
||||
https://github.com/protobuf-c/protobuf-c/pull/309
|
||||
https://github.com/protobuf-c/protobuf-c/pull/328
|
||||
|
||||
--- /protoc-c/c_field.cc
|
||||
+++ /protoc-c/c_field.cc
|
||||
@@ -189,7 +189,7 @@
|
||||
FieldGeneratorMap::FieldGeneratorMap(const Descriptor* descriptor)
|
||||
: descriptor_(descriptor),
|
||||
field_generators_(
|
||||
- new scoped_ptr<FieldGenerator>[descriptor->field_count()]) {
|
||||
+ new std::unique_ptr<FieldGenerator>[descriptor->field_count()]) {
|
||||
// Construct all the FieldGenerators.
|
||||
for (int i = 0; i < descriptor->field_count(); i++) {
|
||||
field_generators_[i].reset(MakeGenerator(descriptor->field(i)));
|
||||
--- /protoc-c/c_field.h
|
||||
+++ /protoc-c/c_field.h
|
||||
@@ -117,7 +117,7 @@
|
||||
|
||||
private:
|
||||
const Descriptor* descriptor_;
|
||||
- scoped_array<scoped_ptr<FieldGenerator> > field_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<FieldGenerator>[] > field_generators_;
|
||||
|
||||
static FieldGenerator* MakeGenerator(const FieldDescriptor* field);
|
||||
|
||||
--- /protoc-c/c_file.cc
|
||||
+++ /protoc-c/c_file.cc
|
||||
@@ -83,13 +83,13 @@
|
||||
const string& dllexport_decl)
|
||||
: file_(file),
|
||||
message_generators_(
|
||||
- new scoped_ptr<MessageGenerator>[file->message_type_count()]),
|
||||
+ new std::unique_ptr<MessageGenerator>[file->message_type_count()]),
|
||||
enum_generators_(
|
||||
- new scoped_ptr<EnumGenerator>[file->enum_type_count()]),
|
||||
+ new std::unique_ptr<EnumGenerator>[file->enum_type_count()]),
|
||||
service_generators_(
|
||||
- new scoped_ptr<ServiceGenerator>[file->service_count()]),
|
||||
+ new std::unique_ptr<ServiceGenerator>[file->service_count()]),
|
||||
extension_generators_(
|
||||
- new scoped_ptr<ExtensionGenerator>[file->extension_count()]) {
|
||||
+ new std::unique_ptr<ExtensionGenerator>[file->extension_count()]) {
|
||||
|
||||
for (int i = 0; i < file->message_type_count(); i++) {
|
||||
message_generators_[i].reset(
|
||||
--- /protoc-c/c_file.h
|
||||
+++ /protoc-c/c_file.h
|
||||
@@ -98,13 +98,13 @@
|
||||
private:
|
||||
const FileDescriptor* file_;
|
||||
|
||||
- scoped_array<scoped_ptr<MessageGenerator> > message_generators_;
|
||||
- scoped_array<scoped_ptr<EnumGenerator> > enum_generators_;
|
||||
- scoped_array<scoped_ptr<ServiceGenerator> > service_generators_;
|
||||
- scoped_array<scoped_ptr<ExtensionGenerator> > extension_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<MessageGenerator>[] > message_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<EnumGenerator>[] > enum_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<ServiceGenerator>[] > service_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<ExtensionGenerator>[] > extension_generators_;
|
||||
|
||||
// E.g. if the package is foo.bar, package_parts_ is {"foo", "bar"}.
|
||||
- vector<string> package_parts_;
|
||||
+ std::vector<string> package_parts_;
|
||||
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileGenerator);
|
||||
};
|
||||
--- /protoc-c/c_generator.cc
|
||||
+++ /protoc-c/c_generator.cc
|
||||
@@ -80,13 +80,13 @@
|
||||
// "foo=bar,baz,qux=corge"
|
||||
// parses to the pairs:
|
||||
// ("foo", "bar"), ("baz", ""), ("qux", "corge")
|
||||
-void ParseOptions(const string& text, vector<pair<string, string> >* output) {
|
||||
- vector<string> parts;
|
||||
+void ParseOptions(const string& text, std::vector<std::pair<string, string> >* output) {
|
||||
+ std::vector<string> parts;
|
||||
SplitStringUsing(text, ",", &parts);
|
||||
|
||||
for (unsigned i = 0; i < parts.size(); i++) {
|
||||
string::size_type equals_pos = parts[i].find_first_of('=');
|
||||
- pair<string, string> value;
|
||||
+ std::pair<string, string> value;
|
||||
if (equals_pos == string::npos) {
|
||||
value.first = parts[i];
|
||||
value.second = "";
|
||||
@@ -105,7 +105,7 @@
|
||||
const string& parameter,
|
||||
OutputDirectory* output_directory,
|
||||
string* error) const {
|
||||
- vector<pair<string, string> > options;
|
||||
+ std::vector<std::pair<string, string> > options;
|
||||
ParseOptions(parameter, &options);
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
@@ -149,7 +149,7 @@
|
||||
|
||||
// Generate header.
|
||||
{
|
||||
- scoped_ptr<io::ZeroCopyOutputStream> output(
|
||||
+ std::unique_ptr<io::ZeroCopyOutputStream> output(
|
||||
output_directory->Open(basename + ".h"));
|
||||
io::Printer printer(output.get(), '$');
|
||||
file_generator.GenerateHeader(&printer);
|
||||
@@ -157,7 +157,7 @@
|
||||
|
||||
// Generate cc file.
|
||||
{
|
||||
- scoped_ptr<io::ZeroCopyOutputStream> output(
|
||||
+ std::unique_ptr<io::ZeroCopyOutputStream> output(
|
||||
output_directory->Open(basename + ".c"));
|
||||
io::Printer printer(output.get(), '$');
|
||||
file_generator.GenerateSource(&printer);
|
||||
--- /protoc-c/c_helpers.cc
|
||||
+++ /protoc-c/c_helpers.cc
|
||||
@@ -177,7 +177,7 @@
|
||||
}
|
||||
|
||||
string FullNameToLower(const string &full_name) {
|
||||
- vector<string> pieces;
|
||||
+ std::vector<string> pieces;
|
||||
SplitStringUsing(full_name, ".", &pieces);
|
||||
string rv = "";
|
||||
for (unsigned i = 0; i < pieces.size(); i++) {
|
||||
@@ -188,7 +188,7 @@
|
||||
return rv;
|
||||
}
|
||||
string FullNameToUpper(const string &full_name) {
|
||||
- vector<string> pieces;
|
||||
+ std::vector<string> pieces;
|
||||
SplitStringUsing(full_name, ".", &pieces);
|
||||
string rv = "";
|
||||
for (unsigned i = 0; i < pieces.size(); i++) {
|
||||
@@ -199,7 +199,7 @@
|
||||
return rv;
|
||||
}
|
||||
string FullNameToC(const string &full_name) {
|
||||
- vector<string> pieces;
|
||||
+ std::vector<string> pieces;
|
||||
SplitStringUsing(full_name, ".", &pieces);
|
||||
string rv = "";
|
||||
for (unsigned i = 0; i < pieces.size(); i++) {
|
||||
@@ -214,7 +214,7 @@
|
||||
{
|
||||
if (!comment.empty())
|
||||
{
|
||||
- vector<string> comment_lines;
|
||||
+ std::vector<string> comment_lines;
|
||||
SplitStringUsing (comment, "\r\n", &comment_lines);
|
||||
printer->Print ("/*\n");
|
||||
for (int i = 0; i < comment_lines.size(); i++)
|
||||
@@ -503,8 +503,8 @@
|
||||
|
||||
void SplitStringUsing(const string& full,
|
||||
const char* delim,
|
||||
- vector<string>* result) {
|
||||
- std::back_insert_iterator< vector<string> > it(*result);
|
||||
+ std::vector<string>* result) {
|
||||
+ std::back_insert_iterator< std::vector<string> > it(*result);
|
||||
SplitStringToIteratorUsing(full, delim, it);
|
||||
}
|
||||
|
||||
@@ -559,7 +559,7 @@
|
||||
}
|
||||
string CEscape(const string& src) {
|
||||
const int dest_length = src.size() * 4 + 1; // Maximum possible expansion
|
||||
- scoped_array<char> dest(new char[dest_length]);
|
||||
+ std::unique_ptr<char[]> dest(new char[dest_length]);
|
||||
const int len = CEscapeInternal(src.data(), src.size(),
|
||||
dest.get(), dest_length, false);
|
||||
GOOGLE_DCHECK_GE(len, 0);
|
||||
--- /protoc-c/c_message.cc
|
||||
+++ /protoc-c/c_message.cc
|
||||
@@ -83,11 +83,11 @@
|
||||
: descriptor_(descriptor),
|
||||
dllexport_decl_(dllexport_decl),
|
||||
field_generators_(descriptor),
|
||||
- nested_generators_(new scoped_ptr<MessageGenerator>[
|
||||
+ nested_generators_(new std::unique_ptr<MessageGenerator>[
|
||||
descriptor->nested_type_count()]),
|
||||
- enum_generators_(new scoped_ptr<EnumGenerator>[
|
||||
+ enum_generators_(new std::unique_ptr<EnumGenerator>[
|
||||
descriptor->enum_type_count()]),
|
||||
- extension_generators_(new scoped_ptr<ExtensionGenerator>[
|
||||
+ extension_generators_(new std::unique_ptr<ExtensionGenerator>[
|
||||
descriptor->extension_count()]) {
|
||||
|
||||
for (int i = 0; i < descriptor->nested_type_count(); i++) {
|
||||
--- /protoc-c/c_message.h
|
||||
+++ /protoc-c/c_message.h
|
||||
@@ -126,9 +126,9 @@
|
||||
const Descriptor* descriptor_;
|
||||
string dllexport_decl_;
|
||||
FieldGeneratorMap field_generators_;
|
||||
- scoped_array<scoped_ptr<MessageGenerator> > nested_generators_;
|
||||
- scoped_array<scoped_ptr<EnumGenerator> > enum_generators_;
|
||||
- scoped_array<scoped_ptr<ExtensionGenerator> > extension_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<MessageGenerator>[] > nested_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<EnumGenerator>[] > enum_generators_;
|
||||
+ std::unique_ptr<std::unique_ptr<ExtensionGenerator>[] > extension_generators_;
|
||||
|
||||
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageGenerator);
|
||||
};
|
@ -1,33 +0,0 @@
|
||||
From 4302266b45303094616685c7997a6e6015ddadba Mon Sep 17 00:00:00 2001
|
||||
From: Robert Edmonds <edmonds@users.noreply.github.com>
|
||||
Date: Mon, 7 Aug 2017 12:31:55 -0400
|
||||
Subject: [PATCH] Restore protobuf-2.x compatibility
|
||||
|
||||
The change in commit 712154b912de824741381c0bb26c2fbed54515a3 ("Bump
|
||||
minimum required header version for proto3 syntax") uses functionality
|
||||
only exposed by protobuf-3.x, breaking the build when compiling against
|
||||
protobuf-2.x.
|
||||
|
||||
Since we still want to support building against protobuf-2.x, this
|
||||
commit makes the proto3 syntax check in the file generator dependent on
|
||||
building against protobuf-3.x.
|
||||
---
|
||||
protoc-c/c_file.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/protoc-c/c_file.cc b/protoc-c/c_file.cc
|
||||
index 9851768..0f1d770 100644
|
||||
--- a/protoc-c/c_file.cc
|
||||
+++ b/protoc-c/c_file.cc
|
||||
@@ -120,9 +120,11 @@ void FileGenerator::GenerateHeader(io::Printer* printer) {
|
||||
string filename_identifier = FilenameIdentifier(file_->name());
|
||||
|
||||
int min_header_version = 1000000;
|
||||
+#if defined(HAVE_PROTO3)
|
||||
if (file_->syntax() == FileDescriptor::SYNTAX_PROTO3) {
|
||||
min_header_version = 1003000;
|
||||
}
|
||||
+#endif
|
||||
|
||||
// Generate top of header.
|
||||
printer->Print(
|
@ -0,0 +1,13 @@
|
||||
https://github.com/protobuf-c/protobuf-c/commit/7456d1621223d425b8a3fd74e435a79c046169fb
|
||||
|
||||
--- /t/generated-code2/cxx-generate-packed-data.cc
|
||||
+++ /t/generated-code2/cxx-generate-packed-data.cc
|
||||
@@ -998,7 +998,7 @@
|
||||
static void dump_test_unknown_fields (void)
|
||||
{
|
||||
EmptyMess mess;
|
||||
- const google::protobuf::Message::Reflection *reflection = mess.GetReflection();
|
||||
+ const google::protobuf::Reflection *reflection = mess.GetReflection();
|
||||
google::protobuf::UnknownFieldSet *fs = reflection->MutableUnknownFields(&mess);
|
||||
|
||||
#if GOOGLE_PROTOBUF_VERSION >= 2001000
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue