aboutsummaryrefslogtreecommitdiff
path: root/ext/session/test_session.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2018-04-09 11:43:58 +0000
committerdan <dan@noemail.net>2018-04-09 11:43:58 +0000
commitfe55da387a9ef8c4d93abc4907bf9d89a06dc021 (patch)
tree9a8590d80bc7b89aab78b14353e1534be5bb02cd /ext/session/test_session.c
parent3517b312dcee9ab0fd4099f45587e82b30c54e03 (diff)
downloadsqlite-fe55da387a9ef8c4d93abc4907bf9d89a06dc021.tar.gz
sqlite-fe55da387a9ef8c4d93abc4907bf9d89a06dc021.zip
Add a "flags" parameter to experimental API sqlite3changeset_apply_v2(). Also
add the SQLITE_CHANGESETAPPLY_NOSAVEPOINT flag. FossilOrigin-Name: 3d29631fa7270b18f51de8cfe1285959e42ad9a673d5d2d5c016126f5f1b31a8
Diffstat (limited to 'ext/session/test_session.c')
-rw-r--r--ext/session/test_session.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/ext/session/test_session.c b/ext/session/test_session.c
index bdd144b5f..3b6c24fd1 100644
--- a/ext/session/test_session.c
+++ b/ext/session/test_session.c
@@ -731,18 +731,34 @@ static int SQLITE_TCLAPI testSqlite3changesetApply(
TestStreamInput sStr;
void *pRebase = 0;
int nRebase = 0;
+ int flags = 0; /* Flags for apply_v2() */
memset(&sStr, 0, sizeof(sStr));
sStr.nStream = test_tcl_integer(interp, SESSION_STREAM_TCL_VAR);
+ /* Check for the -nosavepoint flag */
+ if( bV2 && objc>1 ){
+ const char *z1 = Tcl_GetString(objv[1]);
+ int n = strlen(z1);
+ if( n>1 && n<=12 && 0==sqlite3_strnicmp("-nosavepoint", z1, n) ){
+ flags = SQLITE_CHANGESETAPPLY_NOSAVEPOINT;
+ objc--;
+ objv++;
+ }
+ }
+
if( objc!=4 && objc!=5 ){
- Tcl_WrongNumArgs(interp, 1, objv,
- "DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?"
- );
+ const char *zMsg;
+ if( bV2 ){
+ zMsg = "?-nosavepoint? DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?";
+ }else{
+ zMsg = "DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?";
+ }
+ Tcl_WrongNumArgs(interp, 1, objv, zMsg);
return TCL_ERROR;
}
if( 0==Tcl_GetCommandInfo(interp, Tcl_GetString(objv[1]), &info) ){
- Tcl_AppendResult(interp, "no such handle: ", Tcl_GetString(objv[2]), 0);
+ Tcl_AppendResult(interp, "no such handle: ", Tcl_GetString(objv[1]), 0);
return TCL_ERROR;
}
db = *(sqlite3 **)info.objClientData;
@@ -759,7 +775,7 @@ static int SQLITE_TCLAPI testSqlite3changesetApply(
}else{
rc = sqlite3changeset_apply_v2(db, nChangeset, pChangeset,
(objc==5)?test_filter_handler:0, test_conflict_handler, (void *)&ctx,
- &pRebase, &nRebase
+ &pRebase, &nRebase, flags
);
}
}else{
@@ -774,7 +790,7 @@ static int SQLITE_TCLAPI testSqlite3changesetApply(
rc = sqlite3changeset_apply_v2_strm(db, testStreamInput, (void*)&sStr,
(objc==5) ? test_filter_handler : 0,
test_conflict_handler, (void *)&ctx,
- &pRebase, &nRebase
+ &pRebase, &nRebase, flags
);
}
}