- C Minor\sdoc\simprovements\sin\sdemo-123.js.
- D 2022-09-19T10:13:01.255
-C Fix\san\suninitialized\svariable\sin\sthe\sdecoder\skv-vfs.
-D 2022-09-17T18:31:31.300
++C speedtest1:\sadd\s--vfs\sNAME\sflag\sand\seliminate\scode\sduplication\sin\sargc\ssize\sverification\sfor\sall\sflags\swhich\stake\sa\svalue.
++D 2022-09-19T11:47:38.781
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715
F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa
F test/speed4p.test 377a0c48e5a92e0b11c1c5ebb1bc9d83a7312c922bc0cb05970ef5d6a96d1f0c
- F test/speedtest1.c 4001e0fcdbe5f136829319b547771d4a0d9b069cdd2d5d878222bed5d61e0b56
-F test/speedtest1.c 8bf7ebac9ac316feed6656951249db531dc380c73fb3e3b22e224ffda96beff6
++F test/speedtest1.c 4be5c905c7b3ee72d8e54dea3a846b8c3e7f9674cf3d080968e0e6651ba3c302
F test/spellfix.test 951a6405d49d1a23d6b78027d3877b4a33eeb8221dcab5704b499755bb4f552e
F test/spellfix2.test dfc8f519a3fc204cb2dfa8b4f29821ae90f6f8c3
F test/spellfix3.test 0f9efaaa502a0e0a09848028518a6fb096c8ad33
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 7d5f6adc3b964413fc96ad8d2735312c3e58348024cabdd2099682cbf696eaf7
- R 2fec471b1001d01ad7dc38d9c67df837
-P 852812d1e2ec3c53ad7c6c64662b37d861fefcf1baeee3d58eba88bcb3f6d8df
-R 9c6620d4dc4ed0d3ddc9cc9e79cbabf7
-U drh
-Z 7ef728d647d25bb1b8240f0a67ed5ff5
++P 9370ce94780e974da03d5c74cf9a5983eed333e7b3bc54e605c5f30b3fa99287 354726aa6c399053785f29104de15091629ce4bc275b9e2205cb3656a9e81cd7
++R 00556834ec19d453fd785f2bebf86235
+U stephan
- Z d026bdd80c48b40067e840d055db82e8
++Z 19b45de03e5674211a91148844c56c0b
# Remove this line to create a well-formed Fossil manifest.
" --threads N Use up to N threads for sorting\n"
" --utf16be Set text encoding to UTF-16BE\n"
" --utf16le Set text encoding to UTF-16LE\n"
-- " --verify Run additional verification steps.\n"
++ " --verify Run additional verification steps\n"
++ " --vfs NAME Use the given (preinstalled) VFS\n"
" --without-rowid Use WITHOUT ROWID where appropriate\n"
;
int nThread = 0; /* --threads value */
int mmapSize = 0; /* How big of a memory map to use */
int memDb = 0; /* --memdb. Use an in-memory database */
+ int openFlags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE
+ ; /* SQLITE_OPEN_xxx flags. */
char *zTSet = "main"; /* Which --testset torun */
++ const char * zVfs = 0; /* --vfs NAME */
int doTrace = 0; /* True for --trace */
const char *zEncoding = 0; /* --utf16be or --utf16le */
const char *zDbName = 0; /* Name of the test database */
#ifdef SQLITE_CKSUMVFS_STATIC
sqlite3_register_cksumvfs(0);
#endif
--
++ /*
++ ** Confirms that argc has at least N arguments following argv[i]. */
++#define ARGC_VALUE_CHECK(N) \
++ if( i>=argc-(N) ) fatal_error("missing argument on %s\n", argv[i])
/* Display the version of SQLite being tested */
printf("-- Speedtest1 for SQLite %s %.48s\n",
sqlite3_libversion(), sqlite3_sourceid());
do{ z++; }while( z[0]=='-' );
if( strcmp(z,"autovacuum")==0 ){
doAutovac = 1;
+ }else if( strcmp(z,"big-transactions")==0 ){
+ g.doBigTransactions = 1;
}else if( strcmp(z,"cachesize")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
-- i++;
-- cacheSize = integerValue(argv[i]);
++ ARGC_VALUE_CHECK(1);
++ cacheSize = integerValue(argv[++i]);
}else if( strcmp(z,"exclusive")==0 ){
doExclusive = 1;
}else if( strcmp(z,"checkpoint")==0 ){
g.bSqlOnly = 1;
g.bExplain = 1;
}else if( strcmp(z,"heap")==0 ){
-- if( i>=argc-2 ) fatal_error("missing arguments on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(2);
nHeap = integerValue(argv[i+1]);
mnHeap = integerValue(argv[i+2]);
i += 2;
}else if( strcmp(z,"incrvacuum")==0 ){
doIncrvac = 1;
}else if( strcmp(z,"journal")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
zJMode = argv[++i];
}else if( strcmp(z,"key")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
zKey = argv[++i];
}else if( strcmp(z,"lookaside")==0 ){
-- if( i>=argc-2 ) fatal_error("missing arguments on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(2);
nLook = integerValue(argv[i+1]);
szLook = integerValue(argv[i+2]);
i += 2;
#endif
#if SQLITE_VERSION_NUMBER>=3007017
}else if( strcmp(z, "mmap")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
mmapSize = integerValue(argv[++i]);
#endif
+ }else if( strcmp(z,"nomutex")==0 ){
+ openFlags |= SQLITE_OPEN_NOMUTEX;
}else if( strcmp(z,"nosync")==0 ){
noSync = 1;
}else if( strcmp(z,"notnull")==0 ){
fatal_error("The --output option is not supported with"
" -DSPEEDTEST_OMIT_HASH\n");
#else
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
i++;
if( strcmp(argv[i],"-")==0 ){
g.hashFile = stdout;
}
#endif
}else if( strcmp(z,"pagesize")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
pageSize = integerValue(argv[++i]);
}else if( strcmp(z,"pcache")==0 ){
-- if( i>=argc-2 ) fatal_error("missing arguments on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(2);
nPCache = integerValue(argv[i+1]);
szPCache = integerValue(argv[i+2]);
doPCache = 1;
}else if( strcmp(z,"primarykey")==0 ){
g.zPK = "PRIMARY KEY";
}else if( strcmp(z,"repeat")==0 ){
-- if( i>=argc-1 ) fatal_error("missing arguments on %s\n", argv[i]);
-- g.nRepeat = integerValue(argv[i+1]);
-- i += 1;
++ ARGC_VALUE_CHECK(1);
++ g.nRepeat = integerValue(argv[++i]);
}else if( strcmp(z,"reprepare")==0 ){
g.bReprepare = 1;
#if SQLITE_VERSION_NUMBER>=3006000
sqlite3_config(SQLITE_CONFIG_SINGLETHREAD);
#endif
}else if( strcmp(z,"script")==0 ){
-- if( i>=argc-1 ) fatal_error("missing arguments on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
if( g.pScript ) fclose(g.pScript);
g.pScript = fopen(argv[++i], "wb");
if( g.pScript==0 ){
}else if( strcmp(z,"shrink-memory")==0 ){
g.bMemShrink = 1;
}else if( strcmp(z,"size")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
g.szTest = integerValue(argv[++i]);
}else if( strcmp(z,"stats")==0 ){
showStats = 1;
}else if( strcmp(z,"temp")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
i++;
if( argv[i][0]<'0' || argv[i][0]>'9' || argv[i][1]!=0 ){
fatal_error("argument to --temp should be integer between 0 and 9");
}
g.eTemp = argv[i][0] - '0';
}else if( strcmp(z,"testset")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
zTSet = argv[++i];
}else if( strcmp(z,"trace")==0 ){
doTrace = 1;
}else if( strcmp(z,"threads")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
nThread = integerValue(argv[++i]);
}else if( strcmp(z,"utf16le")==0 ){
zEncoding = "utf16le";
#ifndef SPEEDTEST_OMIT_HASH
HashInit();
#endif
++ }else if( strcmp(z,"vfs")==0 ){
++ ARGC_VALUE_CHECK(1);
++ zVfs = argv[++i];
}else if( strcmp(z,"reserve")==0 ){
-- if( i>=argc-1 ) fatal_error("missing argument on %s\n", argv[i]);
++ ARGC_VALUE_CHECK(1);
g.nReserve = atoi(argv[++i]);
}else if( strcmp(z,"without-rowid")==0 ){
if( strstr(g.zWR,"WITHOUT")!=0 ){
argv[i], argv[0]);
}
}
++#undef ARGC_VALUE_CHECK
if( zDbName!=0 ) unlink(zDbName);
#if SQLITE_VERSION_NUMBER>=3006001
if( nHeap>0 ){
sqlite3_initialize();
/* Open the database and the input file */
- if( sqlite3_open(memDb ? ":memory:" : zDbName, &g.db) ){
+ if( sqlite3_open_v2(memDb ? ":memory:" : zDbName, &g.db,
- openFlags, 0) ){
++ openFlags, zVfs) ){
fatal_error("Cannot open database file: %s\n", zDbName);
}
#if SQLITE_VERSION_NUMBER>=3006001