diff options
author | dan <dan@noemail.net> | 2018-04-09 11:43:58 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-04-09 11:43:58 +0000 |
commit | fe55da387a9ef8c4d93abc4907bf9d89a06dc021 (patch) | |
tree | 9a8590d80bc7b89aab78b14353e1534be5bb02cd /ext/session/test_session.c | |
parent | 3517b312dcee9ab0fd4099f45587e82b30c54e03 (diff) | |
download | sqlite-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.c | 28 |
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 ); } } |