1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Start adding the sqlite3changeset_concat() function to the session module.

FossilOrigin-Name: 8927b2260b8d84f53776cb29e1d2fa41b6b0de0e
This commit is contained in:
dan
2011-04-14 11:16:21 +00:00
parent 9e3fbc0157
commit 5d607a6e06
6 changed files with 660 additions and 66 deletions

View File

@ -410,6 +410,39 @@ static int test_sqlite3changeset_invert(
return TCL_OK;
}
/*
** sqlite3changeset_concat LEFT RIGHT
*/
static int test_sqlite3changeset_concat(
void * clientData,
Tcl_Interp *interp,
int objc,
Tcl_Obj *CONST objv[]
){
int rc; /* Return code from changeset_invert() */
void *aLeft; /* Input changeset */
int nLeft; /* Size of buffer aChangeset in bytes */
void *aRight; /* Input changeset */
int nRight; /* Size of buffer aChangeset in bytes */
void *aOut; /* Output changeset */
int nOut; /* Size of buffer aOut in bytes */
if( objc!=3 ){
Tcl_WrongNumArgs(interp, 1, objv, "LEFT RIGHT");
return TCL_ERROR;
}
aLeft = (void *)Tcl_GetByteArrayFromObj(objv[1], &nLeft);
aRight = (void *)Tcl_GetByteArrayFromObj(objv[2], &nRight);
rc = sqlite3changeset_concat(nLeft, aLeft, nRight, aRight, &nOut, &aOut);
if( rc!=SQLITE_OK ){
return test_session_error(interp, rc);
}
Tcl_SetObjResult(interp, Tcl_NewByteArrayObj((unsigned char *)aOut, nOut));
sqlite3_free(aOut);
return TCL_OK;
}
/*
** sqlite3session_foreach VARNAME CHANGESET SCRIPT
*/
@ -514,6 +547,9 @@ int TestSession_Init(Tcl_Interp *interp){
Tcl_CreateObjCommand(
interp, "sqlite3changeset_invert", test_sqlite3changeset_invert, 0, 0
);
Tcl_CreateObjCommand(
interp, "sqlite3changeset_concat", test_sqlite3changeset_concat, 0, 0
);
Tcl_CreateObjCommand(
interp, "sqlite3changeset_apply", test_sqlite3changeset_apply, 0, 0
);