aboutsummaryrefslogtreecommitdiff
path: root/src/window.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-07-10 17:10:44 +0000
committerdrh <drh@noemail.net>2018-07-10 17:10:44 +0000
commit6ccbd2787b95a0de4de89b03e41b216d88ce038f (patch)
tree8494fd2133375148a6cc86a9ef84c66dea0e44e3 /src/window.c
parent7083a487ad40ed34dbfc8c00ccd19d0856698c10 (diff)
downloadsqlite-6ccbd2787b95a0de4de89b03e41b216d88ce038f.tar.gz
sqlite-6ccbd2787b95a0de4de89b03e41b216d88ce038f.zip
Further improvements to bytecode branch testing. Fix cases where the
macros said a branch could not be taken when in fact it could be. Alter some window function branch coverage macros to indicate that comparison operands cannot be NULL. FossilOrigin-Name: 76e42b7071a71137c0da4f10db4e653ae94a89b56e95cd3f036bff08c9500d08
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/window.c b/src/window.c
index 5caaaa6dd..6a50d7c0a 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1038,9 +1038,9 @@ static void windowCheckIntValue(Parse *pParse, int reg, int eCond){
VdbeCoverageIf(v, eCond==1);
VdbeCoverageIf(v, eCond==2);
sqlite3VdbeAddOp3(v, aOp[eCond], regZero, sqlite3VdbeCurrentAddr(v)+2, reg);
- VdbeCoverageIf(v, eCond==0);
- VdbeCoverageIf(v, eCond==1);
- VdbeCoverageIf(v, eCond==2);
+ VdbeCoverageNeverNullIf(v, eCond==0);
+ VdbeCoverageNeverNullIf(v, eCond==1);
+ VdbeCoverageNeverNullIf(v, eCond==2);
sqlite3VdbeAddOp2(v, OP_Halt, SQLITE_ERROR, OE_Abort);
sqlite3VdbeAppendP4(v, (void*)azErr[eCond], P4_STATIC);
sqlite3ReleaseTempReg(pParse, regZero);
@@ -1308,7 +1308,7 @@ static void windowReturnOneRow(
}
sqlite3VdbeAddOp3(v, OP_Add, tmpReg, pWin->regApp, tmpReg);
sqlite3VdbeAddOp3(v, OP_Gt, pWin->regApp+1, lbl, tmpReg);
- VdbeCoverage(v);
+ VdbeCoverageNeverNull(v);
sqlite3VdbeAddOp3(v, OP_SeekRowid, csr, lbl, tmpReg);
VdbeCoverage(v);
sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult);
@@ -1621,7 +1621,7 @@ static void windowCodeRowExprStep(
assert( pMWin->pStart!=0 );
assert( pMWin->eEnd==TK_FOLLOWING );
sqlite3VdbeAddOp3(v, OP_Ge, regStart, sqlite3VdbeCurrentAddr(v)+2, regEnd);
- VdbeCoverage(v);
+ VdbeCoverageNeverNull(v);
sqlite3VdbeAddOp2(v, OP_Copy, regSize, regStart);
sqlite3VdbeAddOp3(v, OP_Subtract, regStart, regEnd, regEnd);
}
@@ -1630,7 +1630,7 @@ static void windowCodeRowExprStep(
assert( pMWin->pEnd!=0 );
assert( pMWin->eStart==TK_PRECEDING );
sqlite3VdbeAddOp3(v, OP_Le, regStart, sqlite3VdbeCurrentAddr(v)+3, regEnd);
- VdbeCoverage(v);
+ VdbeCoverageNeverNull(v);
sqlite3VdbeAddOp2(v, OP_Copy, regSize, regStart);
sqlite3VdbeAddOp2(v, OP_Copy, regSize, regEnd);
}