- C Have\ssqlite3ota.c\suse\sgrave\saccents\sinstead\sof\sdouble-quotes\sto\senclose\sidentifiers\sin\sgenerated\sSQL.\sTo\savoid\shaving\sthe\sSQL\sengine\ssubstitute\sa\sliteral\sstring\sif\sa\scolumn\sreference\scannot\sbe\sresolved.
- D 2014-09-15T15:22:32.496
-C Remove\sthe\sEXPENSIVE_ASSERTS\sin\spcache.c\shaving\sto\sdo\swith\sthe\spSynced\sfield\nof\sthe\sPcache\sobject,\sas\sthey\sare\sincorrect,\sas\srevealed\sby\srecent\spcache\nenhancements.
-D 2014-09-15T14:59:12.274
++C Merge\slatest\strunk\schanges\swith\sthis\sbranch.
++D 2014-09-15T15:34:31.844
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
- F main.mk ed2e37f6cd016ecc614165b3392bdbf89a129b4a
-F main.mk bbc8b6000ed143a1a8d31d3b4995c359a3188fa1
++F main.mk 8e4a294f77e23b2d19e2ac8f5a8761d260bfa4af
F mkopcodec.awk c2ff431854d702cdd2d779c9c0d1f58fa16fa4ea
F mkopcodeh.awk c6b3fa301db6ef7ac916b14c60868aeaec1337b5
F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
F sqlite3.1 3d8b83c91651f53472ca17599dae3457b8b89494
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c b00900877f766f116f9e16116f1ccacdc21d82f1
- F src/analyze.c f00f06e6ef66c61b41f154889fe7caf5ed55a0ce
- F src/attach.c 3801129015ef59d76bf23c95ef9b0069d18a0c52
- F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
+ F src/alter.c ba266a779bc7ce10e52e59e7d3dc79fa342e8fdb
+ F src/analyze.c 79383a54fee3b7f1fb03dd4c8c8115583f506de5
+ F src/attach.c f4e94df2d1826feda65eb0939f7f6f5f923a0ad9
+ F src/auth.c d8abcde53426275dab6243b441256fcd8ccbebb2
F src/backup.c a31809c65623cc41849b94d368917f8bb66e6a7e
F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb
- F src/btmutex.c ec9d3f1295dafeb278c3830211cc5584132468f4
- F src/btree.c 9cb1989073502a9d2f18fbb0e7df8ad89dda2dcf
+ F src/btmutex.c 49ca66250c7dfa844a4d4cb8272b87420d27d3a5
-F src/btree.c e4916b441bb036897cc69df275a2df3fea4d53b6
++F src/btree.c 3957262c61e865833021af435b6b6daf3a0829be
F src/btree.h a79aa6a71e7f1055f01052b7f821bd1c2dce95c8
- F src/btreeInt.h cf180d86b2e9e418f638d65baa425c4c69c0e0e3
- F src/build.c c26b233dcdb1e2c8f468d49236c266f9f3de96d8
- F src/callback.c b97d0695ffcf6a8710ee445ffe56ee387d4d8a6f
- F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
- F src/ctime.c 0231df905e2c4abba4483ee18ffc05adc321df2a
- F src/date.c 593c744b2623971e45affd0bde347631bdfa4625
- F src/delete.c 3c2a375c0329247d01222170ae19ad8a52ecbf9a
- F src/expr.c e1691ab0fe6be7247ef073b0038fb8ecd9944fad
+ F src/btreeInt.h e0ecb5dba292722039a7540beb3fc448103273cc
+ F src/build.c 047d7e1d2d89fa55134fa1d6b669c9c2983c0d11
+ F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
+ F src/complete.c 535183afb3c75628b78ce82612931ac7cdf26f14
+ F src/ctime.c 16cd19215d9fd849ee2b7509b092f2e0bbd6a958
+ F src/date.c 57a7f9ba9f6b4d5268f5e411739066a611f99036
-F src/delete.c fae81cc2eb14b75267d4f47d3cfc9ae02aae726f
++F src/delete.c df9e2f273675ebf8d7f229e7668ba941bdc7021a
+ F src/expr.c 19392d98e089640c3336e65b4254cc337efef7d1
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
- F src/fkey.c 8d81a780ad78d16ec9082585758a8f1d6bf02ca3
- F src/func.c bbb724b74ed96ca42675a7274646a71dd52bcda7
- F src/global.c 1e4bd956dc2f608f87d2a929abc4a20db65f30e4
+ F src/fkey.c da985ae673efef2c712caef825a5d2edb087ead7
+ F src/func.c 5d498933f6168dff80941c873805fe04dc2b766d
+ F src/global.c 5110fa12e09729b84eee0191c984ec4008e21937
F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5
F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094
F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
- F src/insert.c 62b0ceab1720dc74ed1fbcf953224132245704d8
-F src/insert.c 0b073fade178d9dbd990bbb32b4438e50b884a06
++F src/insert.c 25e63641927530eee0487c5a8bbf6e5414c4c753
F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
- F src/legacy.c 87c92f4a08e2f70220e3b22a9c3b2482d36a134a
- F src/lempar.c cdf0a000315332fc9b50b62f3b5e22e080a0952b
- F src/loadext.c 31c2122b7dd05a179049bbf163fd4839f181cbab
- F src/main.c c9802dc99c019fbba516202300d56be2c478fa93
- F src/malloc.c 954de5f998c23237e04474a3f2159bf483bba65a
+ F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e
+ F src/lempar.c 7274c97d24bb46631e504332ccd3bd1b37841770
+ F src/loadext.c de741e66e5ddc1598d904d7289239696e40ed994
-F src/main.c d15621461fb0c52675eba2b650492ed1beef69ab
++F src/main.c 6b9fd1867a5575db2119f850302a883e7684009c
+ F src/malloc.c cc015821ba267ad5c91dc8761d0498a3fc3ce6ce
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
- F src/mem1.c c0c990fcaddff810ea277b4fb5d9138603dd5d4b
+ F src/mem1.c faf615aafd8be74a71494dfa027c113ea5c6615f
F src/mem2.c dce31758da87ec2cfa52ba4c5df1aed6e07d8e8f
F src/mem3.c 61c9d47b792908c532ca3a62b999cf21795c6534
- F src/mem5.c 74670012946c4adc8a6ad84d03acc80959c3e529
- F src/memjournal.c 0683aac6cab6ec2b5374c0db37c0deb2436a3785
+ F src/mem5.c 61eeb90134f9a5be6c2e68d8daae7628b25953fb
+ F src/memjournal.c 3eb2c0b51adbd869cb6a44780323f05fa904dc85
F src/mutex.c 84a073c9a23a8d7bdd2ea832522d1730df18812c
- F src/mutex.h 5bc526e19dccc412b7ff04642f6fdad3fdfdabea
+ F src/mutex.h 779d588e3b7756ec3ecf7d78cde1d84aba414f85
F src/mutex_noop.c f3f09fd7a2eb4287cfc799753ffc30380e7b71a1
F src/mutex_unix.c 1b10d5413dfc794364a8adf3eb3a192926b43fa3
F src/mutex_w32.c 06bfff9a3a83b53389a51a967643db3967032e1e
F src/notify.c 9711a7575036f0d3040ba61bc6e217f13a9888e7
F src/os.c 1b147e4cf7cc39e618115c14a086aed44bc91ace
- F src/os.h 60d419395e32a8029fa380a80a3da2e9030f635e
+ F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf
F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
- F src/os_unix.c 8525ca79457c5b4673a5fda2774ee39fe155f40f
- F src/os_win.c 2aa8aa7780d7cf03e912d2088ab2ec5c32f33dc5
+ F src/os_unix.c addd023b26c623fec4dedc110fc4370a65b4768c
+ F src/os_win.c 0a4042ef35f322e86fa01f6c8884c5e645b911e7
F src/os_win.h 09e751b20bbc107ffbd46e13555dc73576d88e21
- F src/pager.c 9611de7c00ea3cfe35295d88ebda1a096b71b41d
-F src/pager.c c6c809987f0c6a4e27634099d062d425527de173
-F src/pager.h ffd5607f7b3e4590b415b007a4382f693334d428
++F src/pager.c b7c625fc92e86fea1971b8a630009eab3ff18997
+F src/pager.h 6a08df06b7edc3684375c0fab40602c695a044f2
F src/parse.y 22d6a074e5f5a7258947a1dc55a9bf946b765dd0
- F src/pcache.c 3b3791297e8977002e56b4a9b8916f2039abad9b
+ F src/pcache.c 4121a0571c18581ee9f82f086d5e2030051ebd6a
F src/pcache.h 9b559127b83f84ff76d735c8262f04853be0c59a
- F src/pcache1.c c5af6403a55178c9d1c09e4f77b0f9c88822762c
- F src/pragma.c e1b8049c059ccab0afc2a483ff2e0dd599fcb124
- F src/prepare.c 314961aa6650cc860394cb2f31931cf2de93baa8
- F src/printf.c 00986c86ddfffefc2fd3c73667ff51b3b9709c74
+ F src/pcache1.c dab8ab930d4a73b99768d881185994f34b80ecaa
-F src/pragma.c 3f3e959390a10c0131676f0e307acce372777e0f
-F src/prepare.c 6ef0cf2f9274982988ed6b7cab1be23147e94196
++F src/pragma.c 5dba6b386cbfe0b094350b7d6c99fd410958f22d
++F src/prepare.c 905c3c601ccadd22bb70b63cd48392f7126c9807
+ F src/printf.c e74925089a85e3c9f0e315595f41c139d3d118c2
F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
- F src/resolve.c 0ea356d32a5e884add23d1b9b4e8736681dd5697
- F src/rowset.c a9c9aae3234b44a6d7c6f5a3cadf90dce1e627be
- F src/select.c 89e569b263535662f54b537eb9118b2c554ae7aa
- F src/shell.c 713cef4d73c05fc8e12f4960072329d767a05d50
- F src/sqlite.h.in 578c42cb3899ee6ad93a0cccff4eb47e1e9a2c80
+ F src/resolve.c a3466128b52a86c466e47ac1a19e2174f7b5cf89
+ F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
+ F src/select.c 0cd6706fd52ae5db229e9041094db6ec27195335
+ F src/shell.c c00220cdd7f2027780bc25b78376c16dc24e4b7d
-F src/sqlite.h.in 8b018219ce988913e5977d5de9ab4beb33be23b6
++F src/sqlite.h.in 5bcaca9d5a8403fda0c8677de4c527907b317f1d
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
- F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc
- F src/sqliteInt.h 7c090825333d91ca392c2479a9e835e7b6a5eb12
+ F src/sqlite3ext.h 17d487c3c91b0b8c584a32fbeb393f6f795eea7d
-F src/sqliteInt.h 0803e900eb1882f7dd88e86ddcddd2d1b27c8d86
++F src/sqliteInt.h 3210f8bd040d1c6d8b1616325b15dd3ff749e48f
F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
F src/status.c 7ac05a5c7017d0b9f0b4bcd701228b784f987158
- F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
- F src/tclsqlite.c 29357f2be7b0d00e8ea900eaf727e0c5ffeaa660
- F src/test1.c e9a0e5804b078532e69e69ec14c8326bf2cfc318
+ F src/table.c 218ae2ba022881846741dfc8351aefdf129e0377
-F src/tclsqlite.c c67d310c833046cccc192125d64ad422ab882684
-F src/test1.c 523cd70ded28db71af9a30ec184cbe0957de9575
++F src/tclsqlite.c ac7d1672f69c9d69defeb022f656d04f5cefd198
++F src/test1.c 75655557ebc7138e1d745313635b6b100c90c151
F src/test2.c 98049e51a17dc62606a99a9eb95ee477f9996712
F src/test3.c 1c0e5d6f080b8e33c1ce8b3078e7013fdbcd560c
F src/test4.c 9b32d22f5f150abe23c1830e2057c4037c45b3df
F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
F src/threads.c 22dded4283dc4b25422f6444cdcb8d6b1ea0b5ff
- F src/tokenize.c ae45399d6252b4d736af43bee1576ce7bff86aec
- F src/trigger.c 4bddd12803275aa98f1c7ce0118fceb02b2167f6
- F src/update.c ea336ce7b8b3fc5e316ba8f082e6445babf81059
+ F src/tokenize.c 3df63041994f55afeb168b463ec836e8f1c50e7c
+ F src/trigger.c 25571661fdeae8c7f975ff40ffec205520a3f92f
+ F src/update.c 729f6f18fc27740591d085e1172cebe311144bf0
F src/utf.c 77abb5e6d27f3d236e50f7c8fff1d00e15262359
- F src/util.c 068dcd26354a3898ccc64ad5c4bdb95a7a15d33a
- F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
- F src/vdbe.c 90db7ad740b6d3f7ab446e6244dbc17ce495cca6
+ F src/util.c 4006c01772bd8d8ac4306d523bbcee41d3e392d8
+ F src/vacuum.c 59f03f92bcff57faa6a8ca256eb29ccddfb0614a
+ F src/vdbe.c 9a45dcbcc967fc0cb9248c75ba245d1d47de3e78
F src/vdbe.h c63fad052c9e7388d551e556e119c0bcf6bebdf8
- F src/vdbeInt.h cdc8e421f85beb1ac9b4669ec5beadab6faa15e0
- F src/vdbeapi.c 09677a53dd8c71bcd670b0bd073bb9aefa02b441
- F src/vdbeaux.c cef5d34a64ae3a65b56d96d3fd663246ec8e1c36
+ F src/vdbeInt.h b4843c35c3ba533b69d4250f550b5bacf2fb013d
+ F src/vdbeapi.c 06b712d4772b318b69cd37a416deb1ff0426aa8c
+ F src/vdbeaux.c 91fd1e0c54a765838dc61fcf79f31acce035ce38
-F src/vdbeblob.c 848238dc73e93e48432991bb5651bf87d865eca4
+F src/vdbeblob.c a8e2c3baa3e7081347c4677185a631bfc43de043
- F src/vdbemem.c 921d5468a68ac06f369810992e84ca22cc730a62
- F src/vdbesort.c 7c45bfcd823f30d172bbbc1b9f51ef4402fbfe8d
- F src/vdbetrace.c 6f52bc0c51e144b7efdcfb2a8f771167a8816767
+ F src/vdbemem.c dc36ea9fe26c25550c50085f388167086ef7d73a
-F src/vdbesort.c ab39574ec6e0c6213bd2a5c09cca9f9f8ba98450
++F src/vdbesort.c 36ac09004c2ca57486ba3d1f4ac5d0d62257b136
+ F src/vdbetrace.c 16d39c1ef7d1f4a3a7464bea3b7b4bdd7849c415
F src/vtab.c 019dbfd0406a7447c990e1f7bd1dfcdb8895697f
- F src/wal.c 93b4fcb56a98f435a2cb66024bb2b12d66d1ff53
-F src/wal.c 10e7de7ce90865a68153f001a61f1d985cd17983
-F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
++F src/wal.c 6f5ff51117293e7b2c75ad21834f51115e59ea96
+F src/wal.h 237bc4484f7c289f094ecb6efb2b6c02005484e1
- F src/walker.c 11edb74d587bc87b33ca96a5173e3ec1b8389e45
- F src/where.c d9eae96b2cbbe4842eac3ee156ccd1b933d802c4
- F src/whereInt.h 923820bee9726033a501a08d2fc69b9c1ee4feb3
+ F src/walker.c c253b95b4ee44b21c406e2a1052636c31ea27804
+ F src/where.c 839b5e1db2507e221ad1c308f148a8519ed750be
+ F src/whereInt.h 124d970450955a6982e174b07c320ae6d62a595c
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
- F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
+ F test/aggnested.test b35b4cd69fc913f90d39a575e171e1116c3a4bb7
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test 6ff7b43c2b4b905c74dc4a813d201d0fa64c5783
F test/alter.test 547dc2d292644301ac9a7dda22b319b74f9c08d2
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
- P 473a72d7009a22ea514a98ee8869e7e7bca14cf5
- R 6e8944bfcc8da0bf6b98d50ae7beb161
-P 0bdf1a086b3946722f4d4b328e25917f61c14713
-R 6604c3404d8f943a6eb10e6ee4c1398f
-U drh
-Z 9f457bfb74de1e07b081e001cb58874a
++P 79f2418429aa05c56069c56d51b4d72f662a6970 69a64560777f85b47349b4b2aab01dc99298592e
++R 10cbf38158f2f089e176ffb2e809ade0
+U dan
- Z 793743aae527be1bb170d7639993b8ad
++Z c612131a6abb7d1e449d4f88a8b72de0
}
+/*
+** tclcmd: sqlite3_transaction_save DB
+*/
+static int testTransactionSave(
+ void * clientData,
+ Tcl_Interp *interp,
+ int objc,
+ Tcl_Obj *CONST objv[]
+){
+ void *pState;
+ int nState;
+ sqlite3 *db;
+ int rc;
+
+ if( objc!=2 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "DB");
+ return TCL_ERROR;
+ }
+ if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR;
+
+ rc = sqlite3_transaction_save(db, &pState, &nState);
+ if( rc==SQLITE_OK ){
+ Tcl_SetObjResult(interp, Tcl_NewByteArrayObj(pState, nState));
+ }else{
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+ return TCL_ERROR;
+ }
+
+ sqlite3_free(pState);
+ return TCL_OK;
+}
+
+/*
+** tclcmd: sqlite3_transaction_restore DB BLOB
+*/
+static int testTransactionRestore(
+ void * clientData,
+ Tcl_Interp *interp,
+ int objc,
+ Tcl_Obj *CONST objv[]
+){
+ void *pState;
+ int nState;
+ sqlite3 *db;
+ int rc;
+
+ if( objc!=3 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "DB BLOB");
+ return TCL_ERROR;
+ }
+ if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR;
+ pState = (void*)Tcl_GetByteArrayFromObj(objv[2], &nState);
+
+ rc = sqlite3_transaction_restore(db, pState, nState);
+ if( rc==SQLITE_OK ){
+ Tcl_ResetResult(interp);
+ }else{
+ Tcl_SetObjResult(interp, Tcl_NewStringObj(sqlite3ErrName(rc), -1));
+ return TCL_ERROR;
+ }
+
+ return TCL_OK;
+}
+
+ #ifdef SQLITE_USER_AUTHENTICATION
+ #include "sqlite3userauth.h"
+ /*
+ ** tclcmd: sqlite3_user_authenticate DB USERNAME PASSWORD
+ */
+ static int test_user_authenticate(
+ ClientData clientData, /* Unused */
+ Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
+ int objc, /* Number of arguments */
+ Tcl_Obj *CONST objv[] /* Command arguments */
+ ){
+ char *zUser = 0;
+ char *zPasswd = 0;
+ int nPasswd = 0;
+ sqlite3 *db;
+ int rc;
+
+ if( objc!=4 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "DB USERNAME PASSWORD");
+ return TCL_ERROR;
+ }
+ if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ){
+ return TCL_ERROR;
+ }
+ zUser = Tcl_GetString(objv[2]);
+ zPasswd = Tcl_GetStringFromObj(objv[3], &nPasswd);
+ rc = sqlite3_user_authenticate(db, zUser, zPasswd, nPasswd);
+ Tcl_SetResult(interp, (char *)t1ErrorName(rc), TCL_STATIC);
+ return TCL_OK;
+ }
+ #endif /* SQLITE_USER_AUTHENTICATION */
+
+ #ifdef SQLITE_USER_AUTHENTICATION
+ /*
+ ** tclcmd: sqlite3_user_add DB USERNAME PASSWORD ISADMIN
+ */
+ static int test_user_add(
+ ClientData clientData, /* Unused */
+ Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
+ int objc, /* Number of arguments */
+ Tcl_Obj *CONST objv[] /* Command arguments */
+ ){
+ char *zUser = 0;
+ char *zPasswd = 0;
+ int nPasswd = 0;
+ int isAdmin = 0;
+ sqlite3 *db;
+ int rc;
+
+ if( objc!=5 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "DB USERNAME PASSWORD ISADMIN");
+ return TCL_ERROR;
+ }
+ if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ){
+ return TCL_ERROR;
+ }
+ zUser = Tcl_GetString(objv[2]);
+ zPasswd = Tcl_GetStringFromObj(objv[3], &nPasswd);
+ Tcl_GetBooleanFromObj(interp, objv[4], &isAdmin);
+ rc = sqlite3_user_add(db, zUser, zPasswd, nPasswd, isAdmin);
+ Tcl_SetResult(interp, (char *)t1ErrorName(rc), TCL_STATIC);
+ return TCL_OK;
+ }
+ #endif /* SQLITE_USER_AUTHENTICATION */
+
+ #ifdef SQLITE_USER_AUTHENTICATION
+ /*
+ ** tclcmd: sqlite3_user_change DB USERNAME PASSWORD ISADMIN
+ */
+ static int test_user_change(
+ ClientData clientData, /* Unused */
+ Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
+ int objc, /* Number of arguments */
+ Tcl_Obj *CONST objv[] /* Command arguments */
+ ){
+ char *zUser = 0;
+ char *zPasswd = 0;
+ int nPasswd = 0;
+ int isAdmin = 0;
+ sqlite3 *db;
+ int rc;
+
+ if( objc!=5 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "DB USERNAME PASSWORD ISADMIN");
+ return TCL_ERROR;
+ }
+ if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ){
+ return TCL_ERROR;
+ }
+ zUser = Tcl_GetString(objv[2]);
+ zPasswd = Tcl_GetStringFromObj(objv[3], &nPasswd);
+ Tcl_GetBooleanFromObj(interp, objv[4], &isAdmin);
+ rc = sqlite3_user_change(db, zUser, zPasswd, nPasswd, isAdmin);
+ Tcl_SetResult(interp, (char *)t1ErrorName(rc), TCL_STATIC);
+ return TCL_OK;
+ }
+ #endif /* SQLITE_USER_AUTHENTICATION */
+
+ #ifdef SQLITE_USER_AUTHENTICATION
+ /*
+ ** tclcmd: sqlite3_user_delete DB USERNAME
+ */
+ static int test_user_delete(
+ ClientData clientData, /* Unused */
+ Tcl_Interp *interp, /* The TCL interpreter that invoked this command */
+ int objc, /* Number of arguments */
+ Tcl_Obj *CONST objv[] /* Command arguments */
+ ){
+ char *zUser = 0;
+ sqlite3 *db;
+ int rc;
+
+ if( objc!=3 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "DB USERNAME");
+ return TCL_ERROR;
+ }
+ if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ){
+ return TCL_ERROR;
+ }
+ zUser = Tcl_GetString(objv[2]);
+ rc = sqlite3_user_delete(db, zUser);
+ Tcl_SetResult(interp, (char *)t1ErrorName(rc), TCL_STATIC);
+ return TCL_OK;
+ }
+ #endif /* SQLITE_USER_AUTHENTICATION */
+
/*
** Register commands with the TCL interpreter.
*/
{ "load_static_extension", tclLoadStaticExtensionCmd },
{ "sorter_test_fakeheap", sorter_test_fakeheap },
{ "sorter_test_sort4_helper", sorter_test_sort4_helper },
-
+ { "sqlite3_transaction_save", testTransactionSave },
+ { "sqlite3_transaction_restore", testTransactionRestore },
+ #ifdef SQLITE_USER_AUTHENTICATION
+ { "sqlite3_user_authenticate", test_user_authenticate, 0 },
+ { "sqlite3_user_add", test_user_add, 0 },
+ { "sqlite3_user_change", test_user_change, 0 },
+ { "sqlite3_user_delete", test_user_delete, 0 },
+ #endif
};
++
static int bitmask_size = sizeof(Bitmask)*8;
int i;
extern int sqlite3_sync_count, sqlite3_fullsync_count;