-C Remove\san\sunused\s#define\sfrom\swhereInt.h.\sAdd\scomments\sdescribing\sthe\snew\ssqlite3BtreeCursor()\sflags.
-D 2015-10-23T11:50:23.745
+C Test\sthat\sthe\sbinary\srecord\s"0x01\s0x00"\sis\sinterpreted\sby\sOP_Column\sas\sa\svector\sof\sNULL\s(or\sdefault)\svalues.
+D 2015-10-26T16:31:18.909
F Makefile.in 2ea961bc09e441874eb3d1bf7398e04feb24f3ee
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 702d3e98f3afc6587a78481257f3c4c900efc3a4
F src/tclsqlite.c d9439b6a910985b7fff43ba6756bcef00de22649
F src/test1.c 8fff9c5aa63d6490f516d018b70c12a9cb9a4d8a
F src/test2.c 577961fe48961b2f2e5c8b56ee50c3f459d3359d
-F src/test3.c 11b13d561846e5d1ffd29653be340d2f4b59a723
+F src/test3.c 5d5e771bee407b2a8bee1602228eca167f8f649a
F src/test4.c d168f83cc78d02e8d35567bb5630e40dcd85ac1e
F src/test5.c 5a34feec76d9b3a86aab30fd4f6cc9c48cbab4c1
F src/test6.c 41cacf3b0dd180823919bf9e1fbab287c9266723
F test/fkey7.test 72e915890ee4a005daaf3002cb208e8fe973ac13
F test/fkey8.test 8f08203458321e6c19a263829de4cfc936274ab0
F test/fkey_malloc.test 594a7ea1fbab553c036c70813cd8bd9407d63749
-F test/fordelete.test a30de567eb69a377e0c3ab1a8be4d74588de2a33
+F test/fordelete.test ba12ec1d27cc34a4c23db4446029126d773f3849
F test/format4.test 1f0cac8ff3895e9359ed87e41aaabee982a812eb
F test/fts-9fd058691.test 78b887e30ae6816df0e1fed6259de4b5a64ad33c
F test/fts1a.test 46090311f85da51bb33bd5ce84f7948359c6d8d7
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P cdc92919e600007cae5eb61223684f48a65babc0
-R 372ed0826353f0987c018dd56c7ed9e6
+P 4c0ba8be43bb7c7100456bd8cd6921c164be31e1
+R 034dc33437dfb21294c759656e936af8
U dan
-Z 7d97368360f9df42d106befc4db01e49
+Z d7a6f95ed6a65ff4ab5499c664dec3c3
-4c0ba8be43bb7c7100456bd8cd6921c164be31e1
\ No newline at end of file
+5bdc3c82bd10f924c12568eb0fa7a07393fc864f
\ No newline at end of file
memset(pCur, 0, sqlite3BtreeCursorSize());
sqlite3BtreeEnter(pBt);
#ifndef SQLITE_OMIT_SHARED_CACHE
- rc = sqlite3BtreeLockTable(pBt, iTable, wrFlag);
+ rc = sqlite3BtreeLockTable(pBt, iTable, !!wrFlag);
#endif
if( rc==SQLITE_OK ){
rc = sqlite3BtreeCursor(pBt, iTable, wrFlag, 0, pCur);
return TCL_OK;
}
+/*
+** usage: btree_insert CSR ?KEY? VALUE
+**
+** Set the size of the cache used by btree $ID.
+*/
+static int btree_insert(
+ ClientData clientData,
+ Tcl_Interp *interp,
+ int objc,
+ Tcl_Obj *const objv[]
+){
+ BtCursor *pCur;
+ int rc;
+ int bIntkey = 0;
+ void *pKey = 0;
+ int nKey = 0;
+ void *pData = 0;
+ int nData = 0;
+
+ if( objc!=4 && objc!=3 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "?-intkey? CSR KEY VALUE");
+ return TCL_ERROR;
+ }
+
+ if( objc==4 ){
+ if( Tcl_GetIntFromObj(interp, objv[2], &nKey) ) return TCL_ERROR;
+ pData = (void*)Tcl_GetByteArrayFromObj(objv[3], &nData);
+ }else{
+ pKey = (void*)Tcl_GetByteArrayFromObj(objv[2], &nKey);
+ }
+ pCur = (BtCursor*)sqlite3TestTextToPtr(Tcl_GetString(objv[1]));
+
+ sqlite3BtreeEnter(pCur->pBtree);
+ if( rc==SQLITE_OK ){
+ rc = sqlite3BtreeInsert(pCur, pKey, nKey, pData, nData, 0, 0, 0);
+ }
+ sqlite3BtreeLeave(pCur->pBtree);
+
+ Tcl_ResetResult(interp);
+ if( rc ){
+ Tcl_AppendResult(interp, sqlite3ErrName(rc), 0);
+ return TCL_ERROR;
+ }
+ return TCL_OK;
+}
/*
Tcl_CreateCommand(interp, aCmd[i].zName, aCmd[i].xProc, 0, 0);
}
+ Tcl_CreateObjCommand(interp, "btree_insert", btree_insert, 0, 0);
+
return TCL_OK;
}
} {
do_adp_test 2.$tn $sql $res
}
-
+
+#-------------------------------------------------------------------------
+# Test that a record that consists of the bytes:
+#
+# 0x01 0x00
+#
+# is interpreted by OP_Column as a vector of NULL values (assuming the
+# default column values are NULL). Also test that:
+#
+# 0x00
+#
+# is handled in the same way.
+#
+do_execsql_test 3.0 {
+ CREATE TABLE x1(a INTEGER PRIMARY KEY, b, c, d);
+ CREATE TABLE x2(a INTEGER PRIMARY KEY, b, c, d);
+}
+
+do_test 3.1 {
+ set root [db one { SELECT rootpage FROM sqlite_master WHERE name = 'x1' }]
+ db eval {
+ BEGIN IMMEDIATE;
+ }
+ set bt [btree_from_db db]
+ set csr [btree_cursor $bt $root 1]
+ btree_insert $csr 5 "\000"
+ btree_close_cursor $csr
+ db eval { COMMIT }
+
+ db eval {
+ SELECT * FROM x1;
+ }
+} {5 {} {} {}}
+
+do_test 3.2 {
+ set root [db one { SELECT rootpage FROM sqlite_master WHERE name = 'x2' }]
+ db eval {
+ BEGIN IMMEDIATE;
+ }
+ set bt [btree_from_db db]
+ set csr [btree_cursor $bt $root 1]
+ btree_insert $csr 6 "\000"
+ btree_close_cursor $csr
+ db eval { COMMIT }
+
+ db eval {
+ SELECT * FROM x2;
+ }
+} {6 {} {} {}}
+
finish_test
+