mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
If the LHS for an EXCEPT or INTERSECT operator is empty, skip over the
computation of the RHS. FossilOrigin-Name: 13f096ae8a850a05d4a8684561066f11693ee66289e6568c44ef32822cca06f6
This commit is contained in:
25
src/vdbe.c
25
src/vdbe.c
@@ -6398,6 +6398,31 @@ case OP_Rewind: { /* jump0, ncycle */
|
||||
break;
|
||||
}
|
||||
|
||||
/* Opcode: IfEmpty P1 P2 * * *
|
||||
** Synopsis: if( empty(P1) ) goto P2
|
||||
**
|
||||
** Check to see if the b-tree table that cursor P1 references is empty
|
||||
** and jump to P2 if it is.
|
||||
*/
|
||||
case OP_IfEmpty: { /* jump */
|
||||
VdbeCursor *pC;
|
||||
BtCursor *pCrsr;
|
||||
int res;
|
||||
|
||||
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
|
||||
assert( pOp->p2>=0 && pOp->p2<p->nOp );
|
||||
|
||||
pC = p->apCsr[pOp->p1];
|
||||
assert( pC!=0 );
|
||||
assert( pC->eCurType==CURTYPE_BTREE );
|
||||
pCrsr = pC->uc.pCursor;
|
||||
assert( pCrsr );
|
||||
res = sqlite3BtreeIsEmpty(pCrsr);
|
||||
VdbeBranchTaken(res!=0,2);
|
||||
if( res ) goto jump_to_p2;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Opcode: Next P1 P2 P3 * P5
|
||||
**
|
||||
** Advance cursor P1 so that it points to the next key/data pair in its
|
||||
|
Reference in New Issue
Block a user