]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge latest trunk changes into this branch. changebatch
authordan <dan@noemail.net>
Wed, 7 Dec 2016 07:46:50 +0000 (07:46 +0000)
committerdan <dan@noemail.net>
Wed, 7 Dec 2016 07:46:50 +0000 (07:46 +0000)
FossilOrigin-Name: 391344d88a284f92c59b8d96a315b69292641de0

1  2 
ext/session/sqlite3session.h
ext/session/test_session.c
main.mk
manifest
manifest.uuid

Simple merge
index 02274c7f84ece81163b22ca683a1f3fc2a38ef74,411354cc02d41415bc18f8b6924d8d413cea6799..bdd5421a112967952fd5004cbd66c3a935dbcef2
@@@ -923,149 -1019,27 +1024,152 @@@ static int SQLITE_TCLAPI test_sqlite3se
    return TCL_OK;
  }
  
 +#include "sqlite3changebatch.h"
 +
 +typedef struct TestChangebatch TestChangebatch;
 +struct TestChangebatch {
 +  sqlite3_changebatch *pChangebatch;
 +};
 +
 +/*
 +** Tclcmd:  $changebatch add BLOB
 +**          $changebatch zero
 +**          $changebatch delete
 +*/
 +static int SQLITE_TCLAPI test_changebatch_cmd(
 +  void *clientData,
 +  Tcl_Interp *interp,
 +  int objc,
 +  Tcl_Obj *CONST objv[]
 +){
 +  TestChangebatch *p = (TestChangebatch*)clientData;
 +  sqlite3_changebatch *pChangebatch = p->pChangebatch;
 +  struct SessionSubcmd {
 +    const char *zSub;
 +    int nArg;
 +    const char *zMsg;
 +    int iSub;
 +  } aSub[] = {
 +    { "add",          1, "CHANGESET",  }, /* 0 */
 +    { "zero",         0, "",           }, /* 1 */
 +    { "delete",       0, "",           }, /* 2 */
 +    { 0 }
 +  };
 +  int iSub;
 +  int rc;
 +
 +  if( objc<2 ){
 +    Tcl_WrongNumArgs(interp, 1, objv, "SUBCOMMAND ...");
 +    return TCL_ERROR;
 +  }
 +  rc = Tcl_GetIndexFromObjStruct(interp, 
 +      objv[1], aSub, sizeof(aSub[0]), "sub-command", 0, &iSub
 +  );
 +  if( rc!=TCL_OK ) return rc;
 +  if( objc!=2+aSub[iSub].nArg ){
 +    Tcl_WrongNumArgs(interp, 2, objv, aSub[iSub].zMsg);
 +    return TCL_ERROR;
 +  }
 +
 +  switch( iSub ){
 +    case 0: {      /* add */
 +      int nArg;
 +      unsigned char *pArg = Tcl_GetByteArrayFromObj(objv[2], &nArg);
 +      rc = sqlite3changebatch_add(pChangebatch, pArg, nArg);
 +      if( rc!=SQLITE_OK && rc!=SQLITE_CONSTRAINT ){
 +        return test_session_error(interp, rc, 0);
 +      }else{
 +        extern const char *sqlite3ErrName(int);
 +        Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
 +      }
 +      break;
 +    }
 +
 +    case 1: {      /* zero */
 +      sqlite3changebatch_zero(pChangebatch);
 +      break;
 +    }
 +
 +    case 2:        /* delete */
 +      Tcl_DeleteCommand(interp, Tcl_GetString(objv[0]));
 +      break;
 +  }
 +
 +  return TCL_OK;
 +}
 +
 +static void SQLITE_TCLAPI test_changebatch_del(void *clientData){
 +  TestChangebatch *p = (TestChangebatch*)clientData;
 +  sqlite3changebatch_delete(p->pChangebatch);
 +  ckfree((char*)p);
 +}
 +
 +/*
 +** Tclcmd:  sqlite3changebatch CMD DB-HANDLE
 +*/
 +static int SQLITE_TCLAPI test_sqlite3changebatch(
 +  void * clientData,
 +  Tcl_Interp *interp,
 +  int objc,
 +  Tcl_Obj *CONST objv[]
 +){
 +  sqlite3 *db;
 +  Tcl_CmdInfo info;
 +  int rc;                         /* sqlite3session_create() return code */
 +  TestChangebatch *p;             /* New wrapper object */
 +
 +  if( objc!=3 ){
 +    Tcl_WrongNumArgs(interp, 1, objv, "CMD DB-HANDLE");
 +    return TCL_ERROR;
 +  }
 +
 +  if( 0==Tcl_GetCommandInfo(interp, Tcl_GetString(objv[2]), &info) ){
 +    Tcl_AppendResult(interp, "no such handle: ", Tcl_GetString(objv[2]), 0);
 +    return TCL_ERROR;
 +  }
 +  db = *(sqlite3 **)info.objClientData;
 +
 +  p = (TestChangebatch*)ckalloc(sizeof(TestChangebatch));
 +  memset(p, 0, sizeof(TestChangebatch));
 +  rc = sqlite3changebatch_new(db, &p->pChangebatch);
 +  if( rc!=SQLITE_OK ){
 +    ckfree((char*)p);
 +    return test_session_error(interp, rc, 0);
 +  }
 +
 +  Tcl_CreateObjCommand(
 +      interp, Tcl_GetString(objv[1]), test_changebatch_cmd, (ClientData)p,
 +      test_changebatch_del
 +  );
 +  Tcl_SetObjResult(interp, objv[1]);
 +  return TCL_OK;
 +}
 +
  int TestSession_Init(Tcl_Interp *interp){
-   Tcl_CreateObjCommand(interp, "sqlite3session", test_sqlite3session, 0, 0);
-   Tcl_CreateObjCommand(
-       interp, "sqlite3session_foreach", test_sqlite3session_foreach, 0, 0
-   );
-   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
-   );
-   Tcl_CreateObjCommand(
-       interp, "sqlite3changeset_apply_replace_all", 
-       test_sqlite3changeset_apply_replace_all, 0, 0
-   );
+   struct Cmd {
+     const char *zCmd;
+     Tcl_ObjCmdProc *xProc;
+   } aCmd[] = {
+     { "sqlite3session", test_sqlite3session },
+     { "sqlite3session_foreach", test_sqlite3session_foreach },
+     { "sqlite3changeset_invert", test_sqlite3changeset_invert },
+     { "sqlite3changeset_concat", test_sqlite3changeset_concat },
+     { "sqlite3changeset_apply", test_sqlite3changeset_apply },
+     { "sqlite3changeset_apply_replace_all", 
+       test_sqlite3changeset_apply_replace_all },
+     { "sql_exec_changeset", test_sql_exec_changeset },
+   };
+   int i;
+   for(i=0; i<sizeof(aCmd)/sizeof(struct Cmd); i++){
+     struct Cmd *p = &aCmd[i];
+     Tcl_CreateObjCommand(interp, p->zCmd, p->xProc, 0, 0);
+   }
 +
 +  Tcl_CreateObjCommand(
 +      interp, "sqlite3changebatch", test_sqlite3changebatch, 0, 0
 +  );
    return TCL_OK;
  }
  
diff --cc main.mk
Simple merge
diff --cc manifest
index 1a738945f8ccc52995bbe488f72afeb8cc80bc15,55337320a370006b4f4e916f333a4523da84261d..7fb6bde9bae37975adce6b94f645fd820f7950b5
+++ b/manifest
@@@ -1,10 -1,10 +1,10 @@@
- C Add\sthe\ssqlite3changebatch_db()\sAPI.
- D 2016-08-24T19:14:59.159
- F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
 -C Performance\simprovement\sand\ssize\sreduction\sin\sthe\sExpr\snode\sallocator\nfunction\ssqlite3PExpr().
 -D 2016-12-06T22:47:23.006
++C Merge\slatest\strunk\schanges\sinto\sthis\sbranch.
++D 2016-12-07T07:46:50.572
+ F Makefile.in 7639c6a09da11a9c7c6f2630fc981ee588d1072d
  F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
- F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a
+ F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
  F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7
- F VERSION 25e2e333adeff5965520bc8db999c658898c972d
+ F VERSION 661b3e6a778cfbfd7bdce8bbb1545b22f4b6f09e
  F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
  F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
  F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
@@@ -281,13 -284,11 +284,13 @@@ F ext/rtree/rtree_util.tcl 06aab2ed5b82
  F ext/rtree/sqlite3rtree.h 9c5777af3d2921c7b4ae4954e8e5697502289d28
  F ext/rtree/tkt3363.test 142ab96eded44a3615ec79fba98c7bde7d0f96de
  F ext/rtree/viewrtree.tcl eea6224b3553599ae665b239bd827e182b466024
 +F ext/session/changebatch1.test 9ceaa8f7b2a505933e250fbe6cbc550e4ce1e59d
 +F ext/session/changebatchfault.test be49c793219bf387ad692a60856b921f0854ad6d
  F ext/session/changeset.c 4ccbaa4531944c24584bf6a61ba3a39c62b6267a
- F ext/session/session1.test 98f384736e2bc21ccf5ed81bdadcff4ad863393b
+ F ext/session/session1.test e5125b216d1e8c91e0984b361b0b68529e7c5dfb
  F ext/session/session2.test 284de45abae4cc1082bc52012ee81521d5ac58e0
  F ext/session/session3.test a7a9ce59b8d1e49e2cc23d81421ac485be0eea01
- F ext/session/session4.test a6ed685da7a5293c5d6f99855bcf41dbc352ca84
+ F ext/session/session4.test 457b02bdc349eb01151e54de014df77abd3c08c8
  F ext/session/session5.test 716bc6fafd625ce60dfa62ae128971628c1a1169
  F ext/session/session6.test 443789bc2fca12e4f7075cf692c60b8a2bea1a26
  F ext/session/session8.test 8e194b3f655d861ca36de5d4de53f702751bab3b
@@@ -299,21 -300,19 +302,21 @@@ F ext/session/sessionD.test d4744c78334
  F ext/session/sessionE.test e60a238c47f0feb3bb707e7f35e22be09c7e8f26
  F ext/session/sessionF.test c2f178d4dfd723a5fd94a730ea2ccb44c669e3ce
  F ext/session/sessionG.test 01ef705096a9d3984eebdcca79807a211dee1b60
- F ext/session/session_common.tcl a1293167d14774b5e728836720497f40fe4ea596
+ F ext/session/session_common.tcl 9b696a341cf1d3744823715ed92bb19749b6c3d4
  F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7
  F ext/session/sessionfault2.test 04aa0bc9aa70ea43d8de82c4f648db4de1e990b0
 -F ext/session/sqlite3session.c 37485891b4add26cf61495df193c419f36556a32
 -F ext/session/sqlite3session.h 9345166bd8f80562145586cf817f707de5ecada2
 -F ext/session/test_session.c eb0bd6c1ea791c1d66ee4ef94c16500dad936386
 +F ext/session/sqlite3changebatch.c 96011bdf72ac12ebf707f4d0f0e719e333631605
 +F ext/session/sqlite3changebatch.h e72016998c9a22d439ddfd547b69e1ebac810c24
 +F ext/session/sqlite3session.c e5591f76aea6058720e04f78ae9e88487eb56c6b
- F ext/session/sqlite3session.h c772b5440f41af44631891aa7f352e9a44b740ad
- F ext/session/test_session.c 9e6a4313dc94b053edd33f54c3ffc053aeddff45
++F ext/session/sqlite3session.h 30b9ba3c5906d711b4e5b2e532d7a1f419942a29
++F ext/session/test_session.c badd5da3cb561564b093745f7d843430d1d76347
  F ext/userauth/sqlite3userauth.h 19cb6f0e31316d0ee4afdfb7a85ef9da3333a220
  F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
  F ext/userauth/userauth.c 5fa3bdb492f481bbc1709fc83c91ebd13460c69e
  F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
  F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
  F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
- F main.mk de9447348ea580282aa47dbffd20b042bfbec4e1
 -F main.mk da18a283b8fc3c6892e9205e6228f3ae60d8cd8d
++F main.mk 388cb5112039df08fef105fe43ad7a388148f3c4
  F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83
  F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
  F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
@@@ -1515,7 -1536,7 +1540,7 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P 506d6ff4b64c72d4ca65f0d15e1fdf8a132556bc
- R 437a725ec959b210c45a517f0a4720a0
 -P 0820f8b3dedfc846d187844847dfa8617539fc9a
 -R 66c67520d75b6cc9d6a9f98310fc2b1f
 -U drh
 -Z aa79b15c8c6da20e9ca7087094bfadd8
++P bee44ebc532f37e3fe61c18878e0d3db06805190 2a81763e68cdf9b8c46389b1e1a87bc2084b53e7
++R 26a7e980cb19dc3794c477a845df1a9a
 +U dan
- Z 7a3026050d391945a1ada937b36aa9ce
++Z dabf828998107ef3f44ce5005fb7fe86
diff --cc manifest.uuid
index 08b140baf5237d312d968f988047b8e0257ca3ac,40f364d25f5c8885f6621332cd13ae9e482ae3f7..16dbbd744d7e7207f2acd40cfa8fed48362159b2
@@@ -1,1 -1,1 +1,1 @@@
- bee44ebc532f37e3fe61c18878e0d3db06805190
 -2a81763e68cdf9b8c46389b1e1a87bc2084b53e7
++391344d88a284f92c59b8d96a315b69292641de0