From: stephan Date: Mon, 19 Sep 2022 11:47:38 +0000 (+0000) Subject: speedtest1: add --vfs NAME flag and eliminate code duplication in argc size verificat... X-Git-Tag: version-3.40.0~169^2~93 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5ef7f047754e6ae8b812c6cbe50b6cfe764d13ca;p=thirdparty%2Fsqlite.git speedtest1: add --vfs NAME flag and eliminate code duplication in argc size verification for all flags which take a value. FossilOrigin-Name: 281d09867134e0a057cfadd9bfcbf0e21b8ac9737a278c41973d33a3101be7bc --- 5ef7f047754e6ae8b812c6cbe50b6cfe764d13ca diff --cc manifest index bbd2f4b6f4,d9677a2ca9..5e90405e4e --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - 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 @@@ -1508,7 -1484,7 +1508,7 @@@ F test/speed3.test 694affeb910052600743 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 @@@ -2028,8 -2004,8 +2028,8 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9 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. diff --cc manifest.uuid index e43adac6b2,1336748789..582e7ce8e3 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 9370ce94780e974da03d5c74cf9a5983eed333e7b3bc54e605c5f30b3fa99287 -354726aa6c399053785f29104de15091629ce4bc275b9e2205cb3656a9e81cd7 ++281d09867134e0a057cfadd9bfcbf0e21b8ac9737a278c41973d33a3101be7bc diff --cc test/speedtest1.c index ac0ab361a7,b115a57e2b..d686c49663 --- a/test/speedtest1.c +++ b/test/speedtest1.c @@@ -45,7 -43,7 +45,8 @@@ static const char zHelp[] " --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" ; @@@ -2214,9 -2180,7 +2215,10 @@@ int main(int argc, char **argv) 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 */ @@@ -2237,7 -2195,7 +2239,10 @@@ #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()); @@@ -2254,12 -2212,10 +2259,11 @@@ 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 ){ @@@ -2268,20 -2224,20 +2272,20 @@@ 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; @@@ -2295,11 -2251,9 +2299,11 @@@ #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 ){ @@@ -2309,7 -2263,7 +2313,7 @@@ 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; @@@ -2321,10 -2275,10 +2325,10 @@@ } #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; @@@ -2332,9 -2286,9 +2336,8 @@@ }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 @@@ -2344,7 -2298,7 +2347,7 @@@ 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 ){ @@@ -2355,24 -2309,24 +2358,24 @@@ }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"; @@@ -2383,8 -2337,8 +2386,11 @@@ #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 ){ @@@ -2417,6 -2371,6 +2423,7 @@@ argv[i], argv[0]); } } ++#undef ARGC_VALUE_CHECK if( zDbName!=0 ) unlink(zDbName); #if SQLITE_VERSION_NUMBER>=3006001 if( nHeap>0 ){ @@@ -2441,8 -2395,7 +2448,8 @@@ 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