diff options
Diffstat (limited to 'dev-db/sqlite')
-rw-r--r-- | dev-db/sqlite/Manifest | 17 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch | 640 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.32.3-backports_1.patch | 361 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.32.3-backports_2.patch | 302 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.32.3-backports_3.patch | 220 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.34.0-build_1.1.patch | 375 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.34.0-build_1.2.patch (renamed from dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch) | 296 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.34.0-build_2.1.patch | 291 | ||||
-rw-r--r-- | dev-db/sqlite/files/sqlite-3.34.0-build_2.2.patch | 441 | ||||
-rw-r--r-- | dev-db/sqlite/sqlite-3.33.0.ebuild | 2 | ||||
-rw-r--r-- | dev-db/sqlite/sqlite-3.34.0.ebuild (renamed from dev-db/sqlite/sqlite-3.32.3-r1.ebuild) | 188 |
11 files changed, 1317 insertions, 1816 deletions
diff --git a/dev-db/sqlite/Manifest b/dev-db/sqlite/Manifest index a18565b87df8..e8b94804ae1d 100644 --- a/dev-db/sqlite/Manifest +++ b/dev-db/sqlite/Manifest @@ -1,16 +1,15 @@ -AUX sqlite-3.32.1-full_archive-build_1.patch 18726 BLAKE2B 91906aa09514d6f31a87648d7a12fd7a187cbc328bc1d2e41dcd0d041c1ad1959953823af5b84994d742dfcba46727af5797fe83c576ae483133156abbb00f1c SHA512 b206d2767ac9312165085b623f06cf19d36e4fa85c33bce67db56ae41880374ae4115294f417de67f32f6ea9200b028160cdde3ad3420c5ad342b7ec0928fa87 -AUX sqlite-3.32.1-full_archive-build_2.patch 20259 BLAKE2B 851918379951943ac02fc5bd5b4807f05e9faf2a7e3d01d945761801beeb25c4083bdb5b48ddb79f9e54b859932fffbb393eadfa3ae16ea400e7490fb730170a SHA512 cf4a74ebb0e7b81b3225bd6d38fde663b981d6e5217996a0c80a4880a3818d7b84c39ed6527573426b2d0deebff74b46775c2ca91b8b6503e2f26758d9eb2ad3 -AUX sqlite-3.32.3-backports_1.patch 17914 BLAKE2B cca0c1d7e1bcccbf9042725f7df32359c954725e4a13e6956dc642aa082abe85953df98f4d3ba59c11599c3a9595126da78600ad0d4a66dce987be45f17c582e SHA512 44f91b92d6c8086b10cd96a382ea391108bde5a2e48f2b9ae43e97fe9fa9d5f4c64ee500bb8ed4414dd519f85823121265c450e92898d13468297d7bf9d28ddc -AUX sqlite-3.32.3-backports_2.patch 18056 BLAKE2B 60be3513c3cc687e8fac5689f096a8e543904dfd8f5e3f01f92245de963cc01b7f02774b0a60b2ca3fe3415d0eb3615f65e8756e174efccc98dc5438dbf2189c SHA512 4bb01074417f3e3af6bdf619c0ccc61fe54f4e926a1dd31a57e1a595cc713e58ee52cac7baa11ffa271ed434a8bb645be7fd25a9fa93cc596707f2e503fe87a1 -AUX sqlite-3.32.3-backports_3.patch 9059 BLAKE2B 4c36eafca13eab04bfb0ce871458d12925b225f05edce785f7f86650de31808179d8bebeffcc23ca8f68069fa2854b7a042ef91e85705b27e85af1b3c424ced8 SHA512 c897d7ebc9b8b5f29c8ed27e76bdeeb3a0bde62fcd4f5398deca2f97c99cc2ef5556389b0c79dced64982fbde2a6322abd91e134255156b572bca476e2a7c050 AUX sqlite-3.33.0-build_1.1.patch 10634 BLAKE2B a0e1ae459a164174a08a434dbb9a5248f01097b71c5d6b332a171d06692aaec25ec0a3cfaa584dbdc0551ce4ce2d354d521b1fa610bedd15cd16c3aca988fe0f SHA512 74faa564b7c4eef810a27850bdd96d87577bd9c0fa627de31021cb9974e03805f3d1bf85f86780aff1c9dfa6351a9af37081d4f3776c08d0e6cfbcbd6a452426 AUX sqlite-3.33.0-build_1.2.patch 12113 BLAKE2B f2fee819a5fe4ebc485c15a93072a280b3cb76c609dc9b5b6eeb2c9fb7210e9f4ac67018e2dc8fd3b345e7d7c9a4093b54839d280ab8d113e55db4c94055143b SHA512 92eaee1bb1d6a452b583855df03f7314907467d95000deb0177f4073e36c9b49aaafb10b137fcd5aad45eac20bf667849e005da26698df328ee9ec0e342bce92 AUX sqlite-3.33.0-build_2.1.patch 10889 BLAKE2B 93c1ce843e636cf495c184c0e50b695308123280cdddac4c1b1e7fa53c37db96c3760e814751fa45531862901d1d60512fa47cccb338c96a0d4519312d08eda0 SHA512 43946c58b90160f706ae66fe3af2881d22e0985d1eccef9389b72695311b06631a9cd5fdf267e077c8070906eecb78ccc3a4e5774890f4f54fbf9e2343fb7dd5 AUX sqlite-3.33.0-build_2.2.patch 11986 BLAKE2B 27cd42308436d5708771c11d085464350307d0c052e8df4175442ed6f3e412622eb42bf252538244f8b64164466b9d238194130d580ce75c2bbad84fb2552431 SHA512 a958ba2dbb16db0999cbd2a5d0427159c8ef186e461169b96a12c974caf6c353c8fd1522b4d9f52e1ce5b5eddd8d0fd658fef0eabd14465b2598cc974d8785d1 -DIST sqlite-doc-3320300.zip 9772933 BLAKE2B efd72c18d0398c103e3f9c4cfeb03e7794fd69691b1bcea95b74a0c5d8af22aa13abc84ce8dc5864b5f4cb79be239433933b4daca34d1adfcc6f31ce2cde66bf SHA512 af9dca970b4c03c058d7d1cd55a3d11fa4b112dccac942b8660d82a7e9ba2956963fcb429eedfdc85915637c102e1f904ace98c8e0455c4120422bbd9f2f3cd0 +AUX sqlite-3.34.0-build_1.1.patch 9731 BLAKE2B 18e1fdfc8f0ae531340f8173b77bf63dd4d724c7ce92ae93f0788cbac94e5bff704eda3a0d6b513f259d0c54a5cfe1fad16ee0dc47ae58b46ca58759b5a9c3b0 SHA512 2e047f746f54a89e60bcccf5904f79ec1b3b8f08c130ee74418a71dec0ff1f669834a053ed4a837e4327ab4fbb54fa44efecc6c1c463546f186712250a65e93a +AUX sqlite-3.34.0-build_1.2.patch 14103 BLAKE2B 0d52e5b11e71fe6a47104bccbc0ef949baccd70b8378ff8a0248cd0d06f03320ce07bdd9c61b6185384113a0888d27cc357fdb43f264a5bdd248c14d86011bb9 SHA512 cbc89164540c57d427814195c39269496e45bc2bf400a49e59edf17e81545ae73ee6639100ff356683a8ab1776f332c368b4b1653f07ef2a530fd7143af6dba5 +AUX sqlite-3.34.0-build_2.1.patch 11070 BLAKE2B 6368c4fad56ed33c4778795124a14477b502c8b832b5c0d9a78b945e051c53d89b584393222680d9366c101928c2a7062f7475dd886188fa1ca15ad16a655758 SHA512 57f5cd5edc5fa42c04a4d5eefb995bd221f236a835fd06e54dbcfd5f89c902712a259d1cb3faf2ed6364c82e2642af7f69ae8f3b6f71a8e6016900879cd374cb +AUX sqlite-3.34.0-build_2.2.patch 12207 BLAKE2B 5c0ca0ed89c37fdb80430df1f8f1bc6649131535d80581885780382f617607950e35ae97c949904d9a45995241d98ec2885db42a1886b466ede6ab20373e29cc SHA512 66ac76f25606c8cbd64beff2abe4ef000b3a3320dc5949d8c88e29d3bede0cd5e0cd96d7fe41ba51c8920fbbc66d3e6e82df6896b323c4960617a29e5c9857e4 DIST sqlite-doc-3330000.zip 9834159 BLAKE2B f67155a8ce8e46c2fbc0a4e35722d1fcad86e905a15230adc70732cee267b6b2002c7499883b938129aaa908b99634e4214360e9d1dbdae333b09060de24530e SHA512 14a3cccb4ff6af57738990eeadd37a1b827f89c9c1b16201c62ca5bb9301d39223d48677b9c269ce332210e5c9ae3f42aa0f9de7d79b38acb9809c732d038368 -DIST sqlite-src-3320300.zip 12461750 BLAKE2B 59cce74d284191cfc69ac09b6014701ddd2b7b3d7ebaad5da4ad71cc200e70285b3b201ff174819aa8dde5f610589d7947f547450334f0f17149014078316185 SHA512 7e027c7163a760fb9b6dbfd2e4ccffb39d4972280583fb0d7f8390017101dfed3b12a36653b3130a548ae4d04c6abb11c0a1921b6f09c54c6ae1e72fbdcb2fd4 +DIST sqlite-doc-3340000.zip 10069888 BLAKE2B 343df62bc8b75d57dffe69c779cceb856d9e94a5b2a77c3a972761eedd8b4b0f5f8849102ec271652c3aa4039df75d7f2e503fd04b0547be03e024fdfbd894ac SHA512 1bdf20030e656ec4ce38a264c8ef7a95c9f2731cd7d756a44b35b6c68827e8aba92018007139ee09d1c27b34bcd72bff1a201dc3f30aa13e96120af5d58e835e DIST sqlite-src-3330000.zip 12591089 BLAKE2B 14888bca229683e97c4666f8efb535be5bd3e322de0089f0175ba15e038016be3a3cc00b5bfa8c111538116914cf6d8439839ca5d1e20339b184e547ddf260a4 SHA512 3260e3e03ee2f6a4ff2bc4ea4bada5a1497afeca33878c155a8005824970c6c1eb8a2db58eb3023cab084af475fadb81d1c3c9892ae92c07f884881e6602e173 -EBUILD sqlite-3.32.3-r1.ebuild 10369 BLAKE2B c997121e13e1f2b86128e18a86d7260f340f4a1be42b8ff2c02a34b13689f883572352e4e3c9ada1dbfccd2e215d8d1e6b18e912a6d966bb76112aaba241bb53 SHA512 39c97994f1f8d505055701173ebdf41732dbce2b4071c5a4b2e17a8d29f09ae92a2b731521fcf2a33ad5821cb18e9bd790dd1789d4fe9e3e9002786e34caf8ca -EBUILD sqlite-3.33.0.ebuild 11469 BLAKE2B 444a4ee89e2229700aeab30831a586394bfe4fe06bc2002c551069d6dfc632602afce1760f2d9e34ddba94f6d4d13d9db8498cc19262e65b30b590b788285c4e SHA512 974283ca1708c9be89bb50f845ab38db79a59cd84c42817d4a502ddf3a5f60714b62388f3a5132c363e50c580a1007883dd6c06c6334c6119c49b0fc204b4935 +DIST sqlite-src-3340000.zip 12623425 BLAKE2B 548293cf0166407727cd068804eb5e1ce62f654533c88a87b71a6ff62da37eb2af21b89b8d63ee677777ca917e0d685ddcf9b8d5c3c8b2a2b787d71da8e5a161 SHA512 520fbca59da02452e2861a140bde891aedfc8254eafaa6894e8d845369d60d6a921595a411efb2611c0f7b0cadd69a713dcdaaeaad1e4254e9fd9a6efde07f91 +EBUILD sqlite-3.33.0.ebuild 11449 BLAKE2B 3ac96e68bca13d3a21f187a93a6ef5ec3c45d635b5e95db8d5113f3a387eebcd5dee83d47f9af9428a2163b29a883b01110c52a842b1bbd922f90ab975149d4c SHA512 a7eaac0ba891c665bb4648773f102ccd675304eafd6046094b5be584e271cb4b76e7b47321e3375680201e90882e8f8307b95104d0efe9b73a6e69011e455db5 +EBUILD sqlite-3.34.0.ebuild 13024 BLAKE2B 85fd54256203ffea9aeb9db78f80c0f6ca91ed21707c81fcebdb2a3fe9a544eb698636317d3578ee36c199b5c92993dec3bbcf0291892364a60d3defda6b5920 SHA512 8e4b342a078f607b11e10447e2499a34216a6be9c67ceeec5cbe4b2836be9aefc8ce64aaa6b1480e19186644140a1a970a40d45812632bc6813bcf7c6c45965f MISC metadata.xml 748 BLAKE2B c58da3e33e12b7747bbadacfd1a6137cf847fd5bd0525fc02ef854eb5bcad7bad0b29739257b632e19190995659768fdea418ffa7e485e55ef15f40f58b8382c SHA512 66f3f134065f76229b74a7ab7b469066a93da737a9037435e6fe78e85f45c980ec561537f2bb9b95db9de026bad025d8b06682187c97dedd2741717e893d43da diff --git a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch b/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch deleted file mode 100644 index f12c0b22a483..000000000000 --- a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_2.patch +++ /dev/null @@ -1,640 +0,0 @@ -Enable some extensions in libsqlite3.so. -Move some code to libsqlite3.so to avoid duplication. -Link executables against libsqlite3.so. -Increase timeout for fuzzcheck. -Fix building with dlopen() not available. - ---- /Makefile.in -+++ /Makefile.in -@@ -313,6 +313,9 @@ - # Source code for extensions - # - SRC += \ -+ $(TOP)/ext/expert/sqlite3expert.c \ -+ $(TOP)/ext/expert/sqlite3expert.h -+SRC += \ - $(TOP)/ext/fts1/fts1.c \ - $(TOP)/ext/fts1/fts1.h \ - $(TOP)/ext/fts1/fts1_hash.c \ -@@ -365,8 +368,24 @@ - $(TOP)/ext/rbu/sqlite3rbu.h \ - $(TOP)/ext/rbu/sqlite3rbu.c - SRC += \ -+ $(TOP)/ext/misc/appendvfs.c \ -+ $(TOP)/ext/misc/carray.c \ -+ $(TOP)/ext/misc/completion.c \ -+ $(TOP)/ext/misc/csv.c \ -+ $(TOP)/ext/misc/dbdata.c \ -+ $(TOP)/ext/misc/eval.c \ -+ $(TOP)/ext/misc/fileio.c \ -+ $(TOP)/ext/misc/ieee754.c \ - $(TOP)/ext/misc/json1.c \ -- $(TOP)/ext/misc/stmt.c -+ $(TOP)/ext/misc/regexp.c \ -+ $(TOP)/ext/misc/sha1.c \ -+ $(TOP)/ext/misc/shathree.c \ -+ $(TOP)/ext/misc/sqlar.c \ -+ $(TOP)/ext/misc/stmt.c \ -+ $(TOP)/ext/misc/totype.c \ -+ $(TOP)/ext/misc/uint.c \ -+ $(TOP)/ext/misc/uuid.c \ -+ $(TOP)/ext/misc/zipfile.c - - # Generated source code files - # -@@ -437,33 +456,24 @@ - # Statically linked extensions - # - TESTSRC += \ -- $(TOP)/ext/expert/sqlite3expert.c \ - $(TOP)/ext/expert/test_expert.c \ - $(TOP)/ext/misc/amatch.c \ -- $(TOP)/ext/misc/carray.c \ - $(TOP)/ext/misc/closure.c \ -- $(TOP)/ext/misc/csv.c \ -- $(TOP)/ext/misc/eval.c \ - $(TOP)/ext/misc/explain.c \ -- $(TOP)/ext/misc/fileio.c \ - $(TOP)/ext/misc/fuzzer.c \ - $(TOP)/ext/fts5/fts5_tcl.c \ - $(TOP)/ext/fts5/fts5_test_mi.c \ - $(TOP)/ext/fts5/fts5_test_tok.c \ -- $(TOP)/ext/misc/ieee754.c \ - $(TOP)/ext/misc/mmapwarm.c \ - $(TOP)/ext/misc/nextchar.c \ - $(TOP)/ext/misc/normalize.c \ - $(TOP)/ext/misc/percentile.c \ - $(TOP)/ext/misc/prefixes.c \ -- $(TOP)/ext/misc/regexp.c \ - $(TOP)/ext/misc/remember.c \ - $(TOP)/ext/misc/series.c \ - $(TOP)/ext/misc/spellfix.c \ -- $(TOP)/ext/misc/totype.c \ - $(TOP)/ext/misc/unionvtab.c \ - $(TOP)/ext/misc/wholenumber.c \ -- $(TOP)/ext/misc/zipfile.c \ - $(TOP)/ext/userauth/userauth.c - - # Source code to the library files needed by the test fixture -@@ -645,25 +655,25 @@ - - libtclsqlite3.la: tclsqlite.lo libsqlite3.la - $(LTLINK) -no-undefined -o $@ tclsqlite.lo \ -- libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \ -+ libsqlite3.la @TCL_STUB_LIB_SPEC@ \ - -rpath "$(TCLLIBDIR)" \ - -version-info "8:6:8" \ - -avoid-version - --sqlite3$(TEXE): shell.c sqlite3.c -- $(LTLINK) $(READLINE_FLAGS) $(SHELL_OPT) -o $@ \ -- shell.c sqlite3.c \ -- $(LIBREADLINE) $(TLIBS) -rpath "$(libdir)" -+sqlite3$(TEXE): shell.c libsqlite3.la -+ $(LTLINK) $(READLINE_FLAGS) -o $@ \ -+ shell.c libsqlite3.la \ -+ $(LIBREADLINE) - --sqldiff$(TEXE): $(TOP)/tool/sqldiff.c sqlite3.lo sqlite3.h -- $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c sqlite3.lo $(TLIBS) -+sqldiff$(TEXE): $(TOP)/tool/sqldiff.c libsqlite3.la -+ $(LTLINK) -o $@ $(TOP)/tool/sqldiff.c libsqlite3.la - --dbhash$(TEXE): $(TOP)/tool/dbhash.c sqlite3.lo sqlite3.h -- $(LTLINK) -o $@ $(TOP)/tool/dbhash.c sqlite3.lo $(TLIBS) -+dbhash$(TEXE): $(TOP)/tool/dbhash.c libsqlite3.la -+ $(LTLINK) -o $@ $(TOP)/tool/dbhash.c libsqlite3.la - --scrub$(TEXE): $(TOP)/ext/misc/scrub.c sqlite3.lo -+scrub$(TEXE): $(TOP)/ext/misc/scrub.c libsqlite3.la - $(LTLINK) -o $@ -I. -DSCRUB_STANDALONE \ -- $(TOP)/ext/misc/scrub.c sqlite3.lo $(TLIBS) -+ $(TOP)/ext/misc/scrub.c libsqlite3.la - - srcck1$(BEXE): $(TOP)/tool/srcck1.c - $(BCC) -o srcck1$(BEXE) $(TOP)/tool/srcck1.c -@@ -774,7 +784,7 @@ - # Rule to build the amalgamation - # - sqlite3.lo: sqlite3.c -- $(LTCOMPILE) $(TEMP_STORE) -c sqlite3.c -+ $(LTCOMPILE) $(SHELL_OPT) $(TEMP_STORE) -c sqlite3.c - - # Rules to build the LEMON compiler generator - # -@@ -1074,15 +1084,6 @@ - # Source files that go into making shell.c - SHELL_SRC = \ - $(TOP)/src/shell.c.in \ -- $(TOP)/ext/misc/appendvfs.c \ -- $(TOP)/ext/misc/shathree.c \ -- $(TOP)/ext/misc/fileio.c \ -- $(TOP)/ext/misc/completion.c \ -- $(TOP)/ext/misc/sqlar.c \ -- $(TOP)/ext/misc/uint.c \ -- $(TOP)/ext/expert/sqlite3expert.c \ -- $(TOP)/ext/expert/sqlite3expert.h \ -- $(TOP)/ext/misc/zipfile.c \ - $(TOP)/ext/misc/memtrace.c \ - $(TOP)/src/test_windirent.c - -@@ -1251,11 +1252,11 @@ - - # Fuzz testing - fuzztest: fuzzcheck$(TEXE) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db -- ./fuzzcheck$(TEXE) $(FUZZDATA) -+ ./fuzzcheck$(TEXE) --timeout 3600 $(FUZZDATA) - ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db - - valgrindfuzz: fuzzcheck$(TEXT) $(FUZZDATA) sessionfuzz$(TEXE) $(TOP)/test/sessionfuzz-data1.db -- valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 600 $(FUZZDATA) -+ valgrind ./fuzzcheck$(TEXE) --cell-size-check --limit-mem 10M --timeout 3600 $(FUZZDATA) - valgrind ./sessionfuzz$(TEXE) run $(TOP)/test/sessionfuzz-data1.db - - # The veryquick.test TCL tests. -@@ -1286,24 +1287,23 @@ - smoketest: $(TESTPROGS) fuzzcheck$(TEXE) - ./testfixture$(TEXE) $(TOP)/test/main.test $(TESTOPTS) - --sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in -+sqlite3_analyzer.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in - $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c - --sqlite3_analyzer$(TEXE): sqlite3_analyzer.c -- $(LTLINK) sqlite3_analyzer.c -o $@ $(LIBTCL) $(TLIBS) -+sqlite3_analyzer$(TEXE): sqlite3_analyzer.c libsqlite3.la -+ $(LTLINK) sqlite3_analyzer.c -o $@ libsqlite3.la $(LIBTCL) - --sqltclsh.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/ext/misc/appendvfs.c $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in -+sqltclsh.c: $(TOP)/src/tclsqlite.c $(TOP)/tool/sqltclsh.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in - $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqltclsh.c.in >sqltclsh.c - --sqltclsh$(TEXE): sqltclsh.c -- $(LTLINK) sqltclsh.c -o $@ $(LIBTCL) $(TLIBS) -+sqltclsh$(TEXE): sqltclsh.c libsqlite3.la -+ $(LTLINK) sqltclsh.c -o $@ libsqlite3.la $(LIBTCL) - --sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -- $(LTLINK) $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/sqlite3expert.c $(TOP)/ext/expert/expert.c sqlite3.c -o sqlite3_expert $(TLIBS) -+sqlite3_expert$(TEXE): $(TOP)/ext/expert/sqlite3expert.h $(TOP)/ext/expert/expert.c libsqlite3.la -+ $(LTLINK) $(TOP)/ext/expert/expert.c -o sqlite3_expert libsqlite3.la - - CHECKER_DEPS =\ - $(TOP)/tool/mkccode.tcl \ -- sqlite3.c \ - $(TOP)/src/tclsqlite.c \ - $(TOP)/ext/repair/sqlite3_checker.tcl \ - $(TOP)/ext/repair/checkindex.c \ -@@ -1314,36 +1314,36 @@ - sqlite3_checker.c: $(CHECKER_DEPS) - $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/ext/repair/sqlite3_checker.c.in >$@ - --sqlite3_checker$(TEXE): sqlite3_checker.c -- $(LTLINK) sqlite3_checker.c -o $@ $(LIBTCL) $(TLIBS) -+sqlite3_checker$(TEXE): sqlite3_checker.c libsqlite3.la -+ $(LTLINK) sqlite3_checker.c -o $@ libsqlite3.la $(LIBTCL) - --dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c sqlite3.lo -+dbdump$(TEXE): $(TOP)/ext/misc/dbdump.c libsqlite3.la - $(LTLINK) -DDBDUMP_STANDALONE -o $@ \ -- $(TOP)/ext/misc/dbdump.c sqlite3.lo $(TLIBS) -+ $(TOP)/ext/misc/dbdump.c libsqlite3.la - --dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c -- $(LTLINK)-o $@ $(TOP)/tool/dbtotxt.c -+dbtotxt$(TEXE): $(TOP)/tool/dbtotxt.c -+ $(LTLINK) -o $@ $(TOP)/tool/dbtotxt.c - --showdb$(TEXE): $(TOP)/tool/showdb.c sqlite3.lo -- $(LTLINK) -o $@ $(TOP)/tool/showdb.c sqlite3.lo $(TLIBS) -+showdb$(TEXE): $(TOP)/tool/showdb.c libsqlite3.la -+ $(LTLINK) -o $@ $(TOP)/tool/showdb.c libsqlite3.la - --showstat4$(TEXE): $(TOP)/tool/showstat4.c sqlite3.lo -- $(LTLINK) -o $@ $(TOP)/tool/showstat4.c sqlite3.lo $(TLIBS) -+showstat4$(TEXE): $(TOP)/tool/showstat4.c libsqlite3.la -+ $(LTLINK) -o $@ $(TOP)/tool/showstat4.c libsqlite3.la - --showjournal$(TEXE): $(TOP)/tool/showjournal.c sqlite3.lo -- $(LTLINK) -o $@ $(TOP)/tool/showjournal.c sqlite3.lo $(TLIBS) -+showjournal$(TEXE): $(TOP)/tool/showjournal.c -+ $(LTLINK) -o $@ $(TOP)/tool/showjournal.c - --showwal$(TEXE): $(TOP)/tool/showwal.c sqlite3.lo -- $(LTLINK) -o $@ $(TOP)/tool/showwal.c sqlite3.lo $(TLIBS) -+showwal$(TEXE): $(TOP)/tool/showwal.c -+ $(LTLINK) -o $@ $(TOP)/tool/showwal.c - - showshm$(TEXE): $(TOP)/tool/showshm.c - $(LTLINK) -o $@ $(TOP)/tool/showshm.c - --index_usage$(TEXE): $(TOP)/tool/index_usage.c sqlite3.lo -- $(LTLINK) $(SHELL_OPT) -o $@ $(TOP)/tool/index_usage.c sqlite3.lo $(TLIBS) -+index_usage$(TEXE): $(TOP)/tool/index_usage.c libsqlite3.la -+ $(LTLINK) -o $@ $(TOP)/tool/index_usage.c libsqlite3.la - --changeset$(TEXE): $(TOP)/ext/session/changeset.c sqlite3.lo -- $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c sqlite3.lo $(TLIBS) -+changeset$(TEXE): $(TOP)/ext/session/changeset.c libsqlite3.la -+ $(LTLINK) -o $@ $(TOP)/ext/session/changeset.c libsqlite3.la - - changesetfuzz$(TEXE): $(TOP)/ext/session/changesetfuzz.c sqlite3.lo - $(LTLINK) -o $@ $(TOP)/ext/session/changesetfuzz.c sqlite3.lo $(TLIBS) -@@ -1368,11 +1368,11 @@ - kvtest$(TEXE): $(TOP)/test/kvtest.c sqlite3.c - $(LTLINK) $(KV_OPT) -o $@ $(TOP)/test/kvtest.c sqlite3.c $(TLIBS) - --rbu$(EXE): $(TOP)/ext/rbu/rbu.c $(TOP)/ext/rbu/sqlite3rbu.c sqlite3.lo -- $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c sqlite3.lo $(TLIBS) -+rbu$(EXE): $(TOP)/ext/rbu/rbu.c libsqlite3.la -+ $(LTLINK) -I. -o $@ $(TOP)/ext/rbu/rbu.c libsqlite3.la - --loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la -- $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ $(TLIBS) -+loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la -+ $(LTLINK) $(TOP)/tool/loadfts.c libsqlite3.la -o $@ - - # This target will fail if the SQLite amalgamation contains any exported - # symbols that do not begin with "sqlite3_". It is run as part of the ---- /configure.ac -+++ /configure.ac -@@ -587,6 +587,9 @@ - if test "${enable_load_extension}" = "yes" ; then - OPT_FEATURE_FLAGS="" - AC_SEARCH_LIBS(dlopen, dl) -+ if test "${ac_cv_search_dlopen}" = "no" ; then -+ OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1" -+ fi - else - OPT_FEATURE_FLAGS="-DSQLITE_OMIT_LOAD_EXTENSION=1" - fi ---- /ext/repair/sqlite3_checker.c.in -+++ /ext/repair/sqlite3_checker.c.in -@@ -2,6 +2,7 @@ - ** Read an SQLite database file and analyze its space utilization. Generate - ** text on standard output. - */ -+#define SQLITE_CORE 1 - #define TCLSH_INIT_PROC sqlite3_checker_init_proc - #define SQLITE_ENABLE_DBPAGE_VTAB 1 - #define SQLITE_ENABLE_JSON1 1 -@@ -14,7 +15,7 @@ - #define SQLITE_OMIT_SHARED_CACHE 1 - #define SQLITE_DEFAULT_MEMSTATUS 0 - #define SQLITE_MAX_EXPR_DEPTH 0 --INCLUDE sqlite3.c -+#include "sqlite3.h" - INCLUDE $ROOT/src/tclsqlite.c - INCLUDE $ROOT/ext/misc/btreeinfo.c - INCLUDE $ROOT/ext/repair/checkindex.c ---- /src/main.c -+++ /src/main.c -@@ -50,12 +50,31 @@ - #ifdef SQLITE_ENABLE_FTS5 - int sqlite3Fts5Init(sqlite3*); - #endif -+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) -+int sqlite3DbdataRegister(sqlite3*); -+#endif - #ifdef SQLITE_ENABLE_JSON1 - int sqlite3Json1Init(sqlite3*); - #endif - #ifdef SQLITE_ENABLE_STMTVTAB - int sqlite3StmtVtabInit(sqlite3*); - #endif -+int sqlite3CarrayInit(sqlite3*); -+int sqlite3CompletionVtabInit(sqlite3*); -+int sqlite3CsvInit(sqlite3*); -+int sqlite3EvalInit(sqlite3*); -+int sqlite3FileioInit(sqlite3*); -+int sqlite3IeeeInit(sqlite3*); -+int sqlite3RegexpInit(sqlite3*); -+int sqlite3ShaInit(sqlite3*); -+int sqlite3ShathreeInit(sqlite3*); -+int sqlite3TotypeInit(sqlite3*); -+int sqlite3UintInit(sqlite3*); -+int sqlite3UuidInit(sqlite3*); -+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) -+int sqlite3ZipfileInit(sqlite3*); -+int sqlite3SqlarInit(sqlite3*); -+#endif - - /* - ** An array of pointers to extension initializer functions for -@@ -83,6 +102,9 @@ - #ifdef SQLITE_ENABLE_DBPAGE_VTAB - sqlite3DbpageRegister, - #endif -+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) -+ sqlite3DbdataRegister, -+#endif - #ifdef SQLITE_ENABLE_DBSTAT_VTAB - sqlite3DbstatRegister, - #endif -@@ -96,6 +118,22 @@ - #ifdef SQLITE_ENABLE_BYTECODE_VTAB - sqlite3VdbeBytecodeVtabInit, - #endif -+ sqlite3CarrayInit, -+ sqlite3CompletionVtabInit, -+ sqlite3CsvInit, -+ sqlite3EvalInit, -+ sqlite3FileioInit, -+ sqlite3IeeeInit, -+ sqlite3RegexpInit, -+ sqlite3ShaInit, -+ sqlite3ShathreeInit, -+ sqlite3TotypeInit, -+ sqlite3UintInit, -+ sqlite3UuidInit, -+#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_HAVE_ZLIB) -+ sqlite3ZipfileInit, -+ sqlite3SqlarInit, -+#endif - }; - - #ifndef SQLITE_AMALGAMATION ---- /src/shell.c.in -+++ /src/shell.c.in -@@ -69,6 +69,7 @@ - #include <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 -@@ -1005,22 +1010,7 @@ - INCLUDE test_windirent.c - #define dirent DIRENT - #endif --INCLUDE ../ext/misc/shathree.c --INCLUDE ../ext/misc/fileio.c --INCLUDE ../ext/misc/completion.c --INCLUDE ../ext/misc/appendvfs.c - INCLUDE ../ext/misc/memtrace.c --INCLUDE ../ext/misc/uint.c --#ifdef SQLITE_HAVE_ZLIB --INCLUDE ../ext/misc/zipfile.c --INCLUDE ../ext/misc/sqlar.c --#endif --INCLUDE ../ext/expert/sqlite3expert.h --INCLUDE ../ext/expert/sqlite3expert.c -- --#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) --INCLUDE ../ext/misc/dbdata.c --#endif - - #if defined(SQLITE_ENABLE_SESSION) - /* -@@ -4261,17 +4251,6 @@ - #ifndef SQLITE_OMIT_LOAD_EXTENSION - sqlite3_enable_load_extension(p->db, 1); - #endif -- sqlite3_fileio_init(p->db, 0, 0); -- sqlite3_shathree_init(p->db, 0, 0); -- sqlite3_completion_init(p->db, 0, 0); -- sqlite3_uint_init(p->db, 0, 0); --#if !defined(SQLITE_OMIT_VIRTUALTABLE) && defined(SQLITE_ENABLE_DBPAGE_VTAB) -- sqlite3_dbdata_init(p->db, 0, 0); --#endif --#ifdef SQLITE_HAVE_ZLIB -- sqlite3_zipfile_init(p->db, 0, 0); -- sqlite3_sqlar_init(p->db, 0, 0); --#endif - sqlite3_create_function(p->db, "shell_add_schema", 3, SQLITE_UTF8, 0, - shellAddSchemaName, 0, 0); - sqlite3_create_function(p->db, "shell_module_schema", 1, SQLITE_UTF8, 0, -@@ -6281,8 +6260,6 @@ - ); - goto end_ar_command; - } -- sqlite3_fileio_init(cmd.db, 0, 0); -- sqlite3_sqlar_init(cmd.db, 0, 0); - sqlite3_create_function(cmd.db, "shell_putsnl", 1, SQLITE_UTF8, cmd.p, - shellPutsFunc, 0, 0); - -@@ -10621,6 +10598,7 @@ - #endif - } - data.out = stdout; -+ extern int sqlite3_appendvfs_init(sqlite3 *, char **, const sqlite3_api_routines *); - sqlite3_appendvfs_init(0,0,0); - - /* Go ahead and open the database file if it already exists. If the ---- /src/test_config.c -+++ /src/test_config.c -@@ -540,6 +540,8 @@ - Tcl_SetVar2(interp, "sqlite_options", "progress", "1", TCL_GLOBAL_ONLY); - #endif - -+ Tcl_SetVar2(interp, "sqlite_options", "regexp", "1", TCL_GLOBAL_ONLY); -+ - #ifdef SQLITE_OMIT_REINDEX - Tcl_SetVar2(interp, "sqlite_options", "reindex", "0", TCL_GLOBAL_ONLY); - #else -@@ -662,6 +664,8 @@ - Tcl_SetVar2(interp, "sqlite_options", "truncate_opt", "1", TCL_GLOBAL_ONLY); - #endif - -+ Tcl_SetVar2(interp, "sqlite_options", "uint", "1", TCL_GLOBAL_ONLY); -+ - #ifdef SQLITE_OMIT_UTF16 - Tcl_SetVar2(interp, "sqlite_options", "utf16", "0", TCL_GLOBAL_ONLY); - #else ---- /test/e_expr.test -+++ /test/e_expr.test -@@ -1078,7 +1078,7 @@ - # - # There is a regexp function if ICU is enabled though. - # --ifcapable !icu { -+ifcapable !icu&&!regexp { - do_catchsql_test e_expr-18.1.1 { - SELECT regexp('abc', 'def') - } {1 {no such function: regexp}} ---- /test/icu.test -+++ /test/icu.test -@@ -41,7 +41,7 @@ - # - test_expr icu-1.1 {i1='hello'} {i1 REGEXP 'hello'} 1 - test_expr icu-1.2 {i1='hello'} {i1 REGEXP '.ello'} 1 -- test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell'} 0 -+ test_expr icu-1.3 {i1='hello'} {i1 REGEXP '.ell$'} 0 - test_expr icu-1.4 {i1='hello'} {i1 REGEXP '.ell.*'} 1 - test_expr icu-1.5 {i1=NULL} {i1 REGEXP '.ell.*'} {} - ---- /test/pragma.test -+++ /test/pragma.test -@@ -1360,17 +1360,32 @@ - } ;# ifcapable trigger - - ifcapable schema_pragmas { -- do_test pragma-11.1 { -- execsql2 { -- pragma collation_list; -- } -- } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY} -- do_test pragma-11.2 { -- db collate New_Collation blah... -- execsql { -- pragma collation_list; -- } -- } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY} -+ ifcapable uint { -+ do_test pragma-11.1 { -+ execsql2 { -+ pragma collation_list; -+ } -+ } {seq 0 name UINT seq 1 name RTRIM seq 2 name NOCASE seq 3 name BINARY} -+ do_test pragma-11.2 { -+ db collate New_Collation blah... -+ execsql { -+ pragma collation_list; -+ } -+ } {0 New_Collation 1 UINT 2 RTRIM 3 NOCASE 4 BINARY} -+ } -+ ifcapable !uint { -+ do_test pragma-11.1 { -+ execsql2 { -+ pragma collation_list; -+ } -+ } {seq 0 name RTRIM seq 1 name NOCASE seq 2 name BINARY} -+ do_test pragma-11.2 { -+ db collate New_Collation blah... -+ execsql { -+ pragma collation_list; -+ } -+ } {0 New_Collation 1 RTRIM 2 NOCASE 3 BINARY} -+ } - } - - ifcapable schema_pragmas&&tempdb { ---- /test/sessionfuzz.c -+++ /test/sessionfuzz.c -@@ -700,42 +700,6 @@ - #include <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 -@@ -404,6 +405,23 @@ - sqlite3session.c - fts5.c - stmt.c -+ appendvfs.c -+ carray.c -+ completion.c -+ csv.c -+ dbdata.c -+ eval.c -+ fileio.c -+ ieee754.c -+ regexp.c -+ sha1.c -+ shathree.c -+ sqlar.c -+ sqlite3expert.c -+ totype.c -+ uint.c -+ uuid.c -+ zipfile.c - } { - copy_file tsrc/$file - } ---- /tool/sqlite3_analyzer.c.in -+++ /tool/sqlite3_analyzer.c.in -@@ -14,9 +14,6 @@ - #define SQLITE_DEFAULT_MEMSTATUS 0 - #define SQLITE_MAX_EXPR_DEPTH 0 - #define SQLITE_OMIT_LOAD_EXTENSION 1 --#ifndef USE_EXTERNAL_SQLITE --INCLUDE sqlite3.c --#endif - INCLUDE $ROOT/src/tclsqlite.c - - const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){ ---- /tool/sqltclsh.c.in -+++ /tool/sqltclsh.c.in -@@ -27,21 +27,13 @@ - #define SQLITE_OMIT_SHARED_CACHE 1 - #define SQLITE_DEFAULT_MEMSTATUS 0 - #define SQLITE_MAX_EXPR_DEPTH 0 --INCLUDE sqlite3.c --INCLUDE $ROOT/ext/misc/appendvfs.c --#ifdef SQLITE_HAVE_ZLIB --INCLUDE $ROOT/ext/misc/zipfile.c --INCLUDE $ROOT/ext/misc/sqlar.c --#endif -+#include "sqlite3.h" - INCLUDE $ROOT/src/tclsqlite.c - - const char *sqlite3_tclapp_init_proc(Tcl_Interp *interp){ - (void)interp; -+ extern int sqlite3_appendvfs_init(sqlite3 *,char **, const sqlite3_api_routines *); - sqlite3_appendvfs_init(0,0,0); --#ifdef SQLITE_HAVE_ZLIB -- sqlite3_auto_extension((void(*)(void))sqlite3_sqlar_init); -- sqlite3_auto_extension((void(*)(void))sqlite3_zipfile_init); --#endif - - return - BEGIN_STRING diff --git a/dev-db/sqlite/files/sqlite-3.32.3-backports_1.patch b/dev-db/sqlite/files/sqlite-3.32.3-backports_1.patch deleted file mode 100644 index 256d18ee76fc..000000000000 --- a/dev-db/sqlite/files/sqlite-3.32.3-backports_1.patch +++ /dev/null @@ -1,361 +0,0 @@ -https://sqlite.org/src/info/d48af4d2cfff3d5f -https://sqlite.org/src/info/cc888878ea8d5bc7 -https://sqlite.org/src/info/be545f85a6ef09cc -https://sqlite.org/src/info/6e0ffa2053124168 -https://sqlite.org/src/info/4d0cfb1236884349 -https://sqlite.org/src/info/ccff8cb8267d4c56 -https://sqlite.org/src/info/5124732370fd53c9 - ---- /ext/fts3/fts3.c -+++ /ext/fts3/fts3.c -@@ -2068,7 +2068,7 @@ - sqlite3_int64 *piPrev, /* IN/OUT: Previous value written to list */ - sqlite3_int64 iVal /* Write this value to the list */ - ){ -- assert( iVal-*piPrev > 0 || (*piPrev==0 && iVal==0) ); -+ assert_fts3_nc( iVal-*piPrev > 0 || (*piPrev==0 && iVal==0) ); - *pp += sqlite3Fts3PutVarint(*pp, iVal-*piPrev); - *piPrev = iVal; - } -@@ -5208,10 +5208,12 @@ - ); - if( res ){ - nNew = (int)(pOut - pPhrase->doclist.pList) - 1; -- assert( pPhrase->doclist.pList[nNew]=='\0' ); -- assert( nNew<=pPhrase->doclist.nList && nNew>0 ); -- memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew); -- pPhrase->doclist.nList = nNew; -+ if( nNew>=0 ){ -+ assert( pPhrase->doclist.pList[nNew]=='\0' ); -+ assert( nNew<=pPhrase->doclist.nList && nNew>0 ); -+ memset(&pPhrase->doclist.pList[nNew], 0, pPhrase->doclist.nList - nNew); -+ pPhrase->doclist.nList = nNew; -+ } - *paPoslist = pPhrase->doclist.pList; - *pnToken = pPhrase->nToken; - } -@@ -5563,7 +5565,10 @@ - }else - #endif - { -- bHit = (pExpr->bEof==0 && pExpr->iDocid==pCsr->iPrevId); -+ bHit = ( -+ pExpr->bEof==0 && pExpr->iDocid==pCsr->iPrevId -+ && pExpr->pPhrase->doclist.nList>0 -+ ); - } - break; - } ---- /ext/fts3/fts3_write.c -+++ /ext/fts3/fts3_write.c -@@ -341,7 +341,9 @@ - ** created by merging the oldest :2 segments from absolute level :1. See - ** function sqlite3Fts3Incrmerge() for details. */ - /* 29 */ "SELECT 2 * total(1 + leaves_end_block - start_block) " -- " FROM %Q.'%q_segdir' WHERE level = ? AND idx < ?", -+ " FROM (SELECT * FROM %Q.'%q_segdir' " -+ " WHERE level = ? ORDER BY idx ASC LIMIT ?" -+ " )", - - /* SQL_DELETE_SEGDIR_ENTRY - ** Delete the %_segdir entry on absolute level :1 with index :2. */ -@@ -2853,6 +2855,19 @@ - return SQLITE_OK; - } - -+static int fts3GrowSegReaderBuffer(Fts3MultiSegReader *pCsr, int nReq){ -+ if( nReq>pCsr->nBuffer ){ -+ char *aNew; -+ pCsr->nBuffer = nReq*2; -+ aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer); -+ if( !aNew ){ -+ return SQLITE_NOMEM; -+ } -+ pCsr->aBuffer = aNew; -+ } -+ return SQLITE_OK; -+} -+ - - int sqlite3Fts3SegReaderStep( - Fts3Table *p, /* Virtual table handle */ -@@ -2987,15 +3002,9 @@ - } - - nByte = sqlite3Fts3VarintLen(iDelta) + (isRequirePos?nList+1:0); -- if( nDoclist+nByte>pCsr->nBuffer ){ -- char *aNew; -- pCsr->nBuffer = (nDoclist+nByte)*2; -- aNew = sqlite3_realloc(pCsr->aBuffer, pCsr->nBuffer); -- if( !aNew ){ -- return SQLITE_NOMEM; -- } -- pCsr->aBuffer = aNew; -- } -+ -+ rc = fts3GrowSegReaderBuffer(pCsr, nByte+nDoclist); -+ if( rc ) return rc; - - if( isFirst ){ - char *a = &pCsr->aBuffer[nDoclist]; -@@ -3020,6 +3029,9 @@ - fts3SegReaderSort(apSegment, nMerge, j, xCmp); - } - if( nDoclist>0 ){ -+ rc = fts3GrowSegReaderBuffer(pCsr, nDoclist+FTS3_NODE_PADDING); -+ if( rc ) return rc; -+ memset(&pCsr->aBuffer[nDoclist], 0, FTS3_NODE_PADDING); - pCsr->aDoclist = pCsr->aBuffer; - pCsr->nDoclist = nDoclist; - rc = SQLITE_ROW; -@@ -4288,7 +4300,7 @@ - int i; - int nHeight = (int)aRoot[0]; - NodeWriter *pNode; -- if( nHeight<1 || nHeight>FTS_MAX_APPENDABLE_HEIGHT ){ -+ if( nHeight<1 || nHeight>=FTS_MAX_APPENDABLE_HEIGHT ){ - sqlite3_reset(pSelect); - return FTS_CORRUPT_VTAB; - } ---- /src/expr.c -+++ /src/expr.c -@@ -4272,7 +4272,9 @@ - int nCol; - testcase( op==TK_EXISTS ); - testcase( op==TK_SELECT ); -- if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){ -+ if( pParse->db->mallocFailed ){ -+ return 0; -+ }else if( op==TK_SELECT && (nCol = pExpr->x.pSelect->pEList->nExpr)!=1 ){ - sqlite3SubselectError(pParse, nCol, 1); - }else{ - return sqlite3CodeSubselect(pParse, pExpr); ---- /test/fts3corrupt4.test -+++ /test/fts3corrupt4.test -@@ -6123,4 +6123,163 @@ - SELECT offsets(t1) FROM t1 WHERE t1 MATCH 'rtree ner "json1^enable"'; - } - -+#------------------------------------------------------------------------- -+do_execsql_test 42.1 { -+ CREATE VIRTUAL TABLE f USING fts3(a, b); -+} -+do_execsql_test 42.2 { -+ INSERT INTO f_segdir VALUES(0,2,1111,0,0,X'00'); -+ INSERT INTO f_segdir VALUES(0,3,0 ,0,0,X'00013003010200'); -+} -+do_execsql_test 42.3 { -+ INSERT INTO f(f) VALUES ('merge=107,2'); -+} -+ -+#------------------------------------------------------------------------- -+reset_db -+set saved $sqlite_fts3_enable_parentheses -+set sqlite_fts3_enable_parentheses 1 -+do_execsql_test 43.1 { -+ CREATE VIRTUAL TABLE def USING fts3(xyz); -+ INSERT INTO def_segdir VALUES(0,0,0,0,0, X'0001310301c9000103323334050d81'); -+} {} -+ -+do_execsql_test 43.2 { -+ SELECT rowid FROM def WHERE def MATCH '1 NEAR 1' -+} {1} -+ -+set sqlite_fts3_enable_parentheses $saved -+ -+#------------------------------------------------------------------------- -+reset_db -+do_execsql_test 44.1 { -+ CREATE VIRTUAL TABLE t0 USING fts3(col0 INTEGER PRIMARY KEY,col1 VARCHAR(8),col2 BINARY,col3 BINARY); -+ INSERT INTO t0_content VALUES(0,NULL,NULL,NULL,NULL); -+ INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',X'00013103010200010332333405010201ba00000461616161050101020200000462626262050101030200'); -+} -+ -+do_execsql_test 44.2 { -+ SELECT matchinfo(t0, t0) IS NULL FROM t0 WHERE t0 MATCH '1*' -+} {0} -+ -+#------------------------------------------------------------------------- -+# -+reset_db -+do_test 45.0 { -+ sqlite3 db {} -+ db deserialize [decode_hexdb { -+.open --hexdb -+| size 24576 pagesize 4096 filename crash-65c98512cc9e49.db -+| page 1 offset 0 -+| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3. -+| 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 06 .....@ ........ -+| 96: 00 00 00 00 0d 0e fc 00 06 0d bc 00 0f ca 0f 6c ...............l -+| 112: 0f 04 0e 13 0e c9 0d bc 00 00 00 00 00 00 00 00 ................ -+| 3504: 00 00 00 00 00 00 00 00 00 00 00 00 55 06 07 17 ............U... -+| 3520: 1b 1b 01 81 01 74 61 62 6c 65 78 31 5f 73 74 61 .....tablex1_sta -+| 3536: 74 78 31 5f 73 74 61 74 06 43 52 45 41 54 45 20 tx1_stat.CREATE -+| 3552: 54 41 42 4c 45 20 27 78 31 5f 73 74 61 74 27 28 TABLE 'x1_stat'( -+| 3568: 69 64 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 id INTEGER PRIMA -+| 3584: 52 59 20 4b 45 59 2c 20 76 61 6c 75 65 20 42 4c RY KEY, value BL -+| 3600: 41 82 29 81 33 04 07 17 1f 1f 01 82 35 74 61 62 A.).3.......5tab -+| 3616: 6c 65 78 31 5f 73 65 67 64 69 72 78 31 5f 73 65 lex1_segdirx1_se -+| 3632: 67 64 69 72 04 43 52 45 41 54 45 20 54 41 42 4c gdir.CREATE TABL -+| 3648: 45 20 27 78 31 5f 73 65 67 64 69 72 27 28 6c 65 E 'x1_segdir'(le -+| 3664: 76 65 6c 20 49 4e 54 45 47 45 52 2c 69 64 78 20 vel INTEGER,idx -+| 3680: 49 4e 54 45 47 45 52 2c 73 74 61 72 74 5f 62 6c INTEGER,start_bl -+| 3696: 6f 63 6b 20 49 4e 54 45 47 45 52 2c 6c 65 61 76 ock INTEGER,leav -+| 3712: 65 73 5f 65 6e 64 5f 62 6c 6f 63 6b 20 49 4e 54 es_end_block INT -+| 3728: 45 47 45 52 2c 65 6e 64 5f 62 6c 6f 63 6b 20 49 EGER,end_block I -+| 3744: 4e 54 45 47 45 52 2c 72 6f 6f 74 20 42 4c 4f 42 NTEGER,root BLOB -+| 3760: 2c 50 52 49 4d 41 52 59 20 4b 45 59 28 6c 65 76 ,PRIMARY KEY(lev -+| 3776: 65 6c 2c 20 69 64 78 29 29 31 05 06 17 45 1f 01 el, idx))1...E.. -+| 3792: 00 69 6e 64 65 78 73 71 6c 69 74 65 5f 61 75 74 .indexsqlite_aut -+| 3808: 6f 69 6e 64 65 78 5f 78 31 5f 73 65 67 64 69 72 oindex_x1_segdir -+| 3824: 5f 31 78 31 5f 73 65 67 64 69 72 05 00 00 00 08 _1x1_segdir..... -+| 3840: 60 00 00 00 66 03 07 17 23 23 01 81 13 74 61 62 `...f...##...tab -+| 3856: 6c 65 78 31 5f 73 65 67 6d 65 6e 74 73 78 31 5f lex1_segmentsx1_ -+| 3872: 73 65 67 6d 65 6e 74 73 03 43 52 45 41 54 45 20 segments.CREATE -+| 3888: 54 41 42 4c 45 20 27 78 31 5f 73 65 67 6d 65 6e TABLE 'x1_segmen -+| 3904: 74 73 27 28 62 6c 6f 63 6b 69 64 20 49 4e 54 45 ts'(blockid INTE -+| 3920: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c GER PRIMARY KEY, -+| 3936: 20 62 6c 6f 63 6b 20 42 4c 4f 42 29 5c 02 07 17 block BLOB).... -+| 3952: 21 21 01 81 03 74 61 62 6c 65 78 31 5f 63 6f 6e !!...tablex1_con -+| 3968: 74 65 6e 74 78 31 5f 63 6f 6e 74 65 6e 74 02 43 tentx1_content.C -+| 3984: 52 45 41 54 45 20 54 41 42 4c 45 20 27 78 31 5f REATE TABLE 'x1_ -+| 4000: 63 6f 6e 74 65 6e 74 27 28 64 6f 63 69 64 20 49 content'(docid I -+| 4016: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b NTEGER PRIMARY K -+| 4032: 45 59 2c 20 27 63 30 78 27 29 34 01 06 17 11 11 EY, 'c0x')4..... -+| 4048: 08 57 74 61 62 6c 65 78 31 78 31 43 52 45 41 54 .Wtablex1x1CREAT -+| 4064: 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 E VIRTUAL TABLE -+| 4080: 78 31 20 55 53 49 4e 47 20 66 74 73 33 28 78 29 x1 USING fts3(x) -+| page 2 offset 4096 -+| 0: 0d 00 00 00 11 0f 77 f0 0f f8 0f f0 0f e8 0f e0 ......w......... -+| 16: 0f d8 0f d0 0f c8 0f c0 00 00 00 00 00 00 00 00 ................ -+| 3952: 00 00 00 00 00 00 00 00 06 11 03 00 13 77 78 79 .............wxy -+| 3968: 06 10 03 00 13 74 75 76 06 0f 03 00 13 71 33 73 .....tuv.....q3s -+| 3984: 06 0e 03 00 13 6e 6f 70 06 0d 03 00 13 6b 6c 6d .....nop.....klm -+| 4000: 06 0c 03 04 c3 68 69 6a 06 0b 03 00 13 65 66 67 .....hij.....efg -+| 4016: 06 0a 03 00 13 62 63 64 06 09 03 00 13 79 7a 61 .....bcd.....yza -+| 4032: 06 08 03 00 13 76 77 78 06 07 03 00 13 73 74 75 .....vwx.....stu -+| 4048: 06 06 03 00 13 70 71 72 06 05 03 00 13 6d 6e 6f .....pqr.....mno -+| 4064: 06 03 03 00 13 6a 6b 6c 06 03 03 00 13 67 68 69 .....jkl.....ghi -+| 4080: 06 02 02 00 03 64 65 66 06 01 03 00 13 61 52 63 .....def.....aRc -+| page 3 offset 8192 -+| 0: 0d 00 00 00 03 0f a7 00 0f b5 0f a7 0f fa 01 00 ................ -+| 4000: 00 00 00 00 00 00 00 0c 02 03 00 1e 00 03 6b 6c ..............kl -+| 4016: 6d 03 0d 02 00 43 01 04 00 81 0a 00 03 61 62 63 m....C.......abc -+| 4032: 03 0b 32 00 00 03 62 63 64 03 0a 02 00 00 03 64 ..2...bcd......d -+| 4048: 69 26 03 02 02 00 00 03 65 66 67 03 0b 02 00 00 i&......efg..... -+| 4064: 03 67 68 69 03 03 02 00 00 03 68 69 6a 03 0c 02 .ghi......hij... -+| 4080: 00 00 03 6a 6a 2c 03 04 02 00 03 81 00 03 00 00 ...jj,.......... -+| page 4 offset 12288 -+| 0: 0d 0f 3a 00 05 0f 25 00 0f 9e 0f 88 0f 43 0f 25 ..:...%......C.% -+| 16: 0f 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .r.............. -+| 3856: 00 00 00 00 00 00 00 00 00 56 01 08 08 13 1e 03 .........V...... -+| 3872: 30 20 39 00 03 13 05 07 08 08 18 08 13 1e 30 20 0 9...........0 -+| 3888: 39 00 03 77 78 79 03 11 02 00 0f 6c 00 09 01 08 9..wxy.....l.... -+| 3904: 08 15 54 27 04 07 09 01 08 08 15 42 02 30 20 33 ..T'.......B.0 3 -+| 3920: 36 00 03 6e 6f 70 03 0e 02 00 00 03 71 72 73 03 6..nop......qrs. -+| 3936: 0f 02 00 00 03 74 75 76 03 10 02 00 0f cf b1 06 .....tuv........ -+| 3952: 01 08 14 06 07 01 08 09 01 1b 14 02 02 31 32 38 .............128 -+| 3968: 20 2d 37 32 10 01 01 6b 14 03 07 09 09 08 08 15 -72...k........ -+| 3984: 1e 30 20 33 36 00 03 79 7a 61 03 09 02 00 2f 02 .0 36..yza..../. -+| 4000: 07 09 08 08 08 15 54 30 20 33 36 00 03 6d 6e 6f ......T0 36..mno -+| 4016: 03 05 02 00 00 03 70 71 72 03 06 02 00 00 03 73 ......pqr......s -+| 4032: 74 75 03 07 02 00 00 03 76 77 78 03 08 02 00 00 tu......vwx..... -+| 4048: 00 00 4a 08 08 08 15 54 30 20 33 36 00 03 61 62 ..J....T0 36..ab -+| 4064: 63 03 01 02 00 00 03 64 65 66 03 02 02 00 00 03 c......def...... -+| 4080: 67 68 69 03 03 67 00 00 03 6a 6b 6c 03 04 02 00 ghi..g...jkl.... -+| page 5 offset 16384 -+| 0: 0a 0f e7 00 05 0f da 00 0f e1 0f fa 0f f4 0f ed ................ -+| 16: 0f da 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -+| 4048: 00 00 00 00 00 00 00 1a 01 03 06 04 01 08 01 02 ................ -+| 4064: 06 05 04 08 08 01 05 00 00 00 06 01 03 06 04 09 ................ -+| 4080: 02 01 02 04 05 04 09 09 01 03 05 04 09 08 01 02 ................ -+| page 6 offset 20480 -+| 0: 0d 00 10 00 01 0f f9 00 0f f9 00 00 00 00 00 00 ................ -+| 4080: 00 00 00 00 00 00 00 00 00 05 01 03 00 10 01 03 ................ -+| end crash-65c98512cc9e49.db -+}]} {} -+ -+do_catchsql_test 45.2 { -+ INSERT INTO x1(x1) VALUES( 'merge=1' ) -+} {1 {database disk image is malformed}} -+ -+#------------------------------------------------------------------------- -+reset_db -+set saved $sqlite_fts3_enable_parentheses -+set sqlite_fts3_enable_parentheses 1 -+do_execsql_test 46.1 { -+ CREATE VIRTUAL TABLE t0 USING fts3(a INTEGER PRIMARY KEY,b,c,d); -+ INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',X'0001310301c9000103323334050d8000f200000461616161050101020200000462626262050101030200'); -+} {} -+ -+do_catchsql_test 46.2 { -+ SELECT * FROM t0 -+ WHERE t0 MATCH x'2b0a312b0a312a312a2a0b5d0a0b0b0a312a0a0b0b0a312a0b310a392a0b0a27312a2a0b5d0a312a0b310a31315d0b310a312a316d2a0b313b15bceaa50a312a0b0a27312a2a0b5d0a312a0b310a312b0b2a310a312a0b2a0b2a0b2e5d0a0bff313336e34a2a312a0b0a3c310b0a0b4b4b0b4b2a4bec40322b2a0b310a0a312a0a0a0a0a0a0a0a0a0b310a312a2a2a0b5d0a0b0b0a312a0b310a312a0b0a4e4541530b310a5df5ced70a0a0a0a0a4f520a0a0a0a0a0a0a312a0b0a4e4541520b310a5d616161610a0a0a0a4f520a0a0a0a0a0a312b0a312a312a0a0a0a0a0a0a004a0b0a310b220a0b0a310a4a22310a0b0a7e6fe0e0e030e0e0e0e0e01176e02000e0e0e0e0e01131320226310a0b0a310a4a22310a0b0a310a766f8b8b4ee0e0300ae0090909090909090909090909090909090909090909090909090909090909090947aaaa540b09090909090909090909090909090909090909090909090909090909090909fae0e0f2f22164e0e0f273e07fefefef7d6dfafafafa6d6d6d6d'; -+} {1 {database disk image is malformed}} -+ -+set sqlite_fts3_enable_parentheses $saved -+ - finish_test ---- /test/fts3corrupt6.test -+++ /test/fts3corrupt6.test -@@ -0,0 +1,60 @@ -+# 2020 June 8 -+# -+# The author disclaims copyright to this source code. In place of -+# a legal notice, here is a blessing: -+# -+# May you do good and not evil. -+# May you find forgiveness for yourself and forgive others. -+# May you share freely, never taking more than you give. -+# -+#************************************************************************* -+# This file implements regression tests for SQLite library. The -+# focus of this script is testing the FTS3 module. -+# -+# $Id: fts3aa.test,v 1.1 2007/08/20 17:38:42 shess Exp $ -+# -+ -+set testdir [file dirname $argv0] -+source $testdir/tester.tcl -+source $testdir/fts3_common.tcl -+set testprefix fts3corrupt6 -+ -+# If SQLITE_ENABLE_FTS3 is defined, omit this file. -+ifcapable !fts3 { -+ finish_test -+ return -+} -+ -+set ::saved_sqlite_fts3_enable_parentheses $::sqlite_fts3_enable_parentheses -+set sqlite_fts3_enable_parentheses 1 -+sqlite3_fts3_may_be_corrupt 1 -+database_may_be_corrupt -+ -+do_execsql_test 1.0 { -+ BEGIN TRANSACTION; -+ CREATE TABLE t_content(col0 INTEGER); -+ PRAGMA writable_schema=ON; -+ CREATE VIRTUAL TABLE t0 USING fts3(col0 INTEGER PRIMARY KEY,col1 VARCHAR(8),col2 BINARY,col3 BINARY); -+ INSERT INTO t0_content VALUES(0,NULL,NULL,NULL,NULL); -+ INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',X'000131030102000103323334050101010200000461616161050101020200000462626262050101030200'); -+ COMMIT; -+} -+ -+do_execsql_test 1.1 { -+ SELECT 0+matchinfo(t0,'yxyyxy') FROM t0 WHERE t0 MATCH CAST( x'2b0a312b0a312a312a2a0b5d0a0b0b0a312a0a0b0b0a312a0b310a392a0b0a27312a2a0b5d0a312a0b310a31315d0b310a312a316d2a0b313b15bceaa50a312a0b0a27312a2a0b5d0a312a0b310a312b0b2a310a312a0b2a0b2a0b2e5d0a0bff313336e34a2a312a0b0a3c310b0a0b4b4b0b4b2a4bec40322b2a0b310a0a312a0a0a0a0a0a0a0a0a0b310a312a2a2a0b5d0a0b0b0a312a0b310a312a0b0a4e4541530b310a5df5ced70a0a0a0a0a4f520a0a0a0a0a0a0a312a0b0a4e4541520b310a5d616161610a0a0a0a4f520a0a0a0a0a0a312b0a312a312a0a0a0a0a0a0a004a0b0a310b220a0b0a310a4a22310a0b0a7e6fe0e0e030e0e0e0e0e01176e02000e0e0e0e0e01131320226310a0b0a310a4a22310a0b0a310a766f8b8b4ee0e0300ae0090909090909090909090909090909090909090909090909090909090909090947aaaa540b09090909090909090909090909090909090909090909090909090909090909fae0e0f2f22164e0e0f273e07fefefef7d6dfafafafa6d6d6d6d' AS TEXT); -+} {0} -+ -+do_execsql_test 1.2 { -+ CREATE VIRTUAL TABLE t1 USING fts3(col0 INTEGER PRIMARY KEY,col1 VARCHAR(8),col2 BINARY,col3 BINARY); -+ INSERT INTO t1_content VALUES(0,NULL,NULL,NULL,NULL); -+ INSERT INTO t1_segdir VALUES(0,0,0,0,'0 42',X'000131030102000103323334050101010200000461616161050101020200000462626262050101030200'); -+} -+ -+do_execsql_test 1.3 { -+ SELECT 42+matchinfo(t1,'yxyyxy') FROM t1 WHERE t1 MATCH x'2b0a312b0a312a312a2a0b5d0a0b0b0a312a0a0b0b0a312a0b310a392a0b0a27312a2a0b5d0a312a0b310a31315d0b310a312a316d2a0b313b15bceaa50a312a0b0a27312a2a0b5d0a312a0b310a312b0b2a310a312a0b2a0b2a0b2e5d0a0bff313336e34a2a312a0b0a3c310b0a0b4b4b0b4b2a4bec40322b2a0b310a0a312a0a0a0a0a0a0a0a0a0b310a312a2a2a0b5d0a0b0b0a312a0b310a312a0b0a4e4541530b310a5df5ced70a0a0a0a0a4f520a0a0a0a0a0a0a312a0b0a4e4541520b310a5d616161610a0a0a0a4f520a0a0a0a0a0a312b0a312a312a0a0a0a0a0a0a004a0b0a310b220a0b0a310a4a22310a0b0a7e6fe0e0e030e0e0e0e0e01176e02000e0e0e0e0e01131320226310a0b0a310a4a22310a0b0a310a766f8b8b4ee0e0300ae0090909090909090909090909090909090909090909090909090909090909090947aaaa540b09090909090909090909090909090909090909090909090909090909090909fae0e0f2f22164e0e0f273e07fefefef7d6dfafafafa6d6d6d6d'; -+} {42} -+ -+set sqlite_fts3_enable_parentheses $saved_sqlite_fts3_enable_parentheses -+finish_test -+ -+ diff --git a/dev-db/sqlite/files/sqlite-3.32.3-backports_2.patch b/dev-db/sqlite/files/sqlite-3.32.3-backports_2.patch deleted file mode 100644 index 32b6f9b1624f..000000000000 --- a/dev-db/sqlite/files/sqlite-3.32.3-backports_2.patch +++ /dev/null @@ -1,302 +0,0 @@ -https://sqlite.org/src/info/30735432bc33cb95 -https://sqlite.org/src/info/1bd18ca35bdbf303 -https://sqlite.org/src/info/49da8bdce17ced91 -https://sqlite.org/src/info/f25a56c26e28abd4 - ---- /ext/fts5/fts5_index.c -+++ /ext/fts5/fts5_index.c -@@ -2321,11 +2321,11 @@ - } - - search_success: -- pIter->iLeafOffset = iOff + nNew; -- if( pIter->iLeafOffset>n || nNew<1 ){ -+ if( (i64)iOff+nNew>n || nNew<1 ){ - p->rc = FTS5_CORRUPT; - return; - } -+ pIter->iLeafOffset = iOff + nNew; - pIter->iTermLeafOffset = pIter->iLeafOffset; - pIter->iTermLeafPgno = pIter->iLeafPgno; - ---- /ext/fts5/test/fts5corrupt3.test -+++ /ext/fts5/test/fts5corrupt3.test -@@ -10108,6 +10108,221 @@ - INSERT INTO t1(t1) SELECT x FROM t2; - } {1 {database disk image is malformed}} - -+#------------------------------------------------------------------------- -+reset_db -+do_test 69.0 { -+ sqlite3 db {} -+ db deserialize [decode_hexdb { -+.open --hexdb -+| size 32768 pagesize 4096 filename crash-31c462b8b665d0.db -+| page 1 offset 0 -+| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3. -+| 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 08 .....@ ........ -+| 32: 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 ................ -+| 96: 00 00 00 00 0d 0f c7 00 07 0d 92 00 0f 8d 0f 36 ...............6 -+| 112: 0e cb 0e 6b 0e 0e 0d b6 0d 92 00 00 00 00 00 00 ...k............ -+| 3472: 00 00 22 08 06 17 11 11 01 31 74 61 62 6c 65 74 .........1tablet -+| 3488: 32 74 32 08 43 52 45 41 54 45 20 54 41 42 4c 45 2t2.CREATE TABLE -+| 3504: 20 74 32 28 78 29 56 07 06 17 1f 1f 01 7d 74 61 t2(x)V.......ta -+| 3520: 62 6c 65 74 31 5f 63 6f 6e 66 69 67 74 31 5f 63 blet1_configt1_c -+| 3536: 6f 6e 66 69 67 07 43 52 45 41 54 45 20 54 41 42 onfig.CREATE TAB -+| 3552: 4c 45 20 27 74 31 5f 63 6f 6e 66 69 67 27 28 6b LE 't1_config'(k -+| 3568: 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 76 29 PRIMARY KEY, v) -+| 3584: 20 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5b 06 WITHOUT ROWID[. -+| 3600: 07 17 21 21 01 81 01 74 61 62 6c 65 74 31 5f 64 ..!!...tablet1_d -+| 3616: 6f 63 73 69 7a 65 74 31 5f 64 6f 63 73 69 7a 65 ocsizet1_docsize -+| 3632: 06 43 52 45 41 54 45 20 54 41 42 4c 45 20 27 74 .CREATE TABLE 't -+| 3648: 31 5f 64 6f 63 73 69 7a 65 27 28 69 64 20 49 4e 1_docsize'(id IN -+| 3664: 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 TEGER PRIMARY KE -+| 3680: 59 2c 20 73 7a 20 42 4c 4f 42 29 5e 05 07 17 21 Y, sz BLOB)^...! -+| 3696: 21 01 81 07 74 61 62 6c 65 74 31 5f 63 6f 6e 74 !...tablet1_cont -+| 3712: 65 6e 74 74 31 5f 63 6f 6e 74 65 6e 74 05 43 52 entt1_content.CR -+| 3728: 45 41 54 45 20 54 41 42 4c 45 20 27 74 31 5f 63 EATE TABLE 't1_c -+| 3744: 6f 6e 74 65 6e 74 27 28 69 64 20 49 4e 54 45 47 ontent'(id INTEG -+| 3760: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 ER PRIMARY KEY, -+| 3776: 63 39 2c 20 63 31 2c 20 63 32 29 69 04 07 17 19 c9, c1, c2)i.... -+| 3792: 19 01 81 2d 74 61 62 6c 65 74 31 5f 69 64 78 74 ...-tablet1_idxt -+| 3808: 31 5f 69 64 78 04 43 52 45 41 54 45 20 54 41 42 1_idx.CREATE TAB -+| 3824: 4c 45 20 27 74 31 5f 69 64 78 27 28 73 65 67 69 LE 't1_idx'(segi -+| 3840: 64 2c 20 74 65 72 6d 2c 20 70 67 6e 6f 2c 20 50 d, term, pgno, P -+| 3856: 52 49 4d 41 52 59 20 4b 45 59 28 73 65 67 69 64 RIMARY KEY(segid -+| 3872: 2c 20 74 65 72 6d 29 29 20 57 49 54 48 4f 55 54 , term)) WITHOUT -+| 3888: 20 52 4f 57 49 44 55 03 07 17 1b 1b 01 81 01 74 ROWIDU........t -+| 3904: 61 62 6c 65 74 31 5f 64 61 74 61 74 31 5f 64 61 ablet1_datat1_da -+| 3920: 74 61 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 ta.CREATE TABLE -+| 3936: 27 74 31 5f 64 61 74 61 27 28 69 64 20 49 4e 54 't1_data'(id INT -+| 3952: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 EGER PRIMARY KEY -+| 3968: 2c 20 62 6c 6f 63 6b 20 42 4c 4f 42 29 38 02 06 , block BLOB)8.. -+| 3984: 17 11 11 08 5f 74 61 62 6c 65 74 31 74 31 43 52 ...._tablet1t1CR -+| 4000: 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 EATE VIRTUAL TAB -+| 4016: 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74 73 35 LE t1 USING fts5 -+| 4032: 28 61 2c 62 2c 63 29 00 00 00 00 00 00 00 00 00 (a,b,c)......... -+| page 3 offset 8192 -+| 0: 0d 00 00 00 03 0c 94 00 0f e6 0f ef 0c 94 00 00 ................ -+| 3216: 00 00 00 00 86 4a 84 80 80 80 80 01 04 00 8d 18 .....J.......... -+| 3232: 00 00 03 2b 02 30 30 01 02 06 01 02 06 01 02 06 ...+.00......... -+| 3248: 1f 02 03 01 02 03 01 02 03 01 08 32 30 31 36 30 ...........20160 -+| 3264: 36 30 39 01 02 07 01 02 07 01 02 07 01 01 34 01 609...........4. -+| 3280: 02 05 01 02 05 01 02 05 01 01 35 01 02 04 01 02 ..........5..... -+| 3296: 04 01 02 04 02 07 30 30 30 30 30 30 30 1c 02 04 ......0000000... -+| 3312: 01 02 04 01 02 04 01 06 62 69 6e 61 72 79 03 06 ........binary.. -+| 3328: 01 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 ................ -+| 3344: 02 02 03 06 00 02 02 03 06 01 02 02 03 06 01 02 ................ -+| 3360: 02 03 06 01 02 02 03 06 01 02 02 03 06 01 02 02 ................ -+| 3376: 03 06 01 02 02 03 06 01 02 02 01 08 63 6f 6d 70 ............comp -+| 3392: 69 6c 65 72 01 02 02 01 02 02 01 02 02 01 06 64 iler...........d -+| 3408: 62 73 74 61 74 07 02 03 01 02 03 01 02 03 02 04 bstat........... -+| 3424: 65 62 75 67 04 02 02 01 02 02 01 02 02 01 06 65 ebug...........e -+| 3440: 6e 61 62 6c 65 07 02 02 01 02 02 01 02 02 01 02 nable........... -+| 3456: 02 01 02 02 01 02 02 01 02 02 01 02 02 01 02 02 ................ -+| 3472: 01 02 02 01 02 02 01 02 02 01 02 02 01 02 02 01 ................ -+| 3488: 01 02 01 02 02 01 02 02 01 02 02 01 02 02 01 02 ................ -+| 3504: 02 01 02 02 02 08 78 74 65 6e 73 69 6f 6e 1f 02 ......xtension.. -+| 3520: 04 01 02 04 01 02 04 01 04 66 74 73 34 1a 02 03 .........fts4... -+| 3536: 01 02 03 01 02 03 04 01 35 0d 02 03 01 02 03 01 ........5....... -+| 3552: 02 03 01 03 67 63 63 01 aa 03 01 02 03 01 02 03 ....gcc......... -+| 3568: 02 06 65 6f 70 6f 6c 79 10 02 03 02 02 03 01 02 ..eopoly........ -+| 3584: 03 01 05 6a 73 6f 6e 31 13 02 03 01 02 03 01 02 ...json1........ -+| 3600: 03 01 04 6c 6f 61 64 1f 02 03 01 02 03 01 02 03 ...load......... -+| 3616: 01 03 6d 61 78 1c 02 02 01 02 02 01 02 02 02 05 ..max........... -+| 3632: 65 6d 6f 72 79 1c 02 03 01 02 03 01 02 03 04 04 emory........... -+| 3648: 73 79 73 35 16 02 03 01 02 03 01 02 03 01 06 6e sys5...........n -+| 3664: 6f 63 61 73 65 02 06 01 02 02 03 06 01 02 02 03 ocase........... -+| 3680: 06 01 02 02 03 06 01 02 02 03 06 01 02 02 03 06 ................ -+| 3696: 01 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 ................ -+| 3712: 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 02 ................ -+| 3728: 02 01 04 6f 6d 69 74 1f 02 02 01 02 02 01 02 01 ...omit......... -+| 3744: ff ff ff ff ff ff ff ff f0 00 00 00 00 00 01 02 ................ -+| 3760: 58 81 96 4d 01 06 01 02 02 03 06 01 02 02 03 06 X..M............ -+| 3776: 01 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 ................ -+| 3792: 02 02 03 06 01 02 02 03 06 01 02 02 03 06 01 02 ................ -+| 3808: 02 03 06 01 02 02 03 06 01 02 02 03 06 01 02 02 ................ -+| 3824: 01 0a 74 68 72 65 61 64 73 61 66 65 22 02 02 01 ..threadsafe.... -+| 3840: 02 02 01 02 02 01 04 76 74 61 62 07 02 04 01 02 .......vtab..... -+| 3856: 04 01 02 04 01 01 78 01 06 01 01 02 01 06 01 01 ......x......... -+| 3872: 02 01 06 01 1e 02 01 06 01 01 02 01 06 01 01 02 ................ -+| 3888: 01 06 01 01 02 01 06 01 01 02 01 06 01 01 02 01 ................ -+| 3904: 06 01 01 02 01 06 01 01 02 01 06 01 01 02 01 06 ................ -+| 3920: 01 01 02 01 06 01 01 02 01 06 01 01 02 01 06 01 ................ -+| 3936: 00 02 01 06 01 01 02 01 06 01 01 02 01 06 01 01 ................ -+| 3952: 02 01 06 01 01 02 01 06 01 01 02 01 06 01 01 02 ................ -+| 3968: 01 06 01 01 02 01 06 01 01 02 01 06 01 01 02 01 ................ -+| 3984: 06 01 01 02 01 06 01 01 02 01 06 01 01 02 01 06 ................ -+| 4000: 01 01 02 01 06 01 01 02 01 06 01 01 02 01 06 01 ................ -+| 4016: 01 02 01 06 01 01 02 01 06 01 01 02 01 06 01 01 ................ -+| 4032: 02 01 06 01 01 02 01 06 01 01 02 04 15 13 0c 0c ................ -+| 4048: 12 44 13 11 0f 47 13 0f 0b 0e 11 10 0f 0e 10 0f .D...G.......... -+| 4064: 44 0f 10 40 15 0f 07 01 03 00 14 24 5a 24 24 0f D..@.......$Z$$. -+| 4080: 0a 03 00 24 00 00 00 00 01 01 01 00 01 01 01 01 ...$............ -+| page 4 offset 12288 -+| 0: 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -+| 4080: 00 00 00 00 00 00 00 00 00 00 05 04 09 0c 01 02 ................ -+| page 5 offset 16384 -+| 0: 0d 00 00 00 24 0c 0a 00 0f d8 0f af 0f 86 0f 74 ....$..........t -+| 16: 0f 61 0f 4e 0f 2f 0f 0f 0e ef 0e d7 0e be 0e a5 .a.N./.......... -+| 32: 0e 8d 0e 74 0e 5b 0e 40 0e 24 0e 08 0d ef 0d d5 ...t.[.@.$...... -+| 48: 0d bb 0d a0 0d 84 0d 68 0d 4f 0d 00 00 00 00 00 .......h.O...... -+| 3072: 00 00 00 00 00 00 00 00 00 00 18 24 05 00 25 0f ...........$..%. -+| 3088: 19 54 48 52 45 41 44 53 41 46 45 3d 30 58 42 49 .THREADSAFE=0XBI -+| 3104: 4e 41 52 59 18 23 05 00 25 0f 19 54 48 52 45 41 NARY.#..%..THREA -+| 3120: 44 53 41 46 45 3d 30 58 4e 4f 43 41 53 45 17 22 DSAFE=0XNOCASE.. -+| 3136: 05 00 25 0f 17 54 48 52 45 41 44 53 41 46 45 3d ..%..THREADSAFE= -+| 3152: 30 58 52 54 52 49 4d 1f 21 05 00 33 0f 19 4f 4d 0XRTRIM.!..3..OM -+| 3168: 49 54 20 4c 4f 41 44 20 45 58 54 45 4e 53 49 4f IT LOAD EXTENSIO -+| 3184: 4e 58 42 49 4e 41 52 59 1f 20 05 00 33 d3 19 4f NXBINARY. ..3..O -+| 3200: 4d 49 54 28 2c 4f 41 44 b2 04 55 85 44 54 e5 34 MIT(,OAD..U.DT.4 -+| 3216: 94 f4 e5 84 e4 f4 34 15 34 51 e1 f0 50 03 30 f1 ......4.4Q..P.0. -+| 3232: 74 f4 d4 95 42 04 c4 f4 14 42 04 55 85 44 54 e5 t...B....B.U.DT. -+| 3248: 34 94 f4 e5 85 25 45 24 94 d1 f1 e0 50 03 30 f1 4....%E$....P.0. -+| 3264: 94 d4 15 82 04 d4 54 d4 f5 25 93 d3 53 03 03 03 ......T..%..S... -+| 3280: 03 03 03 05 84 24 94 e4 15 25 91 f1 d0 50 03 30 .....$...%...P.0 -+| 3296: f1 94 d4 15 82 04 d4 54 d4 f5 25 93 d3 53 03 03 .......T..%..S.. -+| 3312: 03 03 03 03 05 84 e4 f4 34 15 34 51 e1 c0 50 03 ........4.4Q..P. -+| 3328: 30 f1 74 d4 15 82 04 d4 54 d4 f5 25 93 d3 53 03 0.t.....T..%..S. -+| 3344: 03 03 03 03 03 05 85 25 45 24 94 d1 81 b0 50 02 .......%E$....P. -+| 3360: 50 f1 94 54 e4 14 24 c4 52 05 25 45 24 54 55 84 P..T..$.R.%E$TU. -+| 3376: 24 94 e4 15 25 91 81 a0 50 02 50 f1 94 54 e4 14 $...%...P.P..T.. -+| 3392: 24 c4 52 05 25 45 24 54 55 84 e4 f4 34 15 34 51 $.R.%E$TU...4.4Q -+| 3408: 71 90 50 02 50 f1 74 54 e4 14 24 c4 52 05 25 45 q.P.P.tT..$.R.%E -+| 3424: 24 54 55 85 25 45 24 94 d1 a1 80 50 02 90 f1 94 $TU.%E$....P.... -+| 3440: 54 e4 14 24 c4 52 04 d4 54 d5 35 95 33 55 84 24 T..$.R..T.5.3U.$ -+| 3456: 94 e4 15 25 91 a1 70 50 02 90 f1 94 54 e4 14 24 ...%..pP....T..$ -+| 3472: c4 52 04 d4 54 d5 35 95 33 55 84 e4 f4 34 15 34 .R..T.5.3U...4.4 -+| 3488: 51 91 60 50 02 90 f1 74 54 e4 14 24 c4 52 04 d4 Q.`P...tT..$.R.. -+| 3504: 54 d5 35 95 33 55 85 25 45 24 94 d1 81 50 50 02 T.5.3U.%E$...PP. -+| 3520: 50 f1 94 54 e4 14 24 c4 52 04 a5 34 f4 e3 15 84 P..T..$.R..4.... -+| 3536: 24 94 e4 15 25 91 81 40 50 02 50 f1 94 54 e4 14 $...%..@P.P..T.. -+| 3552: 24 c4 52 04 a5 34 f4 e3 15 84 e4 f4 34 15 34 51 $.R..4......4.4Q -+| 3568: 71 30 50 02 4f f1 74 54 e4 14 24 c4 52 04 a5 34 q0P.O.tT..$.R..4 -+| 3584: f4 e3 15 85 25 45 24 94 d1 a1 20 50 02 90 f1 94 ....%E$... P.... -+| 3600: 54 e4 14 24 c4 52 04 74 54 f5 04 f4 c5 95 84 24 T..$.R.tT......$ -+| 3616: 94 e4 15 25 91 a1 10 50 02 90 f1 94 54 e4 14 24 ...%...P....T..$ -+| 3632: c4 52 04 74 54 f5 04 f4 c5 95 84 e4 f4 34 15 34 .R.tT........4.4 -+| 3648: 51 91 00 50 02 90 f1 74 54 e4 14 24 c4 51 f4 74 Q..P...tT..$.Q.t -+| 3664: 54 f5 04 f4 c5 95 85 25 45 24 94 d1 70 f0 50 02 T......%E$..p.P. -+| 3680: 30 f1 94 54 e4 14 24 c5 20 46 54 53 35 58 42 49 0..T..$. FTS5XBI -+| 3696: 4e 41 52 59 17 0e 05 00 23 0f 19 45 4e 41 42 4c NARY....#..ENABL -+| 3712: 45 20 46 54 53 35 58 4f 4f 43 41 53 45 16 0d 05 E FTS5XOOCASE... -+| 3728: 00 23 0f 17 45 4e 41 42 4c 45 20 46 54 53 35 58 .#..ENABLE FTS5X -+| 3744: 52 54 52 49 4d 17 0c 05 00 23 0f 19 45 4e 41 42 RTRIM....#..ENAB -+| 3760: 4c 45 20 46 54 53 34 58 42 49 4e 41 52 59 97 0b LE FTS4XBINARY.. -+| 3776: 05 00 23 0f 19 45 4e 41 42 4c 45 20 46 54 53 34 ..#..ENABLE FTS4 -+| 3792: 58 4e 4f 43 41 53 45 16 0a 05 00 23 0f 17 45 4e XNOCASE....#..EN -+| 3808: 41 42 4c 45 20 46 54 53 34 58 52 54 52 49 4d 1e ABLE FTS4XRTRIM. -+| 3824: 09 05 00 3e 5f 19 45 4e 41 42 4c 45 20 44 42 53 ...>_.ENABLE DBS -+| 3840: 44 41 54 20 56 54 41 42 58 42 49 4e 41 52 59 1e DAT VTABXBINARY. -+| 3856: 08 05 00 31 0f 19 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS -+| 3872: 54 41 54 20 56 54 41 42 58 4e 4f 43 4d e3 45 1d TAT VTABXNOCM.E. -+| 3888: 07 05 00 31 0f 17 45 4e 41 42 4c 45 20 44 42 53 ...1..ENABLE DBS -+| 3904: 54 41 54 20 56 54 41 42 58 52 54 52 49 4d 11 06 TAT VTABXRTRIM.. -+| 3920: 05 00 17 0f 19 44 45 42 55 47 58 42 49 4e 41 52 .....DEBUGXBINAR -+| 3936: 59 11 05 05 00 17 0f 19 44 45 42 55 47 58 4e 4f Y.......DEBUGXNO -+| 3952: 43 41 53 45 10 02 02 50 08 5f 17 44 45 42 55 47 CASE...P._.DEBUG -+| 3968: 58 52 54 52 49 4d 27 03 05 00 44 0f 19 43 4f 4d XRTRIM'...D..COM -+| 3984: 50 49 4c 45 52 3d 67 63 63 2d 35 2e 34 2e 30 20 PILER=gcc-5.4.0 -+| 4000: 32 30 31 36 30 36 30 39 58 42 49 4e 41 52 59 27 20160609XBINARY' -+| 4016: 02 05 00 43 0f 19 43 4f 4d 50 49 4c 45 52 3d 67 ...C..COMPILER=g -+| 4032: 63 63 2d 35 2e 34 2e 30 20 32 30 31 36 30 36 30 cc-5.4.0 2016060 -+| 4048: 39 58 4e 4f 43 41 53 45 26 01 05 00 43 c9 17 43 9XNOCASE&...C..C -+| 4064: 4f 4d 50 49 4c 47 02 3d 67 63 63 2d 35 2e 34 2e OMPILG.=gcc-5.4. -+| 4080: 30 20 32 30 31 36 30 36 30 39 58 52 54 52 49 4d 0 20160609XRTRIM -+| page 6 offset 20480 -+| 0: 0d 00 00 00 24 0e e0 00 0f f8 0f f0 0f e8 0f e0 ....$........... -+| 16: 0f d8 0f d0 0f c8 0f c0 0f b8 0f b0 0f a8 0f a0 ................ -+| 32: 0f 98 0f 90 0f 88 0f 80 0f 78 0f 70 0f 68 0f 60 .........x.p.h.` -+| 48: 0f 58 0f 50 0f 48 0f 40 0f 38 00 00 00 00 00 00 .X.P.H.@.8...... -+| 3808: 06 24 03 00 12 02 01 01 06 23 03 00 12 02 01 01 .$.......#...... -+| 3824: 06 22 03 00 12 02 01 01 06 21 03 00 12 03 01 01 .........!...... -+| 3840: 06 20 03 00 12 03 01 01 06 1f 03 00 12 03 01 01 . .............. -+| 3856: 06 1e 03 00 12 03 01 01 06 1d 03 00 12 03 01 01 ................ -+| 3872: 06 1c 03 00 12 03 01 01 06 1b 03 00 12 02 01 01 ................ -+| 3888: 06 1a 03 00 12 02 01 01 06 19 03 00 12 02 01 01 ................ -+| 3904: 06 18 03 00 12 02 01 01 06 17 03 00 12 02 01 01 ................ -+| 3920: 06 16 03 00 12 02 01 01 06 15 03 00 12 02 01 01 ................ -+| 3936: 06 14 03 00 12 02 01 01 06 13 03 00 12 02 01 01 ................ -+| 3952: 06 12 03 00 12 02 01 01 06 11 03 00 12 02 01 01 ................ -+| 3968: 06 10 03 00 12 02 01 01 06 1f 03 00 12 02 01 01 ................ -+| 3984: 06 0e 03 00 12 02 01 01 06 0d 03 00 12 02 01 01 ................ -+| 4000: 06 0c 03 00 12 02 01 01 06 0b 03 00 12 02 01 01 ................ -+| 4016: 06 0a 03 00 12 02 01 01 06 09 03 00 12 03 01 01 ................ -+| 4032: 06 08 03 00 12 03 01 01 06 07 03 00 12 03 01 01 ................ -+| 4048: 06 06 03 00 12 01 01 01 06 05 03 00 12 01 01 01 ................ -+| 4064: 06 04 03 00 12 01 01 01 06 03 03 00 12 06 01 01 ................ -+| 4080: 06 02 03 00 12 06 01 01 06 01 03 00 12 06 01 01 ................ -+| page 7 offset 24576 -+| 0: 0a 00 00 00 01 0f f4 00 0f f4 00 00 00 00 00 00 ................ -+| 4080: 00 00 00 00 0b 03 1b 01 76 65 72 73 69 6f 6e 04 ........version. -+| page 8 offset 28672 -+| 0: 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ -+| 4048: 00 00 00 00 00 00 11 03 02 2b 69 6e 74 65 67 72 .........+integr -+| 4064: 69 74 79 2d 63 68 65 63 6b 09 00 00 00 00 00 00 ity-check....... -+| end crash-31c462b8b665d0.db -+}]} {} -+ -+ -+do_catchsql_test 69.2 { -+ SELECT * FROM t1 WHERE a MATCH 'fx*' -+} {1 {database disk image is malformed}} - - sqlite3_fts5_may_be_corrupt 0 - finish_test ---- /src/btree.c -+++ /src/btree.c -@@ -3886,7 +3886,7 @@ - Pgno nFree = get4byte(&pBt->pPage1->aData[36]); - Pgno nFin = finalDbSize(pBt, nOrig, nFree); - -- if( nOrig<nFin ){ -+ if( nOrig<nFin || nFree>=nOrig ){ - rc = SQLITE_CORRUPT_BKPT; - }else if( nFree>0 ){ - rc = saveAllCursors(pBt, 0, 0); -@@ -8772,7 +8772,11 @@ - assert( pPage->intKey || pX->nKey>=0 ); - assert( pPage->leaf || !pPage->intKey ); - if( pPage->nFree<0 ){ -- rc = btreeComputeFreeSpace(pPage); -+ if( pCur->eState>CURSOR_INVALID ){ -+ rc = SQLITE_CORRUPT_BKPT; -+ }else{ -+ rc = btreeComputeFreeSpace(pPage); -+ } - if( rc ) return rc; - } - ---- /test/corruptL.test -+++ /test/corruptL.test -@@ -1266,5 +1266,30 @@ - do_execsql_test 15.1 { - UPDATE c1 SET c= NOT EXISTS(SELECT 1 FROM c1 ORDER BY (SELECT 1 FROM c1 ORDER BY a)) +10 WHERE d BETWEEN 4 AND 7; - } {} -+ -+#------------------------------------------------------------------------- -+reset_db -+do_execsql_test 16.0 { -+ CREATE TABLE t1(w, x, y, z, UNIQUE(w, x), UNIQUE(y, z)); -+ INSERT INTO t1 VALUES(1, 1, 1, 1); -+ -+ CREATE TABLE t1idx(x, y, i INTEGER, PRIMARY KEY(x)) WITHOUT ROWID; -+ INSERT INTO t1idx VALUES(10, NULL, 5); -+ -+ PRAGMA writable_schema = 1; -+ UPDATE sqlite_master SET rootpage = ( -+ SELECT rootpage FROM sqlite_master WHERE name='t1idx' -+ ) WHERE type = 'index'; -+} -+ -+db close -+sqlite3 db test.db -+ -+do_catchsql_test 16.1 { -+ PRAGMA writable_schema = ON; -+ INSERT INTO t1(rowid, w, x, y, z) VALUES(5, 10, 11, 10, NULL); -+} {1 {database disk image is malformed}} -+ - finish_test - -+ diff --git a/dev-db/sqlite/files/sqlite-3.32.3-backports_3.patch b/dev-db/sqlite/files/sqlite-3.32.3-backports_3.patch deleted file mode 100644 index 07cb5d4a3960..000000000000 --- a/dev-db/sqlite/files/sqlite-3.32.3-backports_3.patch +++ /dev/null @@ -1,220 +0,0 @@ -https://sqlite.org/src/info/14eed318aa9e6e16 -https://sqlite.org/src/info/9679c0c61131f0e9 -https://sqlite.org/src/info/28515bbbae4fbc26 -https://sqlite.org/src/info/892e9191dc8f8056 -https://sqlite.org/src/info/270ac1a0f232d755 - ---- /ext/fts3/fts3.c -+++ /ext/fts3/fts3.c -@@ -5831,7 +5831,8 @@ - fts3EvalRestart(pCsr, pRoot, &rc); - do { - fts3EvalNextRow(pCsr, pRoot, &rc); -- assert( pRoot->bEof==0 ); -+ assert_fts3_nc( pRoot->bEof==0 ); -+ if( pRoot->bEof ) rc = FTS_CORRUPT_VTAB; - }while( pRoot->iDocid!=iDocid && rc==SQLITE_OK ); - } - } ---- /ext/misc/appendvfs.c -+++ /ext/misc/appendvfs.c -@@ -439,7 +439,7 @@ - p = (ApndFile*)pFile; - memset(p, 0, sizeof(*p)); - pSubFile = ORIGFILE(pFile); -- p->base.pMethods = &apnd_io_methods; -+ pFile->pMethods = &apnd_io_methods; - rc = pSubVfs->xOpen(pSubVfs, zName, pSubFile, flags, pOutFlags); - if( rc ) goto apnd_open_done; - rc = pSubFile->pMethods->xFileSize(pSubFile, &sz); ---- /ext/misc/cksumvfs.c -+++ /ext/misc/cksumvfs.c -@@ -634,7 +634,7 @@ - p = (CksmFile*)pFile; - memset(p, 0, sizeof(*p)); - pSubFile = ORIGFILE(pFile); -- p->base.pMethods = &cksm_io_methods; -+ pFile->pMethods = &cksm_io_methods; - rc = pSubVfs->xOpen(pSubVfs, zName, pSubFile, flags, pOutFlags); - if( rc ) goto cksm_open_done; - if( flags & SQLITE_OPEN_WAL ){ ---- /src/date.c -+++ /src/date.c -@@ -1112,8 +1112,8 @@ - case 'm': sqlite3_snprintf(3, &z[j],"%02d",x.M); j+=2; break; - case 'M': sqlite3_snprintf(3, &z[j],"%02d",x.m); j+=2; break; - case 's': { -- sqlite3_snprintf(30,&z[j],"%lld", -- (i64)(x.iJD/1000 - 21086676*(i64)10000)); -+ i64 iS = (i64)(x.iJD/1000 - 21086676*(i64)10000); -+ sqlite3Int64ToText(iS, &z[j]); - j += sqlite3Strlen30(&z[j]); - break; - } ---- /src/memdb.c -+++ /src/memdb.c -@@ -339,7 +339,7 @@ - p->mFlags = SQLITE_DESERIALIZE_RESIZEABLE | SQLITE_DESERIALIZE_FREEONCLOSE; - assert( pOutFlags!=0 ); /* True because flags==SQLITE_OPEN_MAIN_DB */ - *pOutFlags = flags | SQLITE_OPEN_MEMORY; -- p->base.pMethods = &memdb_io_methods; -+ pFile->pMethods = &memdb_io_methods; - p->szMax = sqlite3GlobalConfig.mxMemdbSize; - return SQLITE_OK; - } ---- /src/memjournal.c -+++ /src/memjournal.c -@@ -366,7 +366,7 @@ - assert( MEMJOURNAL_DFLT_FILECHUNKSIZE==fileChunkSize(p->nChunkSize) ); - } - -- p->pMethod = (const sqlite3_io_methods*)&MemJournalMethods; -+ pJfd->pMethods = (const sqlite3_io_methods*)&MemJournalMethods; - p->nSpill = nSpill; - p->flags = flags; - p->zJournal = zName; -@@ -392,7 +392,7 @@ - int sqlite3JournalCreate(sqlite3_file *pJfd){ - int rc = SQLITE_OK; - MemJournal *p = (MemJournal*)pJfd; -- if( p->pMethod==&MemJournalMethods && ( -+ if( pJfd->pMethods==&MemJournalMethods && ( - #ifdef SQLITE_ENABLE_ATOMIC_WRITE - p->nSpill>0 - #else ---- /src/os_unix.c -+++ /src/os_unix.c -@@ -5689,7 +5689,7 @@ - if( rc!=SQLITE_OK ){ - if( h>=0 ) robust_close(pNew, h, __LINE__); - }else{ -- pNew->pMethod = pLockingStyle; -+ pId->pMethods = pLockingStyle; - OpenCounter(+1); - verifyDbFile(pNew); - } ---- /src/os_win.c -+++ /src/os_win.c -@@ -5266,7 +5266,7 @@ - } - - sqlite3_free(zTmpname); -- pFile->pMethod = pAppData ? pAppData->pMethod : &winIoMethod; -+ id->pMethods = pAppData ? pAppData->pMethod : &winIoMethod; - pFile->pVfs = pVfs; - pFile->h = h; - if( isReadonly ){ ---- /src/sqliteInt.h -+++ /src/sqliteInt.h -@@ -4437,6 +4437,7 @@ - int sqlite3FixExprList(DbFixer*, ExprList*); - int sqlite3FixTriggerStep(DbFixer*, TriggerStep*); - int sqlite3RealSameAsInt(double,sqlite3_int64); -+void sqlite3Int64ToText(i64,char*); - int sqlite3AtoF(const char *z, double*, int, u8); - int sqlite3GetInt32(const char *, int*); - int sqlite3Atoi(const char*); ---- /src/test_multiplex.c -+++ /src/test_multiplex.c -@@ -591,9 +591,9 @@ - - if( rc==SQLITE_OK ){ - if( pSubOpen->pMethods->iVersion==1 ){ -- pMultiplexOpen->base.pMethods = &gMultiplex.sIoMethodsV1; -+ pConn->pMethods = &gMultiplex.sIoMethodsV1; - }else{ -- pMultiplexOpen->base.pMethods = &gMultiplex.sIoMethodsV2; -+ pConn->pMethods = &gMultiplex.sIoMethodsV2; - } - }else{ - multiplexFreeComponents(pGroup); ---- /src/util.c -+++ /src/util.c -@@ -596,6 +596,30 @@ - #endif - - /* -+** Render an signed 64-bit integer as text. Store the result in zOut[]. -+** -+** The caller must ensure that zOut[] is at least 21 bytes in size. -+*/ -+void sqlite3Int64ToText(i64 v, char *zOut){ -+ int i; -+ u64 x; -+ char zTemp[22]; -+ if( v<0 ){ -+ x = (v==SMALLEST_INT64) ? ((u64)1)<<63 : -v; -+ }else{ -+ x = v; -+ } -+ i = sizeof(zTemp)-2; -+ zTemp[sizeof(zTemp)-1] = 0; -+ do{ -+ zTemp[i--] = (x%10) + '0'; -+ x = x/10; -+ }while( x ); -+ if( v<0 ) zTemp[i--] = '-'; -+ memcpy(zOut, &zTemp[i+1], sizeof(zTemp)-1-i); -+} -+ -+/* - ** Compare the 19-character string zNum against the text representation - ** value 2^63: 9223372036854775808. Return negative, zero, or positive - ** if zNum is less than, equal to, or greater than the string. ---- /src/vdbemem.c -+++ /src/vdbemem.c -@@ -104,16 +104,25 @@ - static void vdbeMemRenderNum(int sz, char *zBuf, Mem *p){ - StrAccum acc; - assert( p->flags & (MEM_Int|MEM_Real|MEM_IntReal) ); -- sqlite3StrAccumInit(&acc, 0, zBuf, sz, 0); -+ assert( sz>22 ); - if( p->flags & MEM_Int ){ -- sqlite3_str_appendf(&acc, "%lld", p->u.i); -- }else if( p->flags & MEM_IntReal ){ -- sqlite3_str_appendf(&acc, "%!.15g", (double)p->u.i); -+#if GCC_VERSION>=7000000 -+ /* Work-around for GCC bug -+ ** https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96270 */ -+ i64 x; -+ assert( (p->flags&MEM_Int)*2==sizeof(x) ); -+ memcpy(&x, (char*)&p->u, (p->flags&MEM_Int)*2); -+ sqlite3Int64ToText(x, zBuf); -+#else -+ sqlite3Int64ToText(p->u.i, zBuf); -+#endif - }else{ -- sqlite3_str_appendf(&acc, "%!.15g", p->u.r); -+ sqlite3StrAccumInit(&acc, 0, zBuf, sz, 0); -+ sqlite3_str_appendf(&acc, "%!.15g", -+ (p->flags & MEM_IntReal)!=0 ? (double)p->u.i : p->u.r); -+ assert( acc.zText==zBuf && acc.mxAlloc<=0 ); -+ zBuf[acc.nChar] = 0; /* Fast version of sqlite3StrAccumFinish(&acc) */ - } -- assert( acc.zText==zBuf && acc.mxAlloc<=0 ); -- zBuf[acc.nChar] = 0; /* Fast version of sqlite3StrAccumFinish(&acc) */ - } - - #ifdef SQLITE_DEBUG ---- /test/fts3corrupt4.test -+++ /test/fts3corrupt4.test -@@ -6282,4 +6282,19 @@ - - set sqlite_fts3_enable_parentheses $saved - -+#------------------------------------------------------------------------- -+reset_db -+do_execsql_test 47.1 { -+ CREATE VIRTUAL TABLE t1 USING fts3(a,b,c); -+} -+do_execsql_test 47.2 { -+ INSERT INTO t1_segdir VALUES(0,0,0,0,0,X'000130120106000106000106001f030001030001030000083230313630363039090107000107000107000001340901050001050001050000013509010400010400010400010730303030303030091c0400010400010400000662696e6172793c0301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000008636f6d70696c657209010200010200010200000664627374617409070300010300010300010465627567090402000102000102000006656e61626c653f07020001020001020001020001020001020001020001020001020001020001020001020001010001020001020001020001020001020001020001020001020001087874656e73696f6e091f0400010400010400000466747334090a0300010300010300030135090d03000103000103000003676363090103000103000103000106656f706f6c790910030001030001030000056a736f6e310913030001030001030000046c6f6164091f030001030001030000036d6178091c02000102000102000105656d6f7279091c03000103000103000304737973350916030001030001030000066e6f636173653c02010202000301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000301020200030102020000046f6d6974091f020001020001020000057274726565091903000103000103000302696d3c01010202000301020200030102020003010202000301020200030102020003010202000301a202000301020200030102020003010202000301020200000a746872656164736166650922020001020001020000047674616209070400010400010400000178b401010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200'); -+ INSERT INTO t1_segdir VALUES(0,1,0,0,0,X'0001300425061b000008323031363036303903250700000134032505000001350325040001073030303030303003251a000008636f6d70696c657203250200000664627374617403250a00010465627567032508000006656e61626c650925090504040404040001087874656e73696f6e03251d0000046674733403250d0003013503250f000003676363032503000106656f706f6c790325110000056a736f6e310325130000046c6f616403251c0000036d6178032518000105656d6f7279032519000304737973350325150000046f6d697403251b000005727472656503251700000a7468726561647361666503251e0000047674616333250b00'); -+} -+ -+do_catchsql_test 47.3 { -+ SELECT matchinfo(t1) FROM t1 WHERE t1 MATCH '"json1 enable"'; -+} {1 {database disk image is malformed}} -+ -+ - finish_test 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 000000000000..762f1359b9fa --- /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.32.1-full_archive-build_1.patch b/dev-db/sqlite/files/sqlite-3.34.0-build_1.2.patch index aec90e4c07ad..7fb5d28e4bac 100644 --- a/dev-db/sqlite/files/sqlite-3.32.1-full_archive-build_1.patch +++ b/dev-db/sqlite/files/sqlite-3.34.0-build_1.2.patch @@ -1,225 +1,29 @@ Add initialization functions for internal usage in libsqlite3.so. ---- /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/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); +SQLite revision: a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b + +--- /ext/misc/nextchar.c ++++ /ext/misc/nextchar.c +@@ -286,17 +286,8 @@ + sqlite3_free(c.aResult); } -+#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( +-int sqlite3_nextchar_init( - sqlite3 *db, - char **pzErrMsg, - const sqlite3_api_routines *pApi -){ -+int sqlite3FileioInit(sqlite3 *db){ ++int sqlite3NextcharInit(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 @@ + rc = sqlite3_create_function(db, "next_char", 3, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, + nextCharFunc, 0, 0); +@@ -312,3 +303,18 @@ } return rc; } @@ -228,32 +32,27 @@ Add initialization functions for internal usage in libsqlite3.so. +#ifdef _WIN32 +__declspec(dllexport) +#endif -+int sqlite3_fileio_init( ++int sqlite3_nextchar_init( + sqlite3 *db, + char **pzErrMsg, + const sqlite3_api_routines *pApi +){ + SQLITE_EXTENSION_INIT2(pApi); + (void)pzErrMsg; /* Unused parameter */ -+ return sqlite3FileioInit(db); ++ return sqlite3NextcharInit(db); +} +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ ---- /ext/misc/ieee754.c -+++ /ext/misc/ieee754.c -@@ -110,6 +110,20 @@ +--- /ext/misc/percentile.c ++++ /ext/misc/percentile.c +@@ -202,6 +202,15 @@ } -+int sqlite3IeeeInit(sqlite3 *db){ ++int sqlite3PercentileInit(sqlite3 *db){ + int rc = SQLITE_OK; -+ rc = sqlite3_create_function(db, "ieee754", 1, ++ rc = sqlite3_create_function(db, "percentile", 2, + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, -+ ieee754func, 0, 0); -+ if( rc==SQLITE_OK ){ -+ rc = sqlite3_create_function(db, "ieee754", 2, -+ SQLITE_UTF8|SQLITE_INNOCUOUS, 0, -+ ieee754func, 0, 0); -+ } ++ 0, percentStep, percentFinal); + return rc; +} + @@ -261,23 +60,18 @@ Add initialization functions for internal usage in libsqlite3.so. #ifdef _WIN32 __declspec(dllexport) #endif -@@ -118,16 +132,8 @@ +@@ -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, "ieee754", 1, +- rc = sqlite3_create_function(db, "percentile", 2, - SQLITE_UTF8|SQLITE_INNOCUOUS, 0, -- ieee754func, 0, 0); -- if( rc==SQLITE_OK ){ -- rc = sqlite3_create_function(db, "ieee754", 2, -- SQLITE_UTF8|SQLITE_INNOCUOUS, 0, -- ieee754func, 0, 0); -- } +- 0, percentStep, percentFinal); - return rc; -+ return sqlite3IeeeInit(db); ++ return sqlite3PercentileInit(db); } +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ --- /ext/misc/regexp.c @@ -314,6 +108,42 @@ Add initialization functions for internal usage in libsqlite3.so. + 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 @@ @@ -637,7 +467,7 @@ Add initialization functions for internal usage in libsqlite3.so. #include "sqlite3ext.h" SQLITE_EXTENSION_INIT1 #include <stdio.h> -@@ -2137,7 +2139,7 @@ +@@ -2139,7 +2141,7 @@ /* ** Register the "zipfile" virtual table. */ @@ -646,7 +476,7 @@ Add initialization functions for internal usage in libsqlite3.so. static sqlite3_module zipfileModule = { 1, /* iVersion */ zipfileConnect, /* xCreate */ -@@ -2171,9 +2173,10 @@ +@@ -2173,9 +2175,10 @@ return rc; } #else /* SQLITE_OMIT_VIRTUALTABLE */ @@ -658,7 +488,7 @@ Add initialization functions for internal usage in libsqlite3.so. #ifdef _WIN32 __declspec(dllexport) #endif -@@ -2184,5 +2187,8 @@ +@@ -2186,5 +2189,8 @@ ){ SQLITE_EXTENSION_INIT2(pApi); (void)pzErrMsg; /* Unused parameter */ 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 000000000000..16210a6bddc5 --- /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 000000000000..1aa60a0b1623 --- /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.ebuild b/dev-db/sqlite/sqlite-3.33.0.ebuild index aa8b7bfaa56e..3bbe8b10eb66 100644 --- a/dev-db/sqlite/sqlite-3.33.0.ebuild +++ b/dev-db/sqlite/sqlite-3.33.0.ebuild @@ -22,7 +22,7 @@ fi LICENSE="public-domain" SLOT="3" -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" IUSE="debug doc icu +readline secure-delete static-libs tcl test tools" if [[ "${PV}" == "9999" ]]; then PROPERTIES="live" diff --git a/dev-db/sqlite/sqlite-3.32.3-r1.ebuild b/dev-db/sqlite/sqlite-3.34.0.ebuild index c433b78721c9..59c3f62f88a8 100644 --- a/dev-db/sqlite/sqlite-3.32.3-r1.ebuild +++ b/dev-db/sqlite/sqlite-3.34.0.ebuild @@ -22,7 +22,7 @@ fi LICENSE="public-domain" SLOT="3" -KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" IUSE="debug doc icu +readline secure-delete static-libs tcl test tools" if [[ "${PV}" == "9999" ]]; then PROPERTIES="live" @@ -50,48 +50,85 @@ else S="${WORKDIR}/${PN}-src-${SRC_PV}" fi -src_unpack() { - if [[ "${PV}" == "9999" ]]; then - local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" - addwrite "${distdir}" - mkdir -p "${distdir}/fossil-src/${PN}" || die - - mkdir "${WORKDIR}/${PN}" || die - pushd "${WORKDIR}/${PN}" > /dev/null || die - if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite.fossil" ]]; then - einfo fossil clone --verbose https://sqlite.org/src sqlite.fossil - fossil clone --verbose https://sqlite.org/src sqlite.fossil || die +_fossil_fetch() { + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" + local repo_id="${1}" + local repo_uri="${2}" + + local -x FOSSIL_HOME="${HOME}" + + mkdir -p "${T}/fossil/${repo_id}" || die + pushd "${T}/fossil/${repo_id}" > /dev/null || die + + if [[ -n "${EVCS_OFFLINE}" ]]; then + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + die "Network activity disabled using EVCS_OFFLINE and clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" + fi + else + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + einfo fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" + fossil clone --verbose "${repo_uri}" "${repo_id}.fossil" || die echo else - cp -p "${distdir}/fossil-src/${PN}/sqlite.fossil" . || die - einfo fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src - fossil pull --repository sqlite.fossil --verbose https://sqlite.org/src || die + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" . || die + einfo fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" + fossil pull --repository "${repo_id}.fossil" --verbose "${repo_uri}" || die echo fi - cp -p sqlite.fossil "${distdir}/fossil-src/${PN}" || die - einfo fossil open --quiet sqlite.fossil - fossil open --quiet sqlite.fossil || die - echo - popd > /dev/null || die + ( + addwrite "${distdir}" + mkdir -p "${distdir}/fossil-src/${repo_id}" || die + cp -p "${repo_id}.fossil" "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" || die + ) + fi + + popd > /dev/null || die +} + +_fossil_checkout() { + local distdir="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" + local repo_id="${1}" + local branch_or_commit="${2}" + local target_directory="${3}" + + local -x FOSSIL_HOME="${HOME}" + + if [[ ! -f "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" ]]; then + die "Clone of repository missing: \"${distdir}/fossil-src/${repo_id}/${repo_id}.fossil\"" + fi + + if [[ ! -f "${T}/fossil/${repo_id}/${repo_id}.fossil" ]]; then + mkdir -p "${T}/fossil/${repo_id}" || die + cp -p "${distdir}/fossil-src/${repo_id}/${repo_id}.fossil" "${T}/fossil/${repo_id}" || die + fi + + mkdir "${target_directory}" || die + pushd "${target_directory}" > /dev/null || die + + einfo fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" + fossil open --quiet "${T}/fossil/${repo_id}/${repo_id}.fossil" "${branch_or_commit}" || die + echo + + popd > /dev/null || die +} + +fossil_fetch() { + local repo_id="${1}" + local repo_uri="${2}" + local target_directory="${3}" + + local branch_or_commit="${EFOSSIL_COMMIT:-${EFOSSIL_BRANCH:-trunk}}" + + _fossil_fetch "${repo_id}" "${repo_uri}" + _fossil_checkout "${repo_id}" "${branch_or_commit}" "${target_directory}" +} + +src_unpack() { + if [[ "${PV}" == "9999" ]]; then + fossil_fetch sqlite https://sqlite.org/src "${WORKDIR}/${PN}" if use doc; then - mkdir "${WORKDIR}/${PN}-doc" || die - pushd "${WORKDIR}/${PN}-doc" > /dev/null || die - if [[ ! -f "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" ]]; then - einfo fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil - fossil clone --verbose https://sqlite.org/docsrc sqlite-doc.fossil || die - echo - else - cp -p "${distdir}/fossil-src/${PN}/sqlite-doc.fossil" . || die - einfo fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc - fossil pull --repository sqlite-doc.fossil --verbose https://sqlite.org/docsrc || die - echo - fi - cp -p sqlite-doc.fossil "${distdir}/fossil-src/${PN}" || die - einfo fossil open --quiet sqlite-doc.fossil - fossil open --quiet sqlite-doc.fossil || die - echo - popd > /dev/null || die + fossil_fetch sqlite-doc https://sqlite.org/docsrc "${WORKDIR}/${PN}-doc" fi else default @@ -99,15 +136,10 @@ src_unpack() { } src_prepare() { - eapply "${FILESDIR}/"${PN}-3.32.1-full_archive-build_{1,2}.patch - eapply "${FILESDIR}/"${PN}-3.32.3-backports_{1,2,3}.patch + eapply "${FILESDIR}/"${PN}-3.34.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" - eautoreconf multilib_copy_sources @@ -127,22 +159,27 @@ multilib_src_configure() { 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 # Support sqlite3_serialize() and sqlite3_deserialize() functions. + # https://sqlite.org/compile.html#enable_deserialize # https://sqlite.org/c3ref/serialize.html # https://sqlite.org/c3ref/deserialize.html append-cppflags -DSQLITE_ENABLE_DESERIALIZE @@ -152,6 +189,10 @@ multilib_src_configure() { 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 @@ -161,10 +202,12 @@ multilib_src_configure() { 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 @@ -173,53 +216,66 @@ multilib_src_configure() { 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 @@ -246,6 +302,7 @@ multilib_src_configure() { # 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 @@ -257,6 +314,8 @@ multilib_src_configure() { 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 @@ -277,6 +336,21 @@ multilib_src_compile() { if use tools && multilib_is_native_abi; then emake changeset dbdump dbhash dbtotxt index_usage rbu scrub showdb showjournal showshm showstat4 showwal sqldiff sqlite3_analyzer sqlite3_checker sqlite3_expert sqltclsh fi + + if [[ "${PV}" == "9999" ]] && use doc && multilib_is_native_abi; then + emake tclsqlite3.c + + local build_directory="$(pwd)" + build_directory="${build_directory##*/}" + + mkdir "${WORKDIR}/${PN}-doc-build" || die + pushd "${WORKDIR}/${PN}-doc-build" > /dev/null || die + + emake -f "../${PN}-doc/Makefile" -j1 SRC="../${PN}" BLD="../${build_directory}" DOC="../${PN}-doc" CC="$(tc-getBUILD_CC)" TCLINC="" TCLFLAGS="$($(tc-getBUILD_PKG_CONFIG) --libs tcl) -ldl -lm" base doc + rmdir doc/matrix{/*,} || die + + popd > /dev/null || die + fi } multilib_src_test() { @@ -325,15 +399,29 @@ multilib_src_install() { } multilib_src_install_all() { - find "${D}" -name "*.la" -type f -delete || die + find "${ED}" -name "*.la" -delete || die doman sqlite3.1 if use doc; then - rm "${WORKDIR}/${PN}-doc-${DOC_PV}/"*.{db,txt} || die + if [[ "${PV}" == "9999" ]]; then + pushd "${WORKDIR}/${PN}-doc-build/doc" > /dev/null || die + else + pushd "${WORKDIR}/${PN}-doc-${DOC_PV}" > /dev/null || die + fi + + find "(" -name "*.db" -o -name "*.txt" ")" -delete || die + if [[ "${PV}" != "9999" ]]; then + rm search search.d/admin || die + rmdir search.d || die + find -name "*~" -delete || die + fi + ( docinto html - dodoc -r "${WORKDIR}/${PN}-doc-${DOC_PV}/"* + dodoc -r * ) + + popd > /dev/null || die fi } |