mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Fix handling of "continue" and "break" from inside the loop for the right
operand of a RIGHT JOIN. FossilOrigin-Name: b6e773a26c2c6ee76ea61acb059b4e676d07ea62f6db9c513638f8986557cf04
This commit is contained in:
10
src/vdbe.c
10
src/vdbe.c
@@ -993,8 +993,12 @@ jump_to_p2:
|
||||
|
||||
/* Opcode: Return P1 P2 P3 * *
|
||||
**
|
||||
** Jump to the next instruction after the address in register P1. After
|
||||
** the jump, register P1 becomes undefined.
|
||||
** Jump to the next instruction after the address stored in register P1.
|
||||
**
|
||||
** It used to be that after the jump, register P1 would become undefined.
|
||||
** However, for the subroutine used for the inner loop of a RIGHT JOIN,
|
||||
** it is useful for R1 register to be unchanged, so that is what happens
|
||||
** now.
|
||||
**
|
||||
** P2 is not used by the byte-code engine. However, if P2 is positive
|
||||
** and also less than the current address, then the "EXPLAIN" output
|
||||
@@ -1012,7 +1016,7 @@ case OP_Return: { /* in1 */
|
||||
pIn1 = &aMem[pOp->p1];
|
||||
assert( pIn1->flags==MEM_Int );
|
||||
pOp = &aOp[pIn1->u.i];
|
||||
pIn1->flags = MEM_Undefined;
|
||||
/* pIn1->flags = MEM_Undefined; */
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user