From 96e16194b8c6eda98e7b1a33f042233da7b7c64a Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 22 May 2025 18:04:48 +0000 Subject: [PATCH 01/15] Fix a problem with using streaming iterators with sqlite3changegroup_add_change(). FossilOrigin-Name: 3dbde727146d28c316df47c7b5116be7f2476a0a0c893207c2a4ca3ab285cb5e --- ext/session/sessionchange.test | 16 ++++++++++++++++ ext/session/sqlite3session.c | 22 ++++++++++++++-------- ext/session/test_session.c | 30 ++++++++++++++++++++++++++---- manifest | 18 +++++++++--------- manifest.uuid | 2 +- 5 files changed, 66 insertions(+), 22 deletions(-) diff --git a/ext/session/sessionchange.test b/ext/session/sessionchange.test index c1c28622ef..6e2cb0e820 100644 --- a/ext/session/sessionchange.test +++ b/ext/session/sessionchange.test @@ -96,6 +96,22 @@ do_test 1.5 { $iter finalize grp delete +do_test 1.6 { + set C [changeset_from_sql { + INSERT INTO t1 VALUES(1001, hex(randomblob(10000)), hex(randomblob(10000))); + INSERT INTO t1 VALUES(2001, hex(randomblob(10000)), hex(randomblob(10000))); + INSERT INTO t1 VALUES(3001, hex(randomblob(10000)), hex(randomblob(10000))); + }] + + sqlite3changegroup grp + set iter [sqlite3changeset_start $C] + while {[$iter next]=="SQLITE_ROW"} { + grp add_change $iter + } + $iter finalize +} SQLITE_OK + +grp delete finish_test diff --git a/ext/session/sqlite3session.c b/ext/session/sqlite3session.c index a8dd1d9be2..175cacbe86 100644 --- a/ext/session/sqlite3session.c +++ b/ext/session/sqlite3session.c @@ -3396,14 +3396,15 @@ int sqlite3changeset_start_v2_strm( ** object and the buffer is full, discard some data to free up space. */ static void sessionDiscardData(SessionInput *pIn){ - if( pIn->xInput && pIn->iNext>=sessions_strm_chunk_size ){ - int nMove = pIn->buf.nBuf - pIn->iNext; + if( pIn->xInput && pIn->iCurrent>=sessions_strm_chunk_size ){ + int nMove = pIn->buf.nBuf - pIn->iCurrent; assert( nMove>=0 ); if( nMove>0 ){ - memmove(pIn->buf.aBuf, &pIn->buf.aBuf[pIn->iNext], nMove); + memmove(pIn->buf.aBuf, &pIn->buf.aBuf[pIn->iCurrent], nMove); } - pIn->buf.nBuf -= pIn->iNext; - pIn->iNext = 0; + pIn->buf.nBuf -= pIn->iCurrent; + pIn->iNext -= pIn->iCurrent; + pIn->iCurrent = 0; pIn->nData = pIn->buf.nBuf; } } @@ -3757,8 +3758,8 @@ static int sessionChangesetNextOne( p->rc = sessionInputBuffer(&p->in, 2); if( p->rc!=SQLITE_OK ) return p->rc; - sessionDiscardData(&p->in); p->in.iCurrent = p->in.iNext; + sessionDiscardData(&p->in); /* If the iterator is already at the end of the changeset, return DONE. */ if( p->in.iNext>=p->in.nData ){ @@ -6117,14 +6118,19 @@ int sqlite3changegroup_add_change( sqlite3_changegroup *pGrp, sqlite3_changeset_iter *pIter ){ + int rc = SQLITE_OK; + if( pIter->in.iCurrent==pIter->in.iNext || pIter->rc!=SQLITE_OK || pIter->bInvert ){ /* Iterator does not point to any valid entry or is an INVERT iterator. */ - return SQLITE_ERROR; + rc = SQLITE_ERROR; + }else{ + pIter->in.bNoDiscard = 1; + rc = sessionOneChangeToHash(pGrp, pIter, 0); } - return sessionOneChangeToHash(pGrp, pIter, 0); + return rc; } /* diff --git a/ext/session/test_session.c b/ext/session/test_session.c index e167cb8fb0..f28604abc2 100644 --- a/ext/session/test_session.c +++ b/ext/session/test_session.c @@ -1459,6 +1459,9 @@ struct TestChangegroup { typedef struct TestChangeIter TestChangeIter; struct TestChangeIter { sqlite3_changeset_iter *pIter; + + /* If this iter uses streaming. */ + TestStreamInput in; }; @@ -1681,6 +1684,7 @@ static int SQLITE_TCLAPI test_sqlite3changeset_start( sqlite3_changeset_iter *pIter = 0; int flags = 0; int rc = SQLITE_OK; + int nAlloc = 0; /* Bytes of space to allocate */ static int iCmd = 1; char zCmd[64]; @@ -1696,18 +1700,36 @@ static int SQLITE_TCLAPI test_sqlite3changeset_start( return TCL_ERROR; } - flags = isInvert ? SQLITE_CHANGESETSTART_INVERT : 0; pChangeset = (void *)Tcl_GetByteArrayFromObj(objv[objc-1], &nChangeset); - rc = sqlite3changeset_start_v2(&pIter, (int)nChangeset, pChangeset, flags); + flags = isInvert ? SQLITE_CHANGESETSTART_INVERT : 0; + + nAlloc = sizeof(TestChangeIter); + if( test_tcl_integer(interp, SESSION_STREAM_TCL_VAR) ){ + nAlloc += nChangeset; + } + pNew = (TestChangeIter*)ckalloc(nAlloc); + memset(pNew, 0, nAlloc); + if( test_tcl_integer(interp, SESSION_STREAM_TCL_VAR) ){ + pNew->in.nStream = test_tcl_integer(interp, SESSION_STREAM_TCL_VAR); + pNew->in.nData = nChangeset; + pNew->in.aData = (unsigned char*)&pNew[1]; + memcpy(pNew->in.aData, pChangeset, nChangeset); + } + + if( pNew->in.nStream ){ + void *pCtx = (void*)&pNew->in; + rc = sqlite3changeset_start_v2_strm(&pIter, testStreamInput, pCtx, flags); + }else{ + rc = sqlite3changeset_start_v2(&pIter, (int)nChangeset, pChangeset, flags); + } if( rc!=SQLITE_OK ){ char *zErr = sqlite3_mprintf( "error in sqlite3changeset_start_v2() - %d", rc ); Tcl_AppendResult(interp, zErr, (char*)0); + ckfree(pNew); return TCL_ERROR; } - - pNew = (TestChangeIter*)ckalloc(sizeof(TestChangeIter)); pNew->pIter = pIter; sprintf(zCmd, "csiter%d", iCmd++); diff --git a/manifest b/manifest index 117de1e60d..e55f159530 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Clarify\ssome\smalloc\ssize\scomputations\sto\ssimplify\sthe\sproof\sthat\sthey\nare\ssafe.\s\sRemove\ssome\scode\sassociated\swith\scygwin\sthat\sis\smarked\s"#if\s0". -D 2025-05-19T14:50:36.906 +C Fix\sa\sproblem\swith\susing\sstreaming\siterators\swith\ssqlite3changegroup_add_change(). +D 2025-05-22T18:04:48.757 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -601,7 +601,7 @@ F ext/session/sessionalter.test e852acb3d2357aac7d0b920a2109da758c4331bfdf85b41d F ext/session/sessionat.test 00c8badb35e43a2f12a716d2734a44d614ff62361979b6b85419035bc04b45ee F ext/session/sessionbig.test 47c381e7acfabeef17d98519a3080d69151723354d220afa2053852182ca7adf F ext/session/sessionblob.test 87faf667870b72f08e91969abd9f52a383ab7b514506ee194d64a39d8faff00a -F ext/session/sessionchange.test 77c4702050f24270b58070e2cf01c95c3d232a3ef164b70f31974b386ce69903 +F ext/session/sessionchange.test 6618cb1c1338a4b6df173b6ac42d09623fb71269962abf23ebb7617fe9f45a50 F ext/session/sessionconflict.test 19e4a53795c4c930bfec49e809311e09b2a9e202d9446e56d7a8b139046a0c07 x F ext/session/sessiondiff.test e89f7aedcdd89e5ebac3a455224eb553a171e9586fc3e1e6a7b3388d2648ba8d F ext/session/sessionfault.test c2b43d01213b389a3f518e90775fca2120812ba51e50444c4066962263e45c11 @@ -617,9 +617,9 @@ F ext/session/sessionrowid.test 85187c2f1b38861a5844868126f69f9ec62223a03449a98a F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795 F ext/session/sessionstat1.test 5e718d5888c0c49bbb33a7a4f816366db85f59f6a4f97544a806421b85dc2dec F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc -F ext/session/sqlite3session.c 7a8816d56940c464c74706dfb02f18129b290655df1ccb8648228a7d436141f2 +F ext/session/sqlite3session.c 6b0877fe1ab832aa4b85eaca72606dfd1630a1363a1be7af10ee1042a5ec719e F ext/session/sqlite3session.h 9bb1a6687b467764b35178dc29bbd2c57ab8cd3acdc8a62f088c34ad17e4fe2b -F ext/session/test_session.c af162108e8dc40cb9fe0e876e0155cecabcb49e82e5939677d21451e36160283 +F ext/session/test_session.c 2ddff73ea368d827028c32851b291416e1008845832feb27b751d15e57e13cc3 F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c F ext/wasm/GNUmakefile 24d7e6f446528fa67f5ade6c3c7d7e46e1ac52649d6264cbe24539c1dab608e1 F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 8819b7285b71932327f47d29fa575cfb338e2fccd3f7c2023faf0575bfdb0079 -R 946ad68930588fd8088439cf4ef3fb55 -U drh -Z 28d57a56afcfa879aa70c91fd7351c46 +P ba8184d132a935aa1980fbfb61ff308b93d433d559db4968f9014f7653ac9c6e +R 6545703450e23e51a4d8ba6cf71d201b +U dan +Z e2a99740785b40c0ced82e554792c0ed # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index c9309a9f81..1270cfae71 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ba8184d132a935aa1980fbfb61ff308b93d433d559db4968f9014f7653ac9c6e +3dbde727146d28c316df47c7b5116be7f2476a0a0c893207c2a4ca3ab285cb5e From c1ea1a6d4dc6d9ebb40fa7530962f75206557398 Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 23 May 2025 14:52:23 +0000 Subject: [PATCH 02/15] Add the --osmalloc option to the test/speedtest.tcl testing script. Adjust ./configure so that it does not check for malloc_usable_size(). FossilOrigin-Name: 7e9845433ff26bdc5fe8654281d584394b77e3b206d09669b4468e0271c6eb37 --- autosetup/sqlite-config.tcl | 2 +- manifest | 16 ++++++++-------- manifest.uuid | 2 +- test/speedtest.tcl | 15 ++++++++++++--- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/autosetup/sqlite-config.tcl b/autosetup/sqlite-config.tcl index 1df6e233ff..85fe414382 100644 --- a/autosetup/sqlite-config.tcl +++ b/autosetup/sqlite-config.tcl @@ -616,7 +616,7 @@ proc sqlite-check-common-system-deps {} { # Check for needed/wanted functions cc-check-functions gmtime_r isnan localtime_r localtime_s \ - malloc_usable_size strchrnul usleep utime pread pread64 pwrite pwrite64 + strchrnul usleep utime pread pread64 pwrite pwrite64 apply {{} { set ldrt "" diff --git a/manifest b/manifest index e55f159530..d6b70acb60 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\swith\susing\sstreaming\siterators\swith\ssqlite3changegroup_add_change(). -D 2025-05-22T18:04:48.757 +C Add\sthe\s--osmalloc\soption\sto\sthe\stest/speedtest.tcl\stesting\sscript.\nAdjust\s./configure\sso\sthat\sit\sdoes\snot\scheck\sfor\smalloc_usable_size(). +D 2025-05-23T14:52:23.824 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -48,7 +48,7 @@ F autosetup/find_tclconfig.tcl e64886ffe3b982d4df42cd28ed91fe0b5940c2c5785e126c1 F autosetup/jimsh0.c 563b966c137a4ce3c9333e5196723b7ac0919140a9d7989eb440463cd855c367 F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba F autosetup/proj.tcl c4a77735b57f3c016a185bff048212a197b77723f9bea6cfafe396e4b542c666 -F autosetup/sqlite-config.tcl 7ff986f6c3951f3aec5608522cbf772d8d04a0d26cc894289e2ca4836e018719 +F autosetup/sqlite-config.tcl ccda82e43e377b832aae72a1678b1dc17dcaff36ed0ebbd8f0cfc88612ae8de3 F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9 F autosetup/teaish/README.txt b40071e6f8506500a2f7f71d5fc69e0bf87b9d7678dd9da1e5b4d0acbf40b1ca F autosetup/teaish/core.tcl 1ebbe849d8e716424a3ffe9384c7e8b352b3e1194d3d4a153b125cc5176b3715 @@ -1686,7 +1686,7 @@ F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715 F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa F test/speed4p.test 377a0c48e5a92e0b11c1c5ebb1bc9d83a7312c922bc0cb05970ef5d6a96d1f0c F test/speedtest.md ee958457ae1b729d9715ae33c0320600000bf1d9ddea1a88dcf79f56729d6fad -F test/speedtest.tcl 926d1e168f4a14e6fb68c5dc174de743536b547f365264bd5bac533b3621a4a0 x +F test/speedtest.tcl 01b1b08676bf5ad3ec6cb18f507576a47abc2d477ec1ef82888be45c88e36d12 x F test/speedtest1.c 64b8804b053a796eab22f8b23fb181000f05d7b3e2aa44f022117ea543bc5a2a F test/spellfix.test 951a6405d49d1a23d6b78027d3877b4a33eeb8221dcab5704b499755bb4f552e F test/spellfix2.test dfc8f519a3fc204cb2dfa8b4f29821ae90f6f8c3 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P ba8184d132a935aa1980fbfb61ff308b93d433d559db4968f9014f7653ac9c6e -R 6545703450e23e51a4d8ba6cf71d201b -U dan -Z e2a99740785b40c0ced82e554792c0ed +P 3dbde727146d28c316df47c7b5116be7f2476a0a0c893207c2a4ca3ab285cb5e +R 0d48208b49d5cbef94b1e46b984a87ab +U drh +Z 2201e54bf2c0085b4630769c7de83fef # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 1270cfae71..6b6c3f64f8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3dbde727146d28c316df47c7b5116be7f2476a0a0c893207c2a4ca3ab285cb5e +7e9845433ff26bdc5fe8654281d584394b77e3b206d09669b4468e0271c6eb37 diff --git a/test/speedtest.tcl b/test/speedtest.tcl index 1ad92d9ab0..473a30ec2a 100755 --- a/test/speedtest.tcl +++ b/test/speedtest.tcl @@ -25,6 +25,7 @@ Other options include: --help Show this help screen. --lean "Lean" mode. --lookaside N SZ Lookahead uses N slots of SZ bytes each. + --osmalloc Use the OS native malloc() instead of MEMSYS5 --pagesize N Use N as the page size. --quiet | -q "Quite". Put results in file but don't pop up editor --size N Change the test size. 100 means 100%. Default: 5. @@ -40,7 +41,8 @@ set cc gcc set testset mix1 set dryrun 0 set quiet 0 -set speedtestflags {--shrink-memory --reprepare --stats --heap 40000000 64} +set osmalloc 0 +set speedtestflags {--shrink-memory --reprepare --stats} lappend speedtestflags --journal wal --size 5 for {set i 0} {$i<[llength $argv]} {incr i} { @@ -92,6 +94,10 @@ for {set i 0} {$i<[llength $argv]} {incr i} { --dryrun { set dryrun 1 } + -osmalloc - + --osmalloc { + set osmalloc 1 + } -? - -help - --help { @@ -139,10 +145,13 @@ for {set i 0} {$i<[llength $argv]} {incr i} { if {[lsearch -glob $cflags -O*]<0} { lappend cflags -Os } -if {[lsearch -glob $cflags -DSQLITE_ENABLE_MEMSYS*]<0} { +if {!$osmalloc} { + append cflags { --heap 40000000 64} +} +if {!$osmalloc && [lsearch -glob $cflags {-DSQLITE_ENABLE_MEMSYS*}]<0} { lappend cflags -DSQLITE_ENABLE_MEMSYS5 } -if {[lsearch -glob $cflags -DSQLITE_ENABLE_RTREE*]<0} { +if {[lsearch -glob $cflags {-DSQLITE_ENABLE_RTREE*}]<0} { lappend cflags -DSQLITE_ENABLE_RTREE } if {$srcfile==""} { From 85f37eba161481283986e63e936de05396b0dfcc Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 23 May 2025 20:50:49 +0000 Subject: [PATCH 03/15] Limit JSON recursion depth to 500 when running ASAN in fuzzcheck, to prevent stack overflow on ARM64. FossilOrigin-Name: 5e96e177a040b46aa55492037ce5dc71ab49d66b45659d739f2ee6c3042f16ef --- main.mk | 2 +- manifest | 12 ++++++------ manifest.uuid | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/main.mk b/main.mk index 53c0abb704..9f5cdbc363 100644 --- a/main.mk +++ b/main.mk @@ -2230,7 +2230,7 @@ fuzzy: fuzzcheck$(T.exe) xbin: fuzzcheck$(T.exe) # -fsanitize=... flags for fuzzcheck-asan. -CFLAGS.fuzzcheck-asan.fsanitize ?= -fsanitize=address +CFLAGS.fuzzcheck-asan.fsanitize ?= -fsanitize=address -DSQLITE_JSON_MAX_DEPTH=500 fuzzcheck-asan$(T.exe): $(FUZZCHECK_SRC) sqlite3.c sqlite3.h $(FUZZCHECK_DEP) $(T.link) -o $@ $(CFLAGS.fuzzcheck-asan.fsanitize) $(FUZZCHECK_OPT) $(FUZZCHECK_SRC) \ diff --git a/manifest b/manifest index d6b70acb60..323496be19 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sthe\s--osmalloc\soption\sto\sthe\stest/speedtest.tcl\stesting\sscript.\nAdjust\s./configure\sso\sthat\sit\sdoes\snot\scheck\sfor\smalloc_usable_size(). -D 2025-05-23T14:52:23.824 +C Limit\sJSON\srecursion\sdepth\sto\s500\swhen\srunning\sASAN\sin\sfuzzcheck,\sto\sprevent\nstack\soverflow\son\sARM64. +D 2025-05-23T20:50:49.436 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -709,7 +709,7 @@ F ext/wasm/tests/opfs/sahpool/sahpool-pausing.js f264925cfc82155de38cecb3d204c36 F ext/wasm/tests/opfs/sahpool/sahpool-worker.js bd25a43fc2ab2d1bafd8f2854ad3943ef673f7c3be03e95ecf1612ff6e8e2a61 F ext/wasm/wasmfs.make 68999f5bd8c489239592d59a420f8c627c99169bbd6fa16a404751f757b9f702 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0 -F main.mk a41fa9e96ef139452d21a9ca5db4561ce053363e04d07da803f5e1cefb44c65e +F main.mk 27d470019d41c4a8d5d4e96245fe5c35f6893128ab5cb62e9d80e98746d69e9b F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 3dbde727146d28c316df47c7b5116be7f2476a0a0c893207c2a4ca3ab285cb5e -R 0d48208b49d5cbef94b1e46b984a87ab +P 7e9845433ff26bdc5fe8654281d584394b77e3b206d09669b4468e0271c6eb37 +R 985b752a70ded16a099e22f49321d05a U drh -Z 2201e54bf2c0085b4630769c7de83fef +Z 7fc484b634ef370c5fb76d77121972c0 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6b6c3f64f8..a90c004d25 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7e9845433ff26bdc5fe8654281d584394b77e3b206d09669b4468e0271c6eb37 +5e96e177a040b46aa55492037ce5dc71ab49d66b45659d739f2ee6c3042f16ef From 81a2f7ba8f079453347b11cb379166dc27339c18 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sat, 24 May 2025 01:34:41 +0000 Subject: [PATCH 04/15] Amend the previous: Set SQLITE_JSON_MAX_DEPTH to 500 on *all* builds of fuzzcheck. FossilOrigin-Name: c266e38c5b61f47b920027aad418b641ab32cb8a3360dbcfd9f9f29b14fd5375 --- main.mk | 3 ++- manifest | 12 ++++++------ manifest.uuid | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/main.mk b/main.mk index 9f5cdbc363..88c641b70f 100644 --- a/main.mk +++ b/main.mk @@ -996,6 +996,7 @@ FUZZCHECK_OPT += \ -DSQLITE_ENABLE_UNKNOWN_SQL_FUNCTION \ -DSQLITE_ENABLE_STAT4 \ -DSQLITE_ENABLE_STMT_SCANSTATUS \ + -DSQLITE_JSON_MAX_DEPTH=500 \ -DSQLITE_MAX_MEMORY=50000000 \ -DSQLITE_MAX_MMAP_SIZE=0 \ -DSQLITE_OMIT_LOAD_EXTENSION \ @@ -2230,7 +2231,7 @@ fuzzy: fuzzcheck$(T.exe) xbin: fuzzcheck$(T.exe) # -fsanitize=... flags for fuzzcheck-asan. -CFLAGS.fuzzcheck-asan.fsanitize ?= -fsanitize=address -DSQLITE_JSON_MAX_DEPTH=500 +CFLAGS.fuzzcheck-asan.fsanitize ?= -fsanitize=address fuzzcheck-asan$(T.exe): $(FUZZCHECK_SRC) sqlite3.c sqlite3.h $(FUZZCHECK_DEP) $(T.link) -o $@ $(CFLAGS.fuzzcheck-asan.fsanitize) $(FUZZCHECK_OPT) $(FUZZCHECK_SRC) \ diff --git a/manifest b/manifest index 323496be19..f67ade6c4f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Limit\sJSON\srecursion\sdepth\sto\s500\swhen\srunning\sASAN\sin\sfuzzcheck,\sto\sprevent\nstack\soverflow\son\sARM64. -D 2025-05-23T20:50:49.436 +C Amend\sthe\sprevious:\s\sSet\sSQLITE_JSON_MAX_DEPTH\sto\s500\son\s*all*\sbuilds\nof\sfuzzcheck. +D 2025-05-24T01:34:41.404 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -709,7 +709,7 @@ F ext/wasm/tests/opfs/sahpool/sahpool-pausing.js f264925cfc82155de38cecb3d204c36 F ext/wasm/tests/opfs/sahpool/sahpool-worker.js bd25a43fc2ab2d1bafd8f2854ad3943ef673f7c3be03e95ecf1612ff6e8e2a61 F ext/wasm/wasmfs.make 68999f5bd8c489239592d59a420f8c627c99169bbd6fa16a404751f757b9f702 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0 -F main.mk 27d470019d41c4a8d5d4e96245fe5c35f6893128ab5cb62e9d80e98746d69e9b +F main.mk 517db864e770c486bd1465298c20d91899918d395263266997d477b20ef9eec8 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 7e9845433ff26bdc5fe8654281d584394b77e3b206d09669b4468e0271c6eb37 -R 985b752a70ded16a099e22f49321d05a +P 5e96e177a040b46aa55492037ce5dc71ab49d66b45659d739f2ee6c3042f16ef +R b33b6790e31e77ec224dca6988a44d61 U drh -Z 7fc484b634ef370c5fb76d77121972c0 +Z d279177fc60b3e8a930f9f4f2e15aa64 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index a90c004d25..756206110c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5e96e177a040b46aa55492037ce5dc71ab49d66b45659d739f2ee6c3042f16ef +c266e38c5b61f47b920027aad418b641ab32cb8a3360dbcfd9f9f29b14fd5375 From c5031b578b027a680524496617f638d4f8a3f54e Mon Sep 17 00:00:00 2001 From: stephan Date: Sat, 24 May 2025 16:01:50 +0000 Subject: [PATCH 05/15] vtablog.c doc fixes reported in [forum:416d1e37b2|forum post 416d1e37b2]. FossilOrigin-Name: 5d25f62bcd2d754134f608162778b49b0e71c29bd5a6f2461a07caca3d76c7de --- ext/misc/vtablog.c | 4 ++-- manifest | 14 +++++++------- manifest.uuid | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ext/misc/vtablog.c b/ext/misc/vtablog.c index 2cc29c285f..e8f084e1b2 100644 --- a/ext/misc/vtablog.c +++ b/ext/misc/vtablog.c @@ -240,7 +240,7 @@ static int vtablogConnect( /* -** This method is the destructor for vtablog_cursor objects. +** This method is the destructor for vtablog_vtab objects. */ static int vtablogDisconnect(sqlite3_vtab *pVtab){ vtablog_vtab *pTab = (vtablog_vtab*)pVtab; @@ -252,7 +252,7 @@ static int vtablogDisconnect(sqlite3_vtab *pVtab){ } /* -** This method is the destructor for vtablog_cursor objects. +** This method is (also) the destructor for vtablog_vtab objects. */ static int vtablogDestroy(sqlite3_vtab *pVtab){ vtablog_vtab *pTab = (vtablog_vtab*)pVtab; diff --git a/manifest b/manifest index f67ade6c4f..01d3fffdef 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Amend\sthe\sprevious:\s\sSet\sSQLITE_JSON_MAX_DEPTH\sto\s500\son\s*all*\sbuilds\nof\sfuzzcheck. -D 2025-05-24T01:34:41.404 +C vtablog.c\sdoc\sfixes\sreported\sin\s[forum:416d1e37b2|forum\spost\s416d1e37b2]. +D 2025-05-24T16:01:50.573 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -457,7 +457,7 @@ F ext/misc/uuid.c 5bb2264c1b64d163efa46509544fd7500cb8769cb7c16dd52052da8d961505 F ext/misc/vfslog.c 3932ab932eeb2601dbc4447cb14d445aaa9fbe43b863ef5f014401c3420afd20 F ext/misc/vfsstat.c 0b23c0a69a2b63dc0ef0af44f9c1fc977300c480a1f7a9814500369d8211f56e F ext/misc/vfstrace.c 0e4b8b17ac0675ea90f6d168d8214687e06ca3efbc0060aad4814994d82b41fb -F ext/misc/vtablog.c 1100250ce8782db37c833e3a9a5c9a3ecf1af5e15b8325572b82e6e0a138ffb5 +F ext/misc/vtablog.c a197addbbd1e267a5476274b74953e1b6f050e28516f0a5fe7d6382753165ee6 F ext/misc/vtshim.c e5bce24ab8c532f4fdc600148718fe1802cb6ed57417f1c1032d8961f72b0e8f F ext/misc/wholenumber.c 0fa0c082676b7868bf2fa918e911133f2b349bcdceabd1198bba5f65b4fc0668 F ext/misc/zipfile.c b62147ac4985eaac4e368d529b1f4f43ad6bc9ac13d6805d907fff3afdac64d3 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 5e96e177a040b46aa55492037ce5dc71ab49d66b45659d739f2ee6c3042f16ef -R b33b6790e31e77ec224dca6988a44d61 -U drh -Z d279177fc60b3e8a930f9f4f2e15aa64 +P c266e38c5b61f47b920027aad418b641ab32cb8a3360dbcfd9f9f29b14fd5375 +R 08db1ead98789581c0a87806fad4110e +U stephan +Z 2ef73c70805dee244a37cb8f5ef42d20 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 756206110c..7374930f27 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c266e38c5b61f47b920027aad418b641ab32cb8a3360dbcfd9f9f29b14fd5375 +5d25f62bcd2d754134f608162778b49b0e71c29bd5a6f2461a07caca3d76c7de From a01b7adb1345b57063c5937fb98ffe6fb89657d9 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sat, 24 May 2025 20:20:20 +0000 Subject: [PATCH 06/15] Change json_group_object() so that it ignores entries where the label is NULL. [forum:/forumpost/e5bd251fb5|Forum post e5bd251fb5]. FossilOrigin-Name: 28215d131cd970a2756338579fb6b6091ab155be8f419505cae8ac918956165c --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/json.c | 14 ++++++++------ test/json101.test | 2 +- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/manifest b/manifest index 01d3fffdef..0ba65a4d52 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C vtablog.c\sdoc\sfixes\sreported\sin\s[forum:416d1e37b2|forum\spost\s416d1e37b2]. -D 2025-05-24T16:01:50.573 +C Change\sjson_group_object()\sso\sthat\sit\signores\sentries\swhere\sthe\slabel\nis\sNULL.\s\s[forum:/forumpost/e5bd251fb5|Forum\spost\se5bd251fb5]. +D 2025-05-24T20:20:20.426 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -746,7 +746,7 @@ F src/hash.h 46b92795a95bfefb210f52f0c316e9d7cdbcdd7e7fcfb0d8be796d3a5767cddf F src/hwtime.h f9c2dfb84dce7acf95ce6d289e46f5f9d3d1afd328e53da8f8e9008e3b3caae6 F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71 F src/insert.c d05934dfab2c5c0c480fc6fd2038f11215661de08ea6ff38d2563216bd555c1b -F src/json.c 2406a6b0dd849ee0fd107d5cfef9fec2cdc2fbe631ece3183c31d6f85e0ec988 +F src/json.c d34969ecb9555f33fc0b2227628189a9a4e20dda5df5d173db9918a014aa7ad1 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa F src/loadext.c d7edd8e671237539d795d30daaf888908a2c82e99bade4c78f3be021e8b7d655 F src/main.c 07f78d917ffcdf327982840cfd8e855fd000527a2ea5ace372ce4febcbd0bf97 @@ -1388,7 +1388,7 @@ F test/json/json-generator.tcl dc0dd0f393800c98658fc4c47eaa6af29d4e17527380cd286 F test/json/json-q1.txt 65f9d1cdcc4cffa9823fb73ed936aae5658700cd001fde448f68bfb91c807307 F test/json/json-speed-check.sh 7d5898808ce7542762318306ae6075a30f5e7ee115c4a409f487e123afe91d88 x F test/json/jsonb-q1.txt 1e180fe6491efab307e318b22879e3a736ac9a96539bbde7911a13ee5b33abc7 -F test/json101.test 11024e20fe298f7214878947b8f85a2dbe593593e04b4173c14a5857afbb986c +F test/json101.test 8237a484c256965eab1678fd950a32ac56325bb7d0dadbd095a46b0ddd95d62b F test/json102.test 9b2e5ada10845ff84853b3feaae2ce51ce7145ae458f74c6a6cecc6ef6ee3ae1 F test/json103.test 355746a6b66aa438f214b4fae454b13068fad2444b5f693e0d538ad1c059b264 F test/json104.test 1b844a70cddcfa2e4cd81a5db0657b2e61e7f00868310f24f56a9ba0114348c1 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P c266e38c5b61f47b920027aad418b641ab32cb8a3360dbcfd9f9f29b14fd5375 -R 08db1ead98789581c0a87806fad4110e -U stephan -Z 2ef73c70805dee244a37cb8f5ef42d20 +P 5d25f62bcd2d754134f608162778b49b0e71c29bd5a6f2461a07caca3d76c7de +R d987892ec7c9946323ec5c2a460ee77b +U drh +Z 3fb038b427963a4fec4a7c712363d8e1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 7374930f27..ca0315c750 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5d25f62bcd2d754134f608162778b49b0e71c29bd5a6f2461a07caca3d76c7de +28215d131cd970a2756338579fb6b6091ab155be8f419505cae8ac918956165c diff --git a/src/json.c b/src/json.c index ee4cf1cbc3..4ae17a5a4b 100644 --- a/src/json.c +++ b/src/json.c @@ -4850,18 +4850,20 @@ static void jsonObjectStep( UNUSED_PARAMETER(argc); pStr = (JsonString*)sqlite3_aggregate_context(ctx, sizeof(*pStr)); if( pStr ){ + z = (const char*)sqlite3_value_text(argv[0]); + n = sqlite3Strlen30(z); if( pStr->zBuf==0 ){ jsonStringInit(pStr, ctx); jsonAppendChar(pStr, '{'); - }else if( pStr->nUsed>1 ){ + }else if( pStr->nUsed>1 && z!=0 ){ jsonAppendChar(pStr, ','); } pStr->pCtx = ctx; - z = (const char*)sqlite3_value_text(argv[0]); - n = sqlite3Strlen30(z); - jsonAppendString(pStr, z, n); - jsonAppendChar(pStr, ':'); - jsonAppendSqlValue(pStr, argv[1]); + if( z!=0 ){ + jsonAppendString(pStr, z, n); + jsonAppendChar(pStr, ':'); + jsonAppendSqlValue(pStr, argv[1]); + } } } static void jsonObjectCompute(sqlite3_context *ctx, int isFinal){ diff --git a/test/json101.test b/test/json101.test index aec959acb2..e22902f869 100644 --- a/test/json101.test +++ b/test/json101.test @@ -1113,7 +1113,7 @@ do_execsql_test json101-21.26 { do_execsql_test json101-21.27 { WITH c(x,y) AS (VALUES('a',1),('b',2.0),('c',NULL),(NULL,'three'),('e','four')) SELECT json_group_object(x,y) FROM c; -} {{{"a":1,"b":2.0,"c":null,:"three","e":"four"}}} +} {{{"a":1,"b":2.0,"c":null,"e":"four"}}} # 2023-10-09 https://sqlite.org/forum/forumpost/b25edc1d46 # UAF due to JSON cache overflow From 45fa2347fe5b80f3f86cc08396141d809b580e9a Mon Sep 17 00:00:00 2001 From: stephan Date: Mon, 26 May 2025 07:15:20 +0000 Subject: [PATCH 07/15] tclsqlite.c doc typo fix. FossilOrigin-Name: de0dfac1e5ca9d2661674c20664095386f60c77378311507fcba08111df52b38 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/tclsqlite.c | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 0ba65a4d52..6523f1badb 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Change\sjson_group_object()\sso\sthat\sit\signores\sentries\swhere\sthe\slabel\nis\sNULL.\s\s[forum:/forumpost/e5bd251fb5|Forum\spost\se5bd251fb5]. -D 2025-05-24T20:20:20.426 +C tclsqlite.c\sdoc\stypo\sfix. +D 2025-05-26T07:15:20.435 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -794,7 +794,7 @@ F src/sqliteInt.h ded2e1527c84603d9d91adccb63dda460d96a2e2f98111d0438a479aa0dbe4 F src/sqliteLimit.h 6d817c28a8f19af95e6f4921933b7fbbca48a962bce0eb0ec81e8bb3ef38e68b F src/status.c 0e72e4f6be6ccfde2488eb63210297e75f569f3ce9920f6c3d77590ec6ce5ffd F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 -F src/tclsqlite.c 767a11d470b031e85f51b8924a0e8929b2362ff1975aee3474a10eba3c2e0d36 +F src/tclsqlite.c d0e63ffe7944dd223bf62066d9f982cbee1978811c7fbfd889f4ba9c5baed3d1 F src/tclsqlite.h 65e2c761446e1c9fa0342b7d2612a703483643c8b6a316d12a65b745a4727395 F src/test1.c 9b54135e5f1352f06b1d23d7c183f124c1f33de6ea8997cd801f0f215c43591d F src/test2.c 62f0830958f9075692c29c6de51b495ae8969e1bef85f239ffcd9ba5fb44a5ff @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 5d25f62bcd2d754134f608162778b49b0e71c29bd5a6f2461a07caca3d76c7de -R d987892ec7c9946323ec5c2a460ee77b -U drh -Z 3fb038b427963a4fec4a7c712363d8e1 +P 28215d131cd970a2756338579fb6b6091ab155be8f419505cae8ac918956165c +R 0bd71eeaf4b7d0c078bec1e70dd7f93a +U stephan +Z fe2139900473a36410fefd9d8a460091 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index ca0315c750..e95aa14987 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -28215d131cd970a2756338579fb6b6091ab155be8f419505cae8ac918956165c +de0dfac1e5ca9d2661674c20664095386f60c77378311507fcba08111df52b38 diff --git a/src/tclsqlite.c b/src/tclsqlite.c index 7675a91254..8c40b86922 100644 --- a/src/tclsqlite.c +++ b/src/tclsqlite.c @@ -4044,8 +4044,8 @@ EXTERN int sqlite_Init(Tcl_Interp *interp){ return Sqlite3_Init(interp);} #if defined(TCLSH) /* This is the main routine for an ordinary TCL shell. If there are -** are arguments, run the first argument as a script. Otherwise, -** read TCL commands from standard input +** arguments, run the first argument as a script. Otherwise, read TCL +** commands from standard input */ static const char *tclsh_main_loop(void){ static const char zMainloop[] = From 3f010489549a39c5c89259ff864ffef57a06dc4b Mon Sep 17 00:00:00 2001 From: stephan Date: Mon, 26 May 2025 15:20:57 +0000 Subject: [PATCH 08/15] When detecting TCLLIBDIR, skip over //zipfs paths, as the (file isdirectory) command will actually return true for those, but they're useless for installation purposes. This resolves the tea build's inability to install on stock openbsd. FossilOrigin-Name: 5b29724a3287c9a910f303faf056d0706b66c3e6ba23f9746c11d775c631f374 --- autosetup/teaish/core.tcl | 4 +++- manifest | 12 ++++++------ manifest.uuid | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/autosetup/teaish/core.tcl b/autosetup/teaish/core.tcl index 381597ec56..93effbc41f 100644 --- a/autosetup/teaish/core.tcl +++ b/autosetup/teaish/core.tcl @@ -817,7 +817,9 @@ proc teaish__check_tcl {} { if {"" ne $withSh && [catch {exec echo "puts stdout \$auto_path" | "$withSh"} result] == 0} { foreach i $result { - if {[file isdirectory $i]} { + if {![string match //zip* $i] && [file isdirectory $i]} { + # isdirectory actually passes on //zipfs:/..., but those are + # useless for our purposes set tcllibdir $i/$extDirName break } diff --git a/manifest b/manifest index 6523f1badb..408bd43308 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C tclsqlite.c\sdoc\stypo\sfix. -D 2025-05-26T07:15:20.435 +C When\sdetecting\sTCLLIBDIR,\sskip\sover\s//zipfs\spaths,\sas\sthe\s(file\sisdirectory)\scommand\swill\sactually\sreturn\strue\sfor\sthose,\sbut\sthey're\suseless\sfor\sinstallation\spurposes.\sThis\sresolves\sthe\stea\sbuild's\sinability\sto\sinstall\son\sstock\sopenbsd. +D 2025-05-26T15:20:57.472 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -51,7 +51,7 @@ F autosetup/proj.tcl c4a77735b57f3c016a185bff048212a197b77723f9bea6cfafe396e4b54 F autosetup/sqlite-config.tcl ccda82e43e377b832aae72a1678b1dc17dcaff36ed0ebbd8f0cfc88612ae8de3 F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9 F autosetup/teaish/README.txt b40071e6f8506500a2f7f71d5fc69e0bf87b9d7678dd9da1e5b4d0acbf40b1ca -F autosetup/teaish/core.tcl 1ebbe849d8e716424a3ffe9384c7e8b352b3e1194d3d4a153b125cc5176b3715 +F autosetup/teaish/core.tcl 3d5b54158922a946c240e916d1c43a5cb9803166b302d61f7d61f080faa93ad9 F autosetup/teaish/feature.tcl 18194fb79a24d30e5bbdeab40999616f39278b53a27525349ded033af2fd73be F autosetup/teaish/tester.tcl 091745984473faea6985254b9986c6dfd0cce06f68bc515ba4afc1e6b3742fa8 F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 28215d131cd970a2756338579fb6b6091ab155be8f419505cae8ac918956165c -R 0bd71eeaf4b7d0c078bec1e70dd7f93a +P de0dfac1e5ca9d2661674c20664095386f60c77378311507fcba08111df52b38 +R 3fa837495725ba451f48513795489ef0 U stephan -Z fe2139900473a36410fefd9d8a460091 +Z 426be4d03da492ca6b0d0903f0942112 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index e95aa14987..fac31d8e2a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -de0dfac1e5ca9d2661674c20664095386f60c77378311507fcba08111df52b38 +5b29724a3287c9a910f303faf056d0706b66c3e6ba23f9746c11d775c631f374 From 8f06aed1dfce1801a5380f249e24be7f55767405 Mon Sep 17 00:00:00 2001 From: drh <> Date: Mon, 26 May 2025 15:36:43 +0000 Subject: [PATCH 09/15] Avoid calls to sprintf() in Lemon, since OpenBSD hates sprintf(). FossilOrigin-Name: ed17858ddf833b6b9c2164f31ee9138a998d28ec1564d09e20deb102eefedbc8 --- manifest | 14 +++++++------- manifest.uuid | 2 +- tool/lemon.c | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 408bd43308..d38cd6d840 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C When\sdetecting\sTCLLIBDIR,\sskip\sover\s//zipfs\spaths,\sas\sthe\s(file\sisdirectory)\scommand\swill\sactually\sreturn\strue\sfor\sthose,\sbut\sthey're\suseless\sfor\sinstallation\spurposes.\sThis\sresolves\sthe\stea\sbuild's\sinability\sto\sinstall\son\sstock\sopenbsd. -D 2025-05-26T15:20:57.472 +C Avoid\scalls\sto\ssprintf()\sin\sLemon,\ssince\sOpenBSD\shates\ssprintf(). +D 2025-05-26T15:36:43.871 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -2143,7 +2143,7 @@ F tool/genfkey.README e550911fa984c8255ebed2ef97824125d83806eb5232582700de949edf F tool/genfkey.test b6afd7b825d797a1e1274f519ab5695373552ecad5cd373530c63533638a5a4f F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce F tool/index_usage.c f62a0c701b2c7ff2f3e21d206f093c123f222dbf07136a10ffd1ca15a5c706c5 -F tool/lemon.c f51a488369046cd4f4212d755a214a57673ded400cbeb01e298cbf63539e1d8c +F tool/lemon.c 00535f27e61ae8200ba8402c1753483de39eef2f59b60da8b7951c458a32e017 F tool/lempar.c bdffd3b233a4e4e78056c9c01fadd2bb3fe902435abde3bce3d769fdf0d5cca2 F tool/libvers.c caafc3b689638a1d88d44bc5f526c2278760d9b9 F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P de0dfac1e5ca9d2661674c20664095386f60c77378311507fcba08111df52b38 -R 3fa837495725ba451f48513795489ef0 -U stephan -Z 426be4d03da492ca6b0d0903f0942112 +P 5b29724a3287c9a910f303faf056d0706b66c3e6ba23f9746c11d775c631f374 +R e9061238c0b3cee8c2477787415845d9 +U drh +Z 9062846480eb9b629f97d72bef8a2f1f # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index fac31d8e2a..6dcbd646e8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5b29724a3287c9a910f303faf056d0706b66c3e6ba23f9746c11d775c631f374 +ed17858ddf833b6b9c2164f31ee9138a998d28ec1564d09e20deb102eefedbc8 diff --git a/tool/lemon.c b/tool/lemon.c index f0f2c8d726..795c3a2166 100644 --- a/tool/lemon.c +++ b/tool/lemon.c @@ -4035,10 +4035,10 @@ PRIVATE int translate_code(struct lemon *lemp, struct rule *rp){ } } if( lhsdirect ){ - sprintf(zLhs, "yymsp[%d].minor.yy%d",1-rp->nrhs,rp->lhs->dtnum); + lemon_sprintf(zLhs, "yymsp[%d].minor.yy%d",1-rp->nrhs,rp->lhs->dtnum); }else{ rc = 1; - sprintf(zLhs, "yylhsminor.yy%d",rp->lhs->dtnum); + lemon_sprintf(zLhs, "yylhsminor.yy%d",rp->lhs->dtnum); } append_str(0,0,0,0); From 93394ebc27d6d4dfa9b61901395985fd2af4caa3 Mon Sep 17 00:00:00 2001 From: dan Date: Mon, 26 May 2025 16:17:06 +0000 Subject: [PATCH 10/15] On OpenBSD, do not test fuzzcheck with ubsan as part of "make devtest". FossilOrigin-Name: a3dabd599c3d3143b67258b307d352968e5f5d4ea0456940d16ae678de8c95eb --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/testrunner_data.tcl | 17 +++++++++-------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/manifest b/manifest index d38cd6d840..ca4a6ae026 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\scalls\sto\ssprintf()\sin\sLemon,\ssince\sOpenBSD\shates\ssprintf(). -D 2025-05-26T15:36:43.871 +C On\sOpenBSD,\sdo\snot\stest\sfuzzcheck\swith\subsan\sas\spart\sof\s"make\sdevtest". +D 2025-05-26T16:17:06.110 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -1735,7 +1735,7 @@ F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 463ae33b8bf75ac77451df19bd65e7c415c2e9891227c7c9e657d0a2d8e1074a F test/testrunner.tcl 614c4a28f7f730acd7bec53e17d76602fb480e0d538b6ec548169e03a093f92d x -F test/testrunner_data.tcl 8d5fa3851c48bc94e26db0be325202e44f6ca4ed838272b8d5b10c23817621e6 +F test/testrunner_data.tcl 02dd645b647d907c959fbf232b7ff7d869c2ae430d5117443fc1e16a0d32243a F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 5b29724a3287c9a910f303faf056d0706b66c3e6ba23f9746c11d775c631f374 -R e9061238c0b3cee8c2477787415845d9 -U drh -Z 9062846480eb9b629f97d72bef8a2f1f +P ed17858ddf833b6b9c2164f31ee9138a998d28ec1564d09e20deb102eefedbc8 +R 2dbd1ddabc38afa915c96a5fb9977a81 +U dan +Z a0aa412543fa628338bcbce343e19379 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6dcbd646e8..af130a461a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ed17858ddf833b6b9c2164f31ee9138a998d28ec1564d09e20deb102eefedbc8 +a3dabd599c3d3143b67258b307d352968e5f5d4ea0456940d16ae678de8c95eb diff --git a/test/testrunner_data.tcl b/test/testrunner_data.tcl index 557c31b803..3998bd9cc6 100644 --- a/test/testrunner_data.tcl +++ b/test/testrunner_data.tcl @@ -458,16 +458,17 @@ proc trd_fuzztest_data {buildname} { if {$::tcl_platform(platform) eq "windows"} { return [list fuzzcheck.exe $lFuzzDb] - } elseif {[lsearch $sanBuilds $buildname]>=0} { - return [list [trd_get_bin_name fuzzcheck] $lFuzzDb \ - [trd_get_bin_name fuzzcheck-asan] $lFuzzDb \ - [trd_get_bin_name fuzzcheck-ubsan] $lFuzzDb \ - {sessionfuzz run} $lSessionDb] } else { - return [list [trd_get_bin_name fuzzcheck] $lFuzzDb \ - {sessionfuzz run} $lSessionDb] + set lRet [list [trd_get_bin_name fuzzcheck] $lFuzzDb] + if {[lsearch $sanBuilds $buildname]>=0} { + lappend lRet [trd_get_bin_name fuzzcheck-asan] $lFuzzDb + if {$::tcl_platform(os) ne "OpenBSD"} { + lappend lRet [trd_get_bin_name fuzzcheck-ubsan] $lFuzzDb + } + } + lappend lRet {sessionfuzz run} $lSessionDb + return $lRet } - } From 209894c2f57effcf366e39f70d256d58e7dcb893 Mon Sep 17 00:00:00 2001 From: stephan Date: Mon, 26 May 2025 16:59:49 +0000 Subject: [PATCH 11/15] In the TEA build, enable USE_TCL_STUBS on Mac platforms. FossilOrigin-Name: 0b5415151c9bf558378f83b1a60df3d3760f1aa311895af04e1fb79a8fb29e79 --- autosetup/teaish/core.tcl | 4 ++-- manifest | 14 +++++++------- manifest.uuid | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/autosetup/teaish/core.tcl b/autosetup/teaish/core.tcl index 93effbc41f..33c6e18984 100644 --- a/autosetup/teaish/core.tcl +++ b/autosetup/teaish/core.tcl @@ -541,10 +541,10 @@ proc teaish__configure_phase1 {} { define TEAISH_VSATISFIES_CODE [join $code "\n"] }}; # vsatisfies - if {[proj-looks-like-windows]} { + if {[proj-looks-like-windows] || [proj-looks-like-mac]} { # Without this, linking of an extension will not work on Cygwin or # Msys2. - msg-result "Using USE_TCL_STUBS for Unix(ish)-on-Windows environment" + msg-result "Using USE_TCL_STUBS for this environment" teaish-cflags-add -DUSE_TCL_STUBS=1 } diff --git a/manifest b/manifest index ca4a6ae026..f054e68e31 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C On\sOpenBSD,\sdo\snot\stest\sfuzzcheck\swith\subsan\sas\spart\sof\s"make\sdevtest". -D 2025-05-26T16:17:06.110 +C In\sthe\sTEA\sbuild,\senable\sUSE_TCL_STUBS\son\sMac\splatforms. +D 2025-05-26T16:59:49.908 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -51,7 +51,7 @@ F autosetup/proj.tcl c4a77735b57f3c016a185bff048212a197b77723f9bea6cfafe396e4b54 F autosetup/sqlite-config.tcl ccda82e43e377b832aae72a1678b1dc17dcaff36ed0ebbd8f0cfc88612ae8de3 F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9 F autosetup/teaish/README.txt b40071e6f8506500a2f7f71d5fc69e0bf87b9d7678dd9da1e5b4d0acbf40b1ca -F autosetup/teaish/core.tcl 3d5b54158922a946c240e916d1c43a5cb9803166b302d61f7d61f080faa93ad9 +F autosetup/teaish/core.tcl a37bd039881bc1b0adfa25808966e62108b1e8194e730f1d1e06aad7e57b1f6e F autosetup/teaish/feature.tcl 18194fb79a24d30e5bbdeab40999616f39278b53a27525349ded033af2fd73be F autosetup/teaish/tester.tcl 091745984473faea6985254b9986c6dfd0cce06f68bc515ba4afc1e6b3742fa8 F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P ed17858ddf833b6b9c2164f31ee9138a998d28ec1564d09e20deb102eefedbc8 -R 2dbd1ddabc38afa915c96a5fb9977a81 -U dan -Z a0aa412543fa628338bcbce343e19379 +P a3dabd599c3d3143b67258b307d352968e5f5d4ea0456940d16ae678de8c95eb +R d297f6832cebb1b6be0105702f8f88e2 +U stephan +Z eaab08d8d3161e4327533800c29b7bcd # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index af130a461a..572a00593c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a3dabd599c3d3143b67258b307d352968e5f5d4ea0456940d16ae678de8c95eb +0b5415151c9bf558378f83b1a60df3d3760f1aa311895af04e1fb79a8fb29e79 From f96d44e5dea47a266f69841bdc86d90bc3f8c3e8 Mon Sep 17 00:00:00 2001 From: drh <> Date: Mon, 26 May 2025 17:29:13 +0000 Subject: [PATCH 12/15] Fix a bug in the speedtest.tcl testing script that was introduced by [7e9845433ff26bdc] FossilOrigin-Name: e4ffa86aa6ca82a42933281f6cbfca7bad702797eb8d6e684a1992e68dc1cfb7 --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/speedtest.tcl | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index f054e68e31..a7fbd6cd28 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C In\sthe\sTEA\sbuild,\senable\sUSE_TCL_STUBS\son\sMac\splatforms. -D 2025-05-26T16:59:49.908 +C Fix\sa\sbug\sin\sthe\sspeedtest.tcl\stesting\sscript\sthat\swas\sintroduced\sby\n[7e9845433ff26bdc] +D 2025-05-26T17:29:13.462 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -1686,7 +1686,7 @@ F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715 F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa F test/speed4p.test 377a0c48e5a92e0b11c1c5ebb1bc9d83a7312c922bc0cb05970ef5d6a96d1f0c F test/speedtest.md ee958457ae1b729d9715ae33c0320600000bf1d9ddea1a88dcf79f56729d6fad -F test/speedtest.tcl 01b1b08676bf5ad3ec6cb18f507576a47abc2d477ec1ef82888be45c88e36d12 x +F test/speedtest.tcl 405411356fbc54af15987b7ffeec330a49138f71584220fb8fe1948b2f7ac907 x F test/speedtest1.c 64b8804b053a796eab22f8b23fb181000f05d7b3e2aa44f022117ea543bc5a2a F test/spellfix.test 951a6405d49d1a23d6b78027d3877b4a33eeb8221dcab5704b499755bb4f552e F test/spellfix2.test dfc8f519a3fc204cb2dfa8b4f29821ae90f6f8c3 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P a3dabd599c3d3143b67258b307d352968e5f5d4ea0456940d16ae678de8c95eb -R d297f6832cebb1b6be0105702f8f88e2 -U stephan -Z eaab08d8d3161e4327533800c29b7bcd +P 0b5415151c9bf558378f83b1a60df3d3760f1aa311895af04e1fb79a8fb29e79 +R 6f7a612b1c86f9dd095164be8ec681dc +U drh +Z c58b62c267ade7cb6a741b710a6638ac # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 572a00593c..ede5b53494 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0b5415151c9bf558378f83b1a60df3d3760f1aa311895af04e1fb79a8fb29e79 +e4ffa86aa6ca82a42933281f6cbfca7bad702797eb8d6e684a1992e68dc1cfb7 diff --git a/test/speedtest.tcl b/test/speedtest.tcl index 473a30ec2a..7cd3b5fa19 100755 --- a/test/speedtest.tcl +++ b/test/speedtest.tcl @@ -146,7 +146,7 @@ if {[lsearch -glob $cflags -O*]<0} { lappend cflags -Os } if {!$osmalloc} { - append cflags { --heap 40000000 64} + append speedtestflags { --heap 40000000 64} } if {!$osmalloc && [lsearch -glob $cflags {-DSQLITE_ENABLE_MEMSYS*}]<0} { lappend cflags -DSQLITE_ENABLE_MEMSYS5 From f08f71a21d0ac10275002f626a1723a2bf824c36 Mon Sep 17 00:00:00 2001 From: drh <> Date: Mon, 26 May 2025 23:20:23 +0000 Subject: [PATCH 13/15] Slight change to tool/split-sqlite3c.tcl to make it compatible with jimsh FossilOrigin-Name: fe670ddda933007386eb10facf4048ee88671f74b1fd41dfc3120beb717b8c9e --- manifest | 12 ++++++------ manifest.uuid | 2 +- tool/split-sqlite3c.tcl | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index a7fbd6cd28..c2eb5ea9aa 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sbug\sin\sthe\sspeedtest.tcl\stesting\sscript\sthat\swas\sintroduced\sby\n[7e9845433ff26bdc] -D 2025-05-26T17:29:13.462 +C Slight\schange\sto\stool/split-sqlite3c.tcl\sto\smake\sit\scompatible\swith\sjimsh +D 2025-05-26T23:20:23.908 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -2186,7 +2186,7 @@ F tool/showwal.c 11eca547980a066b081f512636151233350ac679f29ecf4ebfce7f4530230b3 F tool/soak1.tcl a3892082ed1079671565c044e93b55c3c7f38829aedf53cc597c65d23ffdaddf F tool/spaceanal.tcl 1f83962090a6b60e1d7bf92495d643e622bef9fe82ea3f2d22350dcbce9a12d0 F tool/spellsift.tcl 52b4b04dc4333c7ab024f09d9d66ed6b6f7c6eb00b38497a09f338fa55d40618 x -F tool/split-sqlite3c.tcl 07e18a1d8cc3f6b3a4a1f3528e63c9b29a5c8a7bca0b8d394b231da464ce1247 +F tool/split-sqlite3c.tcl 4969fd642dad0ea483e4e104163021d92baf98f6a8eac981fe48525f9b873430 F tool/sqldiff.c 134be7866be19f8beb32043d5aea5657f01aaeae2df8d33d758ff722c78666b9 F tool/sqlite3_analyzer.c.in 14f02cb5ec3c264cd6107d1f1dad77092b1cf440fc196c30b69ae87b56a1a43b F tool/sqlite3_rsync.c e8659970e839d71d2ef04b96d48ad65f1d4298a41636affaf93c32ed71f3f879 @@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 0b5415151c9bf558378f83b1a60df3d3760f1aa311895af04e1fb79a8fb29e79 -R 6f7a612b1c86f9dd095164be8ec681dc +P e4ffa86aa6ca82a42933281f6cbfca7bad702797eb8d6e684a1992e68dc1cfb7 +R e9e46bbbb173045e220838253d4d87e0 U drh -Z c58b62c267ade7cb6a741b710a6638ac +Z e37dec5c7db1fade03b91521ee2478f8 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index ede5b53494..f14f62ff66 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e4ffa86aa6ca82a42933281f6cbfca7bad702797eb8d6e684a1992e68dc1cfb7 +fe670ddda933007386eb10facf4048ee88671f74b1fd41dfc3120beb717b8c9e diff --git a/tool/split-sqlite3c.tcl b/tool/split-sqlite3c.tcl index de4db55a1b..3554933cd9 100644 --- a/tool/split-sqlite3c.tcl +++ b/tool/split-sqlite3c.tcl @@ -56,7 +56,7 @@ proc write_one_file {content} { set label $filecnt } set out [open sqlite3-$label.c w] - fconfigure $out -translation lf + fconfigure $out -translation text puts -nonewline $out $content close $out puts $::out1 "#include \"sqlite3-$filecnt.c\"" From b3bcf489a467373be6d857ecbf04bfc0b5c3579b Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 May 2025 14:59:42 +0000 Subject: [PATCH 14/15] Do not use a partial index if the truth of the WHERE clause does not depend on at least one column from the table being indexed. FossilOrigin-Name: cbe2a392e45d40778570656d2ef2db43e58ad6453bd9d4b936fecfd963e22736 --- manifest | 15 +++++++++------ manifest.uuid | 2 +- src/where.c | 1 + 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/manifest b/manifest index c2eb5ea9aa..9572ba774d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Slight\schange\sto\stool/split-sqlite3c.tcl\sto\smake\sit\scompatible\swith\sjimsh -D 2025-05-26T23:20:23.908 +C Do\snot\suse\sa\spartial\sindex\sif\sthe\struth\sof\sthe\sWHERE\sclause\sdoes\snot\sdepend\non\sat\sleast\sone\scolumn\sfrom\sthe\stable\sbeing\sindexed. +D 2025-05-28T14:59:42.480 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -869,7 +869,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c bcf40795a09b699ad7e42624dd6282b13335164fbabcd5a98a717758cebef451 F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452 F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014 -F src/where.c 1d06561f7310af61bef8a046fa95d463ad88f855be9036fec9091f984520afc5 +F src/where.c 45a3b496248a0b36d91ce34da3278d54f8fa20e9d3fbd36d45a42051d1118137 F src/whereInt.h ecdbfb5551cf394f04ec7f0bc7ad963146d80eee3071405ac29aa84950128b8e F src/wherecode.c 8825756ea7b1a49ac830719d28557c638520bb2434fe9c2dd6c7f584034bfe32 F src/whereexpr.c 2415c8eee5ff89a8b709d7d83d71c1ff986cd720d0520057e1d8a5371339012a @@ -2207,8 +2207,11 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P e4ffa86aa6ca82a42933281f6cbfca7bad702797eb8d6e684a1992e68dc1cfb7 -R e9e46bbbb173045e220838253d4d87e0 +P fe670ddda933007386eb10facf4048ee88671f74b1fd41dfc3120beb717b8c9e +R fc3e14ac4195ac71d03a1c1ffcef6f5e +T *branch * silly-partial-indexes +T *sym-silly-partial-indexes * +T -sym-trunk * U drh -Z e37dec5c7db1fade03b91521ee2478f8 +Z cb8be70633a907000e3fad690fce45e2 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index f14f62ff66..28fabb28a8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fe670ddda933007386eb10facf4048ee88671f74b1fd41dfc3120beb717b8c9e +cbe2a392e45d40778570656d2ef2db43e58ad6453bd9d4b936fecfd963e22736 diff --git a/src/where.c b/src/where.c index 0103db5e8a..9561a75ead 100644 --- a/src/where.c +++ b/src/where.c @@ -3602,6 +3602,7 @@ static int whereUsablePartialIndex( if( (!ExprHasProperty(pExpr, EP_OuterON) || pExpr->w.iJoin==iTab) && ((jointype & JT_OUTER)==0 || ExprHasProperty(pExpr, EP_OuterON)) && sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, iTab) + && !sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, -1) && (pTerm->wtFlags & TERM_VNULL)==0 ){ return 1; From 3f523613528194d3487853ed6e5367c6f215ec4f Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 29 May 2025 14:26:00 +0000 Subject: [PATCH 15/15] Version 3.50.0 FossilOrigin-Name: dfc790f998f450d9c35e3ba1c8c89c17466cb559f87b0239e4aab9d34e28f742 --- manifest | 13 ++++++++----- manifest.uuid | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/manifest b/manifest index 8f96ba57dd..e40c550bc5 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Do\snot\suse\sa\spartial\sindex\sunless\sthe\sWHERE\sclause\suses\sone\sor\smore\scolumns\nfrom\sthe\stable\sbeing\sindexed.\s\sThis\sresolves\sthe\sissue\sreported\sby\n[forum:/forumpost/a8704b30f3|forum\spost\s2025-05-28T13:03:40Z].\sTest\scases\nare\sin\sTH3. -D 2025-05-28T16:56:23.659 +C Version\s3.50.0 +D 2025-05-29T14:26:00.000 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -2207,9 +2207,12 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P fe670ddda933007386eb10facf4048ee88671f74b1fd41dfc3120beb717b8c9e cbe2a392e45d40778570656d2ef2db43e58ad6453bd9d4b936fecfd963e22736 +P f037ca064daeb81cb386da2a372d8e2d2dce55a3a13bc7bea4968ca51bf2843a R fc3e14ac4195ac71d03a1c1ffcef6f5e -T +closed cbe2a392e45d40778570656d2ef2db43e58ad6453bd9d4b936fecfd963e22736 +T +bgcolor * green +T +sym-major-release * +T +sym-release * +T +sym-version-3.50.0 * U drh -Z 09b8cc064068dcf357ab07748b442b38 +Z 5eb6447fe81d0ef07434d8f3c30d7b86 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 42766acc3b..819b683fc3 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f037ca064daeb81cb386da2a372d8e2d2dce55a3a13bc7bea4968ca51bf2843a +dfc790f998f450d9c35e3ba1c8c89c17466cb559f87b0239e4aab9d34e28f742