]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Simplification of the VDBE bytecode for incremental blob I/O.
authordrh <drh@noemail.net>
Mon, 18 Jan 2016 00:46:11 +0000 (00:46 +0000)
committerdrh <drh@noemail.net>
Mon, 18 Jan 2016 00:46:11 +0000 (00:46 +0000)
FossilOrigin-Name: d23849f64a110e336f26282bf2b961a2a2372468

manifest
manifest.uuid
src/vdbeblob.c

index 1042db4582db43b892d8b3d024bc59791d5c3953..15c1cd6f7b0d029ec5e28a680a8b6a2953564cd7 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sproblem\swith\sSQLITE_TEST_REALLOC_STRESS.
-D 2016-01-18T00:20:26.450
+C Simplification\sof\sthe\sVDBE\sbytecode\sfor\sincremental\sblob\sI/O.
+D 2016-01-18T00:46:11.199
 F Makefile.in a476545d0c8626224d0bacac85c6e2967474af81
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 01e855f958932d0d3ed62ec675fc63e2cef61fcb
@@ -413,7 +413,7 @@ F src/vdbe.h 7a733ea8aac1b77305a67698e784fa3484ee3337
 F src/vdbeInt.h 42eefa4f9e7432b9968d321b44e48821ec13b189
 F src/vdbeapi.c ffae8f5af4570fbd548504e815e9fb7227f0822e
 F src/vdbeaux.c 95e067a5e2a75e128d45ca597388dc83c58142f0
-F src/vdbeblob.c 8542f282b58293bd61c2ea4b2125f250f4fc9543
+F src/vdbeblob.c 37c3d11a753e403698c69e17383d282e1ae73e75
 F src/vdbemem.c b9181e77eca2a095929d46250daf85c8d2621fc0
 F src/vdbesort.c 0971557e5d3c289e46f56a52aed2197c13251de7
 F src/vdbetrace.c 8befe829faff6d9e6f6e4dee5a7d3f85cc85f1a0
@@ -1417,7 +1417,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 61deab043dcea860070dba6b02601a7de627fff1
-R 4379f64b4cb45ea0db7a5f863224d3f6
+P 0aaf3febb00f622c5ef0853b2491d69f7ca7a21e
+R 8210381425f8a73bf29afce4a64c9930
 U drh
-Z e0f8e155ee8f1f04cd4cfaa23a1af003
+Z 0317022cefd345ebef2be02c7eb84046
index 37eeb2a0f1f59b71f57f22d659f26e7e6e0197c9..e7a7e7b1879241fbedbb7793c52f951fe5a60971 100644 (file)
@@ -1 +1 @@
-0aaf3febb00f622c5ef0853b2491d69f7ca7a21e
\ No newline at end of file
+d23849f64a110e336f26282bf2b961a2a2372468
\ No newline at end of file
index e5f08ce933cfbdee97372fc535b5b90049935308..f9015ad6f4b311d581abba4a263efd2facb41d54 100644 (file)
@@ -249,19 +249,19 @@ int sqlite3_blob_open(
       ** which closes the b-tree cursor and (possibly) commits the 
       ** transaction.
       */
-      static const int iLn = VDBE_OFFSET_LINENO(3);
+      static const int iLn = VDBE_OFFSET_LINENO(4);
       static const VdbeOpList openBlob[] = {
-        /* {OP_Transaction, 0, 0, 0},  // inserted separately */
-        {OP_TableLock, 0, 0, 0},       /* 0: Acquire a read or write lock */
-        {OP_OpenRead, 0, 0, 0},        /* 1: Open cursor 0 for reading */
-        {OP_OpenWrite, 0, 0, 0},       /* 2: Open cursor 0 for read/write */
-        {OP_Variable, 1, 1, 1},        /* 3: Push the rowid to the stack */
-        {OP_NotExists, 0, 10, 1},      /* 4: Seek the cursor */
-        {OP_Column, 0, 0, 1},          /* 5  */
-        {OP_ResultRow, 1, 0, 0},       /* 6  */
-        {OP_Goto, 0, 4, 0},            /* 7  */
-        {OP_Close, 0, 0, 0},           /* 8  */
-        {OP_Halt, 0, 0, 0},            /* 9 */
+                                    /* addr/ofst */
+        /* {OP_Transaction, 0, 0, 0},  // 0/   inserted separately */
+        {OP_TableLock, 0, 0, 0},       /* 1/0: Acquire a read or write lock */
+        {OP_OpenRead, 0, 0, 0},        /* 2/1: Open a cursor */
+        {OP_Variable, 1, 1, 0},        /* 3/2: Move ?1 into reg[1] */
+        {OP_NotExists, 0, 8, 1},       /* 4/3: Seek the cursor */
+        {OP_Column, 0, 0, 1},          /* 5/4  */
+        {OP_ResultRow, 1, 0, 0},       /* 6/5  */
+        {OP_Goto, 0, 3, 0},            /* 7/6  */
+        {OP_Close, 0, 0, 0},           /* 8/7  */
+        {OP_Halt, 0, 0, 0},            /* 9/8  */
       };
       Vdbe *v = (Vdbe *)pBlob->pStmt;
       int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
@@ -292,9 +292,9 @@ int sqlite3_blob_open(
 
         /* Remove either the OP_OpenWrite or OpenRead. Set the P2 
         ** parameter of the other to pTab->tnum.  */
-        aOp[2-flags].opcode = OP_Noop;
-        aOp[1+flags].p2 = pTab->tnum;
-        aOp[1+flags].p3 = iDb;   
+        if( flags ) aOp[1].opcode = OP_OpenWrite;
+        aOp[1].p2 = pTab->tnum;
+        aOp[1].p3 = iDb;   
 
         /* Configure the number of columns. Configure the cursor to
         ** think that the table has one more column than it really
@@ -303,9 +303,9 @@ int sqlite3_blob_open(
         ** we can invoke OP_Column to fill in the vdbe cursors type 
         ** and offset cache without causing any IO.
         */
-        aOp[1+flags].p4type = P4_INT32;
-        aOp[1+flags].p4.i = pTab->nCol+1;
-        aOp[5].p2 = pTab->nCol;
+        aOp[1].p4type = P4_INT32;
+        aOp[1].p4.i = pTab->nCol+1;
+        aOp[4].p2 = pTab->nCol;
 
         pParse->nVar = 1;
         pParse->nMem = 1;