mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
If OP_Rewind has P2 of zero, that is an assertion that the table is never
empty. This fixes a false-positive in the out-of-subroutine jump detection logic added in version 3.39.0, and which was causing the assertion on the previous check-in. FossilOrigin-Name: 33fd9997ebb88f0d78522c036e75aef08015d31d28b1cbee08ae7c4cd5ecc6aa
This commit is contained in:
12
src/window.c
12
src/window.c
@@ -2944,8 +2944,7 @@ void sqlite3WindowCodeStep(
|
||||
VdbeCoverageNeverNullIf(v, op==OP_Ge); /* NeverNull because bound <expr> */
|
||||
VdbeCoverageNeverNullIf(v, op==OP_Le); /* values previously checked */
|
||||
windowAggFinal(&s, 0);
|
||||
sqlite3VdbeAddOp2(v, OP_Rewind, s.current.csr, 1);
|
||||
VdbeCoverageNeverTaken(v);
|
||||
sqlite3VdbeAddOp1(v, OP_Rewind, s.current.csr);
|
||||
windowReturnOneRow(&s);
|
||||
sqlite3VdbeAddOp1(v, OP_ResetSorter, s.current.csr);
|
||||
sqlite3VdbeAddOp2(v, OP_Goto, 0, lblWhereEnd);
|
||||
@@ -2957,13 +2956,10 @@ void sqlite3WindowCodeStep(
|
||||
}
|
||||
|
||||
if( pMWin->eStart!=TK_UNBOUNDED ){
|
||||
sqlite3VdbeAddOp2(v, OP_Rewind, s.start.csr, 1);
|
||||
VdbeCoverageNeverTaken(v);
|
||||
sqlite3VdbeAddOp1(v, OP_Rewind, s.start.csr);
|
||||
}
|
||||
sqlite3VdbeAddOp2(v, OP_Rewind, s.current.csr, 1);
|
||||
VdbeCoverageNeverTaken(v);
|
||||
sqlite3VdbeAddOp2(v, OP_Rewind, s.end.csr, 1);
|
||||
VdbeCoverageNeverTaken(v);
|
||||
sqlite3VdbeAddOp1(v, OP_Rewind, s.current.csr);
|
||||
sqlite3VdbeAddOp1(v, OP_Rewind, s.end.csr);
|
||||
if( regPeer && pOrderBy ){
|
||||
sqlite3VdbeAddOp3(v, OP_Copy, regNewPeer, regPeer, pOrderBy->nExpr-1);
|
||||
sqlite3VdbeAddOp3(v, OP_Copy, regPeer, s.start.reg, pOrderBy->nExpr-1);
|
||||
|
Reference in New Issue
Block a user