diff options
author | drh <> | 2023-01-11 17:59:18 +0000 |
---|---|---|
committer | drh <> | 2023-01-11 17:59:18 +0000 |
commit | d29bcd9d081c41a7085e0735e16a55ce567797df (patch) | |
tree | 4133e61cbcc98ca5c53b70635dfbef11bac7d837 /src/window.c | |
parent | b609a79f4a9a0666d51db6f0f7c05e90308ed8c2 (diff) | |
parent | d2467a89fd929bf30120d1715ece107c25215f8a (diff) | |
download | sqlite-d29bcd9d081c41a7085e0735e16a55ce567797df.tar.gz sqlite-d29bcd9d081c41a7085e0735e16a55ce567797df.zip |
Fix a false-positive in the out-of-range jump detection logic that was
added as part of RIGHT JOIN.
FossilOrigin-Name: ab5bcb91cda45576ae9f3f272ec92eb3be3c26436a440ebb89f51f49c42e0fd2
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/window.c b/src/window.c index 1ed3e4921..8dd35ee30 100644 --- a/src/window.c +++ b/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); |