aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2023-09-14 16:02:56 +0000
committerdrh <>2023-09-14 16:02:56 +0000
commite68decd54cdfc2da5a3d0416a211612eccf4ee9b (patch)
treece23445d03c14e06a52f3a0546e12c29f6a12964 /src
parent82cdf4987d7d6cc7b1dbcfc98b921e70eb4d12ed (diff)
downloadsqlite-e68decd54cdfc2da5a3d0416a211612eccf4ee9b.tar.gz
sqlite-e68decd54cdfc2da5a3d0416a211612eccf4ee9b.zip
Document the use of OPFLAG_ISNOOP as the P2 argument on OP_Delete. No
functional code changes. FossilOrigin-Name: d88f41b2cf2b721170d2428a50b717976091389d9a07d0ffa15c3323b0eaad37
Diffstat (limited to 'src')
-rw-r--r--src/vdbe.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/vdbe.c b/src/vdbe.c
index 41e56d306..646313650 100644
--- a/src/vdbe.c
+++ b/src/vdbe.c
@@ -5775,8 +5775,13 @@ case OP_RowCell: {
** the "primary" delete. The others are all on OPFLAG_FORDELETE
** cursors or else are marked with the AUXDELETE flag.
**
-** If the OPFLAG_NCHANGE flag of P2 (NB: P2 not P5) is set, then the row
-** change count is incremented (otherwise not).
+** If the OPFLAG_NCHANGE (0x01) flag of P2 (NB: P2 not P5) is set, then
+** the row change count is incremented (otherwise not).
+**
+** If the OPFLAG_ISNOOP (0x40) flag of P2 (not P5!) is set, then the
+** pre-update-hook for deletes is run, but the btree is otherwise unchanged.
+** This happens when the OP_Delete is to be shortly followed by an OP_Insert
+** with the same key, causing the btree entry to be overwritten.
**
** P1 must not be pseudo-table. It has to be a real table with
** multiple rows.