From 6f88359df642aea1224782bbe409c30bca902550 Mon Sep 17 00:00:00 2001 From: drh Date: Sat, 30 Mar 2019 20:37:04 +0000 Subject: [PATCH] Fix issues with the previous check-in and add more VDBE branch coverage testing macros. FossilOrigin-Name: b5f72f10f2dfdbee9fe98c63ffb933e841203790746a920b99df14ca5c14127c --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/wherecode.c | 3 ++- src/window.c | 26 ++++++++++++++++---------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/manifest b/manifest index bdbe7e2b0b..1fda18bb58 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Enhanced\sVdbeCoverage()\smacros\sin\sthe\snew\swindows\sfunction\scode. -D 2019-03-30T20:10:11.121 +C Fix\sissues\swith\sthe\sprevious\scheck-in\sand\sadd\smore\sVDBE\sbranch\scoverage\ntesting\smacros. +D 2019-03-30T20:37:04.559 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -604,9 +604,9 @@ F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a F src/walker.c 7607f1a68130c028255d8d56094ea602fc402c79e1e35a46e6282849d90d5fe4 F src/where.c ff2955dc2743c1af05ba5a8232ab72724d9a63b76dbee256368f40fd3ef82db5 F src/whereInt.h 5f14db426ca46a83eabab1ae9aa6d4b8f27504ad35b64c290916289b1ddb2e88 -F src/wherecode.c 6fa4056c5ce019e4a8af33795906340176813cb3c1236f4b7b08df76a1b6287b +F src/wherecode.c 9572aab9eff42859a5f3e9b212f704521a84bf77e444217f0339d8b811e6333f F src/whereexpr.c 90859652920f153d2c03f075488744be2926625ebd36911bcbcb17d0d29c891c -F src/window.c 30cbf5f442ba11a1c29a05cdb7fc5db26901e1075e0650527260e26d88412901 +F src/window.c a63ef839f4987d789cb595a38cf5063a38ab47bb1d0357af65121363fae4734d F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d @@ -1814,7 +1814,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P bb643bac535ac7d5fb4c13edb8782cd13540bbc7d2b2deb689f4ca8d1914f422 -R 9e4c80ec59478a269589d64eb7ba0615 +P f24066f8dd847dfb656f26c4a8142e7fb6a412ffe325aea6254cb122cfbb3e1c +R 856eb43817b0dd995ab38a2e36f5cc99 U drh -Z 48b50a4c01cf5b44d27c1751ac5b4b26 +Z d08dc7a54a9926c6d8ad15b2f0c02189 diff --git a/manifest.uuid b/manifest.uuid index aa85b14749..a77b635fd5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f24066f8dd847dfb656f26c4a8142e7fb6a412ffe325aea6254cb122cfbb3e1c \ No newline at end of file +b5f72f10f2dfdbee9fe98c63ffb933e841203790746a920b99df14ca5c14127c \ No newline at end of file diff --git a/src/wherecode.c b/src/wherecode.c index d509c60a44..51fc7a52e4 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -2197,8 +2197,9 @@ Bitmask sqlite3WhereCodeOneLoopStart( u32 x = pLevel->iLikeRepCntr; if( x>0 ){ skipLikeAddr = sqlite3VdbeAddOp1(v, (x&1)?OP_IfNot:OP_If,(int)(x>>1)); + VdbeCoverageIf(v, (x&1)==1); + VdbeCoverageIf(v, (x&1)==0); } - VdbeCoverage(v); #endif } #ifdef WHERETRACE_ENABLED /* 0xffff */ diff --git a/src/window.c b/src/window.c index 5613103cad..2494eb678c 100644 --- a/src/window.c +++ b/src/window.c @@ -1310,14 +1310,18 @@ static void windowCheckValue(Parse *pParse, int reg, int eCond){ sqlite3VdbeAddOp4(v, OP_String8, 0, regString, 0, "", P4_STATIC); sqlite3VdbeAddOp3(v, OP_Ge, regString, sqlite3VdbeCurrentAddr(v)+2, reg); sqlite3VdbeChangeP5(v, SQLITE_AFF_NUMERIC); + VdbeCoverage(v); + assert( eCond==3 || eCond==4 ); + VdbeCoverageIf(v, eCond==3); + VdbeCoverageIf(v, eCond==4); }else{ sqlite3VdbeAddOp2(v, OP_MustBeInt, reg, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverage(v); + assert( eCond==0 || eCond==1 || eCond==2 ); + VdbeCoverageIf(v, eCond==0); + VdbeCoverageIf(v, eCond==1); + VdbeCoverageIf(v, eCond==2); } - VdbeCoverageIf(v, eCond==0); - VdbeCoverageIf(v, eCond==1); - VdbeCoverageIf(v, eCond==2); - VdbeCoverageIf(v, eCond==3); - VdbeCoverageIf(v, eCond==4); sqlite3VdbeAddOp3(v, aOp[eCond], regZero, sqlite3VdbeCurrentAddr(v)+2, reg); VdbeCoverageNeverNullIf(v, eCond==0); VdbeCoverageNeverNullIf(v, eCond==1); @@ -1833,12 +1837,13 @@ static void windowCodeRangeTest( VdbeCoverage(v); sqlite3VdbeAddOp3(v, arith, regVal, reg1, reg1); sqlite3VdbeJumpHere(v, addrGe); - sqlite3VdbeAddOp3(v, op, reg2, lbl, reg1); + sqlite3VdbeAddOp3(v, op, reg2, lbl, reg1); VdbeCoverage(v); sqlite3VdbeChangeP5(v, SQLITE_NULLEQ); - assert( op==OP_Ge || op==OP_Gt || op==OP_Le ); - VdbeCoverageIf(v, op==OP_Ge); - VdbeCoverageIf(v, op==OP_Gt); - VdbeCoverageIf(v, op==OP_Le); + assert( op==OP_Ge || op==OP_Gt || op==OP_Lt || op==OP_Le ); + testcase(op==OP_Ge); VdbeCoverageIf(v, op==OP_Ge); + testcase(op==OP_Lt); VdbeCoverageIf(v, op==OP_Lt); + testcase(op==OP_Le); VdbeCoverageIf(v, op==OP_Le); + testcase(op==OP_Gt); VdbeCoverageIf(v, op==OP_Gt); sqlite3ReleaseTempReg(pParse, reg1); sqlite3ReleaseTempReg(pParse, reg2); @@ -2536,6 +2541,7 @@ void sqlite3WindowCodeStep( if( pMWin->eStart==pMWin->eEnd && regStart ){ int op = ((pMWin->eStart==TK_FOLLOWING) ? OP_Ge : OP_Le); int addrGe = sqlite3VdbeAddOp3(v, op, regStart, 0, regEnd); + VdbeCoverage(v); VdbeCoverageIf(v, op==OP_Ge); VdbeCoverageIf(v, op==OP_Le); windowAggFinal(&s, 0); -- 2.39.5