From 20728a599e52fecad15f6e2d8658ec47f38d0225 Mon Sep 17 00:00:00 2001 From: larrybr Date: Wed, 10 Jan 2024 05:52:02 +0000 Subject: [PATCH 001/137] For CLI shell and other utilities, optionally avoid C runtime file I/O on Windows in favor of WIN32 calls, while nominally preserving FILE* API interfaces. (a WIP, awaiting build and testing) FossilOrigin-Name: 6be68be17927e72b1f1c4b93e781b7e9235876b3ad9512fe168e5b9d0b7b763a --- ext/consio/console_io.c | 84 ++++++++++++++++++++++++++++++++++++++++- ext/consio/console_io.h | 15 ++++++-- manifest | 21 ++++++----- manifest.uuid | 2 +- src/shell.c.in | 3 ++ 5 files changed, 109 insertions(+), 16 deletions(-) diff --git a/ext/consio/console_io.c b/ext/consio/console_io.c index 3acb0daa27..0630e90e16 100755 --- a/ext/consio/console_io.c +++ b/ext/consio/console_io.c @@ -593,6 +593,86 @@ oPutbUtf8(const char *cBuf, int nAccept){ # endif } +/* +** Flush the given output stream. Return non-zero for success, else 0. +*/ +#if !defined(SQLITE_CIO_NO_FLUSH) && !defined(SQLITE_CIO_NO_SETMODE) +SQLITE_INTERNAL_LINKAGE int +fFlushBuffer(FILE *pfOut){ +# if CIO_WIN_WC_XLATE && !defined(SHELL_OMIT_FIO_DUPE) + return FlushFileBuffers(handleOfFile(pfOut))? 1 : 0; +# else + return fflush(pfOut); +# endif +} +#endif + +# if CIO_WIN_WC_XLATE && !defined(SHELL_OMIT_FIO_DUPE) +static struct FileAltIds { + int fd; + HANDLE fh; +} altIdsOfFile(FILE *pf){ + struct FileAltIds rv = { _fileno(pf) }; + union { intptr_t osfh; HANDLE fh; } fid = { + (rv.fd>=0)? _get_osfhandle(rv.fd) : (intptr_t)INVALID_HANDLE_VALUE + }; + rv.fh = fid.fh; + return rv; +} + +SQLITE_INTERNAL_LINKAGE size_t +cfWrite(const void *buf, size_t osz, size_t ocnt, FILE *pf){ + size_t rv = 0; + struct FileAltIds fai = altIdsOfFile(pf); + int fmode = _setmode(fai.fd, _O_BINARY); + _setmode(fai.fd, fmode); + while( rv < ocnt ){ + size_t nbo = osz; + while( nbo > 0 ){ + DWORD dwno = (nbo>(1L<<24))? 1L<<24 : (DWORD)nbo; + BOOL wrc = TRUE; + BOOL genCR = (fmode & _O_TEXT)!=0; + if( genCR ){ + const char *pnl = (const char*)memchr(buf, '\n', nbo); + if( pnl ) nbo = pnl - (const char*)buf; + else genCR = 0; + } + if( dwno>0 ) wrc = WriteFile(fai.hf, buf, dwno, 0,0); + if( genCR && wrc ){ + wrc = WriteFile(fai.hf, "\r\n", 2, 0,0); + ++dwno; /* Skip over the LF */ + } + if( !wrc ) return rv; + buf = (const char*)buf + dwno; + nbo += dwno; + } + ++rv; + } + return rv; +} + +SQLITE_INTERNAL_LINKAGE char * +cfGets(char *cBuf, int n, FILE *pf){ + int nci = 0; + struct FileAltIds fai = altIdsOfFile(pf); + int fmode = _setmode(fai.fd, _O_BINARY); + BOOL eatCR = (fmode & _O_TEXT)!=0; + _setmode(fai.fd, fmode); + while( nci < n-1 ){ + char cin; + DWORD nr; + if( !ReadFile(fai.hf, cBuf+nci, 1, &nr, 0) || nr==0 ) break; + if( eatCR && cin=='\r' ) continue; + cBuf[nci++] = cin; + } + if( nci < n ) cBuf[nci] = 0; + return (nci>0)? cBuf : 0; +} +# else +# define cfWrite(b,os,no,f) fwrite(b,os,no,f) +# define cfGets(b,n,f) fgets(b,n,f) +# endif + # ifdef CONSIO_EPUTB SQLITE_INTERNAL_LINKAGE int ePutbUtf8(const char *cBuf, int nAccept){ @@ -604,7 +684,7 @@ ePutbUtf8(const char *cBuf, int nAccept){ return conZstrEmit(ppst, cBuf, nAccept); }else { # endif - return (int)fwrite(cBuf, 1, nAccept, pfErr); + return (int)cfWrite(cBuf, 1, nAccept, pfErr); # if CIO_WIN_WC_XLATE } # endif @@ -670,7 +750,7 @@ SQLITE_INTERNAL_LINKAGE char* fGetsUtf8(char *cBuf, int ncMax, FILE *pfIn){ # endif }else{ # endif - return fgets(cBuf, ncMax, pfIn); + return cfGets(cBuf, ncMax, pfIn); # if CIO_WIN_WC_XLATE } # endif diff --git a/ext/consio/console_io.h b/ext/consio/console_io.h index 26fd7dd946..1affa15bad 100644 --- a/ext/consio/console_io.h +++ b/ext/consio/console_io.h @@ -176,12 +176,19 @@ SQLITE_INTERNAL_LINKAGE int ePutbUtf8(const char *cBuf, int nAccept); #endif +/* +** Flush the given output stream. Return non-zero for success, else 0. +*/ +#if !defined(SQLITE_CIO_NO_FLUSH) && !defined(SQLITE_CIO_NO_SETMODE) +SQLITE_INTERNAL_LINKAGE int +fFlushBuffer(FILE *pfOut); +#endif + /* ** Collect input like fgets(...) with special provisions for input -** from the console on platforms that require same. Defers to the -** C library fgets() when input is not from the console. Newline -** translation may be done as set by set{Binary,Text}Mode(). As a -** convenience, pfIn==NULL is treated as stdin. +** from the console on such platforms as require same. Newline +** translation may be done as set by set{Binary,Text}Mode(). +** As a convenience, pfIn==NULL is treated as stdin. */ SQLITE_INTERNAL_LINKAGE char* fGetsUtf8(char *cBuf, int ncMax, FILE *pfIn); /* Like fGetsUtf8 except stream is always the designated input. */ diff --git a/manifest b/manifest index 467ba30c52..1c2810a843 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improved\sresolution\sof\sunqualified\snames\sin\sthe\sREINDEX\scommand.\n[forum:/info/74cd0ceabd|Forum\sthread\s74cd0ceabd]. -D 2024-01-09T12:28:51.969 +C For\sCLI\sshell\sand\sother\sutilities,\soptionally\savoid\sC\sruntime\sfile\sI/O\son\sWindows\sin\sfavor\sof\sWIN32\scalls,\swhile\snominally\spreserving\sFILE*\sAPI\sinterfaces.\s(a\sWIP,\sawaiting\sbuild\sand\stesting) +D 2024-01-10T05:52:02.536 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -51,8 +51,8 @@ F ext/README.md fd5f78013b0a2bc6f0067afb19e6ad040e89a10179b4f6f03eee58fac5f169bd F ext/async/README.txt e12275968f6fde133a80e04387d0e839b0c51f91 F ext/async/sqlite3async.c 6f247666b495c477628dd19364d279c78ea48cd90c72d9f9b98ad1aff3294f94 F ext/async/sqlite3async.h 46b47c79357b97ad85d20d2795942c0020dc20c532114a49808287f04aa5309a -F ext/consio/console_io.c e1be639e79e54264b3ae97ca291728987a9aa82e6a4526458e6400f5e083e524 x -F ext/consio/console_io.h 0548b83d7c4b7270ad544a67f2bb90cebc519637fa39b1838df4744cf0d87646 +F ext/consio/console_io.c 23c4ce0448a93803eb93e47ed46e4ffd5efb9001d7e18230737082612b1573de x +F ext/consio/console_io.h b5ebe34aa15b357621ebbea3d3f2e2b24750d4280b5802516409e23947fd9ee5 F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4 F ext/expert/expert1.test 0dd5cb096d66bed593e33053a3b364f6ef52ed72064bf5cf298364636dbf3cd6 @@ -738,7 +738,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c F src/resolve.c e25f51a473a5f30a0d978e4df2aaa98aeec84eac29ecae1ad4708a6c3e669345 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 F src/select.c f1a81ff4f8e9e76c224e2ab3a4baa799add0db22158c7fcede65d8cc4a6fa2da -F src/shell.c.in 3d19abd924ed1cec9c9908d5a10cb1580b8ca30df24c26bfe80efa0c00f664d8 +F src/shell.c.in aff59dbd24dcee008dc64a3b0aa8b58d5fa43c5fd0fd9893a81ed6fd538ba6ac F src/sqlite.h.in 61a60b4ea04db8ead15e1579b20b64cb56e9f55d52c5f9f9694de630110593a3 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54 @@ -2157,8 +2157,11 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P cd016f26bb61549a304f2148035e050f76a8f4a35cdb7131bba2f5fc5d09f49e -R 79992c442c5c0c9ae7a8d7762db4a7c0 -U drh -Z 0f0f16e628a0bab1003ad4c460a1aa8e +P 97709ce2a1f5ae05495e412ca27108048e5b8a63a1e3bca4be13933f7527da7b +R 1d946ec61d5c9d01acdd2c0e650e9027 +T *branch * win-dupe-crt-fio +T *sym-win-dupe-crt-fio * +T -sym-trunk * +U larrybr +Z 0b0925e801b21e9b8c7d51a5b0a1c236 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index cb966c2175..cc336ddfe9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -97709ce2a1f5ae05495e412ca27108048e5b8a63a1e3bca4be13933f7527da7b \ No newline at end of file +6be68be17927e72b1f1c4b93e781b7e9235876b3ad9512fe168e5b9d0b7b763a \ No newline at end of file diff --git a/src/shell.c.in b/src/shell.c.in index 19574dc79c..33f2ea9a76 100644 --- a/src/shell.c.in +++ b/src/shell.c.in @@ -246,6 +246,7 @@ extern LPWSTR sqlite3_win32_utf8_to_unicode(const char *zText); # define SQLITE_CIO_NO_CLASSIFY # define SQLITE_CIO_NO_TRANSLATE # define SQLITE_CIO_NO_SETMODE +# define SQLITE_CIO_NO_FLUSH #endif INCLUDE ../ext/consio/console_io.h INCLUDE ../ext/consio/console_io.c @@ -276,6 +277,7 @@ INCLUDE ../ext/consio/console_io.c # define eputz(z) ePutsUtf8(z) # define eputf ePrintfUtf8 # define oputb(buf,na) oPutbUtf8(buf,na) +# define fflush(s) fFlushBuffer(s); #else /* For Fiddle, all console handling and emit redirection is omitted. */ @@ -286,6 +288,7 @@ INCLUDE ../ext/consio/console_io.c # define eputz(z) fputs(z,stderr) # define eputf(fmt, ...) fprintf(stderr,fmt,__VA_ARGS__) # define oputb(buf,na) fwrite(buf,1,na,stdout) +# undef fflush #endif /* True if the timer is enabled */ From 3a39c44c21a801927f98aa3cdb2240f00e701b8a Mon Sep 17 00:00:00 2001 From: larrybr Date: Wed, 10 Jan 2024 20:13:38 +0000 Subject: [PATCH 002/137] Fix a few compiler gripes. FossilOrigin-Name: 2e74a938f771a889dd8c49648b5a125ff748835ba1925388cc6b379a0abde9ac --- ext/consio/console_io.c | 10 ++++------ manifest | 15 ++++++--------- manifest.uuid | 2 +- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/ext/consio/console_io.c b/ext/consio/console_io.c index 0630e90e16..8ecd97f0b2 100755 --- a/ext/consio/console_io.c +++ b/ext/consio/console_io.c @@ -637,9 +637,9 @@ cfWrite(const void *buf, size_t osz, size_t ocnt, FILE *pf){ if( pnl ) nbo = pnl - (const char*)buf; else genCR = 0; } - if( dwno>0 ) wrc = WriteFile(fai.hf, buf, dwno, 0,0); + if( dwno>0 ) wrc = WriteFile(fai.fh, buf, dwno, 0,0); if( genCR && wrc ){ - wrc = WriteFile(fai.hf, "\r\n", 2, 0,0); + wrc = WriteFile(fai.fh, "\r\n", 2, 0,0); ++dwno; /* Skip over the LF */ } if( !wrc ) return rv; @@ -659,11 +659,9 @@ cfGets(char *cBuf, int n, FILE *pf){ BOOL eatCR = (fmode & _O_TEXT)!=0; _setmode(fai.fd, fmode); while( nci < n-1 ){ - char cin; DWORD nr; - if( !ReadFile(fai.hf, cBuf+nci, 1, &nr, 0) || nr==0 ) break; - if( eatCR && cin=='\r' ) continue; - cBuf[nci++] = cin; + if( !ReadFile(fai.fh, cBuf+nci, 1, &nr, 0) || nr==0 ) break; + if( nr>0 && (!eatCR || cBuf[nci]!='\r') ) nci += nr; } if( nci < n ) cBuf[nci] = 0; return (nci>0)? cBuf : 0; diff --git a/manifest b/manifest index 1c2810a843..05fe008c4e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C For\sCLI\sshell\sand\sother\sutilities,\soptionally\savoid\sC\sruntime\sfile\sI/O\son\sWindows\sin\sfavor\sof\sWIN32\scalls,\swhile\snominally\spreserving\sFILE*\sAPI\sinterfaces.\s(a\sWIP,\sawaiting\sbuild\sand\stesting) -D 2024-01-10T05:52:02.536 +C Fix\sa\sfew\scompiler\sgripes. +D 2024-01-10T20:13:38.259 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -51,7 +51,7 @@ F ext/README.md fd5f78013b0a2bc6f0067afb19e6ad040e89a10179b4f6f03eee58fac5f169bd F ext/async/README.txt e12275968f6fde133a80e04387d0e839b0c51f91 F ext/async/sqlite3async.c 6f247666b495c477628dd19364d279c78ea48cd90c72d9f9b98ad1aff3294f94 F ext/async/sqlite3async.h 46b47c79357b97ad85d20d2795942c0020dc20c532114a49808287f04aa5309a -F ext/consio/console_io.c 23c4ce0448a93803eb93e47ed46e4ffd5efb9001d7e18230737082612b1573de x +F ext/consio/console_io.c 3f635b6dd2ddbc722aeaa738d415768c9a40dedff53894975816dcbd7711145f x F ext/consio/console_io.h b5ebe34aa15b357621ebbea3d3f2e2b24750d4280b5802516409e23947fd9ee5 F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4 @@ -2157,11 +2157,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 97709ce2a1f5ae05495e412ca27108048e5b8a63a1e3bca4be13933f7527da7b -R 1d946ec61d5c9d01acdd2c0e650e9027 -T *branch * win-dupe-crt-fio -T *sym-win-dupe-crt-fio * -T -sym-trunk * +P 6be68be17927e72b1f1c4b93e781b7e9235876b3ad9512fe168e5b9d0b7b763a +R 2f77944a93e4bc36153f9450a52f3c42 U larrybr -Z 0b0925e801b21e9b8c7d51a5b0a1c236 +Z 5b64f41a30f93cac02d6a6331bee0468 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index cc336ddfe9..9db802f7c9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6be68be17927e72b1f1c4b93e781b7e9235876b3ad9512fe168e5b9d0b7b763a \ No newline at end of file +2e74a938f771a889dd8c49648b5a125ff748835ba1925388cc6b379a0abde9ac \ No newline at end of file From 1321ea50108b7247287c9693a7d83196d4102d96 Mon Sep 17 00:00:00 2001 From: drh <> Date: Mon, 26 Aug 2024 17:35:32 +0000 Subject: [PATCH 003/137] Randomize the name of the attached database used to do VACUUM. FossilOrigin-Name: 0f4e65d73a2b95932f36768c0d9925a2d265d9b395b886d8e492d1d519b2093c --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/vacuum.c | 23 ++++++++++++++--------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/manifest b/manifest index 1153795db6..9b018b0b17 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C shell.c.in:\suse\seputz/oputz()\sinstead\sof\seputf/oputf()\swhere\sappropriate\sto\savoid\scompilation\serrors\sin\s-std=c99\smode\s(namely\swasm\sbuilds). -D 2024-08-25T11:59:29.477 +C Randomize\sthe\sname\sof\sthe\sattached\sdatabase\sused\sto\sdo\sVACUUM. +D 2024-08-26T17:35:32.270 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -834,7 +834,7 @@ F src/update.c 0e01aa6a3edf9ec112b33eb714b9016a81241497b1fb7c3e74332f4f71756508 F src/upsert.c 215328c3f91623c520ec8672c44323553f12caeb4f01b1090ebdca99fdf7b4f1 F src/utf.c f23165685a67b4caf8ec08fb274cb3f319103decfb2a980b7cfd55d18dfa855e F src/util.c 5d1a0134cf4240648d1c6bb5cc8efaca0ea2b5d5c840985aec7e947271f04375 -F src/vacuum.c 604fcdaebe76f3497c855afcbf91b8fa5046b32de3045bab89cc008d68e40104 +F src/vacuum.c b763b6457bd058d2072ef9364832351fd8d11e8abf70cbb349657360f7d55c40 F src/vdbe.c be5f58bc29f60252e041a618eae59e8d57d460ba136c5403cf0abf955560c457 F src/vdbe.h c2549a215898a390de6669cfa32adba56f0d7e17ba5a7f7b14506d6fd5f0c36a F src/vdbeInt.h 949669dfd8a41550d27dcb905b494f2ccde9a2e6c1b0b04daa1227e2e74c2b2c @@ -2210,8 +2210,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P df65d00f104f31741056686f2ba41ecb192c552012bffb17c2a8b5d4db058328 -R 8d4b348b6bf673b94cab6e107b5bbb73 -U stephan -Z 5120e8419efd39e01384da30ed409ec4 +P 9ef8317faebc29d016bdf2e8c678fb21ca2cfa95272f1f18b461fcaf0e220ac5 +R f1ecfb99c58e61a39b55af180b76bb09 +U drh +Z 1c617d8c3be95e126399c709f0b8f264 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 4e98a04790..dfaf3a1f10 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9ef8317faebc29d016bdf2e8c678fb21ca2cfa95272f1f18b461fcaf0e220ac5 +0f4e65d73a2b95932f36768c0d9925a2d265d9b395b886d8e492d1d519b2093c diff --git a/src/vacuum.c b/src/vacuum.c index c0ae4bc1e1..e203f68c65 100644 --- a/src/vacuum.c +++ b/src/vacuum.c @@ -162,6 +162,9 @@ SQLITE_NOINLINE int sqlite3RunVacuum( const char *zDbMain; /* Schema name of database to vacuum */ const char *zOut; /* Name of output file */ u32 pgflags = PAGER_SYNCHRONOUS_OFF; /* sync flags for output db */ + u64 iRandom; /* Random value used for zDbVacuum[] */ + char zDbVacuum[42]; /* Name of the ATTACH-ed database used for vacuum */ + if( !db->autoCommit ){ sqlite3SetString(pzErrMsg, db, "cannot VACUUM from within a transaction"); @@ -202,27 +205,29 @@ SQLITE_NOINLINE int sqlite3RunVacuum( pMain = db->aDb[iDb].pBt; isMemDb = sqlite3PagerIsMemdb(sqlite3BtreePager(pMain)); - /* Attach the temporary database as 'vacuum_db'. The synchronous pragma + /* Attach the temporary database as 'vacuum_XXXXXX'. The synchronous pragma ** can be set to 'off' for this file, as it is not recovered if a crash ** occurs anyway. The integrity of the database is maintained by a ** (possibly synchronous) transaction opened on the main database before ** sqlite3BtreeCopyFile() is called. ** ** An optimization would be to use a non-journaled pager. - ** (Later:) I tried setting "PRAGMA vacuum_db.journal_mode=OFF" but + ** (Later:) I tried setting "PRAGMA vacuum_XXXXXX.journal_mode=OFF" but ** that actually made the VACUUM run slower. Very little journalling ** actually occurs when doing a vacuum since the vacuum_db is initially ** empty. Only the journal header is written. Apparently it takes more ** time to parse and run the PRAGMA to turn journalling off than it does ** to write the journal header file. */ + sqlite3_randomness(sizeof(iRandom),&iRandom); + sqlite3_snprintf(sizeof(zDbVacuum), zDbVacuum, "vacuum_%016llx", iRandom); nDb = db->nDb; - rc = execSqlF(db, pzErrMsg, "ATTACH %Q AS vacuum_db", zOut); + rc = execSqlF(db, pzErrMsg, "ATTACH %Q AS %s", zOut, zDbVacuum); db->openFlags = saved_openFlags; if( rc!=SQLITE_OK ) goto end_of_vacuum; assert( (db->nDb-1)==nDb ); pDb = &db->aDb[nDb]; - assert( strcmp(pDb->zDbSName,"vacuum_db")==0 ); + assert( strcmp(pDb->zDbSName,zDbVacuum)==0 ); pTemp = pDb->pBt; if( pOut ){ sqlite3_file *id = sqlite3PagerFile(sqlite3BtreePager(pTemp)); @@ -299,11 +304,11 @@ SQLITE_NOINLINE int sqlite3RunVacuum( ** the contents to the temporary database. */ rc = execSqlF(db, pzErrMsg, - "SELECT'INSERT INTO vacuum_db.'||quote(name)" + "SELECT'INSERT INTO %s.'||quote(name)" "||' SELECT*FROM\"%w\".'||quote(name)" - "FROM vacuum_db.sqlite_schema " + "FROM %s.sqlite_schema " "WHERE type='table'AND coalesce(rootpage,1)>0", - zDbMain + zDbVacuum, zDbMain, zDbVacuum ); assert( (db->mDbFlags & DBFLAG_Vacuum)!=0 ); db->mDbFlags &= ~DBFLAG_Vacuum; @@ -315,11 +320,11 @@ SQLITE_NOINLINE int sqlite3RunVacuum( ** from the schema table. */ rc = execSqlF(db, pzErrMsg, - "INSERT INTO vacuum_db.sqlite_schema" + "INSERT INTO %s.sqlite_schema" " SELECT*FROM \"%w\".sqlite_schema" " WHERE type IN('view','trigger')" " OR(type='table'AND rootpage=0)", - zDbMain + zDbVacuum, zDbMain ); if( rc ) goto end_of_vacuum; From c013fa50db60dad905aff1c2202edfa7223bdd67 Mon Sep 17 00:00:00 2001 From: dan Date: Mon, 26 Aug 2024 19:08:54 +0000 Subject: [PATCH 004/137] Changes to documentation comments in fts5.h. FossilOrigin-Name: 886545a8d0e9cbf4911ecf747da0ea8aad702d79cb065dad01a04aa4f51da12b --- ext/fts5/fts5.h | 13 +++++++------ manifest | 14 +++++++------- manifest.uuid | 2 +- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/ext/fts5/fts5.h b/ext/fts5/fts5.h index 67adb40ac6..ea69f8f023 100644 --- a/ext/fts5/fts5.h +++ b/ext/fts5/fts5.h @@ -493,18 +493,19 @@ struct Fts5ExtensionApi { ** ** FTS5_TOKENIZER ** -** There is also an fts5_tokenizer object. This is an older version of -** fts5_tokenizer_v2. It is similar except that: +** There is also an fts5_tokenizer object. This is an older, deprecated, +** version of fts5_tokenizer_v2. It is similar except that: ** **
    **
  • There is no "iVersion" field, and **
  • The xTokenize() method does not take a locale argument. **
** -** fts5_tokenizer tokenizers should be registered with the xCreateTokenizer() -** function, instead of xCreateTokenizer_v2(). Tokenizers implementations -** registered using either API may be retrieved using both xFindTokenizer() -** and xFindTokenizer_v2(). +** Legacy fts5_tokenizer tokenizers must be registered using the +** legacy xCreateTokenizer() function, instead of xCreateTokenizer_v2(). +** +** Tokenizer implementations registered using either API may be retrieved +** using both xFindTokenizer() and xFindTokenizer_v2(). ** ** SYNONYM SUPPORT ** diff --git a/manifest b/manifest index 9b018b0b17..178aa88497 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Randomize\sthe\sname\sof\sthe\sattached\sdatabase\sused\sto\sdo\sVACUUM. -D 2024-08-26T17:35:32.270 +C Changes\sto\sdocumentation\scomments\sin\sfts5.h. +D 2024-08-26T19:08:54.811 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -92,7 +92,7 @@ F ext/fts3/unicode/UnicodeData.txt cd07314edb62d49fde34debdaf92fa2aa69011e7 F ext/fts3/unicode/mkunicode.tcl 63db9624ccf70d4887836c320eda93ab552f21008f3be7ede551eac3ead62baa F ext/fts3/unicode/parseunicode.tcl a981bd6466d12dd17967515801c3ff23f74a281be1a03cf1e6f52a6959fc77eb F ext/fts5/extract_api_docs.tcl 009cf59c77afa86d137b0cca3e3b1a5efbe2264faa2df233f9a7aa8563926d15 -F ext/fts5/fts5.h c72759fd15179934f10b71ae51ee999e8558f696335e4ec2d049243b764354ee +F ext/fts5/fts5.h efaaac0df3d3bc740383044c144b582f47921aafa21d7b10eb98f42c24c740b0 F ext/fts5/fts5Int.h 26a71a09cefa4ef6b4516b204ed48da3e1380970a19b3482eea7c5d805655360 F ext/fts5/fts5_aux.c 65a0468dd177d6093aa9ae1622e6d86b0136b8d267c62c0ad6493ad1e9a3d759 F ext/fts5/fts5_buffer.c 0eec58bff585f1a44ea9147eae5da2447292080ea435957f7488c70673cb6f09 @@ -2210,8 +2210,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 9ef8317faebc29d016bdf2e8c678fb21ca2cfa95272f1f18b461fcaf0e220ac5 -R f1ecfb99c58e61a39b55af180b76bb09 -U drh -Z 1c617d8c3be95e126399c709f0b8f264 +P 0f4e65d73a2b95932f36768c0d9925a2d265d9b395b886d8e492d1d519b2093c +R 5eb525d2c75add4a5d571ba8012dc6b9 +U dan +Z dd80b3a4edb71c561dd200b24c9de74c # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index dfaf3a1f10..7c55e8d5d9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0f4e65d73a2b95932f36768c0d9925a2d265d9b395b886d8e492d1d519b2093c +886545a8d0e9cbf4911ecf747da0ea8aad702d79cb065dad01a04aa4f51da12b From 8aa9135f2cea08b1e8e6fb56dfe0fd6c3491605c Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 14:25:52 +0000 Subject: [PATCH 005/137] Only avoid all C-runtime I/O if the SQLITE_USE_ONLY_WIN32 flag is defined. FossilOrigin-Name: 164b1e1962aa1e16bdf52e9e86d4cf9c9e09220c0821932ac8e390e82074185f --- ext/consio/console_io.c | 4 +++- manifest | 26 +++++++++++++------------- manifest.uuid | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/ext/consio/console_io.c b/ext/consio/console_io.c index 40989e77b6..6b837cbafc 100755 --- a/ext/consio/console_io.c +++ b/ext/consio/console_io.c @@ -609,7 +609,9 @@ fFlushBuffer(FILE *pfOut){ } #endif -# if CIO_WIN_WC_XLATE && !defined(SHELL_OMIT_FIO_DUPE) +#if CIO_WIN_WC_XLATE \ + && !defined(SHELL_OMIT_FIO_DUPE) \ + && defined(SQLITE_USE_ONLY_WIN32) static struct FileAltIds { int fd; HANDLE fh; diff --git a/manifest b/manifest index 1e8d9272f2..ddb1f8bfb9 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\sall\sthe\slatests\strunk\senhancements\sinto\sthe\swin-dupe-crt-fio\sbranch. -D 2024-08-27T13:57:43.910 +C Only\savoid\sall\sC-runtime\sI/O\sif\sthe\sSQLITE_USE_ONLY_WIN32\sflag\sis\sdefined. +D 2024-08-27T14:25:52.592 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -53,7 +53,7 @@ F ext/README.md fd5f78013b0a2bc6f0067afb19e6ad040e89a10179b4f6f03eee58fac5f169bd F ext/async/README.txt e12275968f6fde133a80e04387d0e839b0c51f91 F ext/async/sqlite3async.c 6f247666b495c477628dd19364d279c78ea48cd90c72d9f9b98ad1aff3294f94 F ext/async/sqlite3async.h 46b47c79357b97ad85d20d2795942c0020dc20c532114a49808287f04aa5309a -F ext/consio/console_io.c 7f3cb6490ea6e3bd51b606bd3a37cd1d26d0bf07ccec21dd75e20bf4ee1a2a59 x +F ext/consio/console_io.c 6e02dea912a49f55785b0027fe77960aafee6c236307c23f82ec86a69f1a2001 x F ext/consio/console_io.h b5ebe34aa15b357621ebbea3d3f2e2b24750d4280b5802516409e23947fd9ee5 F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4 @@ -607,7 +607,7 @@ F ext/wasm/SQLTester/SQLTester.run.mjs c72b7fe2072d05992f7a3d8c6a1d34e95712513ce F ext/wasm/SQLTester/index.html 3f8a016df0776be76605abf20e815ecaafbe055abac0e1fe5ea080e7846b760d F ext/wasm/SQLTester/touint8array.c 2d5ece04ec1393a6a60c4bf96385bda5e1a10ad49f3038b96460fc5e5aa7e536 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-auth 7ac80cc3b6a6d52e041bb295e85555ce797be78c15ef2008a64ae58815014080 -F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-core 400213eb52a7e5ad5f448053d375cacf4dac2cf45d134f3edfe485ae4a49a183 w ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api +F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-core 400213eb52a7e5ad5f448053d375cacf4dac2cf45d134f3edfe485ae4a49a183 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-preupdate d1d62a2212099f2c0782d730beb8cb84a7a52d99c15ead2cb9b1411fff5fd6b1 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-see fb29e62082a658f0d81102488414d422c393c4b20cc2f685b216bc566237957b F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-session 213b6c04267cb9bd760172db011eb1650732805fb3d01f9395478a8ceec18eb0 @@ -620,13 +620,13 @@ F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08 F ext/wasm/api/post-js-header.js 04dc12c3edd666b64a1b4ef3b6690c88dcc653f26451fd4734472d8e29c1c122 F ext/wasm/api/pre-js.c-pp.js ad906703f7429590f2fbf5e6498513bf727a1a4f0ebfa057afb08161d7511219 F ext/wasm/api/sqlite3-api-cleanup.js d235ad237df6954145404305040991c72ef8b1881715d2a650dda7b3c2576d0e -F ext/wasm/api/sqlite3-api-glue.c-pp.js 54b32b5321105a72d6f3d3e8b77f28f162d0367b08c63184263d3f85f3d7dbed w ext/wasm/api/sqlite3-api-glue.js -F ext/wasm/api/sqlite3-api-oo1.c-pp.js f3a8e2004c6625d17946c11f2fb32008be78bc5207bf746fc77d59848813225f w ext/wasm/api/sqlite3-api-oo1.js +F ext/wasm/api/sqlite3-api-glue.c-pp.js 54b32b5321105a72d6f3d3e8b77f28f162d0367b08c63184263d3f85f3d7dbed +F ext/wasm/api/sqlite3-api-oo1.c-pp.js f3a8e2004c6625d17946c11f2fb32008be78bc5207bf746fc77d59848813225f F ext/wasm/api/sqlite3-api-prologue.js 6f1257e04885632ed9f44d43aba200b86e0bc16709ffdba29abbbeb1bc8e8b76 -F ext/wasm/api/sqlite3-api-worker1.c-pp.js 5cc22a3c0d52828cb32aad8691488719f47d27567e63e8bc8b832d74371c352d w ext/wasm/api/sqlite3-api-worker1.js +F ext/wasm/api/sqlite3-api-worker1.c-pp.js 5cc22a3c0d52828cb32aad8691488719f47d27567e63e8bc8b832d74371c352d F ext/wasm/api/sqlite3-license-version-header.js 0c807a421f0187e778dc1078f10d2994b915123c1223fe752b60afdcd1263f89 F ext/wasm/api/sqlite3-opfs-async-proxy.js e8f1df56e97a29004a95a2eddd26778f52c33b3e797d32d4b1b668a38e6493dd -F ext/wasm/api/sqlite3-vfs-helper.c-pp.js 3f828cc66758acb40e9c5b4dcfd87fd478a14c8fb7f0630264e6c7fa0e57515d w ext/wasm/api/sqlite3-v-helper.js +F ext/wasm/api/sqlite3-vfs-helper.c-pp.js 3f828cc66758acb40e9c5b4dcfd87fd478a14c8fb7f0630264e6c7fa0e57515d F ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js e529a99b7d5a088284821e2902b20d3404b561126969876997d5a73a656c9199 F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js e99e3d99f736937914527070f00ab13e9391d3f1cef884ab99a64cbcbee8d675 F ext/wasm/api/sqlite3-vtab-helper.c-pp.js e809739d71e8b35dfe1b55d24d91f02d04239e6aef7ca1ea92a15a29e704f616 @@ -647,8 +647,8 @@ F ext/wasm/demo-123.html 8c70a412ce386bd3796534257935eb1e3ea5c581e5d5aea0490b823 F ext/wasm/demo-123.js c7b3cca50c55841c381a9ca4f9396e5bbdc6114273d0b10a43e378e32e7be5bf F ext/wasm/demo-jsstorage.html 409c4be4af5f207fb2877160724b91b33ea36a3cd8c204e8da1acb828ffe588e F ext/wasm/demo-jsstorage.js 44e3ae7ec2483b6c511384c3c290beb6f305c721186bcf5398ca4e00004a06b8 -F ext/wasm/demo-worker1-promiser.c-pp.html 635cf90685805e21772a5f7a35d1ace80f98a9ef7c42ff04d7a125ddca7e5db8 w ext/wasm/demo-worker1-promiser.html -F ext/wasm/demo-worker1-promiser.c-pp.js fcc628cb42fcfaf07d250477801de1e6deb1e319d003976612a0db8d76b9fccc w ext/wasm/demo-worker1-promiser.js +F ext/wasm/demo-worker1-promiser.c-pp.html 635cf90685805e21772a5f7a35d1ace80f98a9ef7c42ff04d7a125ddca7e5db8 +F ext/wasm/demo-worker1-promiser.c-pp.js fcc628cb42fcfaf07d250477801de1e6deb1e319d003976612a0db8d76b9fccc F ext/wasm/demo-worker1.html 2c178c1890a2beb5a5fecb1453e796d067a4b8d3d2a04d65ca2eb1ab2c68ef5d F ext/wasm/demo-worker1.js 836bece8615b17b1b572584f7b15912236a5947fe8c68b98d2737d7e287447ef F ext/wasm/dist.make 653e212c1e84aa3be168d62a10616ccea45ee9585b0192745d2706707a5248ce @@ -2210,8 +2210,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 2e74a938f771a889dd8c49648b5a125ff748835ba1925388cc6b379a0abde9ac 886545a8d0e9cbf4911ecf747da0ea8aad702d79cb065dad01a04aa4f51da12b -R 79479d743cc98e2dac5001e42c2a12ce +P 2d52db98f47fbcda0622c034b21c2fb19bf4345b88c5c565ae9e6f7128642e43 +R fe2336ed930d3088aea807bfa7c9e690 U drh -Z d5c2cd4bb2868922ff61d70f26a944a8 +Z dffceaa70fb90b81619d76d49bca0c7c # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 179264e0ec..5430ab55f6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2d52db98f47fbcda0622c034b21c2fb19bf4345b88c5c565ae9e6f7128642e43 +164b1e1962aa1e16bdf52e9e86d4cf9c9e09220c0821932ac8e390e82074185f From dac0d0b3102e3b0c1ba3ad41bbbd0b137bb82011 Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 17:38:26 +0000 Subject: [PATCH 006/137] Updates to testrunner: (1) Omit all testing of User-Auth. (2) Automatically add the "*" wildcard before and after all pattern arguments. (3) Build the sqlite3 CLI for release tests. FossilOrigin-Name: d03d35eebaf82709414c87cfa6abc9d2baf8d7e64c2627bad0fd5bbda3e78d60 --- manifest | 15 +++++++-------- manifest.uuid | 2 +- test/testrunner.tcl | 33 +++++++++++++++++---------------- test/testrunner_data.tcl | 7 +------ 4 files changed, 26 insertions(+), 31 deletions(-) diff --git a/manifest b/manifest index fe2f58deba..3acb861a2b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\sthe\sSQLITE_USE_ONLY_WIN32\sflag\sfor\sconsio\sinto\strunk. -D 2024-08-27T14:35:54.105 +C Updates\sto\stestrunner:\s\s(1)\sOmit\sall\stesting\sof\sUser-Auth.\n(2)\sAutomatically\sadd\sthe\s"*"\swildcard\sbefore\sand\safter\sall\spattern\narguments.\s\s(3)\sBuild\sthe\ssqlite3\sCLI\sfor\srelease\stests. +D 2024-08-27T17:38:26.497 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1713,8 +1713,8 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl 5d02deeba7a53baeadae6aa7641d90aac58fdfa3a7bcac85cfcfd752b1aab87c -F test/testrunner_data.tcl c5ae2b1f9a99210b0600d002fb3af1fee350997cee9416551e83b93501360ebf +F test/testrunner.tcl 74b569b553a85a10677e0f9b2f6d22d90d9f07255fbec545ec9438bed677e8e8 +F test/testrunner_data.tcl b281136c9a4a3cb2e6772a87c2e94efad0c12ea3e7d0710521a3cad964f879a1 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 @@ -2210,9 +2210,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 886545a8d0e9cbf4911ecf747da0ea8aad702d79cb065dad01a04aa4f51da12b 164b1e1962aa1e16bdf52e9e86d4cf9c9e09220c0821932ac8e390e82074185f -R fe2336ed930d3088aea807bfa7c9e690 -T +closed 164b1e1962aa1e16bdf52e9e86d4cf9c9e09220c0821932ac8e390e82074185f +P e9b03b082dcf141695140a6c2c50bf0dc577c3d64ab76f81dd22f0084eca26d6 +R 4a4a4d707423caa7361c65011daf0aec U drh -Z d17b3af74b4bff5f111775dd3cc3c9cb +Z 9d66ab840eaa6125582be7511985f53f # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index b2918befc9..0b87dcb672 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e9b03b082dcf141695140a6c2c50bf0dc577c3d64ab76f81dd22f0084eca26d6 +d03d35eebaf82709414c87cfa6abc9d2baf8d7e64c2627bad0fd5bbda3e78d60 diff --git a/test/testrunner.tcl b/test/testrunner.tcl index d3a2c1f4c9..821ac6a951 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -89,7 +89,9 @@ Other PERMUTATION arguments must be run using testfixture, not tclsh: If no PATTERN arguments are present, all tests specified by the PERMUTATION are run. Otherwise, each pattern is interpreted as a glob pattern. Only those tcl tests for which the final component of the filename matches at -least one specified pattern are run. +least one specified pattern are run. The glob wildcard '*' is prepended +to the pattern if it does not start with '^' and appended to every +pattern that does not end with '$'. If no PATTERN arguments are present, then various fuzztest, threadtest and other tests are run as part of the "release" permutation. These are @@ -842,6 +844,17 @@ proc add_tcl_jobs {build config patternlist {shelldepid ""}} { if {[llength $patternlist]>0} { set bMatch 0 foreach p $patternlist { + set p [string trim $p *] + if {[string index $p 0]=="^"} { + set p [string range $p 1 end] + } else { + set p "*$p" + } + if {[string index $p end]=="\$"} { + set p [string range $p 0 end-1] + } else { + set p "$p*" + } if {[string match $p [file tail $f]]} { set bMatch 1 break @@ -1062,25 +1075,13 @@ proc add_jobs_from_cmdline {patternlist} { } release { - set patternlist [lrange $patternlist 1 end] + set config_set {} foreach b [trd_builds $TRG(platform)] { if {$TRG(config)!="" && ![regexp "\\y$b\\y" $TRG(config)]} continue if {[regexp "\\y$b\\y" $TRG(omitconfig)]} continue - set bld [add_build_job $b $TRG(testfixture)] - foreach c [trd_configs $TRG(platform) $b] { - add_tcl_jobs $bld $c $patternlist - } - - if {$patternlist==""} { - foreach e [trd_extras $TRG(platform) $b] { - if {$e=="fuzztest"} { - add_fuzztest_jobs $b - } else { - add_make_job $bld $e - } - } - } + lappend config_set $b } + add_devtest_jobs $config_set [lrange $patternlist 1 end] } list { diff --git a/test/testrunner_data.tcl b/test/testrunner_data.tcl index af480fc4cf..5ea03f0c00 100644 --- a/test/testrunner_data.tcl +++ b/test/testrunner_data.tcl @@ -16,7 +16,6 @@ namespace eval trd { set tcltest(linux.Have-Not) veryquick set tcltest(linux.Secure-Delete) veryquick set tcltest(linux.Unlock-Notify) veryquick - set tcltest(linux.User-Auth) veryquick set tcltest(linux.Update-Delete-Limit) veryquick set tcltest(linux.Extra-Robustness) veryquick set tcltest(linux.Device-Two) veryquick @@ -139,10 +138,6 @@ namespace eval trd { -DSQLITE_THREADSAFE -DSQLITE_TCL_DEFAULT_FULLMUTEX=1 } - set build(User-Auth) { - -O2 - -DSQLITE_USER_AUTHENTICATION=1 - } set build(Secure-Delete) { -O2 -DSQLITE_SECURE_DELETE=1 @@ -222,7 +217,7 @@ namespace eval trd { -DSQLITE_MAX_PAGE_SIZE=4096 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 - -DSQLITE_OMIT_VIRTUALTABLE=1 + -DSQLITE_OMIT_VIRTUALTABLEx=1 -DSQLITE_ENABLE_HIDDEN_COLUMNS -DSQLITE_TEMP_STORE=3 } From 3c39f1f5d6ebe8dcd13d1f513f045163926be5bb Mon Sep 17 00:00:00 2001 From: dan Date: Tue, 27 Aug 2024 18:25:04 +0000 Subject: [PATCH 007/137] Add test code to drop an fts5 table with corrupt records in its shadow tables. FossilOrigin-Name: ca21c942c30a3dbff0e7d118e105b847d80b5388c74d19c2eeea71581f8f40b8 --- ext/fts5/fts5_tcl.c | 111 +++++++++++++++++++++++++++----- ext/fts5/test/fts5corrupt8.test | 103 +++++++++++++++++++++++++++++ manifest | 15 +++-- manifest.uuid | 2 +- 4 files changed, 208 insertions(+), 23 deletions(-) create mode 100644 ext/fts5/test/fts5corrupt8.test diff --git a/ext/fts5/fts5_tcl.c b/ext/fts5/fts5_tcl.c index 1e9f7bbb60..a8ab44096b 100644 --- a/ext/fts5/fts5_tcl.c +++ b/ext/fts5/fts5_tcl.c @@ -96,14 +96,14 @@ static int SQLITE_TCLAPI f5tDbAndApi( rc = sqlite3_prepare_v2(db, "SELECT fts5(?1)", -1, &pStmt, 0); if( rc!=SQLITE_OK ){ - Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), 0); + Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), (char*)0); return TCL_ERROR; } sqlite3_bind_pointer(pStmt, 1, (void*)&pApi, "fts5_api_ptr", 0); sqlite3_step(pStmt); if( sqlite3_finalize(pStmt)!=SQLITE_OK ){ - Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), 0); + Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), (char*)0); return TCL_ERROR; } @@ -392,7 +392,7 @@ static int SQLITE_TCLAPI xF5tApi( CASE(12, "xSetAuxdata") { F5tAuxData *pData = (F5tAuxData*)sqlite3_malloc(sizeof(F5tAuxData)); if( pData==0 ){ - Tcl_AppendResult(interp, "out of memory", 0); + Tcl_AppendResult(interp, "out of memory", (char*)0); return TCL_ERROR; } pData->pObj = objv[2]; @@ -452,7 +452,7 @@ static int SQLITE_TCLAPI xF5tApi( rc = p->pApi->xPhraseFirst(p->pFts, iPhrase, &iter, &iCol, &iOff); if( rc!=SQLITE_OK ){ - Tcl_AppendResult(interp, sqlite3ErrName(rc), 0); + Tcl_AppendResult(interp, sqlite3ErrName(rc), (char*)0); return TCL_ERROR; } for( ;iCol>=0; p->pApi->xPhraseNext(p->pFts, &iter, &iCol, &iOff) ){ @@ -683,7 +683,7 @@ static int SQLITE_TCLAPI f5tCreateFunction( pApi, zName, (void*)pCtx, xF5tFunction, xF5tDestroy ); if( rc!=SQLITE_OK ){ - Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), 0); + Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), (char*)0); return TCL_ERROR; } @@ -750,7 +750,7 @@ static int SQLITE_TCLAPI f5tTokenize( if( objc==5 ){ char *zOpt = Tcl_GetString(objv[1]); if( strcmp("-subst", zOpt) ){ - Tcl_AppendResult(interp, "unrecognized option: ", zOpt, 0); + Tcl_AppendResult(interp, "unrecognized option: ", zOpt, (char*)0); return TCL_ERROR; } } @@ -759,7 +759,7 @@ static int SQLITE_TCLAPI f5tTokenize( return TCL_ERROR; } if( nArg==0 ){ - Tcl_AppendResult(interp, "no such tokenizer: ", 0); + Tcl_AppendResult(interp, "no such tokenizer: ", (char*)0); Tcl_Free((void*)azArg); return TCL_ERROR; } @@ -767,13 +767,13 @@ static int SQLITE_TCLAPI f5tTokenize( rc = pApi->xFindTokenizer(pApi, azArg[0], &pUserdata, &tokenizer); if( rc!=SQLITE_OK ){ - Tcl_AppendResult(interp, "no such tokenizer: ", azArg[0], 0); + Tcl_AppendResult(interp, "no such tokenizer: ", azArg[0], (char*)0); return TCL_ERROR; } rc = tokenizer.xCreate(pUserdata, &azArg[1], (int)(nArg-1), &pTok); if( rc!=SQLITE_OK ){ - Tcl_AppendResult(interp, "error in tokenizer.xCreate()", 0); + Tcl_AppendResult(interp, "error in tokenizer.xCreate()", (char*)0); return TCL_ERROR; } @@ -787,7 +787,7 @@ static int SQLITE_TCLAPI f5tTokenize( ); tokenizer.xDelete(pTok); if( rc!=SQLITE_OK ){ - Tcl_AppendResult(interp, "error in tokenizer.xTokenize()", 0); + Tcl_AppendResult(interp, "error in tokenizer.xTokenize()", (char*)0); Tcl_DecrRefCount(pRet); return TCL_ERROR; } @@ -1049,7 +1049,7 @@ static int SQLITE_TCLAPI f5tTokenizerLocale( if( p->xToken==0 ){ Tcl_AppendResult(interp, - "sqlite3_fts5_locale may only be used by tokenizer callback", 0 + "sqlite3_fts5_locale may only be used by tokenizer callback", (char*)0 ); return TCL_ERROR; } @@ -1098,7 +1098,7 @@ static int SQLITE_TCLAPI f5tTokenizerReturn( if( p->xToken==0 ){ Tcl_AppendResult(interp, - "sqlite3_fts5_token may only be used by tokenizer callback", 0 + "sqlite3_fts5_token may only be used by tokenizer callback", (char*)0 ); return TCL_ERROR; } @@ -1250,7 +1250,7 @@ static int SQLITE_TCLAPI f5tCreateTokenizer( Tcl_AppendResult(interp, ( bV2 ? "error in fts5_api.xCreateTokenizer_v2()" : "error in fts5_api.xCreateTokenizer()" - ), 0); + ), (char*)0); return TCL_ERROR; } @@ -1540,12 +1540,92 @@ static int SQLITE_TCLAPI f5tRegisterOriginText( Tcl_ResetResult(interp); if( rc!=SQLITE_OK ){ - Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), 0); + Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), (void*)0); return TCL_ERROR; } return TCL_OK; } +/* +** This function is used to DROP an fts5 table. It works even if the data +** structures fts5 stores within the database are corrupt, which sometimes +** prevents a straight "DROP TABLE" command from succeeding. +** +** The first parameter is the database handle to use for the DROP TABLE +** operation. The second is the name of the database to drop the fts5 table +** from (i.e. "main", "temp" or the name of an attached database). The +** third parameter is the name of the fts5 table to drop. +** +** SQLITE_OK is returned if the table is successfully dropped. Or, if an +** error occurs, an SQLite error code. +*/ +static int sqlite3_fts5_drop_corrupt_table( + sqlite3 *db, /* Database handle */ + const char *zDb, /* Database name ("main", "temp" etc.) */ + const char *zTab /* Name of fts5 table to drop */ +){ + int rc = SQLITE_OK; + int bDef = 0; + + rc = sqlite3_db_config(db, SQLITE_DBCONFIG_DEFENSIVE, -1, &bDef); + if( rc==SQLITE_OK ){ + char *zScript = sqlite3_mprintf( + "DELETE FROM %Q.'%q_data';" + "DELETE FROM %Q.'%q_config';" + "INSERT INTO %Q.'%q_data' VALUES(10, X'0000000000');" + "INSERT INTO %Q.'%q_config' VALUES('version', 4);" + "DROP TABLE %Q.'%q';", + zDb, zTab, zDb, zTab, zDb, zTab, zDb, zTab, zDb, zTab + ); + + if( zScript==0 ){ + rc = SQLITE_NOMEM; + }else{ + if( bDef ) sqlite3_db_config(db, SQLITE_DBCONFIG_DEFENSIVE, 0, 0); + rc = sqlite3_exec(db, zScript, 0, 0, 0); + if( bDef ) sqlite3_db_config(db, SQLITE_DBCONFIG_DEFENSIVE, 1, 0); + sqlite3_free(zScript); + } + } + + return rc; +} + +/* +** sqlite3_fts5_drop_corrupt_table DB DATABASE TABLE +** +** Description... +*/ +static int SQLITE_TCLAPI f5tDropCorruptTable( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + sqlite3 *db = 0; + const char *zDb = 0; + const char *zTab = 0; + int rc = SQLITE_OK; + + if( objc!=4 ){ + Tcl_WrongNumArgs(interp, 1, objv, "DB DATABASE TABLE"); + return TCL_ERROR; + } + if( f5tDbPointer(interp, objv[1], &db) ){ + return TCL_ERROR; + } + zDb = Tcl_GetString(objv[2]); + zTab = Tcl_GetString(objv[3]); + + rc = sqlite3_fts5_drop_corrupt_table(db, zDb, zTab); + if( rc!=SQLITE_OK ){ + Tcl_AppendResult(interp, "error: ", sqlite3_errmsg(db), (void*)0); + return TCL_ERROR; + } + + return TCL_OK; +} + /* ** Entry point. */ @@ -1564,7 +1644,8 @@ int Fts5tcl_Init(Tcl_Interp *interp){ { "sqlite3_fts5_token_hash", f5tTokenHash, 0 }, { "sqlite3_fts5_register_matchinfo", f5tRegisterMatchinfo, 0 }, { "sqlite3_fts5_register_fts5tokenize", f5tRegisterTok, 0 }, - { "sqlite3_fts5_register_origintext",f5tRegisterOriginText, 0 } + { "sqlite3_fts5_register_origintext",f5tRegisterOriginText, 0 }, + { "sqlite3_fts5_drop_corrupt_table", f5tDropCorruptTable, 0 } }; int i; F5tTokenizerContext *pContext; diff --git a/ext/fts5/test/fts5corrupt8.test b/ext/fts5/test/fts5corrupt8.test new file mode 100644 index 0000000000..d3f0e3d514 --- /dev/null +++ b/ext/fts5/test/fts5corrupt8.test @@ -0,0 +1,103 @@ +# 2024 Aug 28 +# +# 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. +# +#*********************************************************************** +# + +source [file join [file dirname [info script]] fts5_common.tcl] +set testprefix fts5corrupt8 + +# If SQLITE_ENABLE_FTS5 is not defined, omit this file. +ifcapable !fts5 { + finish_test + return +} + +do_execsql_test 1.0 { + CREATE VIRTUAL TABLE t1 USING fts5(x); +} + +do_execsql_test 1.1 { + UPDATE t1_data SET block='hello world' WHERE id=10 +} + +db close +sqlite3 db test.db + +do_catchsql_test 1.2 { + SELECT * FROM t1 +} {1 {vtable constructor failed: t1}} +do_catchsql_test 1.3 { + DROP TABLE t1 +} {1 {vtable constructor failed: t1}} +do_test 1.4 { + sqlite3_db_config db DEFENSIVE 0 +} {0} +do_test 1.5 { + sqlite3_fts5_drop_corrupt_table db main t1 +} {} +do_test 1.6 { + sqlite3_db_config db DEFENSIVE -1 +} {0} +do_execsql_test 1.7 { + SELECT * FROM sqlite_schema +} + +do_execsql_test 2.0 { + CREATE VIRTUAL TABLE t1 USING fts5(x); +} +do_execsql_test 2.1 { + UPDATE t1_config SET v=555 WHERE k='version' +} +db close +sqlite3 db test.db +do_catchsql_test 2.2 { + SELECT * FROM t1 +} {1 {invalid fts5 file format (found 555, expected 4 or 5) - run 'rebuild'}} +do_catchsql_test 2.3 { + DROP TABLE t1 +} {1 {invalid fts5 file format (found 555, expected 4 or 5) - run 'rebuild'}} +do_test 2.4 { + sqlite3_fts5_drop_corrupt_table db main t1 +} {} +do_execsql_test 2.5 { + SELECT * FROM sqlite_schema +} + +do_execsql_test 3.0 { + CREATE VIRTUAL TABLE t1 USING fts5(x); +} +do_execsql_test 3.1 { + DELETE FROM t1_config; +} +db close +sqlite3 db test.db +do_catchsql_test 3.2 { + SELECT * FROM t1 +} {1 {invalid fts5 file format (found 0, expected 4 or 5) - run 'rebuild'}} +do_catchsql_test 3.3 { + DROP TABLE t1 +} {1 {invalid fts5 file format (found 0, expected 4 or 5) - run 'rebuild'}} + + +do_test 3.4 { + sqlite3_db_config db DEFENSIVE 1 +} {1} +do_test 3.5 { + sqlite3_fts5_drop_corrupt_table db main t1 +} {} +do_test 3.6 { + sqlite3_db_config db DEFENSIVE -1 +} {1} +do_execsql_test 3.7 { + SELECT * FROM sqlite_schema +} + +finish_test + diff --git a/manifest b/manifest index 3acb861a2b..acecee9702 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Updates\sto\stestrunner:\s\s(1)\sOmit\sall\stesting\sof\sUser-Auth.\n(2)\sAutomatically\sadd\sthe\s"*"\swildcard\sbefore\sand\safter\sall\spattern\narguments.\s\s(3)\sBuild\sthe\ssqlite3\sCLI\sfor\srelease\stests. -D 2024-08-27T17:38:26.497 +C Add\stest\scode\sto\sdrop\san\sfts5\stable\swith\scorrupt\srecords\sin\sits\sshadow\stables. +D 2024-08-27T18:25:04.935 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -102,7 +102,7 @@ F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a F ext/fts5/fts5_index.c eb9a0dda3bc6ef969a6be8d2746af56856e67251810ddba08622b45be8477abe F ext/fts5/fts5_main.c 3d8b778f65fe5be218f6a8e4019048f092c0c09621b035ce3e8804093036b578 F ext/fts5/fts5_storage.c 9a9b880be12901f1962ae2a5a7e1b74348b3099a1e728764e419f75d98e3e612 -F ext/fts5/fts5_tcl.c 1dcf08028141c40a32634bdcf2d5601622ce4edc48f82ac4ce0cbe0a92a6961d +F ext/fts5/fts5_tcl.c 4db9258a7882c5eac0da4433042132aaf15b87dd1e1636c7a6ca203abd2c8bfe F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee F ext/fts5/fts5_test_tok.c 3cb0a9b508b30d17ef025ccddd26ae3dc8ddffbe76c057616e59a9aa85d36f3b F ext/fts5/fts5_tokenize.c ae9c4fa93174ef06ffc138bd4280a1c37f7e13624d3d2706aad4b80573f23c41 @@ -153,6 +153,7 @@ F ext/fts5/test/fts5corrupt4.test dc08d19f5b8943e95a7778a7d8da592042504faf18dd93 F ext/fts5/test/fts5corrupt5.test 11b47126f5772cc37b67e3e8b2ed05895c4d07c05338bc07e4eea225bfe32c76 F ext/fts5/test/fts5corrupt6.test 2d72db743db7b5d9c9a6d0cfef24d799ed1aa5e8192b66c40e871a37ed9eed06 F ext/fts5/test/fts5corrupt7.test 4e830875c33b9ea3c4cf1ba71e692b63893cbb4faae8c69b1071889dc26e211c +F ext/fts5/test/fts5corrupt8.test f78b6de9e4327e16ba7a7958b1ce576f9b5d886b4b97690f90b7f3cf654da458 F ext/fts5/test/fts5delete.test 619295b20dbc1d840b403ee07c878f52378849c3c02e44f2ee143b3e978a0aa7 F ext/fts5/test/fts5detail.test 54015e9c43ec4ba542cfb93268abdf280e0300f350efd08ee411284b03595cc4 F ext/fts5/test/fts5determin.test 1b77879b2ae818b5b71c859e534ee334dac088b7cf3ff3bf76a2c82b1c788d11 @@ -2210,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P e9b03b082dcf141695140a6c2c50bf0dc577c3d64ab76f81dd22f0084eca26d6 -R 4a4a4d707423caa7361c65011daf0aec -U drh -Z 9d66ab840eaa6125582be7511985f53f +P d03d35eebaf82709414c87cfa6abc9d2baf8d7e64c2627bad0fd5bbda3e78d60 +R eae9b17364855941c00e92c86d398a4e +U dan +Z d07b6efd95ad4c9798aced1dad6099da # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 0b87dcb672..6d952d91c5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d03d35eebaf82709414c87cfa6abc9d2baf8d7e64c2627bad0fd5bbda3e78d60 +ca21c942c30a3dbff0e7d118e105b847d80b5388c74d19c2eeea71581f8f40b8 From d9bc2bb638ba4d50c8cea1d5bdad94cb6c0aa479 Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 19:17:29 +0000 Subject: [PATCH 008/137] Improvements to testrunner.tcl: Show elapse time in MM:SS or HH:MM:SS. Keep track of the total number of tests and the total number of errors and report those values on a summary line at the end. FossilOrigin-Name: 40b232924c973f8d94605946fff75acbe120d90634a2eaf38bd31649e9f1390b --- manifest | 14 +++++----- manifest.uuid | 2 +- test/testrunner.tcl | 63 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 61 insertions(+), 18 deletions(-) diff --git a/manifest b/manifest index acecee9702..e776cdf849 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\stest\scode\sto\sdrop\san\sfts5\stable\swith\scorrupt\srecords\sin\sits\sshadow\stables. -D 2024-08-27T18:25:04.935 +C Improvements\sto\stestrunner.tcl:\s\sShow\selapse\stime\sin\sMM:SS\sor\sHH:MM:SS.\nKeep\strack\sof\sthe\stotal\snumber\sof\stests\sand\sthe\stotal\snumber\sof\serrors\nand\sreport\sthose\svalues\son\sa\ssummary\sline\sat\sthe\send. +D 2024-08-27T19:17:29.271 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl 74b569b553a85a10677e0f9b2f6d22d90d9f07255fbec545ec9438bed677e8e8 +F test/testrunner.tcl 21449521b796376fb4341d84bdf9dae6befc409e2273f795b4bfda78644da22c F test/testrunner_data.tcl b281136c9a4a3cb2e6772a87c2e94efad0c12ea3e7d0710521a3cad964f879a1 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P d03d35eebaf82709414c87cfa6abc9d2baf8d7e64c2627bad0fd5bbda3e78d60 -R eae9b17364855941c00e92c86d398a4e -U dan -Z d07b6efd95ad4c9798aced1dad6099da +P ca21c942c30a3dbff0e7d118e105b847d80b5388c74d19c2eeea71581f8f40b8 +R e9d7eae7ed3949bc9ba3747c7b003f26 +U drh +Z 1e89338cdc3d7df9980ff860413d15b9 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6d952d91c5..2d3f302a52 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ca21c942c30a3dbff0e7d118e105b847d80b5388c74d19c2eeea71581f8f40b8 +40b232924c973f8d94605946fff75acbe120d90634a2eaf38bd31649e9f1390b diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 821ac6a951..88acae3c0e 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -279,10 +279,12 @@ set TRG(schema) { priority INTEGER NOT NULL, -- higher priority jobs may run earlier /* Fields updated as jobs run */ - starttime INTEGER, - endtime INTEGER, + starttime INTEGER, -- Start time (milliseconds since 1970) + endtime INTEGER, -- End time state TEXT CHECK( state IN ('','ready','running','done','failed','omit') ), - output TEXT + ntest INT, -- Number of test cases run + nerr INT, -- Number of errors reported + output TEXT -- test output ); CREATE TABLE config( @@ -391,14 +393,34 @@ if {[string compare -nocase script [lindex $argv 0]]==0} { exit } +# Compute an elapse time string MM:SS or HH:MM:SS based on the +# number of milliseconds in the argument. +# +proc elapsetime {ms} { + set s [expr {int(($ms+500.0)*0.001)}] + set hr [expr {$s/3600}] + set mn [expr {($s/60)%60}] + set sc [expr {$s%60}] + if {$hr>0} { + return [format %02d:%02d:%02d $hr $mn $sc] + } else { + return [format %02d:%02d $mn $sc] + } +} + # Helper routine for show_status # proc display_job {jobdict {tm ""}} { array set job $jobdict - set dfname [format %-60s $job(displayname)] + if {[string length $job(displayname)]>65} { + set dfname [format %.65s... $job(displayname)] + } else { + set dfname [format %-68s $job(displayname)] + } set dtm "" if {$tm!=""} { - set dtm [format %-10s "\[[expr {$tm-$job(starttime)}]ms\]"] + set dtm [expr {$tm-$job(starttime)}] + set dtm [format %8s [elapsetime $dtm]] } puts " $dfname $dtm" } @@ -449,10 +471,10 @@ proc show_status {db cls} { if {$S(failed)>0} { set f "$S(failed) FAILED, " } - puts "Command line: \[testrunner.tcl$cmdline\]$clreol" - puts "Jobs: $nJob " - puts "Summary: ${tm}ms, ($fin/$total) finished,\ - ${f}$S(running) running " + puts [format %-79s "Command line: \[testrunner.tcl$cmdline\]$clreol"] + puts [format %-79s "Jobs: $nJob"] + puts [format %-79s "Summary: [elapsetime $tm], ($fin/$total) finished,\ + ${f}$S(running) running "] set srcdir [file dirname [file dirname $TRG(info_script)]] if {$S(running)>0} { @@ -1121,15 +1143,25 @@ proc make_new_testset {} { } proc mark_job_as_finished {jobid output state endtm} { + set ntest 1 + set nerr 0 + if {$endtm>0} { + if {[regexp {\y(\d+) errors out of (\d+) tests} $output all a b]} { + set nerr $a + set ntest $b + } + } r_write_db { if {$state=="failed"} { set childstate omit + if {$nerr<=0} {set nerr 1} } else { set childstate ready } trdb eval { UPDATE jobs - SET output=$output, state=$state, endtime=$endtm + SET output=$output, state=$state, endtime=$endtm, + ntest=$ntest, nerr=$nerr WHERE jobid=$jobid; UPDATE jobs SET state=$childstate WHERE depid=$jobid; } @@ -1372,6 +1404,17 @@ proc run_testset {} { puts "\nTest database is $TRG(dbname)" puts "Test log is $TRG(logname)" + trdb eval { + SELECT sum(ntest) AS totaltest, + sum(nerr) AS totalerr + FROM jobs + } break + trdb eval { + SELECT max(endtime)-min(starttime) AS totaltime + FROM jobs WHERE endtime>0 + } break; + set et [elapsetime $totaltime] + puts "$totalerr errors out of $totaltest tests in about $et" } # Handle the --buildonly option, if it was specified. From c8edf07ca73b6f85235e1df09ea3650e6688d402 Mon Sep 17 00:00:00 2001 From: dan Date: Tue, 27 Aug 2024 19:27:40 +0000 Subject: [PATCH 009/137] Modify the implementation of "wrapper" tokenizers to make them more robust in the case where the database connection is closed before the tokenizers are deleted. FossilOrigin-Name: 7c0001d6eb43f89144eb84d9e30f575a3feed401d685a0d1f260692e419b2df2 --- ext/fts5/fts5_main.c | 25 +++++++++++++------------ manifest | 14 +++++++------- manifest.uuid | 2 +- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/ext/fts5/fts5_main.c b/ext/fts5/fts5_main.c index 4addc07294..5a97930ef7 100644 --- a/ext/fts5/fts5_main.c +++ b/ext/fts5/fts5_main.c @@ -3267,7 +3267,9 @@ static int fts5NewTokenizerModule( */ typedef struct Fts5VtoVTokenizer Fts5VtoVTokenizer; struct Fts5VtoVTokenizer { - Fts5TokenizerModule *pMod; + int bV2Native; /* True if v2 native tokenizer */ + fts5_tokenizer x1; /* Tokenizer functions */ + fts5_tokenizer_v2 x2; /* V2 tokenizer functions */ Fts5Tokenizer *pReal; }; @@ -3287,7 +3289,9 @@ static int fts5VtoVCreate( pNew = (Fts5VtoVTokenizer*)sqlite3Fts5MallocZero(&rc, sizeof(*pNew)); if( rc==SQLITE_OK ){ - pNew->pMod = pMod; + pNew->x1 = pMod->x1; + pNew->x2 = pMod->x2; + pNew->bV2Native = pMod->bV2Native; if( pMod->bV2Native ){ rc = pMod->x2.xCreate(pMod->pUserData, azArg, nArg, &pNew->pReal); }else{ @@ -3309,11 +3313,10 @@ static int fts5VtoVCreate( static void fts5VtoVDelete(Fts5Tokenizer *pTok){ Fts5VtoVTokenizer *p = (Fts5VtoVTokenizer*)pTok; if( p ){ - Fts5TokenizerModule *pMod = p->pMod; - if( pMod->bV2Native ){ - pMod->x2.xDelete(p->pReal); + if( p->bV2Native ){ + p->x2.xDelete(p->pReal); }else{ - pMod->x1.xDelete(p->pReal); + p->x1.xDelete(p->pReal); } sqlite3_free(p); } @@ -3331,9 +3334,8 @@ static int fts5V1toV2Tokenize( int (*xToken)(void*, int, const char*, int, int, int) ){ Fts5VtoVTokenizer *p = (Fts5VtoVTokenizer*)pTok; - Fts5TokenizerModule *pMod = p->pMod; - assert( pMod->bV2Native ); - return pMod->x2.xTokenize(p->pReal, pCtx, flags, pText, nText, 0, 0, xToken); + assert( p->bV2Native ); + return p->x2.xTokenize(p->pReal, pCtx, flags, pText, nText, 0, 0, xToken); } /* @@ -3348,10 +3350,9 @@ static int fts5V2toV1Tokenize( int (*xToken)(void*, int, const char*, int, int, int) ){ Fts5VtoVTokenizer *p = (Fts5VtoVTokenizer*)pTok; - Fts5TokenizerModule *pMod = p->pMod; - assert( pMod->bV2Native==0 ); + assert( p->bV2Native==0 ); UNUSED_PARAM2(pLocale,nLocale); - return pMod->x1.xTokenize(p->pReal, pCtx, flags, pText, nText, xToken); + return p->x1.xTokenize(p->pReal, pCtx, flags, pText, nText, xToken); } /* diff --git a/manifest b/manifest index e776cdf849..95f0b78d9e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improvements\sto\stestrunner.tcl:\s\sShow\selapse\stime\sin\sMM:SS\sor\sHH:MM:SS.\nKeep\strack\sof\sthe\stotal\snumber\sof\stests\sand\sthe\stotal\snumber\sof\serrors\nand\sreport\sthose\svalues\son\sa\ssummary\sline\sat\sthe\send. -D 2024-08-27T19:17:29.271 +C Modify\sthe\simplementation\sof\s"wrapper"\stokenizers\sto\smake\sthem\smore\srobust\sin\sthe\scase\swhere\sthe\sdatabase\sconnection\sis\sclosed\sbefore\sthe\stokenizers\sare\sdeleted. +D 2024-08-27T19:27:40.626 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -100,7 +100,7 @@ F ext/fts5/fts5_config.c 353d2a0d12678cae6ab5b9ce54aed8dac0825667b69248b5a4ed81c F ext/fts5/fts5_expr.c 9a56f53700d1860f0ee2f373c2b9074eaf2a7aa0637d0e27a6476de26a3fee33 F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a0ec91b1 F ext/fts5/fts5_index.c eb9a0dda3bc6ef969a6be8d2746af56856e67251810ddba08622b45be8477abe -F ext/fts5/fts5_main.c 3d8b778f65fe5be218f6a8e4019048f092c0c09621b035ce3e8804093036b578 +F ext/fts5/fts5_main.c 0dbe241c50b62e24a229a176d66d580e359b3c32cb0970c39bb6dd6b86e125d5 F ext/fts5/fts5_storage.c 9a9b880be12901f1962ae2a5a7e1b74348b3099a1e728764e419f75d98e3e612 F ext/fts5/fts5_tcl.c 4db9258a7882c5eac0da4433042132aaf15b87dd1e1636c7a6ca203abd2c8bfe F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P ca21c942c30a3dbff0e7d118e105b847d80b5388c74d19c2eeea71581f8f40b8 -R e9d7eae7ed3949bc9ba3747c7b003f26 -U drh -Z 1e89338cdc3d7df9980ff860413d15b9 +P 40b232924c973f8d94605946fff75acbe120d90634a2eaf38bd31649e9f1390b +R 37747ff8c02c47392327f3909e12ba2c +U dan +Z 559c141ac65916995897dbbf28b9ea88 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 2d3f302a52..b2a520b2f8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -40b232924c973f8d94605946fff75acbe120d90634a2eaf38bd31649e9f1390b +7c0001d6eb43f89144eb84d9e30f575a3feed401d685a0d1f260692e419b2df2 From 71475478a1f3c00043144164858802c65b4004c1 Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 19:28:21 +0000 Subject: [PATCH 010/137] Further improvement to the status display in testrunner.tcl. Show the number of errors and the number of test cases on the status summary. FossilOrigin-Name: dbc1ac8692feccde271eaca78f2833c8bb7bf620088c8f975692d6ae2c8ba53a --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/testrunner.tcl | 15 ++++++++------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/manifest b/manifest index 95f0b78d9e..e4f301cbb5 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Modify\sthe\simplementation\sof\s"wrapper"\stokenizers\sto\smake\sthem\smore\srobust\sin\sthe\scase\swhere\sthe\sdatabase\sconnection\sis\sclosed\sbefore\sthe\stokenizers\sare\sdeleted. -D 2024-08-27T19:27:40.626 +C Further\simprovement\sto\sthe\sstatus\sdisplay\sin\stestrunner.tcl.\s\sShow\sthe\nnumber\sof\serrors\sand\sthe\snumber\sof\stest\scases\son\sthe\sstatus\ssummary. +D 2024-08-27T19:28:21.475 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl 21449521b796376fb4341d84bdf9dae6befc409e2273f795b4bfda78644da22c +F test/testrunner.tcl dfb6049b07a44559a2cba909589d56bfe2d9f5ce1828ad3537e350183be3416f F test/testrunner_data.tcl b281136c9a4a3cb2e6772a87c2e94efad0c12ea3e7d0710521a3cad964f879a1 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 40b232924c973f8d94605946fff75acbe120d90634a2eaf38bd31649e9f1390b -R 37747ff8c02c47392327f3909e12ba2c -U dan -Z 559c141ac65916995897dbbf28b9ea88 +P 7c0001d6eb43f89144eb84d9e30f575a3feed401d685a0d1f260692e419b2df2 +R 2b16d26e239f800d0fd65b874c223ff3 +U drh +Z 3e4827c72f9a5e7f0a58061fb0e5d912 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index b2a520b2f8..f88cc1fe3b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7c0001d6eb43f89144eb84d9e30f575a3feed401d685a0d1f260692e419b2df2 +dbc1ac8692feccde271eaca78f2833c8bb7bf620088c8f975692d6ae2c8ba53a diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 88acae3c0e..bf9e46d934 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -455,6 +455,11 @@ proc show_status {db cls} { incr S($state) $cnt incr total $cnt } + set nt 0 + set ne 0 + $db eval { + SELECT sum(ntest) AS nt, sum(nerr) AS ne FROM jobs HAVING nt>0 + } break set fin [expr $S(done)+$S(failed)] if {$cmdline!=""} {set cmdline " $cmdline"} @@ -467,14 +472,10 @@ proc show_status {db cls} { } else { set clreol "" } - set f "" - if {$S(failed)>0} { - set f "$S(failed) FAILED, " - } puts [format %-79s "Command line: \[testrunner.tcl$cmdline\]$clreol"] - puts [format %-79s "Jobs: $nJob"] - puts [format %-79s "Summary: [elapsetime $tm], ($fin/$total) finished,\ - ${f}$S(running) running "] + puts [format %-79s "Cores: $nJob max $S(running) active"] + puts [format %-79s "Summary: [elapsetime $tm], $fin/$total tasks,\ + $ne errors, $nt tests"] set srcdir [file dirname [file dirname $TRG(info_script)]] if {$S(running)>0} { From db05c66a16370cb336de662a597edee2c0b814f2 Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 19:43:21 +0000 Subject: [PATCH 011/137] In testrunner, when doing the --status updates to the screen, be sure to overwrite dead text at the end of each line with spaces. FossilOrigin-Name: 7c195f132cb48ee44124eb4af3532937493429f7c45f6ac611f7a9b128799ad7 --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner.tcl | 4 +++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index e4f301cbb5..9a3d8d14ca 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Further\simprovement\sto\sthe\sstatus\sdisplay\sin\stestrunner.tcl.\s\sShow\sthe\nnumber\sof\serrors\sand\sthe\snumber\sof\stest\scases\son\sthe\sstatus\ssummary. -D 2024-08-27T19:28:21.475 +C In\stestrunner,\swhen\sdoing\sthe\s--status\supdates\sto\sthe\sscreen,\sbe\ssure\sto\noverwrite\sdead\stext\sat\sthe\send\sof\seach\sline\swith\sspaces. +D 2024-08-27T19:43:21.041 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl dfb6049b07a44559a2cba909589d56bfe2d9f5ce1828ad3537e350183be3416f +F test/testrunner.tcl caa8c5d6cd61f0656b16fbd3e3207814d4aa1b320eedf0bdf1ac516963c7b8ae F test/testrunner_data.tcl b281136c9a4a3cb2e6772a87c2e94efad0c12ea3e7d0710521a3cad964f879a1 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 7c0001d6eb43f89144eb84d9e30f575a3feed401d685a0d1f260692e419b2df2 -R 2b16d26e239f800d0fd65b874c223ff3 +P dbc1ac8692feccde271eaca78f2833c8bb7bf620088c8f975692d6ae2c8ba53a +R ae9b21fe337c43816e809f3a8dafca48 U drh -Z 3e4827c72f9a5e7f0a58061fb0e5d912 +Z 306e9d99d5e1930ae9fd911a1e781c28 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index f88cc1fe3b..f1d875d829 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -dbc1ac8692feccde271eaca78f2833c8bb7bf620088c8f975692d6ae2c8ba53a +7c195f132cb48ee44124eb4af3532937493429f7c45f6ac611f7a9b128799ad7 diff --git a/test/testrunner.tcl b/test/testrunner.tcl index bf9e46d934..53dead6bc9 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -421,6 +421,8 @@ proc display_job {jobdict {tm ""}} { if {$tm!=""} { set dtm [expr {$tm-$job(starttime)}] set dtm [format %8s [elapsetime $dtm]] + } else{ + set dtm [format %8s ""] } puts " $dfname $dtm" } @@ -495,7 +497,7 @@ proc show_status {db cls} { } set nOmit [$db one {SELECT count(*) FROM jobs WHERE state='omit'}] if {$nOmit} { - puts "$nOmit jobs omitted due to failures$clreol" + puts [format %-79s "$nOmit jobs omitted due to failures$clreol"] } } if {$cls} { From 1a7cfbebb01d3d34a388bed5617a28b9f993ebee Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 19:48:19 +0000 Subject: [PATCH 012/137] Fix typo in the previous check-in. Ensure that --status header lines do not overflow and wrap. FossilOrigin-Name: 2eaea67495fd9961b7145d829789889bf1d8fa7a834d40d1be43e7c74c233bc2 --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/testrunner.tcl | 10 +++++----- test/testrunner_data.tcl | 1 + 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/manifest b/manifest index 9a3d8d14ca..000260da0a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C In\stestrunner,\swhen\sdoing\sthe\s--status\supdates\sto\sthe\sscreen,\sbe\ssure\sto\noverwrite\sdead\stext\sat\sthe\send\sof\seach\sline\swith\sspaces. -D 2024-08-27T19:43:21.041 +C Fix\stypo\sin\sthe\sprevious\scheck-in.\s\sEnsure\sthat\s--status\sheader\slines\sdo\snot\noverflow\sand\swrap. +D 2024-08-27T19:48:19.164 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,8 +1714,8 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl caa8c5d6cd61f0656b16fbd3e3207814d4aa1b320eedf0bdf1ac516963c7b8ae -F test/testrunner_data.tcl b281136c9a4a3cb2e6772a87c2e94efad0c12ea3e7d0710521a3cad964f879a1 +F test/testrunner.tcl c27905c57f54450411be922037d227fee65b08928d09715d784380a398b0e758 +F test/testrunner_data.tcl 6a0facfbff26f2f8573ebaeb209426bbb59809d5c0f6925f983bd030ab5248cd F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P dbc1ac8692feccde271eaca78f2833c8bb7bf620088c8f975692d6ae2c8ba53a -R ae9b21fe337c43816e809f3a8dafca48 +P 7c195f132cb48ee44124eb4af3532937493429f7c45f6ac611f7a9b128799ad7 +R 15868716c90b102057036239341d8066 U drh -Z 306e9d99d5e1930ae9fd911a1e781c28 +Z fde036223228b7af985cf94952c295a1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index f1d875d829..f21f71e7f6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7c195f132cb48ee44124eb4af3532937493429f7c45f6ac611f7a9b128799ad7 +2eaea67495fd9961b7145d829789889bf1d8fa7a834d40d1be43e7c74c233bc2 diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 53dead6bc9..8d81469c02 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -421,7 +421,7 @@ proc display_job {jobdict {tm ""}} { if {$tm!=""} { set dtm [expr {$tm-$job(starttime)}] set dtm [format %8s [elapsetime $dtm]] - } else{ + } else { set dtm [format %8s ""] } puts " $dfname $dtm" @@ -474,10 +474,10 @@ proc show_status {db cls} { } else { set clreol "" } - puts [format %-79s "Command line: \[testrunner.tcl$cmdline\]$clreol"] - puts [format %-79s "Cores: $nJob max $S(running) active"] - puts [format %-79s "Summary: [elapsetime $tm], $fin/$total tasks,\ - $ne errors, $nt tests"] + puts [format %-79.79s "Command: \[testrunner.tcl$cmdline\]$clreol"] + puts [format %-79.79s "Cores: $nJob max $S(running) active"] + puts [format %-79.79s "Summary: [elapsetime $tm], $fin/$total tasks,\ + $ne errors, $nt tests"] set srcdir [file dirname [file dirname $TRG(info_script)]] if {$S(running)>0} { diff --git a/test/testrunner_data.tcl b/test/testrunner_data.tcl index 5ea03f0c00..48484a3e24 100644 --- a/test/testrunner_data.tcl +++ b/test/testrunner_data.tcl @@ -115,6 +115,7 @@ namespace eval trd { } set build(Stdcall) { -DUSE_STDCALL=1 + -DSQLITE_USE_ONLY_WIN32=1 -O2 } From f5a9b58c8bc6b159cb942dbdb2c71a402c0ce3bd Mon Sep 17 00:00:00 2001 From: dan Date: Tue, 27 Aug 2024 20:37:30 +0000 Subject: [PATCH 013/137] Avoid reading the structure record from within the fts5 xConnect method. FossilOrigin-Name: 6a6ce343b249e269229867b2c2f107a49ac8a8f24ad66801718ef01159655319 --- ext/fts5/fts5_main.c | 3 +-- ext/fts5/test/fts5corrupt3.test | 14 +++++++------- ext/fts5/test/fts5corrupt8.test | 15 +++------------ ext/fts5/test/fts5fault4.test | 2 +- ext/fts5/test/fts5misc.test | 8 ++++---- ext/fts5/test/fts5simple.test | 2 +- manifest | 25 ++++++++++++------------- manifest.uuid | 2 +- 8 files changed, 30 insertions(+), 41 deletions(-) diff --git a/ext/fts5/fts5_main.c b/ext/fts5/fts5_main.c index 5a97930ef7..565b1ec305 100644 --- a/ext/fts5/fts5_main.c +++ b/ext/fts5/fts5_main.c @@ -427,8 +427,7 @@ static int fts5InitVtab( /* Load the initial configuration */ if( rc==SQLITE_OK ){ - rc = sqlite3Fts5IndexLoadConfig(pTab->p.pIndex); - sqlite3Fts5IndexRollback(pTab->p.pIndex); + rc = sqlite3Fts5ConfigLoad(pTab->p.pConfig, pTab->p.pConfig->iCookie-1); } if( rc==SQLITE_OK && pConfig->eContent==FTS5_CONTENT_NORMAL ){ diff --git a/ext/fts5/test/fts5corrupt3.test b/ext/fts5/test/fts5corrupt3.test index c5faaa87b1..3e8b0377cc 100644 --- a/ext/fts5/test/fts5corrupt3.test +++ b/ext/fts5/test/fts5corrupt3.test @@ -680,11 +680,11 @@ do_test 12.0 { do_catchsql_test 11.1 { SELECT * FROM t1 WHERE t1 MATCH 'abandon'; -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} do_catchsql_test 11.2 { INSERT INTO t1(t1, rank) VALUES('merge', 500); -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} #------------------------------------------------------------------------- # @@ -1040,7 +1040,7 @@ do_test 16.0 { do_catchsql_test 16.1 { INSERT INTO t1(t1) VALUES('integrity-check'); -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} #-------------------------------------------------------------------------- reset_db @@ -1126,7 +1126,7 @@ do_test 17.0 { do_catchsql_test 17.1 { SELECT * FROM t1 WHERE t1 MATCH 'abandon'; -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} #-------------------------------------------------------------------------- reset_db @@ -1630,7 +1630,7 @@ do_test 20.0 { do_catchsql_test 20.1 { SELECT * FROM t1 WHERE t1 MATCH 'abandon'; -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} #------------------------------------------------------------------------- reset_db @@ -2100,7 +2100,7 @@ do_test 22.0 { do_catchsql_test 22.1 { INSERT INTO t1(t1) VALUES('optimize'); -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} #-------------------------------------------------------------------------- reset_db @@ -3700,7 +3700,7 @@ do_catchsql_test 32.1 { highlight(t1, 2, '[', ']') FROM t1('g + h') WHERE rank MATCH 'bm25(1.0, 1.0)' ORDER BY rank; -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} do_catchsql_test 32.2 { SELECT * FROM t3; diff --git a/ext/fts5/test/fts5corrupt8.test b/ext/fts5/test/fts5corrupt8.test index d3f0e3d514..d642920e45 100644 --- a/ext/fts5/test/fts5corrupt8.test +++ b/ext/fts5/test/fts5corrupt8.test @@ -32,20 +32,11 @@ sqlite3 db test.db do_catchsql_test 1.2 { SELECT * FROM t1 -} {1 {vtable constructor failed: t1}} +} {1 {database disk image is malformed}} do_catchsql_test 1.3 { DROP TABLE t1 -} {1 {vtable constructor failed: t1}} -do_test 1.4 { - sqlite3_db_config db DEFENSIVE 0 -} {0} -do_test 1.5 { - sqlite3_fts5_drop_corrupt_table db main t1 -} {} -do_test 1.6 { - sqlite3_db_config db DEFENSIVE -1 -} {0} -do_execsql_test 1.7 { +} {0 {}} +do_execsql_test 1.4 { SELECT * FROM sqlite_schema } diff --git a/ext/fts5/test/fts5fault4.test b/ext/fts5/test/fts5fault4.test index 1d0d5c9b7c..2b4f6c4d2a 100644 --- a/ext/fts5/test/fts5fault4.test +++ b/ext/fts5/test/fts5fault4.test @@ -90,7 +90,7 @@ set ::res [db eval {SELECT rowid, x1 FROM x1 WHERE x1 MATCH '*reads'}] do_faultsim_test 4 -faults oom-* -body { db eval {SELECT rowid, x, x1 FROM x1 WHERE x1 MATCH '*reads'} } -test { - faultsim_test_result {0 {0 {} 3}} + faultsim_test_result {0 {0 {} 2}} } #------------------------------------------------------------------------- diff --git a/ext/fts5/test/fts5misc.test b/ext/fts5/test/fts5misc.test index 534c42fff6..c2e580c564 100644 --- a/ext/fts5/test/fts5misc.test +++ b/ext/fts5/test/fts5misc.test @@ -44,12 +44,12 @@ do_catchsql_test 1.2.2 { do_catchsql_test 1.3.1 { SELECT highlight(t1, 4, '', '') FROM t1('*reads'); -} {1 {no such cursor: 1}} +} {1 {no such cursor: 0}} do_catchsql_test 1.3.2 { SELECT a FROM t1 WHERE rank = (SELECT highlight(t1, 4, '', '') FROM t1('*reads')); -} {1 {no such cursor: 1}} +} {1 {no such cursor: 0}} db close sqlite3 db test.db @@ -57,12 +57,12 @@ sqlite3 db test.db do_catchsql_test 1.3.3 { SELECT a FROM t1 WHERE rank = (SELECT highlight(t1, 4, '', '') FROM t1('*reads')); -} {1 {no such cursor: 1}} +} {1 {no such cursor: 0}} fts5_aux_test_functions db do_catchsql_test 1.3.4 { SELECT fts5_columntext(t1) FROM t1('*reads'); -} {1 {no such cursor: 1}} +} {1 {no such cursor: 0}} #------------------------------------------------------------------------- reset_db diff --git a/ext/fts5/test/fts5simple.test b/ext/fts5/test/fts5simple.test index 60ccb5a9c5..ad59bf0d9e 100644 --- a/ext/fts5/test/fts5simple.test +++ b/ext/fts5/test/fts5simple.test @@ -350,7 +350,7 @@ do_execsql_test 14.3 { do_execsql_test 14.4 { SELECT rowid, x, x1 FROM x1 WHERE x1 MATCH '*reads' -} {0 {} 3} +} {0 {} 2} #------------------------------------------------------------------------- reset_db diff --git a/manifest b/manifest index 129a212ab1..a00129dc3c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Further\sminor\simprovements\sand\stweaks\sto\sthe\stestrunner\s--status\sdisplay. -D 2024-08-27T19:49:51.307 +C Avoid\sreading\sthe\sstructure\srecord\sfrom\swithin\sthe\sfts5\sxConnect\smethod. +D 2024-08-27T20:37:30.982 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -100,7 +100,7 @@ F ext/fts5/fts5_config.c 353d2a0d12678cae6ab5b9ce54aed8dac0825667b69248b5a4ed81c F ext/fts5/fts5_expr.c 9a56f53700d1860f0ee2f373c2b9074eaf2a7aa0637d0e27a6476de26a3fee33 F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a0ec91b1 F ext/fts5/fts5_index.c eb9a0dda3bc6ef969a6be8d2746af56856e67251810ddba08622b45be8477abe -F ext/fts5/fts5_main.c 0dbe241c50b62e24a229a176d66d580e359b3c32cb0970c39bb6dd6b86e125d5 +F ext/fts5/fts5_main.c bd41fc81751fc7cb666de7dee52cf9bb97c04ce06a8122e7e41bb7527bde54fc F ext/fts5/fts5_storage.c 9a9b880be12901f1962ae2a5a7e1b74348b3099a1e728764e419f75d98e3e612 F ext/fts5/fts5_tcl.c 4db9258a7882c5eac0da4433042132aaf15b87dd1e1636c7a6ca203abd2c8bfe F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee @@ -148,12 +148,12 @@ F ext/fts5/test/fts5contentless4.test ec34dc69ef474ca9997dae6d91e072906e0e9a5a4b F ext/fts5/test/fts5contentless5.test 40cdcb4fe751672450829c5a96bd32c25fc2f6076279dd2ce5c58ac9a390132a F ext/fts5/test/fts5corrupt.test 6485f721b88ba355ca5d701e7ee87a4efa3ea578d8e6adb26f51ef956c8328bd F ext/fts5/test/fts5corrupt2.test 335911e3f68b9625d850325f9e29a128db3f4276a8c9d4e32134580da8f924c4 -F ext/fts5/test/fts5corrupt3.test 621e9bca3e7299f487e1b29ff4179d9fc9560f5847dfc5b50a16010c9d2a0e5f +F ext/fts5/test/fts5corrupt3.test 4fc3bf129f1616bea00884a23fd9d7b0e46d01791d2b57fe8d68ac36e8d3ff7c F ext/fts5/test/fts5corrupt4.test dc08d19f5b8943e95a7778a7d8da592042504faf18dd93f68f7d7a0d7d7dd733 F ext/fts5/test/fts5corrupt5.test 11b47126f5772cc37b67e3e8b2ed05895c4d07c05338bc07e4eea225bfe32c76 F ext/fts5/test/fts5corrupt6.test 2d72db743db7b5d9c9a6d0cfef24d799ed1aa5e8192b66c40e871a37ed9eed06 F ext/fts5/test/fts5corrupt7.test 4e830875c33b9ea3c4cf1ba71e692b63893cbb4faae8c69b1071889dc26e211c -F ext/fts5/test/fts5corrupt8.test f78b6de9e4327e16ba7a7958b1ce576f9b5d886b4b97690f90b7f3cf654da458 +F ext/fts5/test/fts5corrupt8.test b81d802e41631e98100f49a1aadeeffef860e30a62d6ed7d743c2797c477239e F ext/fts5/test/fts5delete.test 619295b20dbc1d840b403ee07c878f52378849c3c02e44f2ee143b3e978a0aa7 F ext/fts5/test/fts5detail.test 54015e9c43ec4ba542cfb93268abdf280e0300f350efd08ee411284b03595cc4 F ext/fts5/test/fts5determin.test 1b77879b2ae818b5b71c859e534ee334dac088b7cf3ff3bf76a2c82b1c788d11 @@ -165,7 +165,7 @@ F ext/fts5/test/fts5expr.test c7e208813df7a90badc856fde3796da79569b39382e0fdb430 F ext/fts5/test/fts5fault1.test d28a65caee75db6897c3cf1358c5230d3bb2a3bf7fb31062c19c7e5382b3d2bd F ext/fts5/test/fts5fault2.test 69c8fdbef830cd0d450908d4504d5bb86609e255af99c421c20a0756251fe344 F ext/fts5/test/fts5fault3.test da2f9e3e56ff5740d68ebdd6877c97089e7ed28ddff28a0da87a6afea27e5522 -F ext/fts5/test/fts5fault4.test 87a10d0caee57da587c7588b0c8d25d2930197399b4812ad1e4d574c75324cee +F ext/fts5/test/fts5fault4.test a5c0e849127c24e1751bc453a817f09a1b8d460e75f9ae4764017e216a870db3 F ext/fts5/test/fts5fault5.test a336e4e11847de24c9497f80cce18e00bb3fab7fb11f97d04eb9af898900a762 F ext/fts5/test/fts5fault6.test 40f49976c6ca8927bf7d65d0b8df46009d7ea172e1d4050b294610e7ea0a2979 F ext/fts5/test/fts5fault7.test 0acbec416edb24b8881f154e99c31e9ccf73f539cfcd164090be139e9e97ed4c @@ -192,7 +192,7 @@ F ext/fts5/test/fts5locale.test 797cf6f5e017462ab11313ce884b9f1df8ff063811e74ef4 F ext/fts5/test/fts5matchinfo.test 877520582feb86bbfd95ab780099bcba4526f18ac75ee34979144cf86ba3a5a3 F ext/fts5/test/fts5merge.test 2654df0bcdb2d117c2d38b6aeb0168061be01c643f9e9194b36c43a2970e8082 F ext/fts5/test/fts5merge2.test 3ebad1a59d6ad3fb66eff6523a09e95dc6367cbefb3cd73196801dea0425c8e2 -F ext/fts5/test/fts5misc.test 60bb2be4a2d83d7a45047c1812781e2e337a27efa539d86356ef7f4acaf08eab +F ext/fts5/test/fts5misc.test 8c3cc771f773dc4bb4973620c51e7729e324ca2cc80eb8894f1c2c605e361f0b F ext/fts5/test/fts5multi.test a15bc91cdb717492e6e1b66fec1c356cb57386b980c7ba5af1915f97fe878581 F ext/fts5/test/fts5multiclient.test 5ff811c028d6108045ffef737f1e9f05028af2458e456c0937c1d1b8dea56d45 F ext/fts5/test/fts5near.test 33d60867581066e5db7016deb5d651628125d7ff4e0233a88175aa5b65874c74 @@ -226,7 +226,7 @@ F ext/fts5/test/fts5secure6.test 74bf04733cc523bccca519bb03d3b4e2ed6f6e3db7c59bf F ext/fts5/test/fts5secure7.test fd03d0868d64340a1db8615b02e5508fea409de13910114e4f19eaefc120777a F ext/fts5/test/fts5secure8.test 808ade9d172ed07b24b85c57dd53b6d2b1aba018b4e634d267ce572221de80e0 F ext/fts5/test/fts5securefault.test c34a28c7cd2f31a8b8907563889e1329a97da975c08df2d951422bcef8e2ebc5 -F ext/fts5/test/fts5simple.test ed7c3815c9fa1c16166258cb98edb2e014c63c7589958d76c5487df0df913d61 +F ext/fts5/test/fts5simple.test 302cdb4f8a3350b091f4f1bccd82d05610428657f6f9e81c17703ba48267ec40 F ext/fts5/test/fts5simple2.test d10d963a357b8ec77b99032e4c816459b4dbdb1f6eee25eada7ef3ed245cb2dc F ext/fts5/test/fts5simple3.test 146ec3dc8f5763d6212641c9f0a2f1cba41679353d2add7b963beceb115dc7f4 F ext/fts5/test/fts5synonym.test becc8cea6cfc958a50b30c572c68cbfdf7455971d0fe988202ce67638d2c6cf6 @@ -2211,9 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P dbc1ac8692feccde271eaca78f2833c8bb7bf620088c8f975692d6ae2c8ba53a 2eaea67495fd9961b7145d829789889bf1d8fa7a834d40d1be43e7c74c233bc2 -R 15868716c90b102057036239341d8066 -T +closed 2eaea67495fd9961b7145d829789889bf1d8fa7a834d40d1be43e7c74c233bc2 -U drh -Z c190467c6ca0a01405f49df20c5de973 +P 7d1ccc6dfc9abe053baaf39f68e9fb14001f5032a52b85fe1e4b752e48317536 +R b2f3edb080a36a6c22913345d9099db8 +U dan +Z ae75f308e945276fc7d3f4e6bfacd7cd # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index bdd3c3e43e..7394734f08 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7d1ccc6dfc9abe053baaf39f68e9fb14001f5032a52b85fe1e4b752e48317536 +6a6ce343b249e269229867b2c2f107a49ac8a8f24ad66801718ef01159655319 From c3c645ef465767abc71b33533c1f576c35f84338 Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 21:44:45 +0000 Subject: [PATCH 014/137] Improvements to --status overwrite in testrunner. FossilOrigin-Name: 26372762ab1451eb95d29367f5b2534bde616a37e5e757e72ba2cfe42571d180 --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/testrunner.tcl | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index a00129dc3c..d025a4f329 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sreading\sthe\sstructure\srecord\sfrom\swithin\sthe\sfts5\sxConnect\smethod. -D 2024-08-27T20:37:30.982 +C Improvements\sto\s--status\soverwrite\sin\stestrunner. +D 2024-08-27T21:44:45.108 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl c27905c57f54450411be922037d227fee65b08928d09715d784380a398b0e758 +F test/testrunner.tcl 0a9e76679856e5782d520f8e4329c18ba655b6bbd19a154f44a4fb5e350be531 F test/testrunner_data.tcl 6a0facfbff26f2f8573ebaeb209426bbb59809d5c0f6925f983bd030ab5248cd F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 7d1ccc6dfc9abe053baaf39f68e9fb14001f5032a52b85fe1e4b752e48317536 -R b2f3edb080a36a6c22913345d9099db8 -U dan -Z ae75f308e945276fc7d3f4e6bfacd7cd +P 6a6ce343b249e269229867b2c2f107a49ac8a8f24ad66801718ef01159655319 +R f5da9843604e1033edc0cf6e244622b0 +U drh +Z fa568405ca45a71e0343a4bd7c4efb05 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 7394734f08..13a472ba51 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6a6ce343b249e269229867b2c2f107a49ac8a8f24ad66801718ef01159655319 +26372762ab1451eb95d29367f5b2534bde616a37e5e757e72ba2cfe42571d180 diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 8d81469c02..6344d0b0e2 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -481,7 +481,7 @@ proc show_status {db cls} { set srcdir [file dirname [file dirname $TRG(info_script)]] if {$S(running)>0} { - puts "Running: " + puts [format %-79s "Running:"] $db eval { SELECT * FROM jobs WHERE state='running' ORDER BY starttime } job { @@ -489,7 +489,7 @@ proc show_status {db cls} { } } if {$S(failed)>0} { - puts "Failures: " + puts [format %-79s "Failures:"] $db eval { SELECT * FROM jobs WHERE state='failed' ORDER BY starttime } job { From b5b4ca2a11f513d802c1eccea24fd5d128a324e8 Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 27 Aug 2024 22:28:03 +0000 Subject: [PATCH 015/137] Changes to the way "release" tests were constructed in [d03d35eebaf82709] were incorrect. Fixed here. Also enhance --explain to chose permutation configurations and so that PATTERNS on the the command line can match against permutation configurations. FossilOrigin-Name: 1f962ffc9e956a9d6311ed9c02fea13c0fe056283ee2c650a2312a258808b3b3 --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner.tcl | 40 ++++++++++++++++++++++++++++++++++------ 3 files changed, 41 insertions(+), 13 deletions(-) diff --git a/manifest b/manifest index d025a4f329..de8374a5ce 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improvements\sto\s--status\soverwrite\sin\stestrunner. -D 2024-08-27T21:44:45.108 +C Changes\sto\sthe\sway\s"release"\stests\swere\sconstructed\sin\s[d03d35eebaf82709]\nwere\sincorrect.\s\sFixed\shere.\s\sAlso\senhance\s--explain\sto\schose\spermutation\nconfigurations\sand\sso\sthat\sPATTERNS\son\sthe\sthe\scommand\sline\scan\smatch\nagainst\spermutation\sconfigurations. +D 2024-08-27T22:28:03.935 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl 0a9e76679856e5782d520f8e4329c18ba655b6bbd19a154f44a4fb5e350be531 +F test/testrunner.tcl de5deab405d25cdb0f85c4b75cc63dc1fa0571b099621b585f083647d7f6d75a F test/testrunner_data.tcl 6a0facfbff26f2f8573ebaeb209426bbb59809d5c0f6925f983bd030ab5248cd F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 6a6ce343b249e269229867b2c2f107a49ac8a8f24ad66801718ef01159655319 -R f5da9843604e1033edc0cf6e244622b0 +P 26372762ab1451eb95d29367f5b2534bde616a37e5e757e72ba2cfe42571d180 +R 66a023125402741fa708637568f51009 U drh -Z fa568405ca45a71e0343a4bd7c4efb05 +Z f1950a098efb328b04fe6e5b9690c497 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 13a472ba51..df0f6a1846 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -26372762ab1451eb95d29367f5b2534bde616a37e5e757e72ba2cfe42571d180 +1f962ffc9e956a9d6311ed9c02fea13c0fe056283ee2c650a2312a258808b3b3 diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 6344d0b0e2..fcb46a9214 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -475,7 +475,7 @@ proc show_status {db cls} { set clreol "" } puts [format %-79.79s "Command: \[testrunner.tcl$cmdline\]$clreol"] - puts [format %-79.79s "Cores: $nJob max $S(running) active"] + puts [format %-79.79s "Jobs: $nJob max $S(running) active"] puts [format %-79.79s "Summary: [elapsetime $tm], $fin/$total tasks,\ $ne errors, $nt tests"] @@ -880,7 +880,7 @@ proc add_tcl_jobs {build config patternlist {shelldepid ""}} { } else { set p "$p*" } - if {[string match $p [file tail $f]]} { + if {[string match $p "$config [file tail $f]"]} { set bMatch 1 break } @@ -1100,13 +1100,34 @@ proc add_jobs_from_cmdline {patternlist} { } release { - set config_set {} + set patternlist [lrange $patternlist 1 end] foreach b [trd_builds $TRG(platform)] { if {$TRG(config)!="" && ![regexp "\\y$b\\y" $TRG(config)]} continue if {[regexp "\\y$b\\y" $TRG(omitconfig)]} continue - lappend config_set $b + set bld [add_build_job $b $TRG(testfixture)] + foreach c [trd_configs $TRG(platform) $b] { + add_tcl_jobs $bld $c $patternlist SHELL + } + + if {$patternlist==""} { + foreach e [trd_extras $TRG(platform) $b] { + if {$e=="fuzztest"} { + add_fuzztest_jobs $b + } else { + add_make_job $bld $e + } + } + } + + if {[trdb one "SELECT EXISTS(SELECT 1 + FROM jobs WHERE depid='SHELL')"]} { + set sbld [add_shell_build_job $b [lindex $bld 1] [lindex $bld 0]] + set sbldid [lindex $sbld 0] + trdb eval { + UPDATE jobs SET depid=$sbldid WHERE depid='SHELL' + } + } } - add_devtest_jobs $config_set [lrange $patternlist 1 end] } list { @@ -1448,7 +1469,14 @@ proc explain_layer {indent depid} { puts "${indent}$displayname in $dirname" explain_layer "${indent} " $jobid } elseif {$showtests} { - puts "${indent}[lindex $displayname end]" + set tail [lindex $displayname end] + set e1 [lindex $displayname 1] + if {[string match config=* $e1]} { + set cfg [string range $e1 7 end] + puts "${indent}($cfg) $tail" + } else { + puts "${indent}$tail" + } } } } From af43eddc232e2da4ab5c4d6f9fa084de1cd8fb8c Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 09:31:17 +0000 Subject: [PATCH 016/137] Reenable SQLITE_OMIT_VIRTUALTABLE on the Device-One alignment for testrunner. FossilOrigin-Name: 8f2cb357634ec0b5aef14f3d967e76db236f8899f3201efc80c264f548cc1b0b --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner_data.tcl | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index de8374a5ce..a21b754312 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Changes\sto\sthe\sway\s"release"\stests\swere\sconstructed\sin\s[d03d35eebaf82709]\nwere\sincorrect.\s\sFixed\shere.\s\sAlso\senhance\s--explain\sto\schose\spermutation\nconfigurations\sand\sso\sthat\sPATTERNS\son\sthe\sthe\scommand\sline\scan\smatch\nagainst\spermutation\sconfigurations. -D 2024-08-27T22:28:03.935 +C Reenable\sSQLITE_OMIT_VIRTUALTABLE\son\sthe\sDevice-One\salignment\sfor\stestrunner. +D 2024-08-28T09:31:17.887 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1715,7 +1715,7 @@ F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 F test/testrunner.tcl de5deab405d25cdb0f85c4b75cc63dc1fa0571b099621b585f083647d7f6d75a -F test/testrunner_data.tcl 6a0facfbff26f2f8573ebaeb209426bbb59809d5c0f6925f983bd030ab5248cd +F test/testrunner_data.tcl f1cbff53fe42087cac3d43ca02f9574bd212c842307442e2b6fff2183f5ccbfe F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 26372762ab1451eb95d29367f5b2534bde616a37e5e757e72ba2cfe42571d180 -R 66a023125402741fa708637568f51009 +P 1f962ffc9e956a9d6311ed9c02fea13c0fe056283ee2c650a2312a258808b3b3 +R 8e623cc4a65f73a6029848f64a42525f U drh -Z f1950a098efb328b04fe6e5b9690c497 +Z 1895efedce008ae727a6effa6ee80029 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index df0f6a1846..59d2cc678e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -1f962ffc9e956a9d6311ed9c02fea13c0fe056283ee2c650a2312a258808b3b3 +8f2cb357634ec0b5aef14f3d967e76db236f8899f3201efc80c264f548cc1b0b diff --git a/test/testrunner_data.tcl b/test/testrunner_data.tcl index 48484a3e24..71a42ab404 100644 --- a/test/testrunner_data.tcl +++ b/test/testrunner_data.tcl @@ -218,7 +218,7 @@ namespace eval trd { -DSQLITE_MAX_PAGE_SIZE=4096 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 - -DSQLITE_OMIT_VIRTUALTABLEx=1 + -DSQLITE_OMIT_VIRTUALTABLE=1 -DSQLITE_ENABLE_HIDDEN_COLUMNS -DSQLITE_TEMP_STORE=3 } From a88d61824dfa5d896cf13eed7c984a09d1d5bd0c Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 09:47:29 +0000 Subject: [PATCH 017/137] Disable shell test cases that require virtual tables when testfixture is built using SQLITE_OMIT_VIRTUALTABLE. FossilOrigin-Name: 8c73d54fd1e250fcd7f30741cfbd169af9aaecc2096c0c8a9486abaa064d69af --- manifest | 14 +++++++------- manifest.uuid | 2 +- test/shell2.test | 4 ++++ test/shell5.test | 8 ++++++++ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index a21b754312..60890f8056 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Reenable\sSQLITE_OMIT_VIRTUALTABLE\son\sthe\sDevice-One\salignment\sfor\stestrunner. -D 2024-08-28T09:31:17.887 +C Disable\sshell\stest\scases\sthat\srequire\svirtual\stables\swhen\stestfixture\sis\nbuilt\susing\sSQLITE_OMIT_VIRTUALTABLE. +D 2024-08-28T09:47:29.176 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1626,10 +1626,10 @@ F test/sharedB.test 1a84863d7a2204e0d42f2e1606577c5e92e4473fa37ea0f5bdf829e4bf8e F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939 F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304 F test/shell1.test 490bf9d0c7c9564fea318c46d49369f4690b825b584c9a544dbdccf61bc0babc -F test/shell2.test 56da24128304c9ab67da2964cc80beff7b35761c446ec6e6e98bff2775b15026 +F test/shell2.test 01a01f76ed98088ce598794fbf5b359e148271541a8ddbf79d21cc353cc67a24 F test/shell3.test db1953a8e59d08e9240b7cc5948878e184f7eb2623591587f8fd1f1a5bd536d8 F test/shell4.test 522fdc628c55eff697b061504fb0a9e4e6dfc5d9087a633ab0f3dd11bcc4f807 -F test/shell5.test bafa4c0b67b7a8027e729970a625c9225cb7ef854acc4e52624c45074faaaddf +F test/shell5.test 0e5f8ce08206b9998a778cfe1989e20e47839153c05af2da29198150172e22fc F test/shell6.test e3b883b61d4916b6906678a35f9d19054861123ad91b856461e0a456273bdbb8 F test/shell7.test 43fd8e511c533bab5232e95c7b4be93b243451709e89582600d4b6e67693d5c3 F test/shell8.test aea51ecbcd4494c746b096aeff51d841d04d5f0dc4b62eb42427f16109b87acd @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 1f962ffc9e956a9d6311ed9c02fea13c0fe056283ee2c650a2312a258808b3b3 -R 8e623cc4a65f73a6029848f64a42525f +P 8f2cb357634ec0b5aef14f3d967e76db236f8899f3201efc80c264f548cc1b0b +R 6d8d08b44812eef81a87de61d7679ec8 U drh -Z 1895efedce008ae727a6effa6ee80029 +Z 9d65cc1858f9f46a1f30863c1abce3fa # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 59d2cc678e..fb2482f0ae 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8f2cb357634ec0b5aef14f3d967e76db236f8899f3201efc80c264f548cc1b0b +8c73d54fd1e250fcd7f30741cfbd169af9aaecc2096c0c8a9486abaa064d69af diff --git a/test/shell2.test b/test/shell2.test index c6c27d2165..ee5ae4bdd9 100644 --- a/test/shell2.test +++ b/test/shell2.test @@ -217,6 +217,7 @@ do_test shell2-1.4.9 { done 2}} +ifcapable vtab { # Verify that generate_series stays sane near 64-bit range boundaries. # See overflow report at https://sqlite.org/forum/forumpost/5d34ce5280 do_test shell2-1.4.10 { @@ -247,7 +248,9 @@ do_test shell2-1.4.10 { 0 1 2}} +} ;# ifcapable vtab +ifcapable vtab { # Bug discovered while messing around, .import hangs with # bit 7 set in column separator. do_test shell2-1.4.11 { @@ -262,6 +265,7 @@ do_test shell2-1.4.11 { .import dummy.csv t SELECT count(*) FROM t;}]] } {0 1} +} ;# ifcapable vtab # Bug from forum post 7cbe081746dd3803 # Keywords as column names were producing an error message. diff --git a/test/shell5.test b/test/shell5.test index 31d5449fdc..8eb905974b 100644 --- a/test/shell5.test +++ b/test/shell5.test @@ -84,6 +84,14 @@ do_test shell5-1.4.1 { .import FOO t1}] } {1 {Error: cannot open "FOO"}} +# the remainder of these test cases require virtual tables. +# +ifcapable !vtab { + puts "Skipping subsequent tests due to SQLITE_OMIT_VIRTUALTABLE" + finish_test + return +} + # empty import file do_test shell5-1.4.2 { forcedelete shell5.csv From 4a90f81a6d17af33dc689e4d32ee0091620b8cd9 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 10:25:44 +0000 Subject: [PATCH 018/137] In the testrunner status display, limit the number of reported failed jobs to avoid overflowing the terminal when there are many failures. FossilOrigin-Name: ffeaa4d5d73871cbdf1ef70b9845d921ebdb96e964d232661a5048cab7d744ed --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner.tcl | 25 +++++++++++++++++++++---- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 60890f8056..b36a4ba20f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Disable\sshell\stest\scases\sthat\srequire\svirtual\stables\swhen\stestfixture\sis\nbuilt\susing\sSQLITE_OMIT_VIRTUALTABLE. -D 2024-08-28T09:47:29.176 +C In\sthe\stestrunner\sstatus\sdisplay,\slimit\sthe\snumber\sof\sreported\sfailed\sjobs\nto\savoid\soverflowing\sthe\sterminal\swhen\sthere\sare\smany\sfailures. +D 2024-08-28T10:25:44.140 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl de5deab405d25cdb0f85c4b75cc63dc1fa0571b099621b585f083647d7f6d75a +F test/testrunner.tcl c3f6e70f02bc0257d2d66ac1fff7d26d76b1c4fcdd5e4b4d90faf2a126623587 F test/testrunner_data.tcl f1cbff53fe42087cac3d43ca02f9574bd212c842307442e2b6fff2183f5ccbfe F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 8f2cb357634ec0b5aef14f3d967e76db236f8899f3201efc80c264f548cc1b0b -R 6d8d08b44812eef81a87de61d7679ec8 +P 8c73d54fd1e250fcd7f30741cfbd169af9aaecc2096c0c8a9486abaa064d69af +R c92552ba898da06e8effb71b87a3f9eb U drh -Z 9d65cc1858f9f46a1f30863c1abce3fa +Z 9fabe008bd6ec45672f53069445b0fd8 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index fb2482f0ae..c41d9ba427 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8c73d54fd1e250fcd7f30741cfbd169af9aaecc2096c0c8a9486abaa064d69af +ffeaa4d5d73871cbdf1ef70b9845d921ebdb96e964d232661a5048cab7d744ed diff --git a/test/testrunner.tcl b/test/testrunner.tcl index fcb46a9214..a97983fac5 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -480,20 +480,37 @@ proc show_status {db cls} { $ne errors, $nt tests"] set srcdir [file dirname [file dirname $TRG(info_script)]] + set nrun 0 if {$S(running)>0} { - puts [format %-79s "Running:"] + puts [format %-79s "$S(running) Running:"] $db eval { SELECT * FROM jobs WHERE state='running' ORDER BY starttime } job { + incr nrun display_job [array get job] $now } } if {$S(failed)>0} { - puts [format %-79s "Failures:"] + puts [format %-79s "$S(failed) Failed:"] + set nfail 0 + + # $mxtoshow tries to limit the number of "Failures:" reported so that + # the status display does not overflow a 24-line terminal. But it will + # always show at least the most recent 4 failures, even if an overflow + # is needed. + set mxtoshow [expr {16-$nrun}] + if {$mxtoshow<4} {set mxtoshow 4} + $db eval { - SELECT * FROM jobs WHERE state='failed' ORDER BY starttime + SELECT * FROM jobs WHERE state='failed' ORDER BY endtime DESC } job { - display_job [array get job] + incr nfail + if {$nfail<=$mxtoshow} { + display_job [array get job] + } + } + if {$nfail>$mxtoshow} { + puts [format %-79s " ... plus [expr {$nfail-$mxtoshow}] more"] } set nOmit [$db one {SELECT count(*) FROM jobs WHERE state='omit'}] if {$nOmit} { From 242e06497855d5d4e3bf7376ac10bda024d3db47 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 10:36:18 +0000 Subject: [PATCH 019/137] Only limit the number of failures reported by testrunner status if using VT100 cursor movement. For a straight-up "status" command, show everything. FossilOrigin-Name: 791237e0f4b67f0197ae11e966554edeade0c443289d2ade00470d23bf5e8ec8 --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner.tcl | 10 +++++++--- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index b36a4ba20f..5f2f3faa01 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C In\sthe\stestrunner\sstatus\sdisplay,\slimit\sthe\snumber\sof\sreported\sfailed\sjobs\nto\savoid\soverflowing\sthe\sterminal\swhen\sthere\sare\smany\sfailures. -D 2024-08-28T10:25:44.140 +C Only\slimit\sthe\snumber\sof\sfailures\sreported\sby\stestrunner\sstatus\sif\susing\nVT100\scursor\smovement.\s\sFor\sa\sstraight-up\s"status"\scommand,\sshow\severything. +D 2024-08-28T10:36:18.262 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl c3f6e70f02bc0257d2d66ac1fff7d26d76b1c4fcdd5e4b4d90faf2a126623587 +F test/testrunner.tcl cfe0f1dd8ce1da41ebc2238eabd2f9562e48162505eb6c4495eb9221e00a0c93 F test/testrunner_data.tcl f1cbff53fe42087cac3d43ca02f9574bd212c842307442e2b6fff2183f5ccbfe F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 8c73d54fd1e250fcd7f30741cfbd169af9aaecc2096c0c8a9486abaa064d69af -R c92552ba898da06e8effb71b87a3f9eb +P ffeaa4d5d73871cbdf1ef70b9845d921ebdb96e964d232661a5048cab7d744ed +R 8085922607334118c1b73e04568394c4 U drh -Z 9fabe008bd6ec45672f53069445b0fd8 +Z 328eda1f95b36f3977ef4f1d3bbc3083 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index c41d9ba427..6bcef0ddb0 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ffeaa4d5d73871cbdf1ef70b9845d921ebdb96e964d232661a5048cab7d744ed +791237e0f4b67f0197ae11e966554edeade0c443289d2ade00470d23bf5e8ec8 diff --git a/test/testrunner.tcl b/test/testrunner.tcl index a97983fac5..1744af2ea7 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -497,9 +497,13 @@ proc show_status {db cls} { # $mxtoshow tries to limit the number of "Failures:" reported so that # the status display does not overflow a 24-line terminal. But it will # always show at least the most recent 4 failures, even if an overflow - # is needed. - set mxtoshow [expr {16-$nrun}] - if {$mxtoshow<4} {set mxtoshow 4} + # is needed. But, do not limit the length of the output of $cls is false. + if {$cls} { + set mxtoshow [expr {16-$nrun}] + if {$mxtoshow<4} {set mxtoshow 4} + } else { + set mxtoshow 9999999 + } $db eval { SELECT * FROM jobs WHERE state='failed' ORDER BY endtime DESC From 4f2f91bf08cb47ae7ac492f92b0cd2ffb894f3f1 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 11:03:58 +0000 Subject: [PATCH 020/137] Further improvements to the status display in order to maximum the amount of information shown on the limited screen realestate available when running via "watch" or in continuous monitoring mode. All details are still shown when doing a stand-alone "status". FossilOrigin-Name: 557a2c65f5ae1d8cb1858c17da0fe64fbfba83d787cfb7f2f21582960a8b9eac --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner.tcl | 46 +++++++++++++++++++-------------------------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/manifest b/manifest index 5f2f3faa01..b367857848 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Only\slimit\sthe\snumber\sof\sfailures\sreported\sby\stestrunner\sstatus\sif\susing\nVT100\scursor\smovement.\s\sFor\sa\sstraight-up\s"status"\scommand,\sshow\severything. -D 2024-08-28T10:36:18.262 +C Further\simprovements\sto\sthe\sstatus\sdisplay\sin\sorder\sto\smaximum\sthe\samount\sof\ninformation\sshown\son\sthe\slimited\sscreen\srealestate\savailable\swhen\srunning\nvia\s"watch"\sor\sin\scontinuous\smonitoring\smode.\s\sAll\sdetails\sare\sstill\sshown\nwhen\sdoing\sa\sstand-alone\s"status". +D 2024-08-28T11:03:58.055 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl cfe0f1dd8ce1da41ebc2238eabd2f9562e48162505eb6c4495eb9221e00a0c93 +F test/testrunner.tcl 2345d50bca7a48fa3454cf088a2ec6978d8a0042feadc8e7336ac5d0dfe53b07 F test/testrunner_data.tcl f1cbff53fe42087cac3d43ca02f9574bd212c842307442e2b6fff2183f5ccbfe F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P ffeaa4d5d73871cbdf1ef70b9845d921ebdb96e964d232661a5048cab7d744ed -R 8085922607334118c1b73e04568394c4 +P 791237e0f4b67f0197ae11e966554edeade0c443289d2ade00470d23bf5e8ec8 +R d373eef32be36327da73bfcab1a028e6 U drh -Z 328eda1f95b36f3977ef4f1d3bbc3083 +Z 38527615900da2d45d6401569f849a97 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6bcef0ddb0..7e1aedcbf9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -791237e0f4b67f0197ae11e966554edeade0c443289d2ade00470d23bf5e8ec8 +557a2c65f5ae1d8cb1858c17da0fe64fbfba83d787cfb7f2f21582960a8b9eac diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 1744af2ea7..5bddeee610 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -470,19 +470,15 @@ proc show_status {db cls} { # overwrite. puts -nonewline "\033\[H" flush stdout - set clreol "\033\[K" - } else { - set clreol "" } - puts [format %-79.79s "Command: \[testrunner.tcl$cmdline\]$clreol"] - puts [format %-79.79s "Jobs: $nJob max $S(running) active"] - puts [format %-79.79s "Summary: [elapsetime $tm], $fin/$total tasks,\ + puts [format %-79.79s "Command: \[testrunner.tcl$cmdline\]"] + puts [format %-79.79s "Summary: [elapsetime $tm], $fin/$total jobs,\ $ne errors, $nt tests"] set srcdir [file dirname [file dirname $TRG(info_script)]] set nrun 0 + puts [format %-79s "Running: $S(running) (max: $nJob)"] if {$S(running)>0} { - puts [format %-79s "$S(running) Running:"] $db eval { SELECT * FROM jobs WHERE state='running' ORDER BY starttime } job { @@ -491,34 +487,30 @@ proc show_status {db cls} { } } if {$S(failed)>0} { - puts [format %-79s "$S(failed) Failed:"] - set nfail 0 - - # $mxtoshow tries to limit the number of "Failures:" reported so that - # the status display does not overflow a 24-line terminal. But it will + # $toshow is the number of failures to report. In $cls mode, + # status tries to limit the number of failure reported so that + # the status display does not overflow a 24-line terminal. It will # always show at least the most recent 4 failures, even if an overflow - # is needed. But, do not limit the length of the output of $cls is false. - if {$cls} { - set mxtoshow [expr {16-$nrun}] - if {$mxtoshow<4} {set mxtoshow 4} + # is needed. No limit is imposed for a status within $cls. + # + if {$cls && $S(failed)>18-$S(running)} { + set toshow [expr {18-$S(running)}] + if {$toshow<4} {set toshow 4} + set shown " (must recent $toshow shown)" } else { - set mxtoshow 9999999 + set toshow $S(failed) + set shown "" } - + puts [format %-79s "Failed: $S(failed) $shown"] $db eval { - SELECT * FROM jobs WHERE state='failed' ORDER BY endtime DESC + SELECT * FROM jobs WHERE state='failed' + ORDER BY endtime DESC LIMIT $toshow } job { - incr nfail - if {$nfail<=$mxtoshow} { - display_job [array get job] - } - } - if {$nfail>$mxtoshow} { - puts [format %-79s " ... plus [expr {$nfail-$mxtoshow}] more"] + display_job [array get job] } set nOmit [$db one {SELECT count(*) FROM jobs WHERE state='omit'}] if {$nOmit} { - puts [format %-79s "$nOmit jobs omitted due to failures$clreol"] + puts [format %-79s " ... $nOmit jobs omitted due to failures"] } } if {$cls} { From d6b56d65a8c330c7310611f78d281cdc050e654b Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 12:10:51 +0000 Subject: [PATCH 021/137] Update the "make test" target so that it is really just "mdevtest" with "srctree-check" and "sourcetest". FossilOrigin-Name: 7420b13238da4e6bfb1589eaf3cfd842fe3c4b0f3b6a3b49c24cd70589bf4809 --- Makefile.in | 14 ++++++-------- Makefile.msc | 13 ++++++++++--- main.mk | 12 +++++++++--- manifest | 18 +++++++++--------- manifest.uuid | 2 +- tool/mkctimec.tcl | 1 + 6 files changed, 36 insertions(+), 24 deletions(-) diff --git a/Makefile.in b/Makefile.in index b8149f846f..d17d6830d0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1381,18 +1381,16 @@ srctree-check: $(TOP)/tool/srctree-check.tcl # Testing for a release # -releasetest: srctree-check testfixture$(TEXE) - ./testfixture$(TEXE) $(TOP)/test/testrunner.tcl release $(TSTRNNR_OPTS) +releasetest: srctree-check has_tclsh85 + $(TCLSH_CMD) $(TOP)/test/testrunner.tcl release $(TSTRNNR_OPTS) # Minimal testing that runs in less than 3 minutes # quicktest: ./testfixture$(TEXE) ./testfixture$(TEXE) $(TOP)/test/extraquick.test $(TESTOPTS) -# This is the common case. Run many tests that do not take too long, -# including fuzzcheck, sqlite3_analyzer, and sqldiff tests. -# -test: srctree-check fuzztest sourcetest $(TESTPROGS) tcltest +test: srctree-check sourcetest + $(TCLSH_CMD) $(TOP)/test/testrunner.tcl mdevtest $(TSTRNNR_OPTS) # Run a test using valgrind. This can take a really long time # because valgrind is so much slower than a native machine. @@ -1407,8 +1405,8 @@ valgrindtest: $(TESTPROGS) valgrindfuzz smoketest: $(TESTPROGS) fuzzcheck$(TEXE) ./testfixture$(TEXE) $(TOP)/test/main.test $(TESTOPTS) -shelltest: $(TESTPROGS) - ./testfixture$(TEXT) $(TOP)/test/permutations.test shell +shelltest: + $(TCLSH_CMD) $(TOP)/test/testrunner.tcl release shell sqlite3_analyzer.c: sqlite3.c $(TOP)/src/tclsqlite.c $(TOP)/tool/spaceanal.tcl $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in has_tclsh85 $(TCLSH_CMD) $(TOP)/tool/mkccode.tcl $(TOP)/tool/sqlite3_analyzer.c.in >sqlite3_analyzer.c diff --git a/Makefile.msc b/Makefile.msc index e31aee0899..e4420b1dea 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -2544,7 +2544,8 @@ quicktest: testfixture.exe sourcetest # This is the common case. Run many tests that do not take too long, # including fuzzcheck, sqlite3_analyzer, and sqldiff tests. # -test: $(TESTPROGS) sourcetest fuzztest tcltest +test: srctree-check sourcetest + $(TCLSH_CMD) $(TOP)\test\testrunner.tcl mdevtest # The veryquick.test TCL tests. # @@ -2565,10 +2566,16 @@ devtest: testfixture.exe fuzztest testrunner mdevtest: $(TCLSH_CMD) $(TOP)\test\testrunner.tcl mdevtest +# Validate that various generated files in the source tree +# are up-to-date. +# +srctree-check: $(TOP)\tool\srctree-check.tcl + $(TCLSH_CMD) $(TOP)\tool\srctree-check.tcl + # Testing for a release # -releasetest: testfixture.exe - testfixture.exe $(TOP)\test\testrunner.tcl release +releasetest: + $(TCLSH_CMD) $(TOP)\test\testrunner.tcl release smoketest: $(TESTPROGS) diff --git a/main.mk b/main.mk index baf8260417..ea6b83d059 100644 --- a/main.mk +++ b/main.mk @@ -971,9 +971,15 @@ mdevtest: quicktest: ./testfixture$(EXE) ./testfixture$(EXE) $(TOP)/test/extraquick.test $(TESTOPTS) -# The default test case. Runs most of the faster standard TCL tests, -# and fuzz tests, and sqlite3_analyzer and sqldiff tests. -test: fuzztest sourcetest $(TESTPROGS) tcltest +# Validate that various generated files in the source tree +# are up-to-date. +# +srctree-check: $(TOP)/tool/srctree-check.tcl + tclsh $(TOP)/tool/srctree-check.tcl + +# The default test case. +test: srctree-check sourcetest + tclsh $(TOP)/test/testrunner.tcl mdevtest # Run a test using valgrind. This can take a really long time diff --git a/manifest b/manifest index b367857848..b4f5e7e97f 100644 --- a/manifest +++ b/manifest @@ -1,11 +1,11 @@ -C Further\simprovements\sto\sthe\sstatus\sdisplay\sin\sorder\sto\smaximum\sthe\samount\sof\ninformation\sshown\son\sthe\slimited\sscreen\srealestate\savailable\swhen\srunning\nvia\s"watch"\sor\sin\scontinuous\smonitoring\smode.\s\sAll\sdetails\sare\sstill\sshown\nwhen\sdoing\sa\sstand-alone\s"status". -D 2024-08-28T11:03:58.055 +C Update\sthe\s"make\stest"\starget\sso\sthat\sit\sis\sreally\sjust\s"mdevtest"\swith\n"srctree-check"\sand\s"sourcetest". +D 2024-08-28T12:10:51.091 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 -F Makefile.in 101cb90f75c16ca3f8e7088364322441f9b01d6fdcef4a9c7f5fdcf78a3601a4 +F Makefile.in d51de7cfc0500e54b7a8961218ce9d7fa115610f5353f98fd9b407a1a69dfdcc F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6 -F Makefile.msc 6c3fe8b6ce60e73f34a148c957d78b4648745c8d30e792423aa1a8d8bf12d065 +F Makefile.msc fa422ec289537f61c5fe660e85ff4cab9389c3095a9071b5a0487aa521e657ba F README.md 3d47ef5758e2de29d6f4e1aca714d51424baba86c8b561fef330f6ef2dc9282c F VERSION 0db40f92c04378404eb45bff93e9e42c148c7e54fd3da99469ed21e22411f5a6 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 @@ -685,7 +685,7 @@ F ext/wasm/wasmfs.make 8a4955882aaa0783b3f60a9484a1f0f3d8b6f775c0fcd17c082f31966 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0 -F main.mk 9541ffdce424ddddb463e2480c3f1cb4067bbd3a6d2c84b3f083cb128a2fa721 +F main.mk 7a70a20e224bf9cdf518cafe7738000ef7b2aec7b7de19d3e49700301d6ff130 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421 @@ -2131,7 +2131,7 @@ F tool/max-limits.c cbb635fbb37ae4d05f240bfb5b5270bb63c54439 F tool/merge-test.tcl de76b62f2de2a92d4c1ca4f976bce0aea6899e0229e250479b229b2a1914b176 F tool/mkautoconfamal.sh cbdcf993fa83dccbef7fb77b39cdeb31ef9f77d9d88c9e343b58d35ca3898a6a F tool/mkccode.tcl 86463e68ce9c15d3041610fedd285ce32a5cf7a58fc88b3202b8b76837650dbe x -F tool/mkctimec.tcl 060e9785e9503bf51f8b1b11b542bdeef90fd0ceb0738154f6762acec0c61e5f x +F tool/mkctimec.tcl 48ca8eefa9e615cb9057ce6485b9c9ae5801381f24690d7d60b3b2dc8e6b7457 x F tool/mkkeywordhash.c b9faa0ae7e14e4dbbcd951cddd786bf46b8a65bb07b129ba8c0cfade723aaffd F tool/mkmsvcmin.tcl d76c45efda1cce2d4005bcea7b8a22bb752e3256009f331120fb4fecb14ebb7a F tool/mkopcodec.tcl 33d20791e191df43209b77d37f0ff0904620b28465cca6990cf8d60da61a07ef @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 791237e0f4b67f0197ae11e966554edeade0c443289d2ade00470d23bf5e8ec8 -R d373eef32be36327da73bfcab1a028e6 +P 557a2c65f5ae1d8cb1858c17da0fe64fbfba83d787cfb7f2f21582960a8b9eac +R 810ec2efa964f89a1c1304eac241e2a3 U drh -Z 38527615900da2d45d6401569f849a97 +Z a85e1bb31ced99882e1388879ef7a06f # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 7e1aedcbf9..4a6b864348 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -557a2c65f5ae1d8cb1858c17da0fe64fbfba83d787cfb7f2f21582960a8b9eac +7420b13238da4e6bfb1589eaf3cfd842fe3c4b0f3b6a3b49c24cd70589bf4809 diff --git a/tool/mkctimec.tcl b/tool/mkctimec.tcl index 135164e3d1..7ca664a37e 100755 --- a/tool/mkctimec.tcl +++ b/tool/mkctimec.tcl @@ -448,6 +448,7 @@ if {[catch {set cfd [open $destfile w]}]!=0} { puts stderr "File '$destfile' unwritable." exit 1; } +fconfigure $cfd -translation binary puts $cfd $::headWarning; puts $cfd $::headCode; From 3341f5ce85e9ad392c9828105e6d5a5cf5afb6fc Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 13:34:20 +0000 Subject: [PATCH 022/137] Minor wording change on testrunner output. FossilOrigin-Name: 115e68597957a9ee80de7f554ee3768c992051687c8f07eaf3a9fcaab7efd44e --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner.tcl | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index b4f5e7e97f..cf14534781 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Update\sthe\s"make\stest"\starget\sso\sthat\sit\sis\sreally\sjust\s"mdevtest"\swith\n"srctree-check"\sand\s"sourcetest". -D 2024-08-28T12:10:51.091 +C Minor\swording\schange\son\stestrunner\soutput. +D 2024-08-28T13:34:20.794 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl 2345d50bca7a48fa3454cf088a2ec6978d8a0042feadc8e7336ac5d0dfe53b07 +F test/testrunner.tcl ff5f42f683a9c868fe01a855d81b9f08e1afb031edc5c340e5cf0fe5deaa0041 F test/testrunner_data.tcl f1cbff53fe42087cac3d43ca02f9574bd212c842307442e2b6fff2183f5ccbfe F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 557a2c65f5ae1d8cb1858c17da0fe64fbfba83d787cfb7f2f21582960a8b9eac -R 810ec2efa964f89a1c1304eac241e2a3 +P 7420b13238da4e6bfb1589eaf3cfd842fe3c4b0f3b6a3b49c24cd70589bf4809 +R 203b7adbe6856a41e47a582ad4a2ff84 U drh -Z a85e1bb31ced99882e1388879ef7a06f +Z ec83570cfd83b688d421f55742cc81eb # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 4a6b864348..507c4e1143 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7420b13238da4e6bfb1589eaf3cfd842fe3c4b0f3b6a3b49c24cd70589bf4809 +115e68597957a9ee80de7f554ee3768c992051687c8f07eaf3a9fcaab7efd44e diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 5bddeee610..58c718fe47 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -1504,7 +1504,7 @@ if {$TRG(explain)} { explain_tests } else { if {$TRG(nJob)>1} { - puts "splitting work across $TRG(nJob) jobs" + puts "splitting work across $TRG(nJob) cores" } puts "built testset in [expr $tm/1000]ms.." handle_buildonly From ba5994b1818fea883217f0a930b0c819d0cfbed8 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 13:51:51 +0000 Subject: [PATCH 023/137] Maybe [7420b13238da4e6b] was not such a good idea. Restore "make test" so that it works as before - running a single-threaded test over the source tree with options specified by ./configure and similar. Instead, change the "make devtest" target so that runs the automated multi-threaded tests on a standard configuration. FossilOrigin-Name: dc9fee980d4f4b5a569628702e52cef9e5d8e6c69c2b84546dce47e3e514775e --- Makefile.in | 18 ++++++++++++++---- Makefile.msc | 17 +++++++++++++---- main.mk | 20 ++++++++++++++------ manifest | 16 ++++++++-------- manifest.uuid | 2 +- 5 files changed, 50 insertions(+), 23 deletions(-) diff --git a/Makefile.in b/Makefile.in index d17d6830d0..6f41c9bf81 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1363,9 +1363,14 @@ tcltest: ./testfixture$(TEXE) testrunner: testfixture$(TEXE) ./testfixture$(TEXE) $(TOP)/test/testrunner.tcl -# Runs both fuzztest and testrunner, consecutively. +# This is the testing target preferred by the core SQLite developers. +# It runs tests under a standard configuration, regardless of how +# ./configure was run. The devs run "make devtest" prior to each +# check-in, at a minimum. Probably other tests too, but at least this +# one. # -devtest: srctree-check testfixture$(TEXE) fuzztest testrunner +devtest: srctree-check sourcetest + $(TCLSH_CMD) $(TOP)/test/testrunner.tcl mdevtest $(TSTRNNR_OPTS) mdevtest: srctree-check has_tclsh85 $(TCLSH_CMD) $(TOP)/test/testrunner.tcl mdevtest $(TSTRNNR_OPTS) @@ -1389,8 +1394,13 @@ releasetest: srctree-check has_tclsh85 quicktest: ./testfixture$(TEXE) ./testfixture$(TEXE) $(TOP)/test/extraquick.test $(TESTOPTS) -test: srctree-check sourcetest - $(TCLSH_CMD) $(TOP)/test/testrunner.tcl mdevtest $(TSTRNNR_OPTS) +# Try to run tests on whatever options are specified by the +# ./configure. The developers seldom use this target. Instead +# they use "make devtest" which runs tests on a standard set of +# options regardless of how SQLite is configured. This "test" +# target is provided for legacy only. +# +test: srctree-check fuzztest sourcetest $(TESTPROGS) tcltest # Run a test using valgrind. This can take a really long time # because valgrind is so much slower than a native machine. diff --git a/Makefile.msc b/Makefile.msc index e4420b1dea..64b63a704e 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -2535,6 +2535,13 @@ queryplantest: testfixture.exe shell fuzztest: fuzzcheck.exe .\fuzzcheck.exe $(FUZZDATA) +# Legacy testing target for third-party integrators. The SQLite +# developers seldom use this target themselves. Instead +# they use "nmake /f Makefile.msc devtest" which runs tests on +# a standard set of options +# +test: $(TESTPROGS) sourcetest fuzztest tcltest + # Minimal testing that runs in less than 3 minutes (on a fast machine) # quicktest: testfixture.exe sourcetest @@ -2544,8 +2551,6 @@ quicktest: testfixture.exe sourcetest # This is the common case. Run many tests that do not take too long, # including fuzzcheck, sqlite3_analyzer, and sqldiff tests. # -test: srctree-check sourcetest - $(TCLSH_CMD) $(TOP)\test\testrunner.tcl mdevtest # The veryquick.test TCL tests. # @@ -2559,9 +2564,13 @@ tcltest: testfixture.exe testrunner: testfixture.exe .\testfixture.exe $(TOP)\test\testrunner.tcl -# Runs both fuzztest and testrunner, consecutively. +# This is the testing target preferred by the core SQLite developers. +# It runs tests under a standard configuration. The devs run +# "nmake /f Makefile.msc devtest" prior to each check-in, at a minimum. +# Probably other tests too, but at least this one. # -devtest: testfixture.exe fuzztest testrunner +devtest: srctree-check sourcetest + $(TCLSH_CMD) $(TOP)\test\testrunner.tcl mdevtest mdevtest: $(TCLSH_CMD) $(TOP)\test\testrunner.tcl mdevtest diff --git a/main.mk b/main.mk index ea6b83d059..7926dd0501 100644 --- a/main.mk +++ b/main.mk @@ -958,9 +958,14 @@ tcltest: ./testfixture$(EXE) testrunner: testfixture$(EXE) ./testfixture$(EXE) $(TOP)/test/testrunner.tcl -# Runs both fuzztest and testrunner, consecutively. +# This is the testing target preferred by the core SQLite developers. +# It runs tests under a standard configuration, regardless of how +# ./configure was run. The devs run "make devtest" prior to each +# check-in, at a minimum. Probably other tests too, but at least this +# one. # -devtest: testfixture$(EXE) fuzztest testrunner +devtest: srctree-check sourcetest + tclsh $(TOP)/test/testrunner.tcl mdevtest mdevtest: tclsh $(TOP)/test/testrunner.tcl mdevtest @@ -977,10 +982,13 @@ quicktest: ./testfixture$(EXE) srctree-check: $(TOP)/tool/srctree-check.tcl tclsh $(TOP)/tool/srctree-check.tcl -# The default test case. -test: srctree-check sourcetest - tclsh $(TOP)/test/testrunner.tcl mdevtest - +# Try to run tests on whatever options are specified by the +# environment variables. The SQLite developers seldom use this target. +# Instead# they use "make devtest" which runs tests on a standard set of +# options regardless of how SQLite is configured. This "test" +# target is provided for legacy only. +# +test: fuzztest sourcetest $(TESTPROGS) tcltest # Run a test using valgrind. This can take a really long time # because valgrind is so much slower than a native machine. diff --git a/manifest b/manifest index cf14534781..a66a4cd72d 100644 --- a/manifest +++ b/manifest @@ -1,11 +1,11 @@ -C Minor\swording\schange\son\stestrunner\soutput. -D 2024-08-28T13:34:20.794 +C Maybe\s[7420b13238da4e6b]\swas\snot\ssuch\sa\sgood\sidea.\s\sRestore\s"make\stest"\sso\nthat\sit\sworks\sas\sbefore\s-\srunning\sa\ssingle-threaded\stest\sover\sthe\ssource\stree\nwith\soptions\sspecified\sby\s./configure\sand\ssimilar.\s\sInstead,\schange\sthe\n"make\sdevtest"\starget\sso\sthat\sruns\sthe\sautomated\smulti-threaded\stests\son\s\na\sstandard\sconfiguration. +D 2024-08-28T13:51:51.631 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 -F Makefile.in d51de7cfc0500e54b7a8961218ce9d7fa115610f5353f98fd9b407a1a69dfdcc +F Makefile.in 100a8ba2aee96203e57f0dfeb7c75befa7db0d9d17bdb5a7f814eaa60b974e16 F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6 -F Makefile.msc fa422ec289537f61c5fe660e85ff4cab9389c3095a9071b5a0487aa521e657ba +F Makefile.msc 75946777a32696b6e894e686ba663f9dcdecea4730a827717e1b2be3b262234d F README.md 3d47ef5758e2de29d6f4e1aca714d51424baba86c8b561fef330f6ef2dc9282c F VERSION 0db40f92c04378404eb45bff93e9e42c148c7e54fd3da99469ed21e22411f5a6 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 @@ -685,7 +685,7 @@ F ext/wasm/wasmfs.make 8a4955882aaa0783b3f60a9484a1f0f3d8b6f775c0fcd17c082f31966 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0 -F main.mk 7a70a20e224bf9cdf518cafe7738000ef7b2aec7b7de19d3e49700301d6ff130 +F main.mk 70366119ceca019c618ab9acb1b4e8cb1ab5d342a6c4884a9d514f264bc0f2ca F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 7420b13238da4e6bfb1589eaf3cfd842fe3c4b0f3b6a3b49c24cd70589bf4809 -R 203b7adbe6856a41e47a582ad4a2ff84 +P 115e68597957a9ee80de7f554ee3768c992051687c8f07eaf3a9fcaab7efd44e +R 4897791cd3fac7134f1184e69605f11d U drh -Z ec83570cfd83b688d421f55742cc81eb +Z f3181ad81fdede715ff6716653ae5e00 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 507c4e1143..402ccd1247 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -115e68597957a9ee80de7f554ee3768c992051687c8f07eaf3a9fcaab7efd44e +dc9fee980d4f4b5a569628702e52cef9e5d8e6c69c2b84546dce47e3e514775e From 8db3fc548881727f5dac450e32222fe0ba116b17 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 13:55:46 +0000 Subject: [PATCH 024/137] Update the README.md file to recommend running "devtest" instead of "mdevtest". FossilOrigin-Name: eb016f66ea2c7ebacf8c57495843db3414602d062e4a430f2cc603c88b10c3f9 --- README.md | 4 ++-- manifest | 12 ++++++------ manifest.uuid | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4cddb47752..ca8f5a7bd2 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ For example: ../sqlite/configure ;# Run the configure script make sqlite3 ;# Builds the "sqlite3" command-line tool make sqlite3.c ;# Build the "amalgamation" source file - make mdevtest ;# Run development tests (requires tcl-dev) + make devtest ;# Run development tests (requires tcl-dev) make releasetest ;# Run full release tests (requires tcl-dev) make sqldiff ;# Builds the "sqldiff" command-line tool make sqlite3_analyzer ;# Builds the "sqlite3_analyzer" tool (requires tcl-dev) @@ -156,7 +156,7 @@ Build using Makefile.msc. Example: nmake /f Makefile.msc sqlite3.exe nmake /f Makefile.msc sqlite3.c - nmake /f Makefile.msc mdevtest + nmake /f Makefile.msc devtest nmake /f Makefile.msc releasetest nmake /f Makefile.msc tclextension-install diff --git a/manifest b/manifest index a66a4cd72d..e4d95bda60 100644 --- a/manifest +++ b/manifest @@ -1,12 +1,12 @@ -C Maybe\s[7420b13238da4e6b]\swas\snot\ssuch\sa\sgood\sidea.\s\sRestore\s"make\stest"\sso\nthat\sit\sworks\sas\sbefore\s-\srunning\sa\ssingle-threaded\stest\sover\sthe\ssource\stree\nwith\soptions\sspecified\sby\s./configure\sand\ssimilar.\s\sInstead,\schange\sthe\n"make\sdevtest"\starget\sso\sthat\sruns\sthe\sautomated\smulti-threaded\stests\son\s\na\sstandard\sconfiguration. -D 2024-08-28T13:51:51.631 +C Update\sthe\sREADME.md\sfile\sto\srecommend\srunning\s"devtest"\sinstead\sof\s"mdevtest". +D 2024-08-28T13:55:46.396 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F Makefile.in 100a8ba2aee96203e57f0dfeb7c75befa7db0d9d17bdb5a7f814eaa60b974e16 F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6 F Makefile.msc 75946777a32696b6e894e686ba663f9dcdecea4730a827717e1b2be3b262234d -F README.md 3d47ef5758e2de29d6f4e1aca714d51424baba86c8b561fef330f6ef2dc9282c +F README.md 83335813752d41cd445c727b0918597d99e18e7de0e05024536f555a5f34cc56 F VERSION 0db40f92c04378404eb45bff93e9e42c148c7e54fd3da99469ed21e22411f5a6 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 115e68597957a9ee80de7f554ee3768c992051687c8f07eaf3a9fcaab7efd44e -R 4897791cd3fac7134f1184e69605f11d +P dc9fee980d4f4b5a569628702e52cef9e5d8e6c69c2b84546dce47e3e514775e +R 1aff88f40958f7cfa960a88f6231afc4 U drh -Z f3181ad81fdede715ff6716653ae5e00 +Z e14775f88501d5236fe68a1292e9a48b # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 402ccd1247..fb81145c12 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -dc9fee980d4f4b5a569628702e52cef9e5d8e6c69c2b84546dce47e3e514775e +eb016f66ea2c7ebacf8c57495843db3414602d062e4a430f2cc603c88b10c3f9 From 50ca8af6f2ff18c1e6e77cd5d0b8c60e26331b4c Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 28 Aug 2024 15:54:46 +0000 Subject: [PATCH 025/137] Fix a dropped error code in fts5. FossilOrigin-Name: df55502e4f412e5b1daccf82f11fa4eb932047d9972dcd16e36be00cf09f78e1 --- ext/fts5/fts5_main.c | 8 +++++--- ext/fts5/test/fts5faultI.test | 21 +++++++++++++++++++++ manifest | 16 ++++++++-------- manifest.uuid | 2 +- 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/ext/fts5/fts5_main.c b/ext/fts5/fts5_main.c index 565b1ec305..03c1bb83fa 100644 --- a/ext/fts5/fts5_main.c +++ b/ext/fts5/fts5_main.c @@ -2067,9 +2067,11 @@ static int fts5SyncMethod(sqlite3_vtab *pVtab){ ** Implementation of xBegin() method. */ static int fts5BeginMethod(sqlite3_vtab *pVtab){ - fts5CheckTransactionState((Fts5FullTable*)pVtab, FTS5_BEGIN, 0); - fts5NewTransaction((Fts5FullTable*)pVtab); - return SQLITE_OK; + int rc = fts5NewTransaction((Fts5FullTable*)pVtab); + if( rc==SQLITE_OK ){ + fts5CheckTransactionState((Fts5FullTable*)pVtab, FTS5_BEGIN, 0); + } + return rc; } /* diff --git a/ext/fts5/test/fts5faultI.test b/ext/fts5/test/fts5faultI.test index 63bfdd68ac..e74162ee35 100644 --- a/ext/fts5/test/fts5faultI.test +++ b/ext/fts5/test/fts5faultI.test @@ -256,6 +256,27 @@ do_faultsim_test 10 -faults oom* -prep { faultsim_test_result {0 hello} } +#------------------------------------------------------------------------- +reset_db + +do_execsql_test 11.0 { + CREATE VIRTUAL TABLE f1 USING fts5(content); + CREATE TABLE g1(id, content); + INSERT INTO g1 VALUES(30000, 'a b c'); + INSERT INTO g1 VALUES(40000, 'd e f'); +} + +faultsim_save_and_close + +do_faultsim_test 11 -faults oom* -prep { + faultsim_restore_and_reopen +} -body { + execsql { + INSERT INTO f1(rowid, content) SELECT id, content FROM g1; + } +} -test { + faultsim_test_result {0 {}} +} finish_test diff --git a/manifest b/manifest index e4d95bda60..717ed83794 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Update\sthe\sREADME.md\sfile\sto\srecommend\srunning\s"devtest"\sinstead\sof\s"mdevtest". -D 2024-08-28T13:55:46.396 +C Fix\sa\sdropped\serror\scode\sin\sfts5. +D 2024-08-28T15:54:46.677 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -100,7 +100,7 @@ F ext/fts5/fts5_config.c 353d2a0d12678cae6ab5b9ce54aed8dac0825667b69248b5a4ed81c F ext/fts5/fts5_expr.c 9a56f53700d1860f0ee2f373c2b9074eaf2a7aa0637d0e27a6476de26a3fee33 F ext/fts5/fts5_hash.c adda4272be401566a6e0ba1acbe70ee5cb97fce944bc2e04dc707152a0ec91b1 F ext/fts5/fts5_index.c eb9a0dda3bc6ef969a6be8d2746af56856e67251810ddba08622b45be8477abe -F ext/fts5/fts5_main.c bd41fc81751fc7cb666de7dee52cf9bb97c04ce06a8122e7e41bb7527bde54fc +F ext/fts5/fts5_main.c 1fddb53f495425d9314c74b30c5848a9dd254be0e5f445bfe38292d5ab21c288 F ext/fts5/fts5_storage.c 9a9b880be12901f1962ae2a5a7e1b74348b3099a1e728764e419f75d98e3e612 F ext/fts5/fts5_tcl.c 4db9258a7882c5eac0da4433042132aaf15b87dd1e1636c7a6ca203abd2c8bfe F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee @@ -178,7 +178,7 @@ F ext/fts5/test/fts5faultE.test 844586ce71dab4be85bb86880e87b624d089f851654cd22e F ext/fts5/test/fts5faultF.test 4abef99f86e99d9f0c6460dd68c586a766b6b9f1f660ada55bf2e8266bd1bbc1 F ext/fts5/test/fts5faultG.test 0544411ffcb3e19b42866f757a8a5e0fb8fef3a62c06f61d14deebc571bb7ea9 F ext/fts5/test/fts5faultH.test 2b2b5b8cb1b3fd7679f488c06e22af44107fbc6137eaf45b3e771dc7b149312d -F ext/fts5/test/fts5faultI.test e1e8a927122a8c3be8614a59717e838cad0505ba0a6f404983da8430e7aeb14d +F ext/fts5/test/fts5faultI.test ae4b83ac953200bd7b66d53038f7d6a4fc29cd64831b8e1795538babcea7c638 F ext/fts5/test/fts5first.test bfd685b96905bf541d99d8644e0a7219d1d833455a08ab64e344071a613b6ba9 F ext/fts5/test/fts5full.test 97d263c1072f4a560929cca31e70f65d2ae232610e17e6affcf7e979df59547b F ext/fts5/test/fts5fuzz1.test 238d8c45f3b81342aa384de3e581ff2fa330bf922a7b69e484bbc06051a1080e @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P dc9fee980d4f4b5a569628702e52cef9e5d8e6c69c2b84546dce47e3e514775e -R 1aff88f40958f7cfa960a88f6231afc4 -U drh -Z e14775f88501d5236fe68a1292e9a48b +P eb016f66ea2c7ebacf8c57495843db3414602d062e4a430f2cc603c88b10c3f9 +R 78d4e3d98d20e086c6528776d2d5c051 +U dan +Z 1a3069fd43dc36b1a74436c6f020d339 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index fb81145c12..183857bc4a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -eb016f66ea2c7ebacf8c57495843db3414602d062e4a430f2cc603c88b10c3f9 +df55502e4f412e5b1daccf82f11fa4eb932047d9972dcd16e36be00cf09f78e1 From c1547d1f7acfdf7502f743529c6c9a1b7aefcf60 Mon Sep 17 00:00:00 2001 From: drh <> Date: Wed, 28 Aug 2024 19:13:16 +0000 Subject: [PATCH 026/137] Do not allow sqlite3_blob_open() to work on a any table that contains generated columns, even columns of the table which are not generated themselves, because such columns might be part of the expression of a STORED column. This restriction could be relaxed some, but that would be a lot of code for something that nobody ever uses. FossilOrigin-Name: 6e84947123339f0ea2b7dabc6134a621eed09317f81647f15870ed50a0f7d1bc --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/vdbeblob.c | 5 +++++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index 717ed83794..d7b2d80921 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sdropped\serror\scode\sin\sfts5. -D 2024-08-28T15:54:46.677 +C Do\snot\sallow\ssqlite3_blob_open()\sto\swork\son\sa\sany\stable\sthat\scontains\ngenerated\scolumns,\seven\scolumns\sof\sthe\stable\swhich\sare\snot\sgenerated\sthemselves,\nbecause\ssuch\scolumns\smight\sbe\spart\sof\sthe\sexpression\sof\sa\sSTORED\scolumn.\nThis\srestriction\scould\sbe\srelaxed\ssome,\sbut\sthat\swould\sbe\sa\slot\sof\scode\nfor\ssomething\sthat\snobody\sever\suses. +D 2024-08-28T19:13:16.654 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -841,7 +841,7 @@ F src/vdbe.h c2549a215898a390de6669cfa32adba56f0d7e17ba5a7f7b14506d6fd5f0c36a F src/vdbeInt.h 949669dfd8a41550d27dcb905b494f2ccde9a2e6c1b0b04daa1227e2e74c2b2c F src/vdbeapi.c 80235ac380e9467fec1cb0883354d841f2a771976e766995f7e0c77f845406df F src/vdbeaux.c 25d685cafe119ff890c94345e884ea558a6b5d823bfa52ba708eb8ff3c70aa71 -F src/vdbeblob.c 13f9287b55b6356b4b1845410382d6bede203ceb29ef69388a4a3d007ffacbe5 +F src/vdbeblob.c 255be187436da38b01f276c02e6a08103489bbe2a7c6c21537b7aecbe0e1f797 F src/vdbemem.c 831a244831eaa45335f9ae276b50a7a82ee10d8c46c2c72492d4eb8c98d94d89 F src/vdbesort.c d0a3c7056c081703c8b6d91ad60f17da5e062a5c64bf568ed0fa1b5f4cae311f F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P eb016f66ea2c7ebacf8c57495843db3414602d062e4a430f2cc603c88b10c3f9 -R 78d4e3d98d20e086c6528776d2d5c051 -U dan -Z 1a3069fd43dc36b1a74436c6f020d339 +P df55502e4f412e5b1daccf82f11fa4eb932047d9972dcd16e36be00cf09f78e1 +R e1af11959b2bec73273fe58897c14052 +U drh +Z 762ce3d8ddc624dbf22ecdf6a6f25bea # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 183857bc4a..aec5cf28d8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -df55502e4f412e5b1daccf82f11fa4eb932047d9972dcd16e36be00cf09f78e1 +6e84947123339f0ea2b7dabc6134a621eed09317f81647f15870ed50a0f7d1bc diff --git a/src/vdbeblob.c b/src/vdbeblob.c index 522447dbc1..6cb36da37a 100644 --- a/src/vdbeblob.c +++ b/src/vdbeblob.c @@ -167,6 +167,11 @@ int sqlite3_blob_open( pTab = 0; sqlite3ErrorMsg(&sParse, "cannot open table without rowid: %s", zTable); } + if( pTab && (pTab->tabFlags&TF_HasGenerated)!=0 ){ + pTab = 0; + sqlite3ErrorMsg(&sParse, "cannot open table with generated columns: %s", + zTable); + } #ifndef SQLITE_OMIT_VIEW if( pTab && IsView(pTab) ){ pTab = 0; From ccd34894e1a9e7895004867c3f3f4d0897b0dc30 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 29 Aug 2024 16:27:57 +0000 Subject: [PATCH 027/137] Fix a case where the BTCF_AtLast flag was being left set incorrectly. This was causing obscure window function queries to fail. FossilOrigin-Name: e042eb024738a83eed92cd2dfac3d2a50d2589715a3d81b1a494564dd7d8e7fa --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/btree.c | 2 +- test/windowE.test | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index d7b2d80921..c76c28e768 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Do\snot\sallow\ssqlite3_blob_open()\sto\swork\son\sa\sany\stable\sthat\scontains\ngenerated\scolumns,\seven\scolumns\sof\sthe\stable\swhich\sare\snot\sgenerated\sthemselves,\nbecause\ssuch\scolumns\smight\sbe\spart\sof\sthe\sexpression\sof\sa\sSTORED\scolumn.\nThis\srestriction\scould\sbe\srelaxed\ssome,\sbut\sthat\swould\sbe\sa\slot\sof\scode\nfor\ssomething\sthat\snobody\sever\suses. -D 2024-08-28T19:13:16.654 +C Fix\sa\scase\swhere\sthe\sBTCF_AtLast\sflag\swas\sbeing\sleft\sset\sincorrectly.\sThis\swas\scausing\sobscure\swindow\sfunction\squeries\sto\sfail. +D 2024-08-29T16:27:57.817 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -704,7 +704,7 @@ F src/auth.c 4c1ea890e0069ad73bead5d17a5b12c34cfa4f1a24175c8147ea439b64be271c F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523 F src/bitvec.c 9eac5f42c11914d5ef00a75605bb205e934f435c579687f985f1f8b0995c8645 F src/btmutex.c 79a43670447eacc651519a429f6ece9fd638563cf95b469d6891185ddae2b522 -F src/btree.c 8b42fc7d9efdb2df05c30e8f91ff6cfbd979724ae24bf90269028468b7a13333 +F src/btree.c 8c5592c618741c5fc9733e7efe3927bfafad3e999d15b0a0f3f1d3f3e17b919e F src/btree.h 55066f513eb095db935169dab1dc2f7c7a747ef223c533f5d4ad4dfed346cbd0 F src/btreeInt.h 98aadb6dcb77b012cab2574d6a728fad56b337fc946839b9898c4b4c969e30b6 F src/build.c 3a1840d9d171ce2d24f4c1f7acda7266ab796c664290c1acba65ff98ce2bd01e @@ -2070,7 +2070,7 @@ F test/windowA.test 6d63dc1260daa17141a55007600581778523a8b420629f1282d2acfc36af F test/windowB.test aad7c31739999f68a98a813cfd78390918fc70f56d2d925317a1523cab548ecf F test/windowC.test 6fd75f5bb2f1343d34e470e36e68f0ff638d8a42f6aa7d99471261b31a0d42f2 F test/windowD.test 65cf5a765fb8072450e8a0de2979ce7f09a38d87724fe1280c6444073e3da49b -F test/windowE.test c98507e0b0d95980ad25845db758557757be2d7054198ccf522c7d277057a3df +F test/windowE.test d045a5fbaaf50ecac9483e1249dd317ba4f9d189c405a730ba6effdefb87b94f F test/windowerr.tcl f5acd6fbc210d7b5546c0e879d157888455cd4a17a1d3f28f07c1c8a387019e0 F test/windowerr.test a8b752402109c15aa1c5efe1b93ccb0ce1ef84fa964ae1cd6684dd0b3cc1819b F test/windowfault.test 15094c1529424e62f798bc679e3fe9dfab6e8ba2f7dfe8c923b6248c31660a7c @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P df55502e4f412e5b1daccf82f11fa4eb932047d9972dcd16e36be00cf09f78e1 -R e1af11959b2bec73273fe58897c14052 -U drh -Z 762ce3d8ddc624dbf22ecdf6a6f25bea +P 6e84947123339f0ea2b7dabc6134a621eed09317f81647f15870ed50a0f7d1bc +R 842b0bd8861928ef2186779e003e3d2c +U dan +Z 8acde417655a8746f3e46d7a85e6d010 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index aec5cf28d8..53067bc77e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6e84947123339f0ea2b7dabc6134a621eed09317f81647f15870ed50a0f7d1bc +e042eb024738a83eed92cd2dfac3d2a50d2589715a3d81b1a494564dd7d8e7fa diff --git a/src/btree.c b/src/btree.c index c752b0771b..f985ce3405 100644 --- a/src/btree.c +++ b/src/btree.c @@ -5989,7 +5989,7 @@ int sqlite3BtreeIndexMoveto( && indexCellCompare(pCur, 0, pIdxKey, xRecordCompare)<=0 && pIdxKey->errCode==SQLITE_OK ){ - pCur->curFlags &= ~BTCF_ValidOvfl; + pCur->curFlags &= ~(BTCF_ValidOvfl|BTCF_AtLast); if( !pCur->pPage->isInit ){ return SQLITE_CORRUPT_BKPT; } diff --git a/test/windowE.test b/test/windowE.test index 9128468b3c..1cb67f56b0 100644 --- a/test/windowE.test +++ b/test/windowE.test @@ -73,6 +73,38 @@ do_catchsql_test 2.2 { WINDOW w1 AS (PARTITION BY x OVER w1); } {1 {near "OVER": syntax error}} +#------------------------------------------------------------------------- +reset_db +do_execsql_test 3.0 { + BEGIN TRANSACTION; + CREATE TABLE t2(c1 INT, c2 REAL); + INSERT INTO t2 VALUES + (447,0.0), (448,0.0), (449,0.0), (452,0.0), (453,0.0), (454,0.0), (455,0.0), + (456,0.0), (459,0.0), (460,0.0), (462,0.0), (463,0.0), (466,0.0), (467,0.0), + (468,0.0), (469,0.0), (470,0.0), (473,0.0), (474,0.0), (475,0.0), (476,0.0), + (477,0.0), (480,0.0), (481,0.0), (482,0.0), (483,0.0), (484,0.0), (487,0.0), + (488,0.0), (489,0.0), (490,0.0), (491,0.0), (494,0.0), (495,0.0), (496,0.0), + (497,0.0), (498,0.0), (501,0.0), (502,0.0), (503,0.0), (504,0.0), (505,0.0), + (508,0.0), (509,0.0), (510,0.0), (511,0.0), (512,0.0), (515,0.0), (516,0.0), + (517,0.0), (518,0.0), (519,0.0), (522,0.0), (523,0.0), (524,0.0), (525,0.0), + (526,0.0), (529,0.0), (530,0.0), (531,0.0), (532,0.0), (533,0.0), (536,0.0), + (537,1.0), (538,0.0), (539,0.0), (540,0.0), (543,0.0), (544,0.0); + COMMIT; +} + +do_execsql_test 3.1 { + select c1, max(c2) over (order by c1 range 366.0 preceding) from t2; +} { + 447 0.0 448 0.0 449 0.0 452 0.0 453 0.0 454 0.0 455 0.0 456 0.0 459 0.0 + 460 0.0 462 0.0 463 0.0 466 0.0 467 0.0 468 0.0 469 0.0 470 0.0 473 0.0 + 474 0.0 475 0.0 476 0.0 477 0.0 480 0.0 481 0.0 482 0.0 483 0.0 484 0.0 + 487 0.0 488 0.0 489 0.0 490 0.0 491 0.0 494 0.0 495 0.0 496 0.0 497 0.0 + 498 0.0 501 0.0 502 0.0 503 0.0 504 0.0 505 0.0 508 0.0 509 0.0 510 0.0 + 511 0.0 512 0.0 515 0.0 516 0.0 517 0.0 518 0.0 519 0.0 522 0.0 523 0.0 + 524 0.0 525 0.0 526 0.0 529 0.0 530 0.0 531 0.0 532 0.0 533 0.0 536 0.0 + 537 1.0 538 1.0 539 1.0 540 1.0 543 1.0 544 1.0 +} + finish_test From 6a18c9e06a770357a74703f56dc26ab445bd7ccd Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 29 Aug 2024 18:32:56 +0000 Subject: [PATCH 028/137] All makefiles are responsive to OPTIONS=... command-line arguments, and add the RHS value of OPTIONS= to builds and to lemon and other build steps that might respond to -D or -U options. FossilOrigin-Name: 854b3776ee1fcaa5931e3a0ed104978ca350d218e553586d1c40c2420e1be498 --- Makefile.in | 8 ++++++-- Makefile.msc | 9 +++++++++ README.md | 12 ++++++++++++ main.mk | 4 ++++ manifest | 20 ++++++++++---------- manifest.uuid | 2 +- 6 files changed, 42 insertions(+), 13 deletions(-) diff --git a/Makefile.in b/Makefile.in index 6f41c9bf81..d230a40acb 100644 --- a/Makefile.in +++ b/Makefile.in @@ -83,9 +83,13 @@ TEMP_STORE = -DSQLITE_TEMP_STORE=@TEMP_STORE@ # based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). # The same set of OMIT and ENABLE flags should be passed to the # LEMON parser generator and the mkkeywordhash tool as well. -OPT_FEATURE_FLAGS = @OPT_FEATURE_FLAGS@ +# +# Add OPTIONS=... on the command line to append additional options +# to the OPT_FEATURE_FLAGS. +# +OPT_FEATURE_FLAGS = @OPT_FEATURE_FLAGS@ $(OPTIONS) -TCC += $(OPT_FEATURE_FLAGS) +TCC += $(OPT_FEATURE_FLAGS) # Add in any optional parameters specified on the make commane line # ie. make "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1". diff --git a/Makefile.msc b/Makefile.msc index 64b63a704e..bf707edfd6 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -379,6 +379,7 @@ SQLITE_TCL_DEP = # the Windows platform. # !IFNDEF OPT_FEATURE_FLAGS +OPT_FEATURE_FLAGS = $(OPT_XTRA) !IF $(MINIMAL_AMALGAMATION)==0 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS5=1 @@ -392,6 +393,14 @@ OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_BYTECODE_VTAB=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 !ENDIF +# Additional feature-options above and beyond what are normally used can be +# be added using OPTIONS=.... on the command-line. These values are +# appended to the OPT_FEATURE_FLAGS variable. +# +!IFDEF OPTIONS +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) $(OPTIONS) +!ENDIF + # Should the session extension be enabled? If so, add compilation options # to enable it. # diff --git a/README.md b/README.md index ca8f5a7bd2..c208f11ea3 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,13 @@ Almost all makefile targets require a "tclsh" TCL interpreter version 8.6 or later. The targets marked with "(requires tcl-dev)" also require the TCL development libraries. +On "make" command-lines, one can add "OPTIONS=..." to specify additional +compile-time options over and above those set by ./configure. For example, +to compile with the SQLITE_OMIT_DEPRECATED compile-time option, one could say: + + ./configure --enable-all + make OPTIONS=-DSQLITE_OMIT_DEPRECATED sqlite3 + The configure script uses autoconf 2.61 and libtool. If the configure script does not work out for you, there is a generic makefile named "Makefile.linux-gcc" in the top directory of the source tree that you @@ -163,6 +170,11 @@ Build using Makefile.msc. Example: There are many other makefile targets. See comments in Makefile.msc for details. +As with the unix Makefile, the OPTIONS=... argument can be passed on the nmake +command-line to enable new compile-time options. For example: + + nmake /f Makefile.msc OPTIONS=-DSQLITE_OMIT_DEPRECATED sqlite3.exe + ## Source Tree Map * **src/** - This directory contains the primary source code for the diff --git a/main.mk b/main.mk index 7926dd0501..0c86c77181 100644 --- a/main.mk +++ b/main.mk @@ -42,6 +42,10 @@ # build the SQLite library and testing tools. ################################################################################ +# If OPTIONS... is specified on the command-line, append its value to OPTS +# +OPTS += $(OPTIONS) + # This is how we compile # TCCX = $(TCC) $(OPTS) -I. -I$(TOP)/src -I$(TOP) diff --git a/manifest b/manifest index c76c28e768..1a8810cd58 100644 --- a/manifest +++ b/manifest @@ -1,12 +1,12 @@ -C Fix\sa\scase\swhere\sthe\sBTCF_AtLast\sflag\swas\sbeing\sleft\sset\sincorrectly.\sThis\swas\scausing\sobscure\swindow\sfunction\squeries\sto\sfail. -D 2024-08-29T16:27:57.817 +C All\smakefiles\sare\sresponsive\sto\sOPTIONS=...\scommand-line\sarguments,\sand\sadd\nthe\sRHS\svalue\sof\sOPTIONS=\sto\sbuilds\sand\sto\slemon\sand\sother\sbuild\ssteps\sthat\nmight\srespond\sto\s-D\sor\s-U\soptions. +D 2024-08-29T18:32:56.249 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 -F Makefile.in 100a8ba2aee96203e57f0dfeb7c75befa7db0d9d17bdb5a7f814eaa60b974e16 +F Makefile.in f246a6d8a8a77c35d50d5494ee9bcd8fb6f90118eff46169427f9f404057b56e F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6 -F Makefile.msc 75946777a32696b6e894e686ba663f9dcdecea4730a827717e1b2be3b262234d -F README.md 83335813752d41cd445c727b0918597d99e18e7de0e05024536f555a5f34cc56 +F Makefile.msc 47dfd26a401c5a33e237ecfe126c996977f34ac44e44a1a1ebf2204abb89d483 +F README.md 5b678e264236788390d11991f2c0052bd73f19790173883fc56d638bcb849154 F VERSION 0db40f92c04378404eb45bff93e9e42c148c7e54fd3da99469ed21e22411f5a6 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5 @@ -685,7 +685,7 @@ F ext/wasm/wasmfs.make 8a4955882aaa0783b3f60a9484a1f0f3d8b6f775c0fcd17c082f31966 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0 -F main.mk 70366119ceca019c618ab9acb1b4e8cb1ab5d342a6c4884a9d514f264bc0f2ca +F main.mk 715c833f9733fd10b15d8773c59dd7535067d9d0f1a20073182069538f523bc7 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 6e84947123339f0ea2b7dabc6134a621eed09317f81647f15870ed50a0f7d1bc -R 842b0bd8861928ef2186779e003e3d2c -U dan -Z 8acde417655a8746f3e46d7a85e6d010 +P e042eb024738a83eed92cd2dfac3d2a50d2589715a3d81b1a494564dd7d8e7fa +R f410afede94c7e996193f1f14e81b108 +U drh +Z d182fc30f4d0c921d3b91364d1eaed1e # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 53067bc77e..21e3bcb9c3 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e042eb024738a83eed92cd2dfac3d2a50d2589715a3d81b1a494564dd7d8e7fa +854b3776ee1fcaa5931e3a0ed104978ca350d218e553586d1c40c2420e1be498 From 494ba30c9b2f8c78ee6e25ca7bb8df8aa8acef87 Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 29 Aug 2024 23:32:16 +0000 Subject: [PATCH 029/137] Sync the autoconf/Makefile.msc with the main ./Makefile.msc FossilOrigin-Name: 9de47c3611ca05e03a661807a06c6c5c0b5c6548ea7a8d73cb63832d2dff9d0e --- autoconf/Makefile.msc | 9 +++++++++ manifest | 12 ++++++------ manifest.uuid | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/autoconf/Makefile.msc b/autoconf/Makefile.msc index a4270fb2ae..f8a65e90cc 100644 --- a/autoconf/Makefile.msc +++ b/autoconf/Makefile.msc @@ -301,6 +301,7 @@ SQLITE3EXEPDB = /pdb:sqlite3sh.pdb # the Windows platform. # !IFNDEF OPT_FEATURE_FLAGS +OPT_FEATURE_FLAGS = $(OPT_XTRA) !IF $(MINIMAL_AMALGAMATION)==0 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS5=1 @@ -314,6 +315,14 @@ OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_BYTECODE_VTAB=1 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 !ENDIF +# Additional feature-options above and beyond what are normally used can be +# be added using OPTIONS=.... on the command-line. These values are +# appended to the OPT_FEATURE_FLAGS variable. +# +!IFDEF OPTIONS +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) $(OPTIONS) +!ENDIF + # Should the session extension be enabled? If so, add compilation options # to enable it. # diff --git a/manifest b/manifest index 1a8810cd58..7fda0fd8a5 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C All\smakefiles\sare\sresponsive\sto\sOPTIONS=...\scommand-line\sarguments,\sand\sadd\nthe\sRHS\svalue\sof\sOPTIONS=\sto\sbuilds\sand\sto\slemon\sand\sother\sbuild\ssteps\sthat\nmight\srespond\sto\s-D\sor\s-U\soptions. -D 2024-08-29T18:32:56.249 +C Sync\sthe\sautoconf/Makefile.msc\swith\sthe\smain\s./Makefile.msc +D 2024-08-29T23:32:16.773 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -17,7 +17,7 @@ F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2 F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903 F autoconf/Makefile.am adedc1324b6a87fdd1265ddd336d2fb7d4f36a0e77b86ea553ae7cc4ea239347 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac -F autoconf/Makefile.msc 7ac6c331fc3b8aa57b6782db995b8c0e49230352decd4e2662fd07c06a9ed623 +F autoconf/Makefile.msc 2aced6442addab13ed115696eba28d9ed29caa3dd604a31392c2c7a5da301492 F autoconf/README.first 6c4f34fe115ff55d4e8dbfa3cecf04a0188292f7 F autoconf/README.txt 42cfd21d0b19dc7d5d85fb5c405c5f3c6a4c923021c39128f6ba685355d8fd56 F autoconf/configure.ac ec7fa914c5e74ff212fe879f9bb6918e1234497e05facfb641f30c4d5893b277 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P e042eb024738a83eed92cd2dfac3d2a50d2589715a3d81b1a494564dd7d8e7fa -R f410afede94c7e996193f1f14e81b108 +P 854b3776ee1fcaa5931e3a0ed104978ca350d218e553586d1c40c2420e1be498 +R 2925596ad299ac71bd21ba5e19108337 U drh -Z d182fc30f4d0c921d3b91364d1eaed1e +Z afa5bee3192039d82a156b1fe821f6e2 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 21e3bcb9c3..915840033d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -854b3776ee1fcaa5931e3a0ed104978ca350d218e553586d1c40c2420e1be498 +9de47c3611ca05e03a661807a06c6c5c0b5c6548ea7a8d73cb63832d2dff9d0e From 11397ce1048e3ae03b333d7b2428f3fe399ffd12 Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 30 Aug 2024 01:11:19 +0000 Subject: [PATCH 030/137] In the testrunner.tcl status report, try to provide a rough estimate of the time remaining. FossilOrigin-Name: 90bc616d20e8c247691c45de2a28d41c1632b21152dc34253eefc179a90ab31f --- manifest | 12 ++++++------ manifest.uuid | 2 +- test/testrunner.tcl | 15 ++++++++++++--- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 7fda0fd8a5..a27e71d2a3 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Sync\sthe\sautoconf/Makefile.msc\swith\sthe\smain\s./Makefile.msc -D 2024-08-29T23:32:16.773 +C In\sthe\stestrunner.tcl\sstatus\sreport,\stry\sto\sprovide\sa\srough\sestimate\sof\nthe\stime\sremaining. +D 2024-08-30T01:11:19.367 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -1714,7 +1714,7 @@ F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d163 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc F test/tester.tcl 2c203a2dd664298f239f0ec3ce22fbc65b5f021c1e09edbae8452af8a694e052 -F test/testrunner.tcl ff5f42f683a9c868fe01a855d81b9f08e1afb031edc5c340e5cf0fe5deaa0041 +F test/testrunner.tcl 662af46f1f0a41eb197f17583698853dd130ff3d47cf136dd519c3aecd9a9d7d F test/testrunner_data.tcl f1cbff53fe42087cac3d43ca02f9574bd212c842307442e2b6fff2183f5ccbfe F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899 F test/thread002.test c24c83408e35ba5a952a3638b7ac03ccdf1ce4409289c54a050ac4c5f1de7502 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 854b3776ee1fcaa5931e3a0ed104978ca350d218e553586d1c40c2420e1be498 -R 2925596ad299ac71bd21ba5e19108337 +P 9de47c3611ca05e03a661807a06c6c5c0b5c6548ea7a8d73cb63832d2dff9d0e +R c902a48c3428870b5b8747f7667d950b U drh -Z afa5bee3192039d82a156b1fe821f6e2 +Z 58e0a7f0d6d1a8c7bc1acf976af98f74 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 915840033d..c360e52b07 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9de47c3611ca05e03a661807a06c6c5c0b5c6548ea7a8d73cb63832d2dff9d0e +90bc616d20e8c247691c45de2a28d41c1632b21152dc34253eefc179a90ab31f diff --git a/test/testrunner.tcl b/test/testrunner.tcl index 58c718fe47..7ebb173c0c 100644 --- a/test/testrunner.tcl +++ b/test/testrunner.tcl @@ -476,13 +476,22 @@ proc show_status {db cls} { $ne errors, $nt tests"] set srcdir [file dirname [file dirname $TRG(info_script)]] - set nrun 0 - puts [format %-79s "Running: $S(running) (max: $nJob)"] + set line "Running: $S(running) (max: $nJob)" + if {$S(running)>0 && $fin>100 && $fin>0.05*$total} { + # Only estimate the time remaining after completing at least 100 + # jobs amounting to 10% of the total. Never estimate less than + # 2% of the total time used so far. + set tmleft [expr {($tm/$fin)*($total-$fin)}] + if {$tmleft<0.02*$tm} { + set tmleft [expr {$tm*0.02}] + } + append line " est time left [elapsetime $tmleft]" + } + puts [format %-79.79s $line] if {$S(running)>0} { $db eval { SELECT * FROM jobs WHERE state='running' ORDER BY starttime } job { - incr nrun display_job [array get job] $now } } From 28db1a68ba14eadc5452d0c59b03326190f2d022 Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 30 Aug 2024 12:10:28 +0000 Subject: [PATCH 031/137] Improvements to "make clean" on unix. FossilOrigin-Name: a1d775f07528192b09566ff1546b067ffbee0db5812e424e6b7f3cc33a67dc83 --- Makefile.in | 46 ++++++++++++++--------------------------- main.mk | 57 +++++++++++++++++---------------------------------- manifest | 14 ++++++------- manifest.uuid | 2 +- 4 files changed, 42 insertions(+), 77 deletions(-) diff --git a/Makefile.in b/Makefile.in index d230a40acb..1be9ea8519 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1607,42 +1607,26 @@ tclextension-list: $(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --info clean: - rm -f *.lo *.la *.o sqlite3$(TEXE) libsqlite3.la - rm -f sqlite3.h opcodes.* - rm -rf .libs .deps - rm -f lemon$(BEXE) lempar.c parse.* sqlite*.tar.gz - rm -f mkkeywordhash$(BEXE) keywordhash.h - rm -f mksourceid$(BEXE) - rm -f *.da *.bb *.bbg gmon.out - rm -rf tsrc .target_source + rm -f *.lo *.la *.o *.c *.h *.da *.bb *.bbg gmon.* *.rws sqlite3$(TEXE) + rm -rf .libs .deps tsrc libtool .target_source testrunner_* + rm -f lemon$(BEXE) sqlite*.tar.gz + rm -f mkkeywordhash$(BEXE) mksourceid$(BEXE) + rm -f parse.* fts5parse.* + rm -rf tsrc .target_source testrunner_bld_* testdir* rm -f tclsqlite3$(TEXE) - rm -f testfixture$(TEXE) test.db + rm -f $(TESTPROGS) testrunner.* rm -f LogEst$(TEXE) fts3view$(TEXE) rollback-test$(TEXE) showdb$(TEXE) rm -f showjournal$(TEXE) showstat4$(TEXE) showwal$(TEXE) speedtest1$(TEXE) - rm -f wordcount$(TEXE) changeset$(TEXE) - rm -f version-info$(TEXT) - rm -f sqlite3.dll sqlite3.lib sqlite3.exp sqlite3.def - rm -f sqlite3.c - rm -f sqlite3rc.h - rm -f shell.c sqlite3ext.h - rm -f sqlite3_analyzer$(TEXE) sqlite3_analyzer.c - rm -f sqlite-*-output.vsix - rm -f mptester mptester.exe - rm -f rbu rbu.exe - rm -f srcck1 srcck1.exe - rm -f fuzzershell fuzzershell.exe - rm -f fuzzcheck fuzzcheck.exe - rm -f sqldiff sqldiff.exe - rm -f dbhash dbhash.exe - rm -f fts5.* fts5parse.* - rm -f threadtest5 - rm -f src-verify - rm -f custom.rws - rm -f has_tclsh84 has_tclsh85 + rm -f wordcount$(TEXE) changeset$(TEXE) version-info$(TEXE) + rm -f *.dll *.lib *.exp *.def *.pc *.vsix + rm -f sqlite3_analyzer$(TEXE) + rm -f mptester$(TEXE) rbu$(TEXE) srcck1$(TEXE) + rm -f fuzzershell$(TEXE) fuzzcheck$(TEXE) sqldiff$(TEXE) dbhash$(TEXE) + rm -f threadtest5$(TEXE) + rm -f src-verify has_tclsh* distclean: clean - rm -f sqlite_cfg.h config.log config.status libtool Makefile sqlite3.pc \ - $(TESTPROGS) + rm -f config.log config.status Makefile # # Windows section diff --git a/main.mk b/main.mk index 0c86c77181..b1c86a1b76 100644 --- a/main.mk +++ b/main.mk @@ -1130,41 +1130,22 @@ install: sqlite3 libsqlite3.a sqlite3.h mv sqlite3.h /usr/include clean: - rm -f *.o sqlite3 sqlite3.exe libsqlite3.a sqlite3.h opcodes.* - rm -f lemon lemon.exe lempar.c parse.* sqlite*.tar.gz - rm -f mkkeywordhash mkkeywordhash.exe keywordhash.h - rm -f $(PUBLISH) - rm -f *.da *.bb *.bbg gmon.out - rm -rf tsrc target_source - rm -f testloadext.dll libtestloadext.so - rm -f amalgamation-testfixture amalgamation-testfixture.exe - rm -f fts3-testfixture fts3-testfixture.exe - rm -f testfixture testfixture.exe - rm -f threadtest3 threadtest3.exe - rm -f LogEst LogEst.exe - rm -f fts3view fts3view.exe - rm -f rollback-test rollback-test.exe - rm -f showdb showdb.exe - rm -f showjournal showjournal.exe - rm -f showstat4 showstat4.exe - rm -f showwal showwal.exe - rm -f changeset changeset.exe - rm -f speedtest1 speedtest1.exe - rm -f wordcount wordcount.exe - rm -f rbu rbu.exe - rm -f srcck1 srcck1.exe - rm -f sqlite3.c sqlite3-*.c fts?amal.c tclsqlite3.c - rm -f sqlite3rc.h - rm -f shell.c sqlite3ext.h - rm -f sqlite3_analyzer sqlite3_analyzer.exe sqlite3_analyzer.c - rm -f sqlite3_expert sqlite3_expert.exe - rm -f sqlite-*-output.vsix - rm -f mptester mptester.exe - rm -f fuzzershell fuzzershell.exe - rm -f fuzzcheck fuzzcheck.exe - rm -f sessionfuzz - rm -f sqldiff sqldiff.exe - rm -f fts5.* fts5parse.* - rm -f lsm.h lsm1.c - rm -f threadtest5 - rm -f src-verify + rm -f *.lo *.la *.o *.c *.h *.da *.bb *.bbg gmon.* *.rws sqlite3$(TEXE) + rm -rf .libs .deps tsrc libtool target_source testrunner_* + rm -f lemon$(BEXE) sqlite*.tar.gz + rm -f mkkeywordhash$(BEXE) mksourceid$(BEXE) + rm -f parse.* fts5parse.* + rm -rf tsrc .target_source testrunner_bld_* testdir* + rm -f tclsqlite3$(TEXE) + rm -f $(TESTPROGS) testrunner.* + rm -f LogEst$(TEXE) fts3view$(TEXE) rollback-test$(TEXE) showdb$(TEXE) + rm -f showjournal$(TEXE) showstat4$(TEXE) showwal$(TEXE) speedtest1$(TEXE) + rm -f wordcount$(TEXE) changeset$(TEXE) version-info$(TEXE) + rm -f *.dll *.lib *.exp *.def *.pc *.vsix + rm -f sqlite3_analyzer$(TEXE) + rm -f mptester$(TEXE) rbu$(TEXE) srcck1$(TEXE) + rm -f fuzzershell$(TEXE) fuzzcheck$(TEXE) sqldiff$(TEXE) dbhash$(TEXE) + rm -f threadtest5$(TEXE) + rm -f src-verify has_tclsh* + +distclean: clean diff --git a/manifest b/manifest index a27e71d2a3..8b0d758af3 100644 --- a/manifest +++ b/manifest @@ -1,9 +1,9 @@ -C In\sthe\stestrunner.tcl\sstatus\sreport,\stry\sto\sprovide\sa\srough\sestimate\sof\nthe\stime\sremaining. -D 2024-08-30T01:11:19.367 +C Improvements\sto\s"make\sclean"\son\sunix. +D 2024-08-30T12:10:28.233 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 -F Makefile.in f246a6d8a8a77c35d50d5494ee9bcd8fb6f90118eff46169427f9f404057b56e +F Makefile.in 294ce2b8b2736787ba138e22bee38f189b4543d8fdf0e9ac20227663a9b761ba F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6 F Makefile.msc 47dfd26a401c5a33e237ecfe126c996977f34ac44e44a1a1ebf2204abb89d483 F README.md 5b678e264236788390d11991f2c0052bd73f19790173883fc56d638bcb849154 @@ -685,7 +685,7 @@ F ext/wasm/wasmfs.make 8a4955882aaa0783b3f60a9484a1f0f3d8b6f775c0fcd17c082f31966 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0 -F main.mk 715c833f9733fd10b15d8773c59dd7535067d9d0f1a20073182069538f523bc7 +F main.mk 40f8cd07372d7eed2fe33403a42b82c3f5d2d46b59480444384326db70bb33f1 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421 @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 9de47c3611ca05e03a661807a06c6c5c0b5c6548ea7a8d73cb63832d2dff9d0e -R c902a48c3428870b5b8747f7667d950b +P 90bc616d20e8c247691c45de2a28d41c1632b21152dc34253eefc179a90ab31f +R b70feb67084d54fbfa3c1f525e26b680 U drh -Z 58e0a7f0d6d1a8c7bc1acf976af98f74 +Z 53c8e68720f3dc2301be75bf174b1201 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index c360e52b07..75f611deb5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -90bc616d20e8c247691c45de2a28d41c1632b21152dc34253eefc179a90ab31f +a1d775f07528192b09566ff1546b067ffbee0db5812e424e6b7f3cc33a67dc83 From c589d5ab06e5f98486bec6e2e402a46c456bc0ea Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 30 Aug 2024 16:24:49 +0000 Subject: [PATCH 032/137] Rework the tool/omittest.tcl script so that it works with the configure-generated Makefile, and requires no arguments. Update the configure-generated Makefile with a new "tidy" target which is like "clean" except that is preserves test logs. Use "make tidy" to force everything to be recompiled from scratch without destroying logs. FossilOrigin-Name: 99491df19d68df1f0515bd5ec9240ef3dd6e0fa38a6c837a38a16a873f8e2cbb --- Makefile.in | 27 ++- manifest | 14 +- manifest.uuid | 2 +- tool/omittest.tcl | 537 ++++++++++++++++------------------------------ 4 files changed, 213 insertions(+), 367 deletions(-) diff --git a/Makefile.in b/Makefile.in index 1be9ea8519..188f94d701 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1606,15 +1606,21 @@ tclextension-uninstall: tclextension-list: $(TCLSH_CMD) $(TOP)/tool/buildtclext.tcl --info -clean: - rm -f *.lo *.la *.o *.c *.h *.da *.bb *.bbg gmon.* *.rws sqlite3$(TEXE) - rm -rf .libs .deps tsrc libtool .target_source testrunner_* + +# Remove build products sufficient so that subsequent makes will recompile +# everything from scratch. Do not remove: +# +# * test results and test logs +# * output from ./configure +# +tidy: + rm -f *.lo *.la *.o *.c *.da *.bb *.bbg gmon.* *.rws sqlite3$(TEXE) + rm -f fts5.h keywordhash.h opcodes.h sqlite3.h sqlite3ext.h sqlite3session.h + rm -rf .libs .deps tsrc .target_source rm -f lemon$(BEXE) sqlite*.tar.gz rm -f mkkeywordhash$(BEXE) mksourceid$(BEXE) rm -f parse.* fts5parse.* - rm -rf tsrc .target_source testrunner_bld_* testdir* - rm -f tclsqlite3$(TEXE) - rm -f $(TESTPROGS) testrunner.* + rm -f tclsqlite3$(TEXE) $(TESTPROGS) rm -f LogEst$(TEXE) fts3view$(TEXE) rollback-test$(TEXE) showdb$(TEXE) rm -f showjournal$(TEXE) showstat4$(TEXE) showwal$(TEXE) speedtest1$(TEXE) rm -f wordcount$(TEXE) changeset$(TEXE) version-info$(TEXE) @@ -1625,8 +1631,15 @@ clean: rm -f threadtest5$(TEXE) rm -f src-verify has_tclsh* +# Removes build products and test logs. Retains ./configure outputs. +# +clean: tidy + rm -rf omittest* testrunner* testdir* + +# Clean up everything. No exceptions. +# distclean: clean - rm -f config.log config.status Makefile + rm -f sqlite_cfg.h config.log config.status Makefile $(LIBTOOL) # # Windows section diff --git a/manifest b/manifest index 8b0d758af3..f69905679b 100644 --- a/manifest +++ b/manifest @@ -1,9 +1,9 @@ -C Improvements\sto\s"make\sclean"\son\sunix. -D 2024-08-30T12:10:28.233 +C Rework\sthe\stool/omittest.tcl\sscript\sso\sthat\sit\sworks\swith\sthe\nconfigure-generated\sMakefile,\sand\srequires\sno\sarguments.\nUpdate\sthe\sconfigure-generated\sMakefile\swith\sa\snew\s"tidy"\starget\swhich\nis\slike\s"clean"\sexcept\sthat\sis\spreserves\stest\slogs.\s\sUse\s"make\stidy"\sto\nforce\severything\sto\sbe\srecompiled\sfrom\sscratch\swithout\sdestroying\slogs. +D 2024-08-30T16:24:49.358 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 -F Makefile.in 294ce2b8b2736787ba138e22bee38f189b4543d8fdf0e9ac20227663a9b761ba +F Makefile.in 77627cbeeffe23606da5663458c0f8bbb86d28e2aca270a5d9b0db8e39a54bb2 F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6 F Makefile.msc 47dfd26a401c5a33e237ecfe126c996977f34ac44e44a1a1ebf2204abb89d483 F README.md 5b678e264236788390d11991f2c0052bd73f19790173883fc56d638bcb849154 @@ -2149,7 +2149,7 @@ F tool/mktoolzip.tcl c7a9b685f5131d755e7d941cec50cee7f34178b9e34c9a89811eeb08617 F tool/mkvsix.tcl 67b40996a50f985a573278eea32fc5a5eb6110bdf14d33f1d8086e48c69e540a F tool/offsets.c 8ed2b344d33f06e71366a9b93ccedaa38c096cc1dbd4c3c26ad08c6115285845 F tool/omittest-msvc.tcl d6b8f501ac1d7798c4126065030f89812379012cad98a1735d6d7221492abc08 -F tool/omittest.tcl e99c9fecc3f7a8ca2fa75d8ec8bdbb5acce33dc69f0c280aae53064693387f65 +F tool/omittest.tcl b8e9aae836d1659bf399f87d79f25c1b95b5db6f95338e94a0ff6ef73be6196e F tool/opcodesum.tcl 740ed206ba8c5040018988129abbf3089a0ccf4a F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b F tool/replace.tcl 511c61acfe563dfb58675efb4628bb158a13d48ff8322123ac447e9d25a82d9a @@ -2211,8 +2211,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 90bc616d20e8c247691c45de2a28d41c1632b21152dc34253eefc179a90ab31f -R b70feb67084d54fbfa3c1f525e26b680 +P a1d775f07528192b09566ff1546b067ffbee0db5812e424e6b7f3cc33a67dc83 +R 2b82ff2fb12af001c7426b76114f4b10 U drh -Z 53c8e68720f3dc2301be75bf174b1201 +Z 20d7de6f9c6ec3afe4ba157bc5616eaa # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 75f611deb5..a433ecb2c2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a1d775f07528192b09566ff1546b067ffbee0db5812e424e6b7f3cc33a67dc83 +99491df19d68df1f0515bd5ec9240ef3dd6e0fa38a6c837a38a16a873f8e2cbb diff --git a/tool/omittest.tcl b/tool/omittest.tcl index 8862c685f8..6dc62d0884 100644 --- a/tool/omittest.tcl +++ b/tool/omittest.tcl @@ -1,370 +1,203 @@ -# Documentation for this script. This may be output to stderr +#!/usr/bin/tclsh +# +# Documentation for this script. This may be output to # if the script is invoked incorrectly. +# set ::USAGE_MESSAGE { This Tcl script is used to test the various compile time options -available for omitting code (the SQLITE_OMIT_xxx options). It -should be invoked as follows: +available for building SQLite, especially options taht omit +features (the SQLITE_OMIT_xxx options). It should be invoked as follows: -