From: drh Date: Tue, 26 May 2015 00:28:08 +0000 (+0000) Subject: Add the --result-trace option to fuzzcheck, and other interface enhancements. X-Git-Tag: version-3.8.11~218 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e5c5f2cf77f713786e7cb35ad49da12bc09d5f39;p=thirdparty%2Fsqlite.git Add the --result-trace option to fuzzcheck, and other interface enhancements. FossilOrigin-Name: c415bb7bbfd531b138462589cdd58fa0204804e8 --- diff --git a/manifest b/manifest index 169d56db37..553917760d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\san\simportant\sbug\sin\sthe\sxRead\smethod\sof\sthe\sin-memory\sVFS\sfor\sfuzzcheck. -D 2015-05-25T23:14:37.419 +C Add\sthe\s--result-trace\soption\sto\sfuzzcheck,\sand\sother\sinterface\senhancements. +D 2015-05-26T00:28:08.697 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 411b8dc7191769de8b1ddd5c4d83bcf2e37ed5e4 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -651,7 +651,7 @@ F test/fuzz2.test 76dc35b32b6d6f965259508508abce75a6c4d7e1 F test/fuzz3.test efd384b896c647b61a2c1848ba70d42aad60a7b3 F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b F test/fuzz_malloc.test 328f70aaca63adf29b4c6f06505ed0cf57ca7c26 -F test/fuzzcheck.c d545dfbca2e9a75de7ae92ed3139900a6fadf846 +F test/fuzzcheck.c 7c7946e0ab6021361f12f5776f6e84bb0e122ca3 F test/fuzzdata1.txt 9fceb50868e0b798160e83742bd7e44e457176a0 F test/fuzzdata2.txt ba9b4467d7ec46cc85d32c0d031540cd727ae6ad F test/fuzzer1.test d4c52aaf3ef923da293a2653cfab33d02f718a36 @@ -1279,7 +1279,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 341cb6abe74e1e9d03c82ffdeba86be6a2d00397 -R f5e89509deaf82258e177c7db9b5da20 +P 58cd40e89f3060c63abb9a3fca385a1e72ce7bb4 +R 32cf38aec65deccc8cc067da345baf0c U drh -Z b0b4ed3682ecee9d5832e0b1ae33eee2 +Z 6c1ca5d7f4d278cf3dabf72acc1e60c9 diff --git a/manifest.uuid b/manifest.uuid index 85afaf7f76..4fa20f3143 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -58cd40e89f3060c63abb9a3fca385a1e72ce7bb4 \ No newline at end of file +c415bb7bbfd531b138462589cdd58fa0204804e8 \ No newline at end of file diff --git a/test/fuzzcheck.c b/test/fuzzcheck.c index 32ce93a469..9688e5cc75 100644 --- a/test/fuzzcheck.c +++ b/test/fuzzcheck.c @@ -66,6 +66,7 @@ typedef struct Blob Blob; struct Blob { Blob *pNext; /* Next in a list */ int id; /* Id of this Blob */ + int seq; /* Sequence number */ int sz; /* Size of this Blob in bytes */ unsigned char a[1]; /* Blob content. Extra space allocated as needed. */ }; @@ -257,12 +258,12 @@ static void blobListLoadFromDb( Blob *pNew = safe_realloc(0, sizeof(*pNew)+sz ); pNew->id = sqlite3_column_int(pStmt, 0); pNew->sz = sz; + pNew->seq = n++; pNew->pNext = 0; memcpy(pNew->a, sqlite3_column_blob(pStmt,1), sz); pNew->a[sz] = 0; p->pNext = pNew; p = pNew; - n++; } sqlite3_finalize(pStmt); *pN = n; @@ -506,11 +507,17 @@ static void inmemVfsRegister(void){ sqlite3_vfs_register(&inmemVfs, 0); }; +/* +** Allowed values for the runFlags parameter to runSql() +*/ +#define SQL_TRACE 0x0001 /* Print each SQL statement as it is prepared */ +#define SQL_OUTPUT 0x0002 /* Show the SQL output */ + /* ** Run multiple commands of SQL. Similar to sqlite3_exec(), but does not ** stop if an error is encountered. */ -static void runSql(sqlite3 *db, const char *zSql, int traceFlag){ +static void runSql(sqlite3 *db, const char *zSql, unsigned runFlags){ const char *zMore; sqlite3_stmt *pStmt; @@ -519,7 +526,7 @@ static void runSql(sqlite3 *db, const char *zSql, int traceFlag){ pStmt = 0; sqlite3_prepare_v2(db, zSql, -1, &pStmt, &zMore); if( zMore==zSql ) break; - if( traceFlag ){ + if( runFlags & SQL_TRACE ){ const char *z = zSql; int n; while( z0 ){ + printf("--------------------------------------------\n"); + } + for(i=0; i=argc-1 ) fatalError("missing arguments on %s", argv[i]); onlySqlid = atoi(argv[++i]); @@ -617,6 +667,7 @@ int main(int argc, char **argv){ if( strcmp(z,"verbose")==0 || strcmp(z,"v")==0 ){ quietFlag = 0; verboseFlag = 1; + runFlags |= SQL_TRACE; }else { fatalError("unknown option: %s", argv[i]); @@ -676,6 +727,7 @@ int main(int argc, char **argv){ g.pFirstDb = safe_realloc(0, sizeof(Blob)); memset(g.pFirstDb, 0, sizeof(Blob)); g.pFirstDb->id = 1; + g.pFirstDb->seq = 0; g.nDb = 1; } @@ -712,7 +764,7 @@ int main(int argc, char **argv){ fflush(stdout); }else if( !quietFlag ){ static int prevAmt = -1; - int idx = (pSql->id-1)*g.nDb + pDb->id - 1; + int idx = pSql->seq*g.nDb + pDb->id - 1; int amt = idx*10/(g.nDb*g.nSql); if( amt!=prevAmt ){ printf(" %d%%", amt*10); @@ -728,7 +780,7 @@ int main(int argc, char **argv){ } rc = sqlite3_open_v2("main.db", &db, openFlags, zVfs); if( rc ) fatalError("cannot open inmem database"); - runSql(db, (char*)pSql->a, verboseFlag); + runSql(db, (char*)pSql->a, runFlags); sqlite3_close(db); if( sqlite3_memory_used()>0 ) fatalError("memory leak"); reformatVfs(); @@ -738,7 +790,7 @@ int main(int argc, char **argv){ if( !quietFlag ){ sqlite3_int64 iElapse = timeOfDay() - iBegin; - if( !verboseFlag ) printf("\n"); + if( !verboseFlag ) printf(" 100%%\n"); printf("fuzzcheck: 0 errors out of %d tests in %d.%03d seconds\nSQLite %s %s\n", g.nDb*g.nSql, (int)(iElapse/1000), (int)(iElapse%1000), sqlite3_libversion(), sqlite3_sourceid());