aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-05-10 14:03:07 +0000
committerdrh <drh@noemail.net>2019-05-10 14:03:07 +0000
commit2ce9b6bcd500c8836748aa5b34bcb02b7f145e90 (patch)
tree126afb712a5f701f1969e88d9b70be1988f47ea6 /src
parent7e6dc5d9081f20a52ae38d6f5009cbfaf3bf72dc (diff)
downloadsqlite-2ce9b6bcd500c8836748aa5b34bcb02b7f145e90.tar.gz
sqlite-2ce9b6bcd500c8836748aa5b34bcb02b7f145e90.zip
Improved comments and extra assert() statements on the OP_Savepoint opcode,
just to make the code a little easier to read and reason about. FossilOrigin-Name: e80b2d9fcbc82ae5dc8a1fc13196f9a30bdb504eb5a5c131d136a78bbd5bbe7b
Diffstat (limited to 'src')
-rw-r--r--src/vdbe.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/vdbe.c b/src/vdbe.c
index 28916100d..90a000d32 100644
--- a/src/vdbe.c
+++ b/src/vdbe.c
@@ -3030,8 +3030,9 @@ case OP_Count: { /* out2 */
/* Opcode: Savepoint P1 * * P4 *
**
** Open, release or rollback the savepoint named by parameter P4, depending
-** on the value of P1. To open a new savepoint, P1==0. To release (commit) an
-** existing savepoint, P1==1, or to rollback an existing savepoint P1==2.
+** on the value of P1. To open a new savepoint set P1==0 (SAVEPOINT_BEGIN).
+** To release (commit) an existing savepoint set P1==1 (SAVEPOINT_RELEASE).
+** To rollback an existing savepoint set P1==2 (SAVEPOINT_ROLLBACK).
*/
case OP_Savepoint: {
int p1; /* Value of P1 operand */
@@ -3099,6 +3100,7 @@ case OP_Savepoint: {
}
}
}else{
+ assert( p1==SAVEPOINT_RELEASE || p1==SAVEPOINT_ROLLBACK );
iSavepoint = 0;
/* Find the named savepoint. If there is no such savepoint, then an
@@ -3152,6 +3154,7 @@ case OP_Savepoint: {
if( rc!=SQLITE_OK ) goto abort_due_to_error;
}
}else{
+ assert( p1==SAVEPOINT_RELEASE );
isSchemaChange = 0;
}
for(ii=0; ii<db->nDb; ii++){
@@ -3188,6 +3191,7 @@ case OP_Savepoint: {
db->nSavepoint--;
}
}else{
+ assert( p1==SAVEPOINT_ROLLBACK );
db->nDeferredCons = pSavepoint->nDeferredCons;
db->nDeferredImmCons = pSavepoint->nDeferredImmCons;
}