diff options
author | drh <drh@noemail.net> | 2019-08-22 21:13:56 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2019-08-22 21:13:56 +0000 |
commit | 505ae9def80b7b45e37a454064f1cf23df26bdf1 (patch) | |
tree | 1206058537c319811dc0ebd2f23e88a8c69cd8dd /src/wherecode.c | |
parent | a677eecad3dc751db19aaf27b6c0674200ecef21 (diff) | |
download | sqlite-505ae9def80b7b45e37a454064f1cf23df26bdf1.tar.gz sqlite-505ae9def80b7b45e37a454064f1cf23df26bdf1.zip |
Add additional VDBE coverage marcros.
FossilOrigin-Name: d3531f5be7d3769689e2cd8bdc9bab5608759de027d44cc123996f32a4a89583
Diffstat (limited to 'src/wherecode.c')
-rw-r--r-- | src/wherecode.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/wherecode.c b/src/wherecode.c index c662c1ce5..55ac394b6 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -1710,9 +1710,23 @@ Bitmask sqlite3WhereCodeOneLoopStart( start_constraints = (nConstraint>1); op = aStartOp[(start_constraints<<2) + (startEq<<1) + bRev]; sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint-1); + VdbeCoverage(v); + VdbeCoverageIf(v, op==OP_Rewind); testcase( op==OP_Rewind ); + VdbeCoverageIf(v, op==OP_Last); testcase( op==OP_Last ); + VdbeCoverageIf(v, op==OP_SeekGT); testcase( op==OP_SeekGT ); + VdbeCoverageIf(v, op==OP_SeekGE); testcase( op==OP_SeekGE ); + VdbeCoverageIf(v, op==OP_SeekLE); testcase( op==OP_SeekLE ); + VdbeCoverageIf(v, op==OP_SeekLT); testcase( op==OP_SeekLT ); }else{ op = aStartOp[(start_constraints<<2) + ((!startEq)<<1) + bRev]; sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint); + VdbeCoverage(v); + VdbeCoverageIf(v, op==OP_Rewind); testcase( op==OP_Rewind ); + VdbeCoverageIf(v, op==OP_Last); testcase( op==OP_Last ); + VdbeCoverageIf(v, op==OP_SeekGT); testcase( op==OP_SeekGT ); + VdbeCoverageIf(v, op==OP_SeekGE); testcase( op==OP_SeekGE ); + VdbeCoverageIf(v, op==OP_SeekLE); testcase( op==OP_SeekLE ); + VdbeCoverageIf(v, op==OP_SeekLT); testcase( op==OP_SeekLT ); } } } @@ -1762,6 +1776,7 @@ Bitmask sqlite3WhereCodeOneLoopStart( if( nConstraint ){ if( regBignull ){ sqlite3VdbeAddOp2(v, OP_If, regBignull, sqlite3VdbeCurrentAddr(v)+3); + VdbeCoverage(v); } op = aEndOp[bRev*2 + endEq]; sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint); @@ -1772,12 +1787,20 @@ Bitmask sqlite3WhereCodeOneLoopStart( } if( regBignull ){ sqlite3VdbeAddOp2(v, OP_IfNot, regBignull, sqlite3VdbeCurrentAddr(v)+2); + VdbeCoverage(v); if( bStopAtNull ){ op = aEndOp[bRev*2 + 0]; + assert( op==OP_IdxGE || op==OP_IdxLE ); sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint); + testcase( op==OP_IdxGE ); VdbeCoverageIf(v, op==OP_IdxGE ); + testcase( op==OP_IdxLE ); VdbeCoverageIf(v, op==OP_IdxLE ); }else{ op = aEndOp[bRev*2 + endEq]; sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint+1); + testcase( op==OP_IdxGT ); VdbeCoverageIf(v, op==OP_IdxGT ); + testcase( op==OP_IdxGE ); VdbeCoverageIf(v, op==OP_IdxGE ); + testcase( op==OP_IdxLT ); VdbeCoverageIf(v, op==OP_IdxLT ); + testcase( op==OP_IdxLE ); VdbeCoverageIf(v, op==OP_IdxLE ); } } |