mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Comment changes that attempt to better explain the behavior of the "seekResult"
field on VdbeCursor objects and the seekResult parameter to sqlite3BtreeInsert() and the OPFLAG_USESEEKRESULT flag on insert opcodes. No changes to code. FossilOrigin-Name: 345b46be75bdf6f9fb7367a6164d89bae11995a6
This commit is contained in:
21
src/vdbe.c
21
src/vdbe.c
@@ -4322,15 +4322,10 @@ case OP_NewRowid: { /* out2 */
|
||||
** then rowid is stored for subsequent return by the
|
||||
** sqlite3_last_insert_rowid() function (otherwise it is unmodified).
|
||||
**
|
||||
** If the OPFLAG_USESEEKRESULT flag of P5 is set and if the result of
|
||||
** the last seek operation (OP_NotExists or OP_SeekRowid) was a success,
|
||||
** then this
|
||||
** operation will not attempt to find the appropriate row before doing
|
||||
** the insert but will instead overwrite the row that the cursor is
|
||||
** currently pointing to. Presumably, the prior OP_NotExists or
|
||||
** OP_SeekRowid opcode
|
||||
** has already positioned the cursor correctly. This is an optimization
|
||||
** that boosts performance by avoiding redundant seeks.
|
||||
** If the OPFLAG_USESEEKRESULT flag of P5 is set, the implementation might
|
||||
** run faster by avoiding an unnecessary seek on cursor P1. However,
|
||||
** the OPFLAG_USESEEKRESULT flag must only be set if there have been no prior
|
||||
** seeks on the cursor or if the most recent seek used a key equal to P3.
|
||||
**
|
||||
** If the OPFLAG_ISUPDATE flag is set, then this opcode is part of an
|
||||
** UPDATE operation. Otherwise (if the flag is clear) then this opcode
|
||||
@@ -5036,9 +5031,11 @@ next_tail:
|
||||
** incremented by this instruction. If the OPFLAG_NCHANGE bit is clear,
|
||||
** then the change counter is unchanged.
|
||||
**
|
||||
** If P5 has the OPFLAG_USESEEKRESULT bit set, then the cursor must have
|
||||
** just done a seek to the spot where the new entry is to be inserted.
|
||||
** This flag avoids doing an extra seek.
|
||||
** If the OPFLAG_USESEEKRESULT flag of P5 is set, the implementation might
|
||||
** run faster by avoiding an unnecessary seek on cursor P1. However,
|
||||
** the OPFLAG_USESEEKRESULT flag must only be set if there have been no prior
|
||||
** seeks on the cursor or if the most recent seek used a key equivalent
|
||||
** to P2.
|
||||
**
|
||||
** This instruction only works for indices. The equivalent instruction
|
||||
** for tables is OP_Insert.
|
||||
|
Reference in New Issue
Block a user