diff options
author | dan <dan@noemail.net> | 2018-03-13 20:31:23 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-03-13 20:31:23 +0000 |
commit | a38e6c57bca300d73abaa7ee9718351b8eb18e2e (patch) | |
tree | 48d23058f4ece21b26fe7845e8120e1cd4bf294d /ext/session/test_session.c | |
parent | 58db4c760ff32ad4204bf48b1cf224c9900bbef1 (diff) | |
download | sqlite-a38e6c57bca300d73abaa7ee9718351b8eb18e2e.tar.gz sqlite-a38e6c57bca300d73abaa7ee9718351b8eb18e2e.zip |
Add sqlite3_changeset_apply_v2() and apply_v2_strm() to the sessions module.
FossilOrigin-Name: 445bfe977d9f3a891e08ef33237862ed047fe83e134ef3ed8b47ee0f5abd8cd6
Diffstat (limited to 'ext/session/test_session.c')
-rw-r--r-- | ext/session/test_session.c | 52 |
1 files changed, 44 insertions, 8 deletions
diff --git a/ext/session/test_session.c b/ext/session/test_session.c index 411354cc0..dd2d9977a 100644 --- a/ext/session/test_session.c +++ b/ext/session/test_session.c @@ -711,10 +711,8 @@ static int testStreamInput( } -/* -** sqlite3changeset_apply DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT? -*/ -static int SQLITE_TCLAPI test_sqlite3changeset_apply( +static int SQLITE_TCLAPI testSqlite3changesetApply( + int bV2, void * clientData, Tcl_Interp *interp, int objc, @@ -727,6 +725,8 @@ static int SQLITE_TCLAPI test_sqlite3changeset_apply( int nChangeset; /* Size of buffer aChangeset in bytes */ TestConflictHandler ctx; TestStreamInput sStr; + void *pRebase = 0; + int nRebase = 0; memset(&sStr, 0, sizeof(sStr)); sStr.nStream = test_tcl_integer(interp, SESSION_STREAM_TCL_VAR); @@ -748,9 +748,16 @@ static int SQLITE_TCLAPI test_sqlite3changeset_apply( ctx.interp = interp; if( sStr.nStream==0 ){ - rc = sqlite3changeset_apply(db, nChangeset, pChangeset, - (objc==5) ? test_filter_handler : 0, test_conflict_handler, (void *)&ctx - ); + if( bV2==0 ){ + rc = sqlite3changeset_apply(db, nChangeset, pChangeset, + (objc==5)?test_filter_handler:0, test_conflict_handler, (void *)&ctx + ); + }else{ + rc = sqlite3changeset_apply_v2(db, nChangeset, pChangeset, + (objc==5)?test_filter_handler:0, test_conflict_handler, (void *)&ctx, + &pRebase, &nRebase + ); + } }else{ sStr.aData = (unsigned char*)pChangeset; sStr.nData = nChangeset; @@ -761,12 +768,40 @@ static int SQLITE_TCLAPI test_sqlite3changeset_apply( if( rc!=SQLITE_OK ){ return test_session_error(interp, rc, 0); + }else{ + Tcl_ResetResult(interp); + if( bV2 && pRebase ){ + Tcl_SetObjResult(interp, Tcl_NewByteArrayObj(pRebase, nRebase)); + } } - Tcl_ResetResult(interp); + sqlite3_free(pRebase); return TCL_OK; } /* +** sqlite3changeset_apply DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT? +*/ +static int SQLITE_TCLAPI test_sqlite3changeset_apply( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + return testSqlite3changesetApply(0, clientData, interp, objc, objv); +} +/* +** sqlite3changeset_apply_v2 DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT? +*/ +static int SQLITE_TCLAPI test_sqlite3changeset_apply_v2( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + return testSqlite3changesetApply(1, clientData, interp, objc, objv); +} + +/* ** sqlite3changeset_apply_replace_all DB CHANGESET */ static int SQLITE_TCLAPI test_sqlite3changeset_apply_replace_all( @@ -1029,6 +1064,7 @@ int TestSession_Init(Tcl_Interp *interp){ { "sqlite3changeset_invert", test_sqlite3changeset_invert }, { "sqlite3changeset_concat", test_sqlite3changeset_concat }, { "sqlite3changeset_apply", test_sqlite3changeset_apply }, + { "sqlite3changeset_apply_v2", test_sqlite3changeset_apply_v2 }, { "sqlite3changeset_apply_replace_all", test_sqlite3changeset_apply_replace_all }, { "sql_exec_changeset", test_sql_exec_changeset }, |