sqlite: upgraded package to upstream

Upgraded dev-db/sqlite to version 3.33.0 on amd64

BUG=b/175769043, b/178176512, b/178176492, b/178176435, b/178176401,
b/175768832, b/160396024, b/175768982, b/157635388, b/175768795
TEST=presubmit
RELEASE_NOTE=Fixed CVE-2020-13630, CVE-2020-9327, CVE-2020-13871,
CVE-2020-11656, CVE-2020-11655, CVE-2020-15358,
CVE-2020-13631, CVE-2020-13632, CVE-2020-13434 for dev-db/sqlite

cos-patch:high
Change-Id: I642dfebd2852147eefeae4a992801026766d7aab
Reviewed-on: https://cos-review.googlesource.com/c/third_party/overlays/portage-stable/+/13550
Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
Main-Branch-Verified: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest
index a5126e7..2945dba 100644
--- a/dev-db/sqlite/Manifest
+++ b/dev-db/sqlite/Manifest
@@ -1,3 +1,2 @@
-DIST sqlite-autoconf-3310100.tar.gz 2887243 BLAKE2B ef5d40b6e6c59a51ae95368eb9f6a938188813f89d5328ea1c1180ef35f124c14b3e83b0832ae5c2fa24cc2df352f1b0ea5f20b64d0762d50a700d9895f9a12e SHA512 d85250ba5f78f0c918880f663741709aba662192f04888b2324a0df17affdf5b8540e8428c6c7315119806e7adad758ea281c9b403c0ad94ac6a9bd1b93fd617
-DIST sqlite-doc-3310100.zip 9600405 BLAKE2B 324fb7a0a38bc56476e41504c14996e9d5d83ac659403991515413d49f5ee3aad064ccece25f52b6041ef26bf23f320a9be1b6b02c5fbe96c36372107f54fc2e SHA512 5572e2c2dac30c014ef9cd60a620b7a7bb610f91a47e2890c0641540d39b9d5ce0e914ee697583130317633918b7827e2612a7cbc024f5bd6aa22ad28a78b56b
-DIST sqlite-src-3310100.zip 12510166 BLAKE2B a856695e8552b8b4dcb28452fdbd48305fdb9072f9d6587f4b1f4445daf386e920eb936dcb50fdfe41a49f84b26a7c5fedcffea5acf3ba3fa935c36695d4b8ee SHA512 af92a00877bcd90372d6f83a27fea12b4fe8d1155b223a6bccbccc31bb8e3d2269cd9e68f329bc55f70d1068ccbf220ff5abccea6f593fd7a3a4bdd732d1cdbe
+DIST sqlite-doc-3330000.zip 9834159 BLAKE2B f67155a8ce8e46c2fbc0a4e35722d1fcad86e905a15230adc70732cee267b6b2002c7499883b938129aaa908b99634e4214360e9d1dbdae333b09060de24530e SHA512 14a3cccb4ff6af57738990eeadd37a1b827f89c9c1b16201c62ca5bb9301d39223d48677b9c269ce332210e5c9ae3f42aa0f9de7d79b38acb9809c732d038368
+DIST sqlite-src-3330000.zip 12591089 BLAKE2B 14888bca229683e97c4666f8efb535be5bd3e322de0089f0175ba15e038016be3a3cc00b5bfa8c111538116914cf6d8439839ca5d1e20339b184e547ddf260a4 SHA512 3260e3e03ee2f6a4ff2bc4ea4bada5a1497afeca33878c155a8005824970c6c1eb8a2db58eb3023cab084af475fadb81d1c3c9892ae92c07f884881e6602e173
diff --git a/dev-db/sqlite/files/sqlite-3.25.0-nonfull_archive-build.patch b/dev-db/sqlite/files/sqlite-3.25.0-nonfull_archive-build.patch
deleted file mode 100644
index be0a7e3..0000000
--- a/dev-db/sqlite/files/sqlite-3.25.0-nonfull_archive-build.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Fix building with dlopen() not available.
-
---- /configure.ac
-+++ /configure.ac
-@@ -102,6 +102,9 @@
-   [], [enable_dynamic_extensions=yes])
- if test x"$enable_dynamic_extensions" != "xno"; then
-   AC_SEARCH_LIBS(dlopen, dl)
-+  if test "${ac_cv_search_dlopen}" = "no"; then
-+    BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_OMIT_LOAD_EXTENSION=1"
-+  fi
- else
-   BUILD_CFLAGS="$BUILD_CFLAGS -DSQLITE_OMIT_LOAD_EXTENSION=1"
- fi
diff --git a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-build.patch b/dev-db/sqlite/files/sqlite-3.29.0-full_archive-build.patch
deleted file mode 100644
index 290d286..0000000
--- a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-build.patch
+++ /dev/null
@@ -1,471 +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
-@@ -311,6 +311,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 \
-@@ -363,8 +366,12 @@
-   $(TOP)/ext/rbu/sqlite3rbu.h \
-   $(TOP)/ext/rbu/sqlite3rbu.c
- SRC += \
-+  $(TOP)/ext/misc/appendvfs.c \
-+  $(TOP)/ext/misc/dbdata.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
- #
-@@ -435,7 +442,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 \
-@@ -461,7 +467,6 @@
-   $(TOP)/ext/misc/totype.c \
-   $(TOP)/ext/misc/unionvtab.c \
-   $(TOP)/ext/misc/wholenumber.c \
--  $(TOP)/ext/misc/zipfile.c \
-   $(TOP)/ext/userauth/userauth.c
- 
- # Source code to the library files needed by the test fixture
-@@ -640,25 +645,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
-@@ -768,7 +773,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
- #
-@@ -1065,14 +1070,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)/ext/misc/memtrace.c \
-         $(TOP)/src/test_windirent.c
- 
-@@ -1240,15 +1240,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.
-@@ -1279,24 +1279,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 \
-@@ -1307,36 +1306,36 @@
- sqlite3_checker.c:	$(CHECKER_DEPS)
- 	$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
- 
--sqlite3_checker$(TEXE):	sqlite3_checker.c
--	$(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
-+sqlite3_checker$(TEXE):	sqlite3_checker.c libsqlite3.la
-+	$(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
- 
--dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
-+dbdump$(TEXE):	$(TOP)/ext/misc/dbdump.c libsqlite3.la
- 	$(LTLINK) -DDBDUMP_STANDALONE -o $@ \
--           $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
-+           $(TOP)/ext/misc/dbdump.c libsqlite3.la
- 
--dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
--	$(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
-+dbtotxt$(TEXE):	$(TOP)/tool/dbtotxt.c
-+	$(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
- 
--showdb$(TEXE):	$(TOP)/tool/showdb.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
-+showdb$(TEXE):	$(TOP)/tool/showdb.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
- 
--showstat4$(TEXE):	$(TOP)/tool/showstat4.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
-+showstat4$(TEXE):	$(TOP)/tool/showstat4.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
- 
--showjournal$(TEXE):	$(TOP)/tool/showjournal.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
-+showjournal$(TEXE):	$(TOP)/tool/showjournal.c
-+	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c
- 
--showwal$(TEXE):	$(TOP)/tool/showwal.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
-+showwal$(TEXE):	$(TOP)/tool/showwal.c
-+	$(LTLINK) -o $@ $(TOP)/tool/showwal.c
- 
- showshm$(TEXE):	$(TOP)/tool/showshm.c
- 	$(LTLINK) -o $@ $(TOP)/tool/showshm.c
- 
--index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
--	$(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
-+index_usage$(TEXE):	$(TOP)/tool/index_usage.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
- 
--changeset$(TEXE):	$(TOP)/ext/session/changeset.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
-+changeset$(TEXE):	$(TOP)/ext/session/changeset.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
- 
- changesetfuzz$(TEXE):	$(TOP)/ext/session/changesetfuzz.c sqlite3.lo
- 	$(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
-@@ -1361,11 +1360,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>
-@@ -2176,3 +2178,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>
-@@ -939,18 +944,7 @@
- INCLUDE ../ext/misc/shathree.c
- INCLUDE ../ext/misc/fileio.c
- INCLUDE ../ext/misc/completion.c
--INCLUDE ../ext/misc/appendvfs.c
- INCLUDE ../ext/misc/memtrace.c
--#ifdef SQLITE_HAVE_ZLIB
--INCLUDE ../ext/misc/zipfile.c
--INCLUDE ../ext/misc/sqlar.c
--#endif
--INCLUDE ../ext/expert/sqlite3expert.h
--INCLUDE ../ext/expert/sqlite3expert.c
--
--#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
--INCLUDE ../ext/misc/dbdata.c
--#endif
- 
- #if defined(SQLITE_ENABLE_SESSION)
- /*
-@@ -4135,10 +4129,13 @@
-     sqlite3_shathree_init(p->db, 0, 0);
-     sqlite3_completion_init(p->db, 0, 0);
- #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
-+    extern int sqlite3_dbdata_init(sqlite3 *, char **, const sqlite3_api_routines *);
-     sqlite3_dbdata_init(p->db, 0, 0);
- #endif
- #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,
-@@ -6135,6 +6132,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);
-@@ -10187,6 +10185,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
---- /test/sessionfuzz.c
-+++ /test/sessionfuzz.c
-@@ -700,42 +700,6 @@
- #include <assert.h>
- #include "zlib.h"
- 
--/*
--** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
--**
--** Parameter SZ is interpreted as an integer. If it is less than or
--** equal to zero, then this function returns a copy of X. Or, if
--** SZ is equal to the size of X when interpreted as a blob, also
--** return a copy of X. Otherwise, decompress blob X using zlib
--** utility function uncompress() and return the results (another
--** blob).
--*/
--static void sqlarUncompressFunc(
--  sqlite3_context *context,
--  int argc,
--  sqlite3_value **argv
--){
--  uLong nData;
--  uLongf sz;
--
--  assert( argc==2 );
--  sz = sqlite3_value_int(argv[1]);
--
--  if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
--    sqlite3_result_value(context, argv[0]);
--  }else{
--    const Bytef *pData= sqlite3_value_blob(argv[0]);
--    Bytef *pOut = sqlite3_malloc(sz);
--    if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
--      sqlite3_result_error(context, "error in uncompress()", -1);
--    }else{
--      sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
--    }
--    sqlite3_free(pOut);
--  }
--}
--
--
- /* Run a chunk of SQL.  If any errors happen, print an error message
- ** and exit.
- */
---- /tool/mksqlite3c.tcl
-+++ /tool/mksqlite3c.tcl
-@@ -117,6 +117,7 @@
-    rtree.h
-    sqlite3session.h
-    sqlite3.h
-+   sqlite3expert.h
-    sqlite3ext.h
-    sqlite3rbu.h
-    sqliteicu.h
-@@ -403,6 +404,11 @@
-    sqlite3session.c
-    fts5.c
-    stmt.c
-+   appendvfs.c
-+   dbdata.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
- 
diff --git a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-tests.patch b/dev-db/sqlite/files/sqlite-3.29.0-full_archive-tests.patch
deleted file mode 100644
index 3f3779d..0000000
--- a/dev-db/sqlite/files/sqlite-3.29.0-full_archive-tests.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-https://sqlite.org/src/info/408144a1832569ce
-
---- /test/vtab1.test
-+++ /test/vtab1.test
-@@ -1303,25 +1303,27 @@
-   CREATE VIRTUAL TABLE e6 USING echo(t6);
- }
- 
--foreach {tn sql res filter} {
--  1.1 "SELECT a FROM e6 WHERE b>'8James'" {4 2 6 1 5}
--    {xFilter {SELECT rowid, a, b FROM 't6' WHERE b > ?} 8James}
--
--  1.2 "SELECT a FROM e6 WHERE b>='8' AND b<'9'" {3 4}
--    {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ?} 8 9}
--
--  1.3 "SELECT a FROM e6 WHERE b LIKE '8J%'" {3 4}
--    {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8J%}
--
--  1.4 "SELECT a FROM e6 WHERE b LIKE '8j%'" {3 4}
--    {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8j%}
--
--  1.5 "SELECT a FROM e6 WHERE b LIKE '8%'" {3 4}
--    {xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8%}
--} {
--  set echo_module {}
--  do_execsql_test 18.$tn.1 $sql $res
--  do_test         18.$tn.2 { lrange $::echo_module 2 end } $filter
-+ifcapable !icu {
-+  foreach {tn sql res filter} {
-+    1.1 "SELECT a FROM e6 WHERE b>'8James'" {4 2 6 1 5}
-+      {xFilter {SELECT rowid, a, b FROM 't6' WHERE b > ?} 8James}
-+  
-+    1.2 "SELECT a FROM e6 WHERE b>='8' AND b<'9'" {3 4}
-+      {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ?} 8 9}
-+  
-+    1.3 "SELECT a FROM e6 WHERE b LIKE '8J%'" {3 4}
-+      {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8J%}
-+  
-+    1.4 "SELECT a FROM e6 WHERE b LIKE '8j%'" {3 4}
-+      {xFilter {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?} 8J 8k 8j%}
-+  
-+    1.5 "SELECT a FROM e6 WHERE b LIKE '8%'" {3 4}
-+      {xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8%}
-+  } {
-+    set echo_module {}
-+    do_execsql_test 18.$tn.1 $sql $res
-+    do_test         18.$tn.2 { lrange $::echo_module 2 end } $filter
-+  }
- }
- 
- do_execsql_test 18.2.0 {  PRAGMA case_sensitive_like = ON }
---- /test/vtabH.test
-+++ /test/vtabH.test
-@@ -30,36 +30,38 @@
-   CREATE VIRTUAL TABLE e6 USING echo(t6);
- }
- 
--foreach {tn sql expect} {
--  1 "SELECT * FROM e6 WHERE b LIKE '8abc'" {
--    xBestIndex 
--       {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
--    xFilter
--       {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
--       8ABC 8abd 8abc
-+ifcapable !icu {
-+  foreach {tn sql expect} {
-+    1 "SELECT * FROM e6 WHERE b LIKE '8abc'" {
-+      xBestIndex 
-+         {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
-+      xFilter
-+         {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b like ?}
-+         8ABC 8abd 8abc
-+    }
-+  
-+    2 "SELECT * FROM e6 WHERE b GLOB '8abc'" {
-+       xBestIndex
-+         {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
-+       xFilter
-+         {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
-+         8abc 8abd 8abc
-+    }
-+    3 "SELECT * FROM e6 WHERE b LIKE '8e/'" {
-+      xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b like ?}
-+      xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8e/
-+    }
-+    4 "SELECT * FROM e6 WHERE b GLOB '8e/'" {
-+      xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b glob ?}
-+      xFilter {SELECT rowid, a, b FROM 't6' WHERE b glob ?} 8e/
-+    }
-+  } {
-+    do_test 1.$tn {
-+      set echo_module {}
-+      execsql $sql
-+      set ::echo_module
-+    } [list {*}$expect]
-   }
--
--  2 "SELECT * FROM e6 WHERE b GLOB '8abc'" {
--     xBestIndex
--       {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
--     xFilter
--       {SELECT rowid, a, b FROM 't6' WHERE b >= ? AND b < ? AND b glob ?}
--       8abc 8abd 8abc
--  }
--  3 "SELECT * FROM e6 WHERE b LIKE '8e/'" {
--    xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b like ?}
--    xFilter {SELECT rowid, a, b FROM 't6' WHERE b like ?} 8e/
--  }
--  4 "SELECT * FROM e6 WHERE b GLOB '8e/'" {
--    xBestIndex {SELECT rowid, a, b FROM 't6' WHERE b glob ?}
--    xFilter {SELECT rowid, a, b FROM 't6' WHERE b glob ?} 8e/
--  }
--} {
--  do_test 1.$tn {
--    set echo_module {}
--    execsql $sql
--    set ::echo_module
--  } [list {*}$expect]
- }
- 
- 
diff --git a/dev-db/sqlite/files/sqlite-3.31.0-full_archive-build.patch b/dev-db/sqlite/files/sqlite-3.31.0-full_archive-build.patch
deleted file mode 100644
index 9ff44c0..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.0-full_archive-build.patch
+++ /dev/null
@@ -1,466 +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
-@@ -311,6 +311,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 \
-@@ -363,8 +366,12 @@
-   $(TOP)/ext/rbu/sqlite3rbu.h \
-   $(TOP)/ext/rbu/sqlite3rbu.c
- SRC += \
-+  $(TOP)/ext/misc/appendvfs.c \
-+  $(TOP)/ext/misc/dbdata.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
- #
-@@ -435,7 +442,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 \
-@@ -461,7 +467,6 @@
-   $(TOP)/ext/misc/totype.c \
-   $(TOP)/ext/misc/unionvtab.c \
-   $(TOP)/ext/misc/wholenumber.c \
--  $(TOP)/ext/misc/zipfile.c \
-   $(TOP)/ext/userauth/userauth.c
- 
- # Source code to the library files needed by the test fixture
-@@ -639,25 +644,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
-@@ -767,7 +772,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
- #
-@@ -1064,14 +1069,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)/ext/misc/memtrace.c \
-         $(TOP)/src/test_windirent.c
- 
-@@ -1239,11 +1239,11 @@
- 
- # Fuzz testing
- fuzztest:	fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
--	./fuzzcheck$(TEXE) $(FUZZDATA)
-+	./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
- 	./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
- 
- valgrindfuzz:	fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
--	valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA)
-+	valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
- 	valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
- 
- # The veryquick.test TCL tests.
-@@ -1274,24 +1274,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 \
-@@ -1302,36 +1301,36 @@
- sqlite3_checker.c:	$(CHECKER_DEPS)
- 	$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
- 
--sqlite3_checker$(TEXE):	sqlite3_checker.c
--	$(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
-+sqlite3_checker$(TEXE):	sqlite3_checker.c libsqlite3.la
-+	$(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
- 
--dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
-+dbdump$(TEXE):	$(TOP)/ext/misc/dbdump.c libsqlite3.la
- 	$(LTLINK) -DDBDUMP_STANDALONE -o $@ \
--           $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
-+           $(TOP)/ext/misc/dbdump.c libsqlite3.la
- 
--dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
--	$(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
-+dbtotxt$(TEXE):	$(TOP)/tool/dbtotxt.c
-+	$(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
- 
--showdb$(TEXE):	$(TOP)/tool/showdb.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
-+showdb$(TEXE):	$(TOP)/tool/showdb.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
- 
--showstat4$(TEXE):	$(TOP)/tool/showstat4.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
-+showstat4$(TEXE):	$(TOP)/tool/showstat4.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
- 
--showjournal$(TEXE):	$(TOP)/tool/showjournal.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
-+showjournal$(TEXE):	$(TOP)/tool/showjournal.c
-+	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c
- 
--showwal$(TEXE):	$(TOP)/tool/showwal.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
-+showwal$(TEXE):	$(TOP)/tool/showwal.c
-+	$(LTLINK) -o $@ $(TOP)/tool/showwal.c
- 
- showshm$(TEXE):	$(TOP)/tool/showshm.c
- 	$(LTLINK) -o $@ $(TOP)/tool/showshm.c
- 
--index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
--	$(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
-+index_usage$(TEXE):	$(TOP)/tool/index_usage.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
- 
--changeset$(TEXE):	$(TOP)/ext/session/changeset.c sqlite3.lo
--	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
-+changeset$(TEXE):	$(TOP)/ext/session/changeset.c libsqlite3.la
-+	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
- 
- changesetfuzz$(TEXE):	$(TOP)/ext/session/changesetfuzz.c sqlite3.lo
- 	$(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
-@@ -1356,11 +1355,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>
-@@ -121,3 +123,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>
-@@ -2186,3 +2188,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>
-@@ -939,18 +944,7 @@
- INCLUDE ../ext/misc/shathree.c
- INCLUDE ../ext/misc/fileio.c
- INCLUDE ../ext/misc/completion.c
--INCLUDE ../ext/misc/appendvfs.c
- INCLUDE ../ext/misc/memtrace.c
--#ifdef SQLITE_HAVE_ZLIB
--INCLUDE ../ext/misc/zipfile.c
--INCLUDE ../ext/misc/sqlar.c
--#endif
--INCLUDE ../ext/expert/sqlite3expert.h
--INCLUDE ../ext/expert/sqlite3expert.c
--
--#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
--INCLUDE ../ext/misc/dbdata.c
--#endif
- 
- #if defined(SQLITE_ENABLE_SESSION)
- /*
-@@ -4173,10 +4167,13 @@
-     sqlite3_shathree_init(p->db, 0, 0);
-     sqlite3_completion_init(p->db, 0, 0);
- #if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
-+    extern int sqlite3_dbdata_init(sqlite3 *, char **, const sqlite3_api_routines *);
-     sqlite3_dbdata_init(p->db, 0, 0);
- #endif
- #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,
-@@ -6176,6 +6173,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);
-@@ -10354,6 +10352,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
---- /test/sessionfuzz.c
-+++ /test/sessionfuzz.c
-@@ -700,42 +700,6 @@
- #include <assert.h>
- #include "zlib.h"
- 
--/*
--** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
--**
--** Parameter SZ is interpreted as an integer. If it is less than or
--** equal to zero, then this function returns a copy of X. Or, if
--** SZ is equal to the size of X when interpreted as a blob, also
--** return a copy of X. Otherwise, decompress blob X using zlib
--** utility function uncompress() and return the results (another
--** blob).
--*/
--static void sqlarUncompressFunc(
--  sqlite3_context *context,
--  int argc,
--  sqlite3_value **argv
--){
--  uLong nData;
--  uLongf sz;
--
--  assert( argc==2 );
--  sz = sqlite3_value_int(argv[1]);
--
--  if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
--    sqlite3_result_value(context, argv[0]);
--  }else{
--    const Bytef *pData= sqlite3_value_blob(argv[0]);
--    Bytef *pOut = sqlite3_malloc(sz);
--    if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
--      sqlite3_result_error(context, "error in uncompress()", -1);
--    }else{
--      sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
--    }
--    sqlite3_free(pOut);
--  }
--}
--
--
- /* Run a chunk of SQL.  If any errors happen, print an error message
- ** and exit.
- */
---- /tool/mksqlite3c.tcl
-+++ /tool/mksqlite3c.tcl
-@@ -117,6 +117,7 @@
-    rtree.h
-    sqlite3session.h
-    sqlite3.h
-+   sqlite3expert.h
-    sqlite3ext.h
-    sqlite3rbu.h
-    sqliteicu.h
-@@ -403,6 +404,11 @@
-    sqlite3session.c
-    fts5.c
-    stmt.c
-+   appendvfs.c
-+   dbdata.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
- 
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-architectures.patch b/dev-db/sqlite/files/sqlite-3.31.1-full_archive-architectures.patch
deleted file mode 100644
index a0cf751..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-architectures.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-https://sqlite.org/cgi/src/info/04885763c4cd00cb
-https://sqlite.org/cgi/src/info/b20503aaf5b6595a
-
---- /ext/fts5/test/fts5matchinfo.test
-+++ /ext/fts5/test/fts5matchinfo.test
-@@ -500,14 +500,18 @@
-   INSERT INTO t1 VALUES('c', 'd');
- }
- 
-+if {$tcl_platform(byteOrder)=="littleEndian"} {
-+  set res {X'02000000'}
-+} else {
-+  set res {X'00000002'}
-+}
- do_execsql_test 15.1 {
-   SELECT quote(matchinfo(t1, 'n')) FROM t1 LIMIT 1;
--} {X'02000000'}
--
-+} $res
- do_execsql_test 15.2 {
-   DELETE FROM t1_content WHERE rowid=1;
-   SELECT quote(matchinfo(t1, 'n')) FROM t1 LIMIT 1;
--} {X'02000000'}
-+} $res
- 
- fts5_aux_test_functions db
- do_execsql_test 15.3 {
-@@ -517,4 +521,3 @@
- }
- 
- finish_test
--
---- /src/insert.c
-+++ /src/insert.c
-@@ -2170,12 +2170,14 @@
-             x = *sqlite3VdbeGetOp(v, addrConflictCk);
-             if( x.opcode!=OP_IdxRowid ){
-               int p2;      /* New P2 value for copied conflict check opcode */
-+              const char *zP4;
-               if( sqlite3OpcodeProperty[x.opcode]&OPFLG_JUMP ){
-                 p2 = lblRecheckOk;
-               }else{
-                 p2 = x.p2;
-               }
--              sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, x.p4.z, x.p4type);
-+              zP4 = x.p4type==P4_INT32 ? SQLITE_INT_TO_PTR(x.p4.i) : x.p4.z;
-+              sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, zP4, x.p4type);
-               sqlite3VdbeChangeP5(v, x.p5);
-               VdbeCoverageIf(v, p2!=x.p2);
-             }
---- /test/fts4aa.test
-+++ /test/fts4aa.test
-@@ -229,13 +229,18 @@
- # 2019-11-18 https://bugs.chromium.org/p/chromium/issues/detail?id=1025467
- db close
- sqlite3 db :memory:
-+if {$tcl_platform(byteOrder)=="littleEndian"} {
-+  set res {X'0200000000000000000000000E0000000E00000001000000010000000100000001000000'}
-+} else {
-+  set res {X'0000000200000000000000000000000E0000000E00000001000000010000000100000001'}
-+}
- do_execsql_test fts4aa-6.10 {
-   CREATE VIRTUAL TABLE f USING fts4();
-   INSERT INTO f_segdir VALUES (77,91,0,0,'255 77',x'0001308000004d5c4ddddddd4d4d7b4d4d4d614d8019ff4d05000001204d4d2e4d6e4d4d4d4b4d6c4d004d4d4d4d4d4d3d000000004d5d4d4d645d4d004d4d4d4d4d4d4d4d4d454d6910004d05ffff054d646c4d004d5d4d4d4d4d3d000000004d4d4d4d4d4d4d4d4d4d4d69624d4d4d04004d4d4d4d4d604d4ce1404d554d45');
-   INSERT INTO f_segdir VALUES (77,108,0,0,'255 77',x'0001310000fa64004d4d4d3c5d4d654d4d4d614d8000ff4d05000001204d4d2e4d6e4d4d4dff4d4d4d4d4d4d00104d4d4d4d000000004d4d4d0400311d4d4d4d4d4d4d4d4d4d684d6910004d05ffff054d4d6c4d004d4d4d4d4d4d3d000000004d4d4d4d644d4d4d4d4d4d69624d4d4d03ed4d4d4d4d4d604d4ce1404d550080');
-   INSERT INTO f_stat VALUES (0,x'80808080100000000064004d4d4d3c4d4d654d4d4d614d8000ff4df6ff1a00204d4d2e4d6e4d4d4d104d4d4d4d4d4d00104d4d4d4d4d4d69574d4d4d000031044d4d4d3e4d4d4c4d05004d6910');
-   SELECT quote(matchinfo(f,'pnax')) from f where f match '0 1';
--} {X'0200000000000000000000000E0000000E00000001000000010000000100000001000000'}
-+} $res
- 
- # 2019-11-18 Detect infinite loop in fts3SelectLeaf()
- db close
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-security_fixes.patch b/dev-db/sqlite/files/sqlite-3.31.1-full_archive-security_fixes.patch
deleted file mode 100644
index c0bb714..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-full_archive-security_fixes.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-https://sqlite.org/cgi/src/info/9d0d4ab95dc0c56e
-https://sqlite.org/cgi/src/info/abc473fb8fb99900
-https://sqlite.org/cgi/src/info/5aeb5a2d295e10d5
-https://sqlite.org/cgi/src/info/a67cf5b7d37d5b14
-https://sqlite.org/cgi/src/info/14d14eb537075c6a
-https://sqlite.org/cgi/src/info/c431b3fd8fd0f6a6
-
---- /src/expr.c
-+++ /src/expr.c
-@@ -5463,19 +5463,25 @@
-     case TK_LT:
-     case TK_LE:
-     case TK_GT:
--    case TK_GE:
-+    case TK_GE: {
-+      Expr *pLeft = pExpr->pLeft;
-+      Expr *pRight = pExpr->pRight;
-       testcase( pExpr->op==TK_EQ );
-       testcase( pExpr->op==TK_NE );
-       testcase( pExpr->op==TK_LT );
-       testcase( pExpr->op==TK_LE );
-       testcase( pExpr->op==TK_GT );
-       testcase( pExpr->op==TK_GE );
--      if( (pExpr->pLeft->op==TK_COLUMN && IsVirtual(pExpr->pLeft->y.pTab))
--       || (pExpr->pRight->op==TK_COLUMN && IsVirtual(pExpr->pRight->y.pTab))
-+      /* The y.pTab=0 assignment in wherecode.c always happens after the
-+      ** impliesNotNullRow() test */
-+      if( (pLeft->op==TK_COLUMN && ALWAYS(pLeft->y.pTab!=0)
-+                               && IsVirtual(pLeft->y.pTab))
-+       || (pRight->op==TK_COLUMN && ALWAYS(pRight->y.pTab!=0)
-+                               && IsVirtual(pRight->y.pTab))
-       ){
--       return WRC_Prune;
-+        return WRC_Prune;
-       }
--
-+    }
-     default:
-       return WRC_Continue;
-   }
---- /src/resolve.c
-+++ /src/resolve.c
-@@ -1051,7 +1051,7 @@
-       assert( !ExprHasProperty(pExpr, EP_Reduced) );
-       /* Handle special cases of "x IS TRUE", "x IS FALSE", "x IS NOT TRUE",
-       ** and "x IS NOT FALSE". */
--      if( pRight->op==TK_ID ){
-+      if( pRight && pRight->op==TK_ID ){
-         int rc = resolveExprStep(pWalker, pRight);
-         if( rc==WRC_Abort ) return WRC_Abort;
-         if( pRight->op==TK_TRUEFALSE ){
---- /src/select.c
-+++ /src/select.c
-@@ -2806,6 +2806,7 @@
-         /* Generate code to take the intersection of the two temporary
-         ** tables.
-         */
-+        if( rc ) break;
-         assert( p->pEList );
-         iBreak = sqlite3VdbeMakeLabel(pParse);
-         iCont = sqlite3VdbeMakeLabel(pParse);
-@@ -5148,7 +5149,7 @@
-             pNew = sqlite3ExprListAppend(pParse, pNew, pExpr);
-             sqlite3TokenInit(&sColname, zColname);
-             sqlite3ExprListSetName(pParse, pNew, &sColname, 0);
--            if( pNew && (p->selFlags & SF_NestedFrom)!=0 ){
-+            if( pNew && (p->selFlags & SF_NestedFrom)!=0 && !IN_RENAME_OBJECT ){
-               struct ExprList_item *pX = &pNew->a[pNew->nExpr-1];
-               sqlite3DbFree(db, pX->zEName);
-               if( pSub ){
---- /src/sqliteInt.h
-+++ /src/sqliteInt.h
-@@ -2153,8 +2153,11 @@
- */
- #ifndef SQLITE_OMIT_VIRTUALTABLE
- #  define IsVirtual(X)      ((X)->nModuleArg)
-+#  define ExprIsVtab(X)  \
-+              ((X)->op==TK_COLUMN && (X)->y.pTab!=0 && (X)->y.pTab->nModuleArg)
- #else
- #  define IsVirtual(X)      0
-+#  define ExprIsVtab(X)     0
- #endif
- 
- /*
---- /src/whereexpr.c
-+++ /src/whereexpr.c
-@@ -377,7 +377,8 @@
-     **       MATCH(expression,vtab_column)
-     */
-     pCol = pList->a[1].pExpr;
--    if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+    testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+    if( ExprIsVtab(pCol) ){
-       for(i=0; i<ArraySize(aOp); i++){
-         if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
-           *peOp2 = aOp[i].eOp2;
-@@ -399,7 +400,8 @@
-     ** with function names in an arbitrary case.
-     */
-     pCol = pList->a[0].pExpr;
--    if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+    testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+    if( ExprIsVtab(pCol) ){
-       sqlite3_vtab *pVtab;
-       sqlite3_module *pMod;
-       void (*xNotUsed)(sqlite3_context*,int,sqlite3_value**);
-@@ -422,10 +424,12 @@
-     int res = 0;
-     Expr *pLeft = pExpr->pLeft;
-     Expr *pRight = pExpr->pRight;
--    if( pLeft->op==TK_COLUMN && IsVirtual(pLeft->y.pTab) ){
-+    testcase( pLeft->op==TK_COLUMN && pLeft->y.pTab==0 );
-+    if( ExprIsVtab(pLeft) ){
-       res++;
-     }
--    if( pRight && pRight->op==TK_COLUMN && IsVirtual(pRight->y.pTab) ){
-+    testcase( pRight && pRight->op==TK_COLUMN && pRight->y.pTab==0 );
-+    if( pRight && ExprIsVtab(pRight) ){
-       res++;
-       SWAP(Expr*, pLeft, pRight);
-     }
---- /test/altertab.test
-+++ /test/altertab.test
-@@ -613,4 +613,21 @@
-   SELECT sql FROM sqlite_master;
- } {{CREATE TABLE t0 (c1 INTEGER, PRIMARY KEY(c1))}}
- 
-+# 2020-02-23 ticket f50af3e8a565776b
-+reset_db
-+do_execsql_test 19.100 {
-+  CREATE TABLE t1(x);
-+  CREATE VIEW t2 AS SELECT 1 FROM t1, (t1 AS a0, t1);
-+  ALTER TABLE t1 RENAME TO t3;
-+  SELECT sql FROM sqlite_master;
-+} {{CREATE TABLE "t3"(x)} {CREATE VIEW t2 AS SELECT 1 FROM "t3", ("t3" AS a0, "t3")}}
-+do_execsql_test 19.110 {
-+  INSERT INTO t3(x) VALUES(123);
-+  SELECT * FROM t2;
-+} {1}
-+do_execsql_test 19.120 {
-+  INSERT INTO t3(x) VALUES('xyz');
-+  SELECT * FROM t2;
-+} {1 1 1 1 1 1 1 1}
-+
- finish_test
---- /test/windowfault.test
-+++ /test/windowfault.test
-@@ -263,4 +263,15 @@
-   faultsim_test_result {0 {}}
- }
- 
-+do_faultsim_test 11 -faults oom* -prep {
-+} -body {
-+  execsql {
-+    VALUES(false),(current_date collate binary) 
-+    intersect 
-+    values(count() not like group_concat(cast(cast(0e00 as text) as integer) <= NULL || 0.4e-0 || 0x8 & true ) over () collate rtrim);
-+  }
-+} -test {
-+  faultsim_test_result {0 {}}
-+}
-+
- finish_test
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-architectures.patch b/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-architectures.patch
deleted file mode 100644
index 79f6f07..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-architectures.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-https://sqlite.org/cgi/src/info/04885763c4cd00cb
-
---- /sqlite3.c
-+++ /sqlite3.c
-@@ -121302,12 +121302,14 @@
-             x = *sqlite3VdbeGetOp(v, addrConflictCk);
-             if( x.opcode!=OP_IdxRowid ){
-               int p2;      /* New P2 value for copied conflict check opcode */
-+              const char *zP4;
-               if( sqlite3OpcodeProperty[x.opcode]&OPFLG_JUMP ){
-                 p2 = lblRecheckOk;
-               }else{
-                 p2 = x.p2;
-               }
--              sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, x.p4.z, x.p4type);
-+              zP4 = x.p4type==P4_INT32 ? SQLITE_INT_TO_PTR(x.p4.i) : x.p4.z;
-+              sqlite3VdbeAddOp4(v, x.opcode, x.p1, p2, x.p3, zP4, x.p4type);
-               sqlite3VdbeChangeP5(v, x.p5);
-               VdbeCoverageIf(v, p2!=x.p2);
-             }
diff --git a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-security_fixes.patch b/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-security_fixes.patch
deleted file mode 100644
index 3bbbbf7..0000000
--- a/dev-db/sqlite/files/sqlite-3.31.1-nonfull_archive-security_fixes.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-https://sqlite.org/cgi/src/info/9d0d4ab95dc0c56e
-https://sqlite.org/cgi/src/info/abc473fb8fb99900
-https://sqlite.org/cgi/src/info/5aeb5a2d295e10d5
-https://sqlite.org/cgi/src/info/a67cf5b7d37d5b14
-https://sqlite.org/cgi/src/info/c431b3fd8fd0f6a6
-
---- /sqlite3.c
-+++ /sqlite3.c
-@@ -17428,8 +17428,11 @@
- */
- #ifndef SQLITE_OMIT_VIRTUALTABLE
- #  define IsVirtual(X)      ((X)->nModuleArg)
-+#  define ExprIsVtab(X)  \
-+              ((X)->op==TK_COLUMN && (X)->y.pTab!=0 && (X)->y.pTab->nModuleArg)
- #else
- #  define IsVirtual(X)      0
-+#  define ExprIsVtab(X)     0
- #endif
- 
- /*
-@@ -97816,7 +97819,7 @@
-       assert( !ExprHasProperty(pExpr, EP_Reduced) );
-       /* Handle special cases of "x IS TRUE", "x IS FALSE", "x IS NOT TRUE",
-       ** and "x IS NOT FALSE". */
--      if( pRight->op==TK_ID ){
-+      if( pRight && pRight->op==TK_ID ){
-         int rc = resolveExprStep(pWalker, pRight);
-         if( rc==WRC_Abort ) return WRC_Abort;
-         if( pRight->op==TK_TRUEFALSE ){
-@@ -104133,19 +104136,25 @@
-     case TK_LT:
-     case TK_LE:
-     case TK_GT:
--    case TK_GE:
-+    case TK_GE: {
-+      Expr *pLeft = pExpr->pLeft;
-+      Expr *pRight = pExpr->pRight;
-       testcase( pExpr->op==TK_EQ );
-       testcase( pExpr->op==TK_NE );
-       testcase( pExpr->op==TK_LT );
-       testcase( pExpr->op==TK_LE );
-       testcase( pExpr->op==TK_GT );
-       testcase( pExpr->op==TK_GE );
--      if( (pExpr->pLeft->op==TK_COLUMN && IsVirtual(pExpr->pLeft->y.pTab))
--       || (pExpr->pRight->op==TK_COLUMN && IsVirtual(pExpr->pRight->y.pTab))
-+      /* The y.pTab=0 assignment in wherecode.c always happens after the
-+      ** impliesNotNullRow() test */
-+      if( (pLeft->op==TK_COLUMN && ALWAYS(pLeft->y.pTab!=0)
-+                               && IsVirtual(pLeft->y.pTab))
-+       || (pRight->op==TK_COLUMN && ALWAYS(pRight->y.pTab!=0)
-+                               && IsVirtual(pRight->y.pTab))
-       ){
--       return WRC_Prune;
-+        return WRC_Prune;
-       }
--
-+    }
-     default:
-       return WRC_Continue;
-   }
-@@ -130673,6 +130682,7 @@
-         /* Generate code to take the intersection of the two temporary
-         ** tables.
-         */
-+        if( rc ) break;
-         assert( p->pEList );
-         iBreak = sqlite3VdbeMakeLabel(pParse);
-         iCont = sqlite3VdbeMakeLabel(pParse);
-@@ -133015,7 +133025,7 @@
-             pNew = sqlite3ExprListAppend(pParse, pNew, pExpr);
-             sqlite3TokenInit(&sColname, zColname);
-             sqlite3ExprListSetName(pParse, pNew, &sColname, 0);
--            if( pNew && (p->selFlags & SF_NestedFrom)!=0 ){
-+            if( pNew && (p->selFlags & SF_NestedFrom)!=0 && !IN_RENAME_OBJECT ){
-               struct ExprList_item *pX = &pNew->a[pNew->nExpr-1];
-               sqlite3DbFree(db, pX->zEName);
-               if( pSub ){
-@@ -142593,7 +142603,8 @@
-     **       MATCH(expression,vtab_column)
-     */
-     pCol = pList->a[1].pExpr;
--    if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+    testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+    if( ExprIsVtab(pCol) ){
-       for(i=0; i<ArraySize(aOp); i++){
-         if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){
-           *peOp2 = aOp[i].eOp2;
-@@ -142615,7 +142626,8 @@
-     ** with function names in an arbitrary case.
-     */
-     pCol = pList->a[0].pExpr;
--    if( pCol->op==TK_COLUMN && IsVirtual(pCol->y.pTab) ){
-+    testcase( pCol->op==TK_COLUMN && pCol->y.pTab==0 );
-+    if( ExprIsVtab(pCol) ){
-       sqlite3_vtab *pVtab;
-       sqlite3_module *pMod;
-       void (*xNotUsed)(sqlite3_context*,int,sqlite3_value**);
-@@ -142638,10 +142650,12 @@
-     int res = 0;
-     Expr *pLeft = pExpr->pLeft;
-     Expr *pRight = pExpr->pRight;
--    if( pLeft->op==TK_COLUMN && IsVirtual(pLeft->y.pTab) ){
-+    testcase( pLeft->op==TK_COLUMN && pLeft->y.pTab==0 );
-+    if( ExprIsVtab(pLeft) ){
-       res++;
-     }
--    if( pRight && pRight->op==TK_COLUMN && IsVirtual(pRight->y.pTab) ){
-+    testcase( pRight && pRight->op==TK_COLUMN && pRight->y.pTab==0 );
-+    if( pRight && ExprIsVtab(pRight) ){
-       res++;
-       SWAP(Expr*, pLeft, pRight);
-     }
diff --git a/dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch b/dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch
new file mode 100644
index 0000000..6ee7396
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.33.0-build_1.1.patch
@@ -0,0 +1,413 @@
+Add initialization functions for internal usage in libsqlite3.so.
+
+--- /ext/misc/amatch.c
++++ /ext/misc/amatch.c
+@@ -1480,9 +1480,18 @@
+ 
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+ 
++int sqlite3AmatchInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++  rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
++#endif /* SQLITE_OMIT_VIRTUALTABLE */
++  return rc;
++}
++
+ /*
+ ** Register the amatch virtual table
+ */
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -1491,11 +1500,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Not used */
+-#ifndef SQLITE_OMIT_VIRTUALTABLE
+-  rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
+-#endif /* SQLITE_OMIT_VIRTUALTABLE */
+-  return rc;
++  return sqlite3AmatchInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/carray.c
++++ /ext/misc/carray.c
+@@ -383,16 +383,8 @@
+ 
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_carray_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3CarrayInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
+   rc = sqlite3_create_module(db, "carray", &carrayModule, 0);
+ #ifdef SQLITE_TEST
+@@ -404,3 +396,18 @@
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_carray_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3CarrayInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/completion.c
++++ /ext/misc/completion.c
+@@ -483,12 +483,13 @@
+   return rc;
+ }
+ 
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+ int sqlite3_completion_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
++  sqlite3 *db,
++  char **pzErrMsg,
+   const sqlite3_api_routines *pApi
+ ){
+   int rc = SQLITE_OK;
+@@ -499,3 +500,4 @@
+ #endif
+   return rc;
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/csv.c
++++ /ext/misc/csv.c
+@@ -928,6 +928,22 @@
+ #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
+ 
+ 
++int sqlite3CsvInit(sqlite3 *db){
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++  int rc;
++  rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
++#ifdef SQLITE_TEST
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
++  }
++#endif
++  return rc;
++#else
++  return SQLITE_OK;
++#endif
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -941,17 +957,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-#ifndef SQLITE_OMIT_VIRTUALTABLE	
+-  int rc;
+   SQLITE_EXTENSION_INIT2(pApi);
+-  rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
+-#ifdef SQLITE_TEST
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
+-  }
+-#endif
+-  return rc;
+-#else
+-  return SQLITE_OK;
+-#endif
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3CsvInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/dbdata.c
++++ /ext/misc/dbdata.c
+@@ -803,7 +803,7 @@
+ /*
+ ** Invoke this routine to register the "sqlite_dbdata" virtual table module
+ */
+-static int sqlite3DbdataRegister(sqlite3 *db){
++int sqlite3DbdataRegister(sqlite3 *db){
+   static sqlite3_module dbdata_module = {
+     0,                            /* iVersion */
+     0,                            /* xCreate */
+@@ -838,6 +838,7 @@
+   return rc;
+ }
+ 
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -849,3 +850,4 @@
+   SQLITE_EXTENSION_INIT2(pApi);
+   return sqlite3DbdataRegister(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/decimal.c
++++ /ext/misc/decimal.c
+@@ -590,14 +590,7 @@
+   decimal_free(pB);
+ }
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_decimal_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3DecimalInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+   static const struct {
+     const char *zFuncName;
+@@ -611,10 +604,6 @@
+     { "decimal_mul",   2,   decimalMulFunc     },
+   };
+   unsigned int i;
+-  (void)pzErrMsg;  /* Unused parameter */
+-
+-  SQLITE_EXTENSION_INIT2(pApi);
+-
+   for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+     rc = sqlite3_create_function(db, aFunc[i].zFuncName, aFunc[i].nArg,
+                    SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
+@@ -632,3 +621,20 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_decimal_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  (void)pzErrMsg;  /* Unused parameter */
++
++  SQLITE_EXTENSION_INIT2(pApi);
++
++  return sqlite3DecimalInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/eval.c
++++ /ext/misc/eval.c
+@@ -102,6 +102,20 @@
+ }
+ 
+ 
++int sqlite3EvalInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "eval", 1,
++                               SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++                               sqlEvalFunc, 0, 0);
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_function(db, "eval", 2,
++                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++                                 sqlEvalFunc, 0, 0);
++  }
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -110,16 +124,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "eval", 1, 
+-                               SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+-                               sqlEvalFunc, 0, 0);
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "eval", 2,
+-                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+-                                 sqlEvalFunc, 0, 0);
+-  }
+-  return rc;
++  return sqlite3EvalInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/fileio.c
++++ /ext/misc/fileio.c
+@@ -340,7 +340,7 @@
+ ** This function does the work for the writefile() UDF. Refer to 
+ ** header comments at the top of this file for details.
+ */
+-static int writeFile(
++static int writeFileContents(
+   sqlite3_context *pCtx,          /* Context to return bytes written in */
+   const char *zFile,              /* File to write */
+   sqlite3_value *pData,           /* Data to write */
+@@ -480,10 +480,10 @@
+     mtime = sqlite3_value_int64(argv[3]);
+   }
+ 
+-  res = writeFile(context, zFile, argv[1], mode, mtime);
++  res = writeFileContents(context, zFile, argv[1], mode, mtime);
+   if( res==1 && errno==ENOENT ){
+     if( makeDirectory(zFile)==SQLITE_OK ){
+-      res = writeFile(context, zFile, argv[1], mode, mtime);
++      res = writeFileContents(context, zFile, argv[1], mode, mtime);
+     }
+   }
+ 
+@@ -970,18 +970,9 @@
+ # define fsdirRegister(x) SQLITE_OK
+ #endif
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_fileio_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3FileioInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "readfile", 1, 
++  rc = sqlite3_create_function(db, "readfile", 1,
+                                SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+                                readfileFunc, 0, 0);
+   if( rc==SQLITE_OK ){
+@@ -998,3 +989,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_fileio_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3FileioInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/ieee754.c
++++ /ext/misc/ieee754.c
+@@ -245,14 +245,7 @@
+ }
+ 
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_ieee_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3IeeeInit(sqlite3 *db){
+   static const struct {
+     char *zFName;
+     int nArg;
+@@ -269,13 +262,26 @@
+   };
+   unsigned int i;
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+-    rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,	
++    rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,
+                                SQLITE_UTF8|SQLITE_INNOCUOUS,
+                                (void*)&aFunc[i].iAux,
+                                aFunc[i].xFunc, 0, 0);
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_ieee_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3IeeeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/nextchar.c
++++ /ext/misc/nextchar.c
+@@ -286,17 +286,8 @@
+   sqlite3_free(c.aResult);
+ }
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_nextchar_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3NextcharInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "next_char", 3,
+                                SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+                                nextCharFunc, 0, 0);
+@@ -312,3 +303,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_nextchar_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3NextcharInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
diff --git a/dev-db/sqlite/files/sqlite-3.33.0-build_1.2.patch b/dev-db/sqlite/files/sqlite-3.33.0-build_1.2.patch
new file mode 100644
index 0000000..8f6fd6f
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.33.0-build_1.2.patch
@@ -0,0 +1,422 @@
+Add initialization functions for internal usage in libsqlite3.so.
+
+--- /ext/misc/percentile.c
++++ /ext/misc/percentile.c
+@@ -202,6 +202,15 @@
+ }
+ 
+ 
++int sqlite3PercentileInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "percentile", 2,
++                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++                               0, percentStep, percentFinal);
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -210,11 +219,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "percentile", 2, 
+-                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+-                               0, percentStep, percentFinal);
+-  return rc;
++  return sqlite3PercentileInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/regexp.c
++++ /ext/misc/regexp.c
+@@ -740,10 +740,18 @@
+   }
+ }
+ 
++int sqlite3RegexpInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
++                               0, re_sql_func, 0, 0);
++  return rc;
++}
++
+ /*
+ ** Invoke this routine to register the regexp() function with the
+ ** SQLite database connection.
+ */
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -752,9 +760,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+-  rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
+-                               0, re_sql_func, 0, 0);
+-  return rc;
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3RegexpInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/sha1.c
++++ /ext/misc/sha1.c
+@@ -175,7 +175,7 @@
+ }
+ 
+ /* Compute a string using sqlite3_vsnprintf() and hash it */
+-static void hash_step_vformat(
++static void sha1_hash_step_vformat(
+   SHA1Context *p,                 /* Add content to this context */
+   const char *zFormat,
+   ...
+@@ -306,7 +306,7 @@
+     nCol = sqlite3_column_count(pStmt);
+     z = sqlite3_sql(pStmt);
+     n = (int)strlen(z);
+-    hash_step_vformat(&cx,"S%d:",n);
++    sha1_hash_step_vformat(&cx,"S%d:",n);
+     hash_step(&cx,(unsigned char*)z,n);
+ 
+     /* Compute a hash over the result of the query */
+@@ -349,14 +349,14 @@
+           case SQLITE_TEXT: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_text(pStmt, i);
+-            hash_step_vformat(&cx,"T%d:",n2);
++            sha1_hash_step_vformat(&cx,"T%d:",n2);
+             hash_step(&cx, z2, n2);
+             break;
+           }
+           case SQLITE_BLOB: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
+-            hash_step_vformat(&cx,"B%d:",n2);
++            sha1_hash_step_vformat(&cx,"B%d:",n2);
+             hash_step(&cx, z2, n2);
+             break;
+           }
+@@ -370,6 +370,20 @@
+ }
+ 
+ 
++int sqlite3ShaInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "sha1", 1,
++                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
++                               0, sha1Func, 0, 0);
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_function(db, "sha1_query", 1,
++                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++                                 sha1QueryFunc, 0, 0);
++  }
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -378,16 +392,8 @@
+   char **pzErrMsg,
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "sha1", 1, 
+-                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
+-                               0, sha1Func, 0, 0);
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "sha1_query", 1, 
+-                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+-                                 sha1QueryFunc, 0, 0);
+-  }
+-  return rc;
++  return sqlite3ShaInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/shathree.c
++++ /ext/misc/shathree.c
+@@ -527,7 +527,7 @@
+ /* Compute a string using sqlite3_vsnprintf() with a maximum length
+ ** of 50 bytes and add it to the hash.
+ */
+-static void hash_step_vformat(
++static void sha3_hash_step_vformat(
+   SHA3Context *p,                 /* Add content to this context */
+   const char *zFormat,
+   ...
+@@ -622,7 +622,7 @@
+     nCol = sqlite3_column_count(pStmt);
+     z = sqlite3_sql(pStmt);
+     n = (int)strlen(z);
+-    hash_step_vformat(&cx,"S%d:",n);
++    sha3_hash_step_vformat(&cx,"S%d:",n);
+     SHA3Update(&cx,(unsigned char*)z,n);
+ 
+     /* Compute a hash over the result of the query */
+@@ -665,14 +665,14 @@
+           case SQLITE_TEXT: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_text(pStmt, i);
+-            hash_step_vformat(&cx,"T%d:",n2);
++            sha3_hash_step_vformat(&cx,"T%d:",n2);
+             SHA3Update(&cx, z2, n2);
+             break;
+           }
+           case SQLITE_BLOB: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
+-            hash_step_vformat(&cx,"B%d:",n2);
++            sha3_hash_step_vformat(&cx,"B%d:",n2);
+             SHA3Update(&cx, z2, n2);
+             break;
+           }
+@@ -685,17 +685,8 @@
+ }
+ 
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_shathree_init(
+-  sqlite3 *db,
+-  char **pzErrMsg,
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3ShathreeInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "sha3", 1,
+                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
+                       0, sha3Func, 0, 0);
+@@ -716,3 +707,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_shathree_init(
++  sqlite3 *db,
++  char **pzErrMsg,
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3ShathreeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /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>
+@@ -101,6 +103,20 @@
+ }
+ 
+ 
++int sqlite3SqlarInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "sqlar_compress", 1,
++                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++                               sqlarCompressFunc, 0, 0);
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
++                                 SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++                                 sqlarUncompressFunc, 0, 0);
++  }
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -109,16 +125,10 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "sqlar_compress", 1, 
+-                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+-                               sqlarCompressFunc, 0, 0);
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
+-                                 SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+-                                 sqlarUncompressFunc, 0, 0);
+-  }
+-  return rc;
++  return sqlite3SqlarInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
++
++#endif /* SQLITE_HAVE_ZLIB */
+--- /ext/misc/totype.c
++++ /ext/misc/totype.c
+@@ -491,17 +491,8 @@
+ #pragma warning(default: 4748)
+ #endif
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_totype_init(
+-  sqlite3 *db,
+-  char **pzErrMsg,
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3TotypeInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "tointeger", 1,
+         SQLITE_UTF8 | SQLITE_DETERMINISTIC | SQLITE_INNOCUOUS, 0,
+         tointegerFunc, 0, 0);
+@@ -512,3 +503,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_totype_init(
++  sqlite3 *db,
++  char **pzErrMsg,
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3TotypeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/uint.c
++++ /ext/misc/uint.c
+@@ -78,6 +78,11 @@
+   return (nKey1 - i) - (nKey2 - j);
+ }
+ 
++int sqlite3UintInit(sqlite3 *db){
++  return sqlite3_create_collation(db, "UINT", SQLITE_UTF8, 0, uintCollFunc);
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -88,5 +93,6 @@
+ ){
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  return sqlite3_create_collation(db, "uint", SQLITE_UTF8, 0, uintCollFunc);
++  return sqlite3UintInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/uuid.c
++++ /ext/misc/uuid.c
+@@ -206,21 +206,12 @@
+   sqlite3_result_blob(context, pBlob, 16, SQLITE_TRANSIENT);
+ }
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_uuid_init(
+-  sqlite3 *db,
+-  char **pzErrMsg,
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3UuidInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "uuid", 0, SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+                                sqlite3UuidFunc, 0, 0);
+   if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "uuid_str", 1, 
++    rc = sqlite3_create_function(db, "uuid_str", 1,
+                        SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
+                        0, sqlite3UuidStrFunc, 0, 0);
+   }
+@@ -231,3 +222,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_uuid_init(
++  sqlite3 *db,
++  char **pzErrMsg,
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3UuidInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /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>
+@@ -2137,7 +2139,7 @@
+ /*
+ ** Register the "zipfile" virtual table.
+ */
+-static int zipfileRegister(sqlite3 *db){
++int sqlite3ZipfileInit(sqlite3 *db){
+   static sqlite3_module zipfileModule = {
+     1,                         /* iVersion */
+     zipfileConnect,            /* xCreate */
+@@ -2171,9 +2173,10 @@
+   return rc;
+ }
+ #else         /* SQLITE_OMIT_VIRTUALTABLE */
+-# define zipfileRegister(x) SQLITE_OK
++# define sqlite3ZipfileInit(x) SQLITE_OK
+ #endif
+ 
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -2184,5 +2187,8 @@
+ ){
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  return zipfileRegister(db);
++  return sqlite3ZipfileInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
++
++#endif /* SQLITE_HAVE_ZLIB */
diff --git a/dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch b/dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch
new file mode 100644
index 0000000..2904052
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.33.0-build_2.1.patch
@@ -0,0 +1,286 @@
+Move some code to libsqlite3.so to avoid duplication.
+Link executables against libsqlite3.so.
+Increase timeout for fuzzcheck.
+Update list of optionally available functions.
+Fix building with dlopen() not available.
+
+--- /Makefile.in
++++ /Makefile.in
+@@ -313,6 +313,9 @@
+ # Source code for extensions
+ #
+ SRC += \
++  $(TOP)/ext/expert/sqlite3expert.c \
++  $(TOP)/ext/expert/sqlite3expert.h
++SRC += \
+   $(TOP)/ext/fts1/fts1.c \
+   $(TOP)/ext/fts1/fts1.h \
+   $(TOP)/ext/fts1/fts1_hash.c \
+@@ -365,8 +368,28 @@
+   $(TOP)/ext/rbu/sqlite3rbu.h \
+   $(TOP)/ext/rbu/sqlite3rbu.c
+ SRC += \
++  $(TOP)/ext/misc/amatch.c \
++  $(TOP)/ext/misc/appendvfs.c \
++  $(TOP)/ext/misc/carray.c \
++  $(TOP)/ext/misc/completion.c \
++  $(TOP)/ext/misc/csv.c \
++  $(TOP)/ext/misc/dbdata.c \
++  $(TOP)/ext/misc/decimal.c \
++  $(TOP)/ext/misc/eval.c \
++  $(TOP)/ext/misc/fileio.c \
++  $(TOP)/ext/misc/ieee754.c \
+   $(TOP)/ext/misc/json1.c \
+-  $(TOP)/ext/misc/stmt.c
++  $(TOP)/ext/misc/nextchar.c \
++  $(TOP)/ext/misc/percentile.c \
++  $(TOP)/ext/misc/regexp.c \
++  $(TOP)/ext/misc/sha1.c \
++  $(TOP)/ext/misc/shathree.c \
++  $(TOP)/ext/misc/sqlar.c \
++  $(TOP)/ext/misc/stmt.c \
++  $(TOP)/ext/misc/totype.c \
++  $(TOP)/ext/misc/uint.c \
++  $(TOP)/ext/misc/uuid.c \
++  $(TOP)/ext/misc/zipfile.c
+ 
+ # Generated source code files
+ #
+@@ -437,34 +460,21 @@
+ # Statically linked extensions
+ #
+ TESTSRC += \
+-  $(TOP)/ext/expert/sqlite3expert.c \
+   $(TOP)/ext/expert/test_expert.c \
+-  $(TOP)/ext/misc/amatch.c \
+-  $(TOP)/ext/misc/carray.c \
+   $(TOP)/ext/misc/closure.c \
+-  $(TOP)/ext/misc/csv.c \
+-  $(TOP)/ext/misc/decimal.c \
+-  $(TOP)/ext/misc/eval.c \
+   $(TOP)/ext/misc/explain.c \
+-  $(TOP)/ext/misc/fileio.c \
+   $(TOP)/ext/misc/fuzzer.c \
+   $(TOP)/ext/fts5/fts5_tcl.c \
+   $(TOP)/ext/fts5/fts5_test_mi.c \
+   $(TOP)/ext/fts5/fts5_test_tok.c \
+-  $(TOP)/ext/misc/ieee754.c \
+   $(TOP)/ext/misc/mmapwarm.c \
+-  $(TOP)/ext/misc/nextchar.c \
+   $(TOP)/ext/misc/normalize.c \
+-  $(TOP)/ext/misc/percentile.c \
+   $(TOP)/ext/misc/prefixes.c \
+-  $(TOP)/ext/misc/regexp.c \
+   $(TOP)/ext/misc/remember.c \
+   $(TOP)/ext/misc/series.c \
+   $(TOP)/ext/misc/spellfix.c \
+-  $(TOP)/ext/misc/totype.c \
+   $(TOP)/ext/misc/unionvtab.c \
+   $(TOP)/ext/misc/wholenumber.c \
+-  $(TOP)/ext/misc/zipfile.c \
+   $(TOP)/ext/userauth/userauth.c
+ 
+ # Source code to the library files needed by the test fixture
+@@ -646,25 +656,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
+@@ -775,7 +785,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
+ #
+@@ -1081,17 +1091,6 @@
+ # Source files that go into making shell.c
+ SHELL_SRC = \
+ 	$(TOP)/src/shell.c.in \
+-        $(TOP)/ext/misc/appendvfs.c \
+-	$(TOP)/ext/misc/completion.c \
+-        $(TOP)/ext/misc/decimal.c \
+-	$(TOP)/ext/misc/fileio.c \
+-        $(TOP)/ext/misc/ieee754.c \
+-	$(TOP)/ext/misc/shathree.c \
+-	$(TOP)/ext/misc/sqlar.c \
+-        $(TOP)/ext/misc/uint.c \
+-	$(TOP)/ext/expert/sqlite3expert.c \
+-	$(TOP)/ext/expert/sqlite3expert.h \
+-	$(TOP)/ext/misc/zipfile.c \
+ 	$(TOP)/ext/misc/memtrace.c \
+         $(TOP)/src/test_windirent.c
+ 
+@@ -1260,11 +1259,11 @@
+ 
+ # Fuzz testing
+ fuzztest:	fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+-	./fuzzcheck$(TEXE) $(FUZZDATA)
++	./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
+ 	./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+ 
+ valgrindfuzz:	fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+-	valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA)
++	valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
+ 	valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+ 
+ # The veryquick.test TCL tests.
+@@ -1298,24 +1297,23 @@
+ shelltest: $(TESTPROGS)
+ 	./testfixture$(TEXT) $(TOP)/test/permutations.test shell
+ 
+-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 \
+@@ -1326,36 +1324,36 @@
+ sqlite3_checker.c:	$(CHECKER_DEPS)
+ 	$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
+ 
+-sqlite3_checker$(TEXE):	sqlite3_checker.c
+-	$(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
++sqlite3_checker$(TEXE):	sqlite3_checker.c libsqlite3.la
++	$(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
+ 
+-dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
++dbdump$(TEXE):	$(TOP)/ext/misc/dbdump.c libsqlite3.la
+ 	$(LTLINK) -DDBDUMP_STANDALONE -o $@ \
+-           $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
++           $(TOP)/ext/misc/dbdump.c libsqlite3.la
+ 
+-dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
+-	$(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
++dbtotxt$(TEXE):	$(TOP)/tool/dbtotxt.c
++	$(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
+ 
+-showdb$(TEXE):	$(TOP)/tool/showdb.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
++showdb$(TEXE):	$(TOP)/tool/showdb.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
+ 
+-showstat4$(TEXE):	$(TOP)/tool/showstat4.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
++showstat4$(TEXE):	$(TOP)/tool/showstat4.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
+ 
+-showjournal$(TEXE):	$(TOP)/tool/showjournal.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
++showjournal$(TEXE):	$(TOP)/tool/showjournal.c
++	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c
+ 
+-showwal$(TEXE):	$(TOP)/tool/showwal.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
++showwal$(TEXE):	$(TOP)/tool/showwal.c
++	$(LTLINK) -o $@ $(TOP)/tool/showwal.c
+ 
+ showshm$(TEXE):	$(TOP)/tool/showshm.c
+ 	$(LTLINK) -o $@ $(TOP)/tool/showshm.c
+ 
+-index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
+-	$(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
++index_usage$(TEXE):	$(TOP)/tool/index_usage.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
+ 
+-changeset$(TEXE):	$(TOP)/ext/session/changeset.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
++changeset$(TEXE):	$(TOP)/ext/session/changeset.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
+ 
+ changesetfuzz$(TEXE):	$(TOP)/ext/session/changesetfuzz.c sqlite3.lo
+ 	$(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
+@@ -1380,11 +1378,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
+@@ -108,7 +108,7 @@
+ #########
+ # Figure out whether or not we have these functions
+ #
+-AC_CHECK_FUNCS([fdatasync gmtime_r isnan localtime_r localtime_s malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64])
++AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])
+ 
+ #########
+ # By default, we use the amalgamation (this may be changed below...)
+@@ -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
diff --git a/dev-db/sqlite/files/sqlite-3.33.0-build_2.2.patch b/dev-db/sqlite/files/sqlite-3.33.0-build_2.2.patch
new file mode 100644
index 0000000..3aa75bc
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.33.0-build_2.2.patch
@@ -0,0 +1,434 @@
+Move some code to libsqlite3.so to avoid duplication.
+Initialize some extensions in libsqlite3.so.
+Update test suite.
+
+--- /ext/repair/sqlite3_checker.c.in
++++ /ext/repair/sqlite3_checker.c.in
+@@ -2,6 +2,7 @@
+ ** Read an SQLite database file and analyze its space utilization.  Generate
+ ** text on standard output.
+ */
++#define SQLITE_CORE 1
+ #define TCLSH_INIT_PROC sqlite3_checker_init_proc
+ #define SQLITE_ENABLE_DBPAGE_VTAB 1
+ #define SQLITE_ENABLE_JSON1 1
+@@ -14,7 +15,7 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ INCLUDE $ROOT/ext/misc/btreeinfo.c
+ INCLUDE $ROOT/ext/repair/checkindex.c
+--- /src/main.c
++++ /src/main.c
+@@ -50,12 +50,35 @@
+ #ifdef SQLITE_ENABLE_FTS5
+ int sqlite3Fts5Init(sqlite3*);
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++int sqlite3DbdataRegister(sqlite3*);
++#endif
+ #ifdef SQLITE_ENABLE_JSON1
+ int sqlite3Json1Init(sqlite3*);
+ #endif
+ #ifdef SQLITE_ENABLE_STMTVTAB
+ int sqlite3StmtVtabInit(sqlite3*);
+ #endif
++int sqlite3AmatchInit(sqlite3*);
++int sqlite3CarrayInit(sqlite3*);
++int sqlite3CompletionVtabInit(sqlite3*);
++int sqlite3CsvInit(sqlite3*);
++int sqlite3DecimalInit(sqlite3*);
++int sqlite3EvalInit(sqlite3*);
++int sqlite3FileioInit(sqlite3*);
++int sqlite3IeeeInit(sqlite3*);
++int sqlite3NextcharInit(sqlite3*);
++int sqlite3PercentileInit(sqlite3*);
++int sqlite3RegexpInit(sqlite3*);
++int sqlite3ShaInit(sqlite3*);
++int sqlite3ShathreeInit(sqlite3*);
++int sqlite3TotypeInit(sqlite3*);
++int sqlite3UintInit(sqlite3*);
++int sqlite3UuidInit(sqlite3*);
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++int sqlite3ZipfileInit(sqlite3*);
++int sqlite3SqlarInit(sqlite3*);
++#endif
+ 
+ /*
+ ** An array of pointers to extension initializer functions for
+@@ -83,6 +106,9 @@
+ #ifdef SQLITE_ENABLE_DBPAGE_VTAB
+   sqlite3DbpageRegister,
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++  sqlite3DbdataRegister,
++#endif
+ #ifdef SQLITE_ENABLE_DBSTAT_VTAB
+   sqlite3DbstatRegister,
+ #endif
+@@ -96,6 +122,26 @@
+ #ifdef SQLITE_ENABLE_BYTECODE_VTAB
+   sqlite3VdbeBytecodeVtabInit,
+ #endif
++  sqlite3AmatchInit,
++  sqlite3CarrayInit,
++  sqlite3CompletionVtabInit,
++  sqlite3CsvInit,
++  sqlite3DecimalInit,
++  sqlite3EvalInit,
++  sqlite3FileioInit,
++  sqlite3IeeeInit,
++  sqlite3NextcharInit,
++  sqlite3PercentileInit,
++  sqlite3RegexpInit,
++  sqlite3ShaInit,
++  sqlite3ShathreeInit,
++  sqlite3TotypeInit,
++  sqlite3UintInit,
++  sqlite3UuidInit,
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++  sqlite3ZipfileInit,
++  sqlite3SqlarInit,
++#endif
+ };
+ 
+ #ifndef SQLITE_AMALGAMATION
+--- /src/shell.c.in
++++ /src/shell.c.in
+@@ -69,6 +69,7 @@
+ #include <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;
+@@ -135,6 +136,10 @@
+ # define SHELL_USE_LOCAL_GETLINE 1
+ #endif
+ 
++#ifdef SQLITE_HAVE_ZLIB
++#include <zlib.h>
++#endif
++
+ 
+ #if defined(_WIN32) || defined(WIN32)
+ # if SQLITE_OS_WINRT
+@@ -1020,24 +1025,7 @@
+ INCLUDE test_windirent.c
+ #define dirent DIRENT
+ #endif
+-INCLUDE ../ext/misc/shathree.c
+-INCLUDE ../ext/misc/fileio.c
+-INCLUDE ../ext/misc/completion.c
+-INCLUDE ../ext/misc/appendvfs.c
+ INCLUDE ../ext/misc/memtrace.c
+-INCLUDE ../ext/misc/uint.c
+-INCLUDE ../ext/misc/decimal.c
+-INCLUDE ../ext/misc/ieee754.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE ../ext/misc/zipfile.c
+-INCLUDE ../ext/misc/sqlar.c
+-#endif
+-INCLUDE ../ext/expert/sqlite3expert.h
+-INCLUDE ../ext/expert/sqlite3expert.c
+-
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+-INCLUDE ../ext/misc/dbdata.c
+-#endif
+ 
+ #if defined(SQLITE_ENABLE_SESSION)
+ /*
+@@ -4584,19 +4572,6 @@
+ #ifndef SQLITE_OMIT_LOAD_EXTENSION
+     sqlite3_enable_load_extension(p->db, 1);
+ #endif
+-    sqlite3_fileio_init(p->db, 0, 0);
+-    sqlite3_shathree_init(p->db, 0, 0);
+-    sqlite3_completion_init(p->db, 0, 0);
+-    sqlite3_uint_init(p->db, 0, 0);
+-    sqlite3_decimal_init(p->db, 0, 0);
+-    sqlite3_ieee_init(p->db, 0, 0);
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+-    sqlite3_dbdata_init(p->db, 0, 0);
+-#endif
+-#ifdef SQLITE_HAVE_ZLIB
+-    sqlite3_zipfile_init(p->db, 0, 0);
+-    sqlite3_sqlar_init(p->db, 0, 0);
+-#endif
+     sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
+                             shellAddSchemaName, 0, 0);
+     sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0,
+@@ -6617,8 +6592,6 @@
+         );
+         goto end_ar_command;
+       }
+-      sqlite3_fileio_init(cmd.db, 0, 0);
+-      sqlite3_sqlar_init(cmd.db, 0, 0);
+       sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
+                               shellPutsFunc, 0, 0);
+ 
+@@ -10981,6 +10954,7 @@
+ #endif
+   }
+   data.out = stdout;
++  extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *);
+   sqlite3_appendvfs_init(0,0,0);
+ 
+   /* Go ahead and open the database file if it already exists.  If the
+--- /src/test_config.c
++++ /src/test_config.c
+@@ -353,6 +353,8 @@
+   Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY);
+ #endif
+ 
++  Tcl_SetVar2(interp, "sqlite_options", "decimal", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_DECLTYPE
+   Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -540,6 +542,8 @@
+   Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);
+ #endif
+ 
++  Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_REINDEX
+   Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -662,6 +666,8 @@
+   Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY);
+ #endif
+ 
++  Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_UTF16
+   Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY);
+ #else
+--- /test/e_expr.test
++++ /test/e_expr.test
+@@ -1078,7 +1078,7 @@
+ #
+ #   There is a regexp function if ICU is enabled though.
+ #
+-ifcapable !icu {
++ifcapable !icu&&!regexp {
+   do_catchsql_test e_expr-18.1.1 { 
+     SELECT regexp('abc', 'def') 
+   } {1 {no such function: regexp}}
+--- /test/icu.test
++++ /test/icu.test
+@@ -41,7 +41,7 @@
+   #
+   test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'}  1
+   test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'}  1
+-  test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'}   0
++  test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'}  0
+   test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1
+   test_expr icu-1.5 {i1=NULL}    {i1 REGEXP '.ell.*'} {}
+ 
+--- /test/pragma.test
++++ /test/pragma.test
+@@ -1370,17 +1370,62 @@
+ } ;# ifcapable trigger
+ 
+ ifcapable schema_pragmas {
+-  do_test pragma-11.1 {
+-    execsql2 {
+-      pragma collation_list;
++  ifcapable decimal {
++    ifcapable uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name UINT seq 1 name decimal seq 2 name RTRIM seq 3 name NOCASE seq 4 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 UINT 2 decimal 3 RTRIM 4 NOCASE 5 BINARY}
+     }
+-  } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
+-  do_test pragma-11.2 {
+-    db collate New_Collation blah...
+-    execsql {
+-      pragma collation_list;
++    ifcapable !uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name decimal seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 decimal 2 RTRIM 3 NOCASE 4 BINARY}
+     }
+-  } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++  }
++  ifcapable !decimal {
++    ifcapable uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY}
++    }
++    ifcapable !uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++    }
++  }
+ }
+ 
+ ifcapable schema_pragmas&&tempdb {
+--- /test/sessionfuzz.c
++++ /test/sessionfuzz.c
+@@ -698,49 +698,6 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <assert.h>
+-#ifndef OMIT_ZLIB
+-#include "zlib.h"
+-#endif
+-
+-/*
+-** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
+-**
+-** Parameter SZ is interpreted as an integer. If it is less than or
+-** equal to zero, then this function returns a copy of X. Or, if
+-** SZ is equal to the size of X when interpreted as a blob, also
+-** return a copy of X. Otherwise, decompress blob X using zlib
+-** utility function uncompress() and return the results (another
+-** blob).
+-*/
+-static void sqlarUncompressFunc(
+-  sqlite3_context *context,
+-  int argc,
+-  sqlite3_value **argv
+-){
+-#ifdef OMIT_ZLIB
+-  sqlite3_result_value(context, argv[0]);
+-#else
+-  uLong nData;
+-  uLongf sz;
+-
+-  assert( argc==2 );
+-  sz = sqlite3_value_int(argv[1]);
+-
+-  if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
+-    sqlite3_result_value(context, argv[0]);
+-  }else{
+-    const Bytef *pData= sqlite3_value_blob(argv[0]);
+-    Bytef *pOut = sqlite3_malloc(sz);
+-    if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
+-      sqlite3_result_error(context, "error in uncompress()", -1);
+-    }else{
+-      sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
+-    }
+-    sqlite3_free(pOut);
+-  }
+-#endif
+-}
+-
+ 
+ /* Run a chunk of SQL.  If any errors happen, print an error message
+ ** and exit.
+--- /tool/mksqlite3c.tcl
++++ /tool/mksqlite3c.tcl
+@@ -117,6 +117,7 @@
+    rtree.h
+    sqlite3session.h
+    sqlite3.h
++   sqlite3expert.h
+    sqlite3ext.h
+    sqlite3rbu.h
+    sqliteicu.h
+@@ -404,6 +405,27 @@
+    sqlite3session.c
+    fts5.c
+    stmt.c
++   amatch.c
++   appendvfs.c
++   carray.c
++   completion.c
++   csv.c
++   dbdata.c
++   decimal.c
++   eval.c
++   fileio.c
++   ieee754.c
++   nextchar.c
++   percentile.c
++   regexp.c
++   sha1.c
++   shathree.c
++   sqlar.c
++   sqlite3expert.c
++   totype.c
++   uint.c
++   uuid.c
++   zipfile.c
+ } {
+   copy_file tsrc/$file
+ }
+--- /tool/sqlite3_analyzer.c.in
++++ /tool/sqlite3_analyzer.c.in
+@@ -14,9 +14,6 @@
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+ #define SQLITE_OMIT_LOAD_EXTENSION 1
+-#ifndef USE_EXTERNAL_SQLITE
+-INCLUDE sqlite3.c
+-#endif
+ INCLUDE $ROOT/src/tclsqlite.c
+ 
+ const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
+--- /tool/sqltclsh.c.in
++++ /tool/sqltclsh.c.in
+@@ -27,21 +27,13 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
+-INCLUDE $ROOT/ext/misc/appendvfs.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE $ROOT/ext/misc/zipfile.c
+-INCLUDE $ROOT/ext/misc/sqlar.c
+-#endif
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ 
+ const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
+   (void)interp;
++  extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *);
+   sqlite3_appendvfs_init(0,0,0);
+-#ifdef SQLITE_HAVE_ZLIB
+-  sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
+-  sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
+-#endif
+ 
+   return
+ BEGIN_STRING
diff --git a/dev-db/sqlite/files/sqlite-3.34.0-build_1.1.patch b/dev-db/sqlite/files/sqlite-3.34.0-build_1.1.patch
new file mode 100644
index 0000000..762f135
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.34.0-build_1.1.patch
@@ -0,0 +1,375 @@
+Add initialization functions for internal usage in libsqlite3.so.
+
+SQLite revision: a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b
+
+--- /ext/misc/amatch.c
++++ /ext/misc/amatch.c
+@@ -1480,9 +1480,18 @@
+ 
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+ 
++int sqlite3AmatchInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++  rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
++#endif /* SQLITE_OMIT_VIRTUALTABLE */
++  return rc;
++}
++
+ /*
+ ** Register the amatch virtual table
+ */
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -1491,11 +1500,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Not used */
+-#ifndef SQLITE_OMIT_VIRTUALTABLE
+-  rc = sqlite3_create_module(db, "approximate_match", &amatchModule, 0);
+-#endif /* SQLITE_OMIT_VIRTUALTABLE */
+-  return rc;
++  return sqlite3AmatchInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/carray.c
++++ /ext/misc/carray.c
+@@ -498,16 +498,8 @@
+ 
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_carray_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3CarrayInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
+   rc = sqlite3_create_module(db, "carray", &carrayModule, 0);
+ #ifdef SQLITE_TEST
+@@ -519,3 +511,18 @@
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_carray_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3CarrayInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/completion.c
++++ /ext/misc/completion.c
+@@ -483,12 +483,13 @@
+   return rc;
+ }
+ 
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+ int sqlite3_completion_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
++  sqlite3 *db,
++  char **pzErrMsg,
+   const sqlite3_api_routines *pApi
+ ){
+   int rc = SQLITE_OK;
+@@ -499,3 +500,4 @@
+ #endif
+   return rc;
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/csv.c
++++ /ext/misc/csv.c
+@@ -928,6 +928,22 @@
+ #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
+ 
+ 
++int sqlite3CsvInit(sqlite3 *db){
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++  int rc;
++  rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
++#ifdef SQLITE_TEST
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
++  }
++#endif
++  return rc;
++#else
++  return SQLITE_OK;
++#endif
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -941,17 +957,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-#ifndef SQLITE_OMIT_VIRTUALTABLE	
+-  int rc;
+   SQLITE_EXTENSION_INIT2(pApi);
+-  rc = sqlite3_create_module(db, "csv", &CsvModule, 0);
+-#ifdef SQLITE_TEST
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_module(db, "csv_wr", &CsvModuleFauxWrite, 0);
+-  }
+-#endif
+-  return rc;
+-#else
+-  return SQLITE_OK;
+-#endif
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3CsvInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/dbdata.c
++++ /ext/misc/dbdata.c
+@@ -803,7 +803,7 @@
+ /*
+ ** Invoke this routine to register the "sqlite_dbdata" virtual table module
+ */
+-static int sqlite3DbdataRegister(sqlite3 *db){
++int sqlite3DbdataRegister(sqlite3 *db){
+   static sqlite3_module dbdata_module = {
+     0,                            /* iVersion */
+     0,                            /* xCreate */
+@@ -838,6 +838,7 @@
+   return rc;
+ }
+ 
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -849,3 +850,4 @@
+   SQLITE_EXTENSION_INIT2(pApi);
+   return sqlite3DbdataRegister(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/decimal.c
++++ /ext/misc/decimal.c
+@@ -590,14 +590,7 @@
+   decimal_free(pB);
+ }
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_decimal_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3DecimalInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+   static const struct {
+     const char *zFuncName;
+@@ -611,10 +604,6 @@
+     { "decimal_mul",   2,   decimalMulFunc     },
+   };
+   unsigned int i;
+-  (void)pzErrMsg;  /* Unused parameter */
+-
+-  SQLITE_EXTENSION_INIT2(pApi);
+-
+   for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+     rc = sqlite3_create_function(db, aFunc[i].zFuncName, aFunc[i].nArg,
+                    SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
+@@ -632,3 +621,20 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_decimal_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  (void)pzErrMsg;  /* Unused parameter */
++
++  SQLITE_EXTENSION_INIT2(pApi);
++
++  return sqlite3DecimalInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/eval.c
++++ /ext/misc/eval.c
+@@ -102,6 +102,20 @@
+ }
+ 
+ 
++int sqlite3EvalInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "eval", 1,
++                               SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++                               sqlEvalFunc, 0, 0);
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_function(db, "eval", 2,
++                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++                                 sqlEvalFunc, 0, 0);
++  }
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -110,16 +124,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "eval", 1, 
+-                               SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+-                               sqlEvalFunc, 0, 0);
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "eval", 2,
+-                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+-                                 sqlEvalFunc, 0, 0);
+-  }
+-  return rc;
++  return sqlite3EvalInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/fileio.c
++++ /ext/misc/fileio.c
+@@ -340,7 +340,7 @@
+ ** This function does the work for the writefile() UDF. Refer to 
+ ** header comments at the top of this file for details.
+ */
+-static int writeFile(
++static int writeFileContents(
+   sqlite3_context *pCtx,          /* Context to return bytes written in */
+   const char *zFile,              /* File to write */
+   sqlite3_value *pData,           /* Data to write */
+@@ -480,10 +480,10 @@
+     mtime = sqlite3_value_int64(argv[3]);
+   }
+ 
+-  res = writeFile(context, zFile, argv[1], mode, mtime);
++  res = writeFileContents(context, zFile, argv[1], mode, mtime);
+   if( res==1 && errno==ENOENT ){
+     if( makeDirectory(zFile)==SQLITE_OK ){
+-      res = writeFile(context, zFile, argv[1], mode, mtime);
++      res = writeFileContents(context, zFile, argv[1], mode, mtime);
+     }
+   }
+ 
+@@ -970,18 +970,9 @@
+ # define fsdirRegister(x) SQLITE_OK
+ #endif
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_fileio_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3FileioInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "readfile", 1, 
++  rc = sqlite3_create_function(db, "readfile", 1,
+                                SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+                                readfileFunc, 0, 0);
+   if( rc==SQLITE_OK ){
+@@ -998,3 +989,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_fileio_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3FileioInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/ieee754.c
++++ /ext/misc/ieee754.c
+@@ -245,14 +245,7 @@
+ }
+ 
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_ieee_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3IeeeInit(sqlite3 *db){
+   static const struct {
+     char *zFName;
+     int nArg;
+@@ -269,13 +262,26 @@
+   };
+   unsigned int i;
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
+-    rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,	
++    rc = sqlite3_create_function(db, aFunc[i].zFName, aFunc[i].nArg,
+                                SQLITE_UTF8|SQLITE_INNOCUOUS,
+                                (void*)&aFunc[i].iAux,
+                                aFunc[i].xFunc, 0, 0);
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_ieee_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3IeeeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
diff --git a/dev-db/sqlite/files/sqlite-3.34.0-build_1.2.patch b/dev-db/sqlite/files/sqlite-3.34.0-build_1.2.patch
new file mode 100644
index 0000000..7fb5d28
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.34.0-build_1.2.patch
@@ -0,0 +1,500 @@
+Add initialization functions for internal usage in libsqlite3.so.
+
+SQLite revision: a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b
+
+--- /ext/misc/nextchar.c
++++ /ext/misc/nextchar.c
+@@ -286,17 +286,8 @@
+   sqlite3_free(c.aResult);
+ }
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_nextchar_init(
+-  sqlite3 *db, 
+-  char **pzErrMsg, 
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3NextcharInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "next_char", 3,
+                                SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+                                nextCharFunc, 0, 0);
+@@ -312,3 +303,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_nextchar_init(
++  sqlite3 *db, 
++  char **pzErrMsg, 
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3NextcharInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/percentile.c
++++ /ext/misc/percentile.c
+@@ -202,6 +202,15 @@
+ }
+ 
+ 
++int sqlite3PercentileInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "percentile", 2,
++                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++                               0, percentStep, percentFinal);
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -210,11 +219,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "percentile", 2, 
+-                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+-                               0, percentStep, percentFinal);
+-  return rc;
++  return sqlite3PercentileInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/regexp.c
++++ /ext/misc/regexp.c
+@@ -740,10 +740,18 @@
+   }
+ }
+ 
++int sqlite3RegexpInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
++                               0, re_sql_func, 0, 0);
++  return rc;
++}
++
+ /*
+ ** Invoke this routine to register the regexp() function with the
+ ** SQLite database connection.
+ */
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -752,9 +760,8 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+-  rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS,
+-                               0, re_sql_func, 0, 0);
+-  return rc;
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3RegexpInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/series.c
++++ /ext/misc/series.c
+@@ -413,6 +413,15 @@
+ 
+ #endif /* SQLITE_OMIT_VIRTUALTABLE */
+ 
++int sqlite3SeriesInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++#ifndef SQLITE_OMIT_VIRTUALTABLE
++  rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
++#endif
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -421,7 +430,6 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+ #ifndef SQLITE_OMIT_VIRTUALTABLE
+   if( sqlite3_libversion_number()<3008012 ){
+@@ -429,7 +437,7 @@
+         "generate_series() requires SQLite 3.8.12 or later");
+     return SQLITE_ERROR;
+   }
+-  rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0);
+ #endif
+-  return rc;
++  return sqlite3SeriesInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/sha1.c
++++ /ext/misc/sha1.c
+@@ -175,7 +175,7 @@
+ }
+ 
+ /* Compute a string using sqlite3_vsnprintf() and hash it */
+-static void hash_step_vformat(
++static void sha1_hash_step_vformat(
+   SHA1Context *p,                 /* Add content to this context */
+   const char *zFormat,
+   ...
+@@ -306,7 +306,7 @@
+     nCol = sqlite3_column_count(pStmt);
+     z = sqlite3_sql(pStmt);
+     n = (int)strlen(z);
+-    hash_step_vformat(&cx,"S%d:",n);
++    sha1_hash_step_vformat(&cx,"S%d:",n);
+     hash_step(&cx,(unsigned char*)z,n);
+ 
+     /* Compute a hash over the result of the query */
+@@ -349,14 +349,14 @@
+           case SQLITE_TEXT: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_text(pStmt, i);
+-            hash_step_vformat(&cx,"T%d:",n2);
++            sha1_hash_step_vformat(&cx,"T%d:",n2);
+             hash_step(&cx, z2, n2);
+             break;
+           }
+           case SQLITE_BLOB: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
+-            hash_step_vformat(&cx,"B%d:",n2);
++            sha1_hash_step_vformat(&cx,"B%d:",n2);
+             hash_step(&cx, z2, n2);
+             break;
+           }
+@@ -370,6 +370,20 @@
+ }
+ 
+ 
++int sqlite3ShaInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "sha1", 1,
++                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
++                               0, sha1Func, 0, 0);
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_function(db, "sha1_query", 1,
++                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
++                                 sha1QueryFunc, 0, 0);
++  }
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -378,16 +392,8 @@
+   char **pzErrMsg,
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "sha1", 1, 
+-                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
+-                               0, sha1Func, 0, 0);
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "sha1_query", 1, 
+-                                 SQLITE_UTF8|SQLITE_DIRECTONLY, 0,
+-                                 sha1QueryFunc, 0, 0);
+-  }
+-  return rc;
++  return sqlite3ShaInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/shathree.c
++++ /ext/misc/shathree.c
+@@ -527,7 +527,7 @@
+ /* Compute a string using sqlite3_vsnprintf() with a maximum length
+ ** of 50 bytes and add it to the hash.
+ */
+-static void hash_step_vformat(
++static void sha3_hash_step_vformat(
+   SHA3Context *p,                 /* Add content to this context */
+   const char *zFormat,
+   ...
+@@ -622,7 +622,7 @@
+     nCol = sqlite3_column_count(pStmt);
+     z = sqlite3_sql(pStmt);
+     n = (int)strlen(z);
+-    hash_step_vformat(&cx,"S%d:",n);
++    sha3_hash_step_vformat(&cx,"S%d:",n);
+     SHA3Update(&cx,(unsigned char*)z,n);
+ 
+     /* Compute a hash over the result of the query */
+@@ -665,14 +665,14 @@
+           case SQLITE_TEXT: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_text(pStmt, i);
+-            hash_step_vformat(&cx,"T%d:",n2);
++            sha3_hash_step_vformat(&cx,"T%d:",n2);
+             SHA3Update(&cx, z2, n2);
+             break;
+           }
+           case SQLITE_BLOB: {
+             int n2 = sqlite3_column_bytes(pStmt, i);
+             const unsigned char *z2 = sqlite3_column_blob(pStmt, i);
+-            hash_step_vformat(&cx,"B%d:",n2);
++            sha3_hash_step_vformat(&cx,"B%d:",n2);
+             SHA3Update(&cx, z2, n2);
+             break;
+           }
+@@ -685,17 +685,8 @@
+ }
+ 
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_shathree_init(
+-  sqlite3 *db,
+-  char **pzErrMsg,
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3ShathreeInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "sha3", 1,
+                       SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC,
+                       0, sha3Func, 0, 0);
+@@ -716,3 +707,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_shathree_init(
++  sqlite3 *db,
++  char **pzErrMsg,
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3ShathreeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /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>
+@@ -101,6 +103,20 @@
+ }
+ 
+ 
++int sqlite3SqlarInit(sqlite3 *db){
++  int rc = SQLITE_OK;
++  rc = sqlite3_create_function(db, "sqlar_compress", 1,
++                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++                               sqlarCompressFunc, 0, 0);
++  if( rc==SQLITE_OK ){
++    rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
++                                 SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
++                                 sqlarUncompressFunc, 0, 0);
++  }
++  return rc;
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -109,16 +125,10 @@
+   char **pzErrMsg, 
+   const sqlite3_api_routines *pApi
+ ){
+-  int rc = SQLITE_OK;
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  rc = sqlite3_create_function(db, "sqlar_compress", 1, 
+-                               SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+-                               sqlarCompressFunc, 0, 0);
+-  if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "sqlar_uncompress", 2,
+-                                 SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+-                                 sqlarUncompressFunc, 0, 0);
+-  }
+-  return rc;
++  return sqlite3SqlarInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
++
++#endif /* SQLITE_HAVE_ZLIB */
+--- /ext/misc/totype.c
++++ /ext/misc/totype.c
+@@ -491,17 +491,8 @@
+ #pragma warning(default: 4748)
+ #endif
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_totype_init(
+-  sqlite3 *db,
+-  char **pzErrMsg,
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3TotypeInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "tointeger", 1,
+         SQLITE_UTF8 | SQLITE_DETERMINISTIC | SQLITE_INNOCUOUS, 0,
+         tointegerFunc, 0, 0);
+@@ -512,3 +503,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_totype_init(
++  sqlite3 *db,
++  char **pzErrMsg,
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3TotypeInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/uint.c
++++ /ext/misc/uint.c
+@@ -78,6 +78,11 @@
+   return (nKey1 - i) - (nKey2 - j);
+ }
+ 
++int sqlite3UintInit(sqlite3 *db){
++  return sqlite3_create_collation(db, "UINT", SQLITE_UTF8, 0, uintCollFunc);
++}
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -88,5 +93,6 @@
+ ){
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  return sqlite3_create_collation(db, "uint", SQLITE_UTF8, 0, uintCollFunc);
++  return sqlite3UintInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /ext/misc/uuid.c
++++ /ext/misc/uuid.c
+@@ -206,21 +206,12 @@
+   sqlite3_result_blob(context, pBlob, 16, SQLITE_TRANSIENT);
+ }
+ 
+-#ifdef _WIN32
+-__declspec(dllexport)
+-#endif
+-int sqlite3_uuid_init(
+-  sqlite3 *db,
+-  char **pzErrMsg,
+-  const sqlite3_api_routines *pApi
+-){
++int sqlite3UuidInit(sqlite3 *db){
+   int rc = SQLITE_OK;
+-  SQLITE_EXTENSION_INIT2(pApi);
+-  (void)pzErrMsg;  /* Unused parameter */
+   rc = sqlite3_create_function(db, "uuid", 0, SQLITE_UTF8|SQLITE_INNOCUOUS, 0,
+                                sqlite3UuidFunc, 0, 0);
+   if( rc==SQLITE_OK ){
+-    rc = sqlite3_create_function(db, "uuid_str", 1, 
++    rc = sqlite3_create_function(db, "uuid_str", 1,
+                        SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
+                        0, sqlite3UuidStrFunc, 0, 0);
+   }
+@@ -231,3 +222,18 @@
+   }
+   return rc;
+ }
++
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
++#ifdef _WIN32
++__declspec(dllexport)
++#endif
++int sqlite3_uuid_init(
++  sqlite3 *db,
++  char **pzErrMsg,
++  const sqlite3_api_routines *pApi
++){
++  SQLITE_EXTENSION_INIT2(pApi);
++  (void)pzErrMsg;  /* Unused parameter */
++  return sqlite3UuidInit(db);
++}
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
+--- /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>
+@@ -2139,7 +2141,7 @@
+ /*
+ ** Register the "zipfile" virtual table.
+ */
+-static int zipfileRegister(sqlite3 *db){
++int sqlite3ZipfileInit(sqlite3 *db){
+   static sqlite3_module zipfileModule = {
+     1,                         /* iVersion */
+     zipfileConnect,            /* xCreate */
+@@ -2173,9 +2175,10 @@
+   return rc;
+ }
+ #else         /* SQLITE_OMIT_VIRTUALTABLE */
+-# define zipfileRegister(x) SQLITE_OK
++# define sqlite3ZipfileInit(x) SQLITE_OK
+ #endif
+ 
++#if !defined(SQLITE_CORE) || defined(SQLITE_TEST)
+ #ifdef _WIN32
+ __declspec(dllexport)
+ #endif
+@@ -2186,5 +2189,8 @@
+ ){
+   SQLITE_EXTENSION_INIT2(pApi);
+   (void)pzErrMsg;  /* Unused parameter */
+-  return zipfileRegister(db);
++  return sqlite3ZipfileInit(db);
+ }
++#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */
++
++#endif /* SQLITE_HAVE_ZLIB */
diff --git a/dev-db/sqlite/files/sqlite-3.34.0-build_2.1.patch b/dev-db/sqlite/files/sqlite-3.34.0-build_2.1.patch
new file mode 100644
index 0000000..16210a6
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.34.0-build_2.1.patch
@@ -0,0 +1,291 @@
+Move some code to libsqlite3.so to avoid duplication.
+Link executables against libsqlite3.so.
+Increase timeout for fuzzcheck.
+Update list of optionally available functions.
+Fix building with dlopen() not available.
+
+SQLite revision: a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b
+
+--- /Makefile.in
++++ /Makefile.in
+@@ -313,6 +313,9 @@
+ # Source code for extensions
+ #
+ SRC += \
++  $(TOP)/ext/expert/sqlite3expert.c \
++  $(TOP)/ext/expert/sqlite3expert.h
++SRC += \
+   $(TOP)/ext/fts1/fts1.c \
+   $(TOP)/ext/fts1/fts1.h \
+   $(TOP)/ext/fts1/fts1_hash.c \
+@@ -365,8 +368,29 @@
+   $(TOP)/ext/rbu/sqlite3rbu.h \
+   $(TOP)/ext/rbu/sqlite3rbu.c
+ SRC += \
++  $(TOP)/ext/misc/amatch.c \
++  $(TOP)/ext/misc/appendvfs.c \
++  $(TOP)/ext/misc/carray.c \
++  $(TOP)/ext/misc/completion.c \
++  $(TOP)/ext/misc/csv.c \
++  $(TOP)/ext/misc/dbdata.c \
++  $(TOP)/ext/misc/decimal.c \
++  $(TOP)/ext/misc/eval.c \
++  $(TOP)/ext/misc/fileio.c \
++  $(TOP)/ext/misc/ieee754.c \
+   $(TOP)/ext/misc/json1.c \
+-  $(TOP)/ext/misc/stmt.c
++  $(TOP)/ext/misc/nextchar.c \
++  $(TOP)/ext/misc/percentile.c \
++  $(TOP)/ext/misc/regexp.c \
++  $(TOP)/ext/misc/series.c \
++  $(TOP)/ext/misc/sha1.c \
++  $(TOP)/ext/misc/shathree.c \
++  $(TOP)/ext/misc/sqlar.c \
++  $(TOP)/ext/misc/stmt.c \
++  $(TOP)/ext/misc/totype.c \
++  $(TOP)/ext/misc/uint.c \
++  $(TOP)/ext/misc/uuid.c \
++  $(TOP)/ext/misc/zipfile.c
+ 
+ # Generated source code files
+ #
+@@ -437,35 +461,21 @@
+ # Statically linked extensions
+ #
+ TESTSRC += \
+-  $(TOP)/ext/expert/sqlite3expert.c \
+   $(TOP)/ext/expert/test_expert.c \
+-  $(TOP)/ext/misc/amatch.c \
+-  $(TOP)/ext/misc/carray.c \
+   $(TOP)/ext/misc/cksumvfs.c \
+   $(TOP)/ext/misc/closure.c \
+-  $(TOP)/ext/misc/csv.c \
+-  $(TOP)/ext/misc/decimal.c \
+-  $(TOP)/ext/misc/eval.c \
+   $(TOP)/ext/misc/explain.c \
+-  $(TOP)/ext/misc/fileio.c \
+   $(TOP)/ext/misc/fuzzer.c \
+   $(TOP)/ext/fts5/fts5_tcl.c \
+   $(TOP)/ext/fts5/fts5_test_mi.c \
+   $(TOP)/ext/fts5/fts5_test_tok.c \
+-  $(TOP)/ext/misc/ieee754.c \
+   $(TOP)/ext/misc/mmapwarm.c \
+-  $(TOP)/ext/misc/nextchar.c \
+   $(TOP)/ext/misc/normalize.c \
+-  $(TOP)/ext/misc/percentile.c \
+   $(TOP)/ext/misc/prefixes.c \
+-  $(TOP)/ext/misc/regexp.c \
+   $(TOP)/ext/misc/remember.c \
+-  $(TOP)/ext/misc/series.c \
+   $(TOP)/ext/misc/spellfix.c \
+-  $(TOP)/ext/misc/totype.c \
+   $(TOP)/ext/misc/unionvtab.c \
+   $(TOP)/ext/misc/wholenumber.c \
+-  $(TOP)/ext/misc/zipfile.c \
+   $(TOP)/ext/userauth/userauth.c
+ 
+ # Source code to the library files needed by the test fixture
+@@ -647,25 +657,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
+@@ -776,7 +786,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
+ #
+@@ -1082,18 +1092,6 @@
+ # Source files that go into making shell.c
+ SHELL_SRC = \
+ 	$(TOP)/src/shell.c.in \
+-        $(TOP)/ext/misc/appendvfs.c \
+-	$(TOP)/ext/misc/completion.c \
+-        $(TOP)/ext/misc/decimal.c \
+-	$(TOP)/ext/misc/fileio.c \
+-        $(TOP)/ext/misc/ieee754.c \
+-        $(TOP)/ext/misc/series.c \
+-	$(TOP)/ext/misc/shathree.c \
+-	$(TOP)/ext/misc/sqlar.c \
+-        $(TOP)/ext/misc/uint.c \
+-	$(TOP)/ext/expert/sqlite3expert.c \
+-	$(TOP)/ext/expert/sqlite3expert.h \
+-	$(TOP)/ext/misc/zipfile.c \
+ 	$(TOP)/ext/misc/memtrace.c \
+         $(TOP)/src/test_windirent.c
+ 
+@@ -1263,11 +1261,11 @@
+ 
+ # Fuzz testing
+ fuzztest:	fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+-	./fuzzcheck$(TEXE) $(FUZZDATA)
++	./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA)
+ 	./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+ 
+ valgrindfuzz:	fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db
+-	valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA)
++	valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA)
+ 	valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db
+ 
+ # The veryquick.test TCL tests.
+@@ -1301,24 +1299,23 @@
+ shelltest: $(TESTPROGS)
+ 	./testfixture$(TEXT) $(TOP)/test/permutations.test shell
+ 
+-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 \
+@@ -1329,36 +1326,36 @@
+ sqlite3_checker.c:	$(CHECKER_DEPS)
+ 	$(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@
+ 
+-sqlite3_checker$(TEXE):	sqlite3_checker.c
+-	$(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS)
++sqlite3_checker$(TEXE):	sqlite3_checker.c libsqlite3.la
++	$(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL)
+ 
+-dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo
++dbdump$(TEXE):	$(TOP)/ext/misc/dbdump.c libsqlite3.la
+ 	$(LTLINK) -DDBDUMP_STANDALONE -o $@ \
+-           $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS)
++           $(TOP)/ext/misc/dbdump.c libsqlite3.la
+ 
+-dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c
+-	$(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c
++dbtotxt$(TEXE):	$(TOP)/tool/dbtotxt.c
++	$(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c
+ 
+-showdb$(TEXE):	$(TOP)/tool/showdb.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS)
++showdb$(TEXE):	$(TOP)/tool/showdb.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la
+ 
+-showstat4$(TEXE):	$(TOP)/tool/showstat4.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS)
++showstat4$(TEXE):	$(TOP)/tool/showstat4.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la
+ 
+-showjournal$(TEXE):	$(TOP)/tool/showjournal.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS)
++showjournal$(TEXE):	$(TOP)/tool/showjournal.c
++	$(LTLINK) -o $@ $(TOP)/tool/showjournal.c
+ 
+-showwal$(TEXE):	$(TOP)/tool/showwal.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS)
++showwal$(TEXE):	$(TOP)/tool/showwal.c
++	$(LTLINK) -o $@ $(TOP)/tool/showwal.c
+ 
+ showshm$(TEXE):	$(TOP)/tool/showshm.c
+ 	$(LTLINK) -o $@ $(TOP)/tool/showshm.c
+ 
+-index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo
+-	$(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS)
++index_usage$(TEXE):	$(TOP)/tool/index_usage.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la
+ 
+-changeset$(TEXE):	$(TOP)/ext/session/changeset.c sqlite3.lo
+-	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS)
++changeset$(TEXE):	$(TOP)/ext/session/changeset.c libsqlite3.la
++	$(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la
+ 
+ changesetfuzz$(TEXE):	$(TOP)/ext/session/changesetfuzz.c sqlite3.lo
+ 	$(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS)
+@@ -1383,11 +1380,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
+@@ -108,7 +108,7 @@
+ #########
+ # Figure out whether or not we have these functions
+ #
+-AC_CHECK_FUNCS([fdatasync gmtime_r isnan localtime_r localtime_s malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64])
++AC_CHECK_FUNCS([fdatasync fullfsync gmtime_r isnan localtime_r localtime_s malloc_usable_size posix_fallocate pread pread64 pwrite pwrite64 strchrnul usleep utime])
+ 
+ #########
+ # By default, we use the amalgamation (this may be changed below...)
+@@ -582,6 +582,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
diff --git a/dev-db/sqlite/files/sqlite-3.34.0-build_2.2.patch b/dev-db/sqlite/files/sqlite-3.34.0-build_2.2.patch
new file mode 100644
index 0000000..1aa60a0
--- /dev/null
+++ b/dev-db/sqlite/files/sqlite-3.34.0-build_2.2.patch
@@ -0,0 +1,441 @@
+Move some code to libsqlite3.so to avoid duplication.
+Initialize some extensions in libsqlite3.so.
+Update test suite.
+
+SQLite revision: a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b
+
+--- /ext/repair/sqlite3_checker.c.in
++++ /ext/repair/sqlite3_checker.c.in
+@@ -2,6 +2,7 @@
+ ** Read an SQLite database file and analyze its space utilization.  Generate
+ ** text on standard output.
+ */
++#define SQLITE_CORE 1
+ #define TCLSH_INIT_PROC sqlite3_checker_init_proc
+ #define SQLITE_ENABLE_DBPAGE_VTAB 1
+ #define SQLITE_ENABLE_JSON1 1
+@@ -14,7 +15,7 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ INCLUDE $ROOT/ext/misc/btreeinfo.c
+ INCLUDE $ROOT/ext/repair/checkindex.c
+--- /src/main.c
++++ /src/main.c
+@@ -50,12 +50,36 @@
+ #ifdef SQLITE_ENABLE_FTS5
+ int sqlite3Fts5Init(sqlite3*);
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++int sqlite3DbdataRegister(sqlite3*);
++#endif
+ #ifdef SQLITE_ENABLE_JSON1
+ int sqlite3Json1Init(sqlite3*);
+ #endif
+ #ifdef SQLITE_ENABLE_STMTVTAB
+ int sqlite3StmtVtabInit(sqlite3*);
+ #endif
++int sqlite3AmatchInit(sqlite3*);
++int sqlite3CarrayInit(sqlite3*);
++int sqlite3CompletionVtabInit(sqlite3*);
++int sqlite3CsvInit(sqlite3*);
++int sqlite3DecimalInit(sqlite3*);
++int sqlite3EvalInit(sqlite3*);
++int sqlite3FileioInit(sqlite3*);
++int sqlite3IeeeInit(sqlite3*);
++int sqlite3NextcharInit(sqlite3*);
++int sqlite3PercentileInit(sqlite3*);
++int sqlite3RegexpInit(sqlite3*);
++int sqlite3SeriesInit(sqlite3*);
++int sqlite3ShaInit(sqlite3*);
++int sqlite3ShathreeInit(sqlite3*);
++int sqlite3TotypeInit(sqlite3*);
++int sqlite3UintInit(sqlite3*);
++int sqlite3UuidInit(sqlite3*);
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++int sqlite3ZipfileInit(sqlite3*);
++int sqlite3SqlarInit(sqlite3*);
++#endif
+ 
+ /*
+ ** An array of pointers to extension initializer functions for
+@@ -83,6 +107,9 @@
+ #ifdef SQLITE_ENABLE_DBPAGE_VTAB
+   sqlite3DbpageRegister,
+ #endif
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
++  sqlite3DbdataRegister,
++#endif
+ #ifdef SQLITE_ENABLE_DBSTAT_VTAB
+   sqlite3DbstatRegister,
+ #endif
+@@ -96,6 +123,27 @@
+ #ifdef SQLITE_ENABLE_BYTECODE_VTAB
+   sqlite3VdbeBytecodeVtabInit,
+ #endif
++  sqlite3AmatchInit,
++  sqlite3CarrayInit,
++  sqlite3CompletionVtabInit,
++  sqlite3CsvInit,
++  sqlite3DecimalInit,
++  sqlite3EvalInit,
++  sqlite3FileioInit,
++  sqlite3IeeeInit,
++  sqlite3NextcharInit,
++  sqlite3PercentileInit,
++  sqlite3RegexpInit,
++  sqlite3SeriesInit,
++  sqlite3ShaInit,
++  sqlite3ShathreeInit,
++  sqlite3TotypeInit,
++  sqlite3UintInit,
++  sqlite3UuidInit,
++#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB)
++  sqlite3ZipfileInit,
++  sqlite3SqlarInit,
++#endif
+ };
+ 
+ #ifndef SQLITE_AMALGAMATION
+--- /src/shell.c.in
++++ /src/shell.c.in
+@@ -69,6 +69,7 @@
+ #include <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;
+@@ -135,6 +136,10 @@
+ # define SHELL_USE_LOCAL_GETLINE 1
+ #endif
+ 
++#ifdef SQLITE_HAVE_ZLIB
++#include <zlib.h>
++#endif
++
+ 
+ #if defined(_WIN32) || defined(WIN32)
+ # if SQLITE_OS_WINRT
+@@ -1018,25 +1023,7 @@
+ INCLUDE test_windirent.c
+ #define dirent DIRENT
+ #endif
+-INCLUDE ../ext/misc/shathree.c
+-INCLUDE ../ext/misc/fileio.c
+-INCLUDE ../ext/misc/completion.c
+-INCLUDE ../ext/misc/appendvfs.c
+ INCLUDE ../ext/misc/memtrace.c
+-INCLUDE ../ext/misc/uint.c
+-INCLUDE ../ext/misc/decimal.c
+-INCLUDE ../ext/misc/ieee754.c
+-INCLUDE ../ext/misc/series.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE ../ext/misc/zipfile.c
+-INCLUDE ../ext/misc/sqlar.c
+-#endif
+-INCLUDE ../ext/expert/sqlite3expert.h
+-INCLUDE ../ext/expert/sqlite3expert.c
+-
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+-INCLUDE ../ext/misc/dbdata.c
+-#endif
+ 
+ #if defined(SQLITE_ENABLE_SESSION)
+ /*
+@@ -4608,20 +4595,6 @@
+ #ifndef SQLITE_OMIT_LOAD_EXTENSION
+     sqlite3_enable_load_extension(p->db, 1);
+ #endif
+-    sqlite3_fileio_init(p->db, 0, 0);
+-    sqlite3_shathree_init(p->db, 0, 0);
+-    sqlite3_completion_init(p->db, 0, 0);
+-    sqlite3_uint_init(p->db, 0, 0);
+-    sqlite3_decimal_init(p->db, 0, 0);
+-    sqlite3_ieee_init(p->db, 0, 0);
+-    sqlite3_series_init(p->db, 0, 0);
+-#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB)
+-    sqlite3_dbdata_init(p->db, 0, 0);
+-#endif
+-#ifdef SQLITE_HAVE_ZLIB
+-    sqlite3_zipfile_init(p->db, 0, 0);
+-    sqlite3_sqlar_init(p->db, 0, 0);
+-#endif
+     sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0,
+                             shellAddSchemaName, 0, 0);
+     sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0,
+@@ -6644,8 +6617,6 @@
+         );
+         goto end_ar_command;
+       }
+-      sqlite3_fileio_init(cmd.db, 0, 0);
+-      sqlite3_sqlar_init(cmd.db, 0, 0);
+       sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p,
+                               shellPutsFunc, 0, 0);
+ 
+@@ -11076,6 +11047,7 @@
+ #endif
+   }
+   data.out = stdout;
++  extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *);
+   sqlite3_appendvfs_init(0,0,0);
+ 
+   /* Go ahead and open the database file if it already exists.  If the
+--- /src/test_config.c
++++ /src/test_config.c
+@@ -353,6 +353,8 @@
+   Tcl_SetVar2(interp, "sqlite_options", "datetime", "1", TCL_GLOBAL_ONLY);
+ #endif
+ 
++  Tcl_SetVar2(interp, "sqlite_options", "decimal", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_DECLTYPE
+   Tcl_SetVar2(interp, "sqlite_options", "decltype", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -540,6 +542,8 @@
+   Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY);
+ #endif
+ 
++  Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_REINDEX
+   Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY);
+ #else
+@@ -662,6 +666,8 @@
+   Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY);
+ #endif
+ 
++  Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY);
++
+ #ifdef SQLITE_OMIT_UTF16
+   Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY);
+ #else
+--- /test/e_expr.test
++++ /test/e_expr.test
+@@ -1079,7 +1079,7 @@
+ #
+ #   There is a regexp function if ICU is enabled though.
+ #
+-ifcapable !icu {
++ifcapable !icu&&!regexp {
+   do_catchsql_test e_expr-18.1.1 { 
+     SELECT regexp('abc', 'def') 
+   } {1 {no such function: regexp}}
+--- /test/icu.test
++++ /test/icu.test
+@@ -41,7 +41,7 @@
+   #
+   test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'}  1
+   test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'}  1
+-  test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'}   0
++  test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'}  0
+   test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1
+   test_expr icu-1.5 {i1=NULL}    {i1 REGEXP '.ell.*'} {}
+ 
+--- /test/pragma.test
++++ /test/pragma.test
+@@ -1370,17 +1370,62 @@
+ } ;# ifcapable trigger
+ 
+ ifcapable schema_pragmas {
+-  do_test pragma-11.1 {
+-    execsql2 {
+-      pragma collation_list;
++  ifcapable decimal {
++    ifcapable uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name UINT seq 1 name decimal seq 2 name RTRIM seq 3 name NOCASE seq 4 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 UINT 2 decimal 3 RTRIM 4 NOCASE 5 BINARY}
+     }
+-  } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
+-  do_test pragma-11.2 {
+-    db collate New_Collation blah...
+-    execsql {
+-      pragma collation_list;
++    ifcapable !uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name decimal seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 decimal 2 RTRIM 3 NOCASE 4 BINARY}
+     }
+-  } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++  }
++  ifcapable !decimal {
++    ifcapable uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY}
++    }
++    ifcapable !uint {
++      do_test pragma-11.1 {
++        execsql2 {
++          pragma collation_list;
++        }
++      } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY}
++      do_test pragma-11.2 {
++        db collate New_Collation blah...
++        execsql {
++          pragma collation_list;
++        }
++      } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY}
++    }
++  }
+ }
+ 
+ ifcapable schema_pragmas&&tempdb {
+--- /test/sessionfuzz.c
++++ /test/sessionfuzz.c
+@@ -698,49 +698,6 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <assert.h>
+-#ifndef OMIT_ZLIB
+-#include "zlib.h"
+-#endif
+-
+-/*
+-** Implementation of the "sqlar_uncompress(X,SZ)" SQL function
+-**
+-** Parameter SZ is interpreted as an integer. If it is less than or
+-** equal to zero, then this function returns a copy of X. Or, if
+-** SZ is equal to the size of X when interpreted as a blob, also
+-** return a copy of X. Otherwise, decompress blob X using zlib
+-** utility function uncompress() and return the results (another
+-** blob).
+-*/
+-static void sqlarUncompressFunc(
+-  sqlite3_context *context,
+-  int argc,
+-  sqlite3_value **argv
+-){
+-#ifdef OMIT_ZLIB
+-  sqlite3_result_value(context, argv[0]);
+-#else
+-  uLong nData;
+-  uLongf sz;
+-
+-  assert( argc==2 );
+-  sz = sqlite3_value_int(argv[1]);
+-
+-  if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){
+-    sqlite3_result_value(context, argv[0]);
+-  }else{
+-    const Bytef *pData= sqlite3_value_blob(argv[0]);
+-    Bytef *pOut = sqlite3_malloc(sz);
+-    if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){
+-      sqlite3_result_error(context, "error in uncompress()", -1);
+-    }else{
+-      sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT);
+-    }
+-    sqlite3_free(pOut);
+-  }
+-#endif
+-}
+-
+ 
+ /* Run a chunk of SQL.  If any errors happen, print an error message
+ ** and exit.
+--- /tool/mksqlite3c.tcl
++++ /tool/mksqlite3c.tcl
+@@ -129,6 +129,7 @@
+    rtree.h
+    sqlite3session.h
+    sqlite3.h
++   sqlite3expert.h
+    sqlite3ext.h
+    sqlite3rbu.h
+    sqliteicu.h
+@@ -416,6 +417,28 @@
+    sqlite3session.c
+    fts5.c
+    stmt.c
++   amatch.c
++   appendvfs.c
++   carray.c
++   completion.c
++   csv.c
++   dbdata.c
++   decimal.c
++   eval.c
++   fileio.c
++   ieee754.c
++   nextchar.c
++   percentile.c
++   regexp.c
++   series.c
++   sha1.c
++   shathree.c
++   sqlar.c
++   sqlite3expert.c
++   totype.c
++   uint.c
++   uuid.c
++   zipfile.c
+ } {
+   copy_file tsrc/$file
+ }
+--- /tool/sqlite3_analyzer.c.in
++++ /tool/sqlite3_analyzer.c.in
+@@ -14,9 +14,6 @@
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+ #define SQLITE_OMIT_LOAD_EXTENSION 1
+-#ifndef USE_EXTERNAL_SQLITE
+-INCLUDE sqlite3.c
+-#endif
+ INCLUDE $ROOT/src/tclsqlite.c
+ 
+ const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
+--- /tool/sqltclsh.c.in
++++ /tool/sqltclsh.c.in
+@@ -27,21 +27,13 @@
+ #define SQLITE_OMIT_SHARED_CACHE 1
+ #define SQLITE_DEFAULT_MEMSTATUS 0
+ #define SQLITE_MAX_EXPR_DEPTH 0
+-INCLUDE sqlite3.c
+-INCLUDE $ROOT/ext/misc/appendvfs.c
+-#ifdef SQLITE_HAVE_ZLIB
+-INCLUDE $ROOT/ext/misc/zipfile.c
+-INCLUDE $ROOT/ext/misc/sqlar.c
+-#endif
++#include "sqlite3.h"
+ INCLUDE $ROOT/src/tclsqlite.c
+ 
+ const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){
+   (void)interp;
++  extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *);
+   sqlite3_appendvfs_init(0,0,0);
+-#ifdef SQLITE_HAVE_ZLIB
+-  sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init);
+-  sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init);
+-#endif
+ 
+   return
+ BEGIN_STRING
diff --git a/dev-db/sqlite/sqlite-3.33.0-r1.ebuild b/dev-db/sqlite/sqlite-3.33.0-r1.ebuild
new file mode 120000
index 0000000..5d149f6
--- /dev/null
+++ b/dev-db/sqlite/sqlite-3.33.0-r1.ebuild
@@ -0,0 +1 @@
+sqlite-3.33.0.ebuild
\ No newline at end of file
diff --git a/dev-db/sqlite/sqlite-3.31.1.ebuild b/dev-db/sqlite/sqlite-3.33.0.ebuild
similarity index 75%
rename from dev-db/sqlite/sqlite-3.31.1.ebuild
rename to dev-db/sqlite/sqlite-3.33.0.ebuild
index dfea153..fba288a 100644
--- a/dev-db/sqlite/sqlite-3.31.1.ebuild
+++ b/dev-db/sqlite/sqlite-3.33.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
@@ -16,11 +16,8 @@
 if [[ "${PV}" == "9999" ]]; then
 	SRC_URI=""
 else
-	SRC_URI="doc? ( https://sqlite.org/2020/${PN}-doc-${DOC_PV}.zip )
-		tcl? ( https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip )
-		test? ( https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip )
-		tools? ( https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip )
-		!tcl? ( !test? ( !tools? ( https://sqlite.org/2020/${PN}-autoconf-${SRC_PV}.tar.gz ) ) )"
+	SRC_URI="https://sqlite.org/2020/${PN}-src-${SRC_PV}.zip
+		doc? ( https://sqlite.org/2020/${PN}-doc-${DOC_PV}.zip )"
 fi
 
 LICENSE="public-domain"
@@ -36,19 +33,8 @@
 	BDEPEND=">=dev-lang/tcl-8.6:0
 		dev-vcs/fossil"
 else
-	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
-		)"
+	BDEPEND="app-arch/unzip
+		>=dev-lang/tcl-8.6:0"
 fi
 RDEPEND="sys-libs/zlib:0=[${MULTILIB_USEDEP}]
 	icu? ( dev-libs/icu:0=[${MULTILIB_USEDEP}] )
@@ -58,21 +44,11 @@
 DEPEND="${RDEPEND}
 	test? ( >=dev-lang/tcl-8.6:0[${MULTILIB_USEDEP}] )"
 
-full_archive() {
-	[[ "${PV}" == "9999" ]] || use tcl || use test || use tools
-}
-
-pkg_setup() {
-	if [[ "${PV}" == "9999" ]]; then
-		S="${WORKDIR}/${PN}"
-	else
-		if full_archive; then
-			S="${WORKDIR}/${PN}-src-${SRC_PV}"
-		else
-			S="${WORKDIR}/${PN}-autoconf-${SRC_PV}"
-		fi
-	fi
-}
+if [[ "${PV}" == "9999" ]]; then
+	S="${WORKDIR}/${PN}"
+else
+	S="${WORKDIR}/${PN}-src-${SRC_PV}"
+fi
 
 src_unpack() {
 	if [[ "${PV}" == "9999" ]]; then
@@ -123,30 +99,9 @@
 }
 
 src_prepare() {
-	if full_archive; then
-		eapply "${FILESDIR}/${PN}-3.31.0-full_archive-build.patch"
-		eapply "${FILESDIR}/${PN}-3.31.1-full_archive-architectures.patch"
-		eapply "${FILESDIR}/${PN}-3.31.1-full_archive-security_fixes.patch"
+	eapply "${FILESDIR}/"${PN}-3.33.0-build_{1.1,1.2,2.1,2.2}.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 "${FILESDIR}/${PN}-3.31.1-nonfull_archive-architectures.patch"
-		eapply "${FILESDIR}/${PN}-3.31.1-nonfull_archive-security_fixes.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
+	eapply_user
 
 	eautoreconf
 
@@ -158,26 +113,31 @@
 	local options=()
 
 	options+=(
-		--enable-$(full_archive && echo load-extension || echo dynamic-extensions)
+		--enable-load-extension
 		--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 bytecode and tables_used virtual tables.
+	# https://sqlite.org/compile.html#enable_bytecode_vtab
+	# https://sqlite.org/bytecodevtab.html
+	append-cppflags -DSQLITE_ENABLE_BYTECODE_VTAB
+
 	# Support column metadata functions.
+	# https://sqlite.org/compile.html#enable_column_metadata
 	# 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
+	# https://sqlite.org/dbpage.html
 	append-cppflags -DSQLITE_ENABLE_DBPAGE_VTAB
 
 	# Support dbstat virtual table.
+	# https://sqlite.org/compile.html#enable_dbstat_vtab
 	# https://sqlite.org/dbstat.html
 	append-cppflags -DSQLITE_ENABLE_DBSTAT_VTAB
 
@@ -192,6 +152,10 @@
 	append-cppflags -DSQLITE_ENABLE_EXPLAIN_COMMENTS
 
 	# Support Full-Text Search versions 3, 4 and 5.
+	# https://sqlite.org/compile.html#enable_fts3
+	# https://sqlite.org/compile.html#enable_fts3_parenthesis
+	# https://sqlite.org/compile.html#enable_fts4
+	# https://sqlite.org/compile.html#enable_fts5
 	# https://sqlite.org/fts3.html
 	# https://sqlite.org/fts5.html
 	append-cppflags -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4
@@ -201,10 +165,12 @@
 	append-cppflags -DSQLITE_ENABLE_HIDDEN_COLUMNS
 
 	# Support JSON1 extension.
+	# https://sqlite.org/compile.html#enable_json1
 	# https://sqlite.org/json1.html
 	append-cppflags -DSQLITE_ENABLE_JSON1
 
 	# Support memsys5 memory allocator.
+	# https://sqlite.org/compile.html#enable_memsys5
 	# https://sqlite.org/malloc.html#memsys5
 	append-cppflags -DSQLITE_ENABLE_MEMSYS5
 
@@ -213,76 +179,78 @@
 	append-cppflags -DSQLITE_ENABLE_NORMALIZE
 
 	# Support sqlite_offset() function.
+	# https://sqlite.org/compile.html#enable_offset_sql_func
 	# https://sqlite.org/lang_corefunc.html#sqlite_offset
 	append-cppflags -DSQLITE_ENABLE_OFFSET_SQL_FUNC
 
 	# Support pre-update hook functions.
+	# https://sqlite.org/compile.html#enable_preupdate_hook
 	# https://sqlite.org/c3ref/preupdate_count.html
 	append-cppflags -DSQLITE_ENABLE_PREUPDATE_HOOK
 
 	# Support Resumable Bulk Update extension.
+	# https://sqlite.org/compile.html#enable_rbu
 	# https://sqlite.org/rbu.html
 	append-cppflags -DSQLITE_ENABLE_RBU
 
 	# Support R*Trees.
+	# https://sqlite.org/compile.html#enable_rtree
+	# https://sqlite.org/compile.html#enable_geopoly
 	# https://sqlite.org/rtree.html
 	# https://sqlite.org/geopoly.html
 	append-cppflags -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY
 
+	# Support Session extension.
+	# https://sqlite.org/compile.html#enable_session
+	# https://sqlite.org/sessionintro.html
+	append-cppflags -DSQLITE_ENABLE_SESSION
+
 	# Support scan status functions.
+	# https://sqlite.org/compile.html#enable_stmt_scanstatus
 	# 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/compile.html#enable_stmtvtab
 	# 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/compile.html#enable_unlock_notify
+	# https://sqlite.org/c3ref/unlock_notify.html
 	# 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
+	# https://sqlite.org/lang_delete.html#optional_limit_and_order_by_clauses
+	# https://sqlite.org/lang_update.html#optional_limit_and_order_by_clauses
 	append-cppflags -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT
 
 	# Support soundex() function.
+	# https://sqlite.org/compile.html#soundex
 	# https://sqlite.org/lang_corefunc.html#soundex
 	append-cppflags -DSQLITE_SOUNDEX
 
 	# Support URI filenames.
+	# https://sqlite.org/compile.html#use_uri
 	# 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
+	options+=($(use_enable debug))
 
 	# 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
+		sed -e "s/^TLIBS = @LIBS@/& -licui18n -licuuc/" -i Makefile.in || die "sed failed"
 	fi
 
 	# readline USE flag.
@@ -290,13 +258,14 @@
 		--disable-editline
 		$(use_enable readline)
 	)
-	if full_archive && use readline; then
-		options+=(--with-readline-inc="-I${EPREFIX}/usr/include/readline")
+	if use readline; then
+		options+=(--with-readline-inc="-I${ESYSROOT}/usr/include/readline")
 	fi
 
 	# secure-delete USE flag.
 	if use secure-delete; then
 		# Enable secure_delete pragma by default.
+		# https://sqlite.org/compile.html#secure_delete
 		# https://sqlite.org/pragma.html#pragma_secure_delete
 		append-cppflags -DSQLITE_SECURE_DELETE
 	fi
@@ -305,11 +274,11 @@
 	options+=($(use_enable static-libs static))
 
 	# tcl, test, tools USE flags.
-	if full_archive; then
-		options+=(--enable-tcl)
-	fi
+	options+=(--enable-tcl)
 
 	if [[ "${CHOST}" == *-mint* ]]; then
+		# sys/mman.h not available in MiNTLib.
+		# https://sqlite.org/compile.html#omit_wal
 		append-cppflags -DSQLITE_OMIT_WAL
 	fi
 
@@ -383,10 +352,16 @@
 	doman sqlite3.1
 
 	if use doc; then
-		rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt} || die
+		if [[ "${PV}" == "9999" ]]; then
+			pushd "${WORKDIR}/${PN}-doc" > /dev/null || die
+		else
+			pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die
+		fi
+		rm *.db *.txt || die
 		(
 			docinto html
-			dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"*
+			dodoc -r *
 		)
+		popd > /dev/null || die
 	fi
 }
diff --git a/metadata/md5-cache/dev-db/sqlite-3.31.1 b/metadata/md5-cache/dev-db/sqlite-3.33.0
similarity index 83%
rename from metadata/md5-cache/dev-db/sqlite-3.31.1
rename to metadata/md5-cache/dev-db/sqlite-3.33.0
index 0c1a5b1..c090143 100644
--- a/metadata/md5-cache/dev-db/sqlite-3.31.1
+++ b/metadata/md5-cache/dev-db/sqlite-3.33.0
@@ -1,5 +1,5 @@
-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 ) >=app-portage/elt-patches-20170815
-DEFINED_PHASES=compile configure install prepare setup test unpack
+BDEPEND=app-arch/unzip >=dev-lang/tcl-8.6:0 >=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install prepare test unpack
 DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) test? ( >=dev-lang/tcl-8.6:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
 DESCRIPTION=SQL database engine
 EAPI=7
@@ -10,6 +10,6 @@
 RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] icu? ( dev-libs/icu:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) readline? ( sys-libs/readline:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tcl? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tools? ( dev-lang/tcl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
 RESTRICT=!test? ( test )
 SLOT=3
-SRC_URI=doc? ( https://sqlite.org/2020/sqlite-doc-3310100.zip ) tcl? ( https://sqlite.org/2020/sqlite-src-3310100.zip ) test? ( https://sqlite.org/2020/sqlite-src-3310100.zip ) tools? ( https://sqlite.org/2020/sqlite-src-3310100.zip ) !tcl? ( !test? ( !tools? ( https://sqlite.org/2020/sqlite-autoconf-3310100.tar.gz ) ) )
+SRC_URI=https://sqlite.org/2020/sqlite-src-3330000.zip doc? ( https://sqlite.org/2020/sqlite-doc-3330000.zip )
 _eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	06133990e861be0fe60c2b428fd025d9	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	b2f01ad412baf81650c23fcf0975fa33	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	209edad4a5c4812e7b2f8021650974f0
-_md5_=e840b461df7d8f3292b3ba04d0458a5a
+_md5_=7979a292b91becf07e133263e8cd19e3