Modify the OP_IfNotOpen opcode so that the jump is taken if the cursor is open
but was previously set to a NULL row using OP_NullRow. FossilOrigin-Name: 1292d68caa7086610ddda343f3852e63de8da1eb66536ee4716b6529f5a31bc6
This commit is contained in:
parent
5a0771a1f4
commit
8b9a3d1fc8
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C Remove\scode\sthat\shas\sbeen\spreviously\scommented\sout.
|
||||
D 2022-09-20T18:18:00.607
|
||||
C Modify\sthe\sOP_IfNotOpen\sopcode\sso\sthat\sthe\sjump\sis\staken\sif\sthe\scursor\sis\sopen\nbut\swas\spreviously\sset\sto\sa\sNULL\srow\susing\sOP_NullRow.
|
||||
D 2022-09-20T19:22:17.805
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -539,7 +539,7 @@ F src/date.c 94ce83b4cd848a387680a5f920c9018c16655db778c4d36525af0a0f34679ac5
|
||||
F src/dbpage.c 5808e91bc27fa3981b028000f8fadfdc10ce9e59a34ce7dc4e035a69be3906ec
|
||||
F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d
|
||||
F src/delete.c 86573edae75e3d3e9a8b590d87db8e47222103029df4f3e11fa56044459b514e
|
||||
F src/expr.c a6692ca00680c8ac4ec6cf637e04df1ca331e1a68e311b425eea61f0c8477019
|
||||
F src/expr.c 1cbdd76eeedb729ea9060df03e3e6b74a302784a13bfa38794a8194f894641ea
|
||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||
F src/fkey.c 722f20779f5342a787922deded3628d8c74b5249cab04098cf17ee2f2aaff002
|
||||
F src/func.c 8f72e88cccdee22185133c10f96ccd61dc34c5ea4b1fa9a73c237ef59b2e64f1
|
||||
@ -660,7 +660,7 @@ F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937
|
||||
F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
|
||||
F src/util.c 0be191521ff6d2805995f4910f0b6231b42843678b2efdc1abecaf39929a673f
|
||||
F src/vacuum.c bb346170b0b54c6683bba4a5983aea40485597fdf605c87ec8bc2e199fe88cd8
|
||||
F src/vdbe.c d27ec9a57f752fc2acf6a64d43bbf6072d2415efc976184f6d8a146e65819d3b
|
||||
F src/vdbe.c 0d1e3c658d98a7bb7201532ea7a3e4d59bf9165421c780d5f84c361e372f1179
|
||||
F src/vdbe.h 64619af62603dc3c4f5ff6ff6d2c8f389abd667a29ce6007ed44bd22b3211cd0
|
||||
F src/vdbeInt.h 17b7461ffcf9ee760d1341731715a419f6b8c763089a7ece25c2e8098d702b3f
|
||||
F src/vdbeapi.c fc3183daf72808b4311b228989120fdbc2dc44972fb0d77d5c453460cc0e5b2c
|
||||
@ -2000,8 +2000,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 930a8c1561d0d5dc70dc5378edac77f79ac59ab6569b561de3dfb02f160c38c5
|
||||
R dcb98f6a73c54efed4da4f980f298d5b
|
||||
P 852b385a5de622aa32026824210d4bd23db52a4a8a697b83d22d6000edeba487
|
||||
R 58d9f89a36d9e4cf587663a233307943
|
||||
U drh
|
||||
Z 1cd83b2593765cf9bcd77e53d7a14363
|
||||
Z 7e40ae1a3e52a669a3942bf4dda137ff
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
@ -1 +1 @@
|
||||
852b385a5de622aa32026824210d4bd23db52a4a8a697b83d22d6000edeba487
|
||||
1292d68caa7086610ddda343f3852e63de8da1eb66536ee4716b6529f5a31bc6
|
@ -3223,7 +3223,7 @@ void sqlite3CodeRhsOfIN(
|
||||
sqlite3VdbeChangeP4(v, addr, (void *)pKeyInfo, P4_KEYINFO);
|
||||
}
|
||||
if( addrOnce ){
|
||||
sqlite3VdbeAddOp2(v, OP_Rewind, iTab, sqlite3VdbeCurrentAddr(v)+1);
|
||||
sqlite3VdbeAddOp1(v, OP_NullRow, iTab);
|
||||
sqlite3VdbeJumpHere(v, addrOnce);
|
||||
/* Subroutine return */
|
||||
assert( ExprUseYSub(pExpr) );
|
||||
|
10
src/vdbe.c
10
src/vdbe.c
@ -4897,12 +4897,16 @@ case OP_SeekHit: {
|
||||
/* Opcode: IfNotOpen P1 P2 * * *
|
||||
** Synopsis: if( !csr[P1] ) goto P2
|
||||
**
|
||||
** If cursor P1 is not open, jump to instruction P2. Otherwise, fall through.
|
||||
** If cursor P1 is not open or if P1 is set to a NULL row using the
|
||||
** OP_NullRow opcode, then jump to instruction P2. Otherwise, fall through.
|
||||
*/
|
||||
case OP_IfNotOpen: { /* jump */
|
||||
VdbeCursor *pCur;
|
||||
|
||||
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
|
||||
VdbeBranchTaken(p->apCsr[pOp->p1]==0, 2);
|
||||
if( !p->apCsr[pOp->p1] ){
|
||||
pCur = p->apCsr[pOp->p1];
|
||||
VdbeBranchTaken(pCur==0 || pCur->nullRow, 2);
|
||||
if( pCur==0 || pCur->nullRow ){
|
||||
goto jump_to_p2_and_check_for_interrupt;
|
||||
}
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user