From 4a5acf8e5ce52face22d05831453e7d8fb78574e Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 18 Jun 2013 20:06:23 +0000 Subject: [PATCH] Adjustments to testcase() macros for improved testability. FossilOrigin-Name: 4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/expr.c | 4 ++-- src/where.c | 18 ++++++++---------- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/manifest b/manifest index 56a8a23589..3817eca13b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\ssome\sredundant\sand\sunreachable\scode. -D 2013-06-18T01:52:41.578 +C Adjustments\sto\stestcase()\smacros\sfor\simproved\stestability. +D 2013-06-18T20:06:23.048 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -171,7 +171,7 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/ctime.c 4262c227bc91cecc61ae37ed3a40f08069cfa267 F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4 F src/delete.c aeabdabeeeaa0584127f291baa9617153d334778 -F src/expr.c 9cc9e4c85197b567e5f97f3296700faf7747810f +F src/expr.c 3286e703adde34865d3a2cb62f9f4f31e3d2f2ed F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c e16942bd5c8a868ac53287886464a5ed0e72b179 F src/func.c 5c50c1ea31fd864b0fe921fe1a8d4c55acd609ef @@ -289,7 +289,7 @@ F src/vtab.c b05e5f1f4902461ba9f5fc49bb7eb7c3a0741a83 F src/wal.c 436bfceb141b9423c45119e68e444358ee0ed35d F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4 F src/walker.c 4fa43583d0a84b48f93b1e88f11adf2065be4e73 -F src/where.c 86cc9705ef7de9ef712619485d3bff3910d58b12 +F src/where.c 85b7b80a350951444c8e3e45bf2f7e6cc6d34683 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6 @@ -1096,7 +1096,7 @@ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac -P b61402af690ac08b68974f3c807096b0cffd9bc0 -R ddde8ef3fd559d48220a86d476077d7b +P 4c6d58d75d51e1ce829aec214617c3a89e784a2d +R f77d52adfdd29eb20a93333ac0fbc3fa U drh -Z a276f283a2c7c1a652996ed6754c6f02 +Z e0df54c8e9d824f28c0e34a1e5fe6134 diff --git a/manifest.uuid b/manifest.uuid index f73027ac71..cf33cbf052 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4c6d58d75d51e1ce829aec214617c3a89e784a2d \ No newline at end of file +4fbb0c4d26c54aaefbe5397cde2a0b9d2ce3885f \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 4e834ffe8e..d066e9b8bc 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1603,8 +1603,8 @@ int sqlite3FindInIndex(Parse *pParse, Expr *pX, int *prNotFound){ *prNotFound = rMayHaveNull = ++pParse->nMem; sqlite3VdbeAddOp2(v, OP_Null, 0, *prNotFound); }else{ - testcase( pParse->nQueryLoop>1 ); - pParse->nQueryLoop = 1; + testcase( pParse->nQueryLoop>0 ); + pParse->nQueryLoop = 0; if( pX->pLeft->iColumn<0 && !ExprHasAnyProperty(pX, EP_xIsSelect) ){ eType = IN_INDEX_ROWID; } diff --git a/src/where.c b/src/where.c index 800194c6ef..dc4a515b90 100644 --- a/src/where.c +++ b/src/where.c @@ -4097,7 +4097,7 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ testcase( rCost==rTemplate-1 ); goto whereLoopInsert_noop; } - if( rCost == rTemplate && p->prereq <= pTemplate->prereq ){ + if( rCost==rTemplate && (p->prereq & pTemplate->prereq)==p->prereq ){ goto whereLoopInsert_noop; } } @@ -4120,9 +4120,9 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ && p->rSetup<=pTemplate->rSetup && p->rRun<=pTemplate->rRun ){ - testcase( p->rSetup==pTemplate->rSetup ); + /* This branch taken when p is equal or better than pTemplate in + ** all of (1) dependences (2) setup-cost, and (3) run-cost. */ testcase( p->rRun==pTemplate->rRun ); - /* p is equal or better than pTemplate */ if( p->nLTermnLTerm && (p->wsFlags & WHERE_INDEXED)!=0 && (pTemplate->wsFlags & WHERE_INDEXED)!=0 @@ -4147,8 +4147,6 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ goto whereLoopInsert_noop; } } - testcase( (p->prereq & pTemplate->prereq)==p->prereq - && p->rSetup==pTemplate->rSetup+1 ); testcase( (p->prereq & pTemplate->prereq)==p->prereq && p->rSetup<=pTemplate->rSetup && p->rRun==pTemplate->rRun+1 ); @@ -4156,16 +4154,16 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){ && p->rSetup>=pTemplate->rSetup && p->rRun>=pTemplate->rRun ){ - /* Overwrite an existing WhereLoop with a better one */ + /* Overwrite an existing WhereLoop with a better one: one that is + ** better at one of (1) dependences, (2) setup-cost, or (3) run-cost + ** and is no worse in any of those categories. */ testcase( p->rSetup==pTemplate->rSetup ); testcase( p->rRun==pTemplate->rRun ); pNext = p->pNextLoop; break; } testcase( (p->prereq & pTemplate->prereq)==pTemplate->prereq - && p->rSetup==pTemplate->rSetup-1 ); - testcase( (p->prereq & pTemplate->prereq)==pTemplate->prereq - && p->rSetup>=pTemplate->rSetup-1 + && p->rSetup>=pTemplate->rSetup && p->rRun==pTemplate->rRun-1 ); } @@ -4303,7 +4301,7 @@ static int whereLoopAddBtreeIndex( || (pProbe->onError!=OE_None && nInMul==0 && pNew->u.btree.nEq==pProbe->nColumn-1) ){ - testcase( pNew->wsFlags & WHERE_COLUMN_IN ); + assert( (pNew->wsFlags & WHERE_COLUMN_IN)==0 || iCol<0 ); pNew->wsFlags |= WHERE_ONEROW; } pNew->u.btree.nEq++;