diff options
-rw-r--r-- | manifest | 12 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/vdbeblob.c | 36 |
3 files changed, 25 insertions, 25 deletions
@@ -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 diff --git a/manifest.uuid b/manifest.uuid index 37eeb2a0f..e7a7e7b18 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0aaf3febb00f622c5ef0853b2491d69f7ca7a21e
\ No newline at end of file +d23849f64a110e336f26282bf2b961a2a2372468
\ No newline at end of file diff --git a/src/vdbeblob.c b/src/vdbeblob.c index e5f08ce93..f9015ad6f 100644 --- a/src/vdbeblob.c +++ b/src/vdbeblob.c @@ -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; |