From 06a09a828addd181074086389b83a283f523458b Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 25 Nov 2016 17:03:03 +0000 Subject: [PATCH] Small performance increase and size reduction in the OP_Column opcode. FossilOrigin-Name: a9498407e646305e7b60115d63e85c642bbd1c3f --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/vdbe.c | 9 +++++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 42d8f60af9..9e99dd58e1 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Performance\senhancement\sto\ssqlite3_snprintf(). -D 2016-11-25T15:47:53.375 +C Small\sperformance\sincrease\sand\ssize\sreduction\sin\sthe\sOP_Column\sopcode. +D 2016-11-25T17:03:03.293 F Makefile.in 6b572807415d3f0a379cebc9461416d8df4a12c8 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc bb4d970894abbbe0e88d00aac29bd52af8bc95f4 @@ -454,7 +454,7 @@ F src/update.c 68714ed42a506d782a3d75ff8f09640706d6a3b2 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c F src/util.c 3e2da6101888d073e79ecc6af5e0a2f70fa1e498 F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16 -F src/vdbe.c e76ee960a2e6d099838173599ae2d0999dc3aa63 +F src/vdbe.c 54a1d3e143a87ebcd355c956999b667dcfb64824 F src/vdbe.h c044be7050ac6bf596eecc6ab159f5dbc020a3b7 F src/vdbeInt.h 29b25318a0286c4b2599c0fbef6acf524398489a F src/vdbeapi.c 97129bec6b1553da50d8e73f523c278bda66d9f6 @@ -1534,7 +1534,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P b6acf5d4ef016326a079463e70e71c2fc95a352d -R 66214ce5c9237cac8843327752704c96 +P c53dca7fadd81ea340fef776373cbb122c9ccd46 +R 5cc42cc506bbe372234cb9f20b970e00 U drh -Z 00ed6ef21d5c142098e92d37ff95081c +Z dac9238c0e962ec79642eb1c1f1654f2 diff --git a/manifest.uuid b/manifest.uuid index a717baef40..3a997e9a3c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c53dca7fadd81ea340fef776373cbb122c9ccd46 \ No newline at end of file +a9498407e646305e7b60115d63e85c642bbd1c3f \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 9cf62f33bf..9f57b47480 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -2470,7 +2470,6 @@ case OP_Column: { assert( pC->eCurType!=CURTYPE_VTAB ); assert( pC->eCurType!=CURTYPE_PSEUDO || pC->nullRow ); assert( pC->eCurType!=CURTYPE_SORTER ); - pCrsr = pC->uc.pCursor; if( pC->cacheStatus!=p->cacheCtr ){ /*OPTIMIZATION-IF-FALSE*/ if( pC->nullRow ){ @@ -2486,6 +2485,7 @@ case OP_Column: { goto op_column_out; } }else{ + pCrsr = pC->uc.pCursor; assert( pC->eCurType==CURTYPE_BTREE ); assert( pCrsr ); assert( sqlite3BtreeCursorIsValid(pCrsr) ); @@ -2549,7 +2549,8 @@ case OP_Column: { /* Make sure zData points to enough of the record to cover the header. */ if( pC->aRow==0 ){ memset(&sMem, 0, sizeof(sMem)); - rc = sqlite3VdbeMemFromBtree(pCrsr, 0, aOffset[0], !pC->isTable, &sMem); + rc = sqlite3VdbeMemFromBtree(pC->uc.pCursor, 0, aOffset[0], + !pC->isTable, &sMem); if( rc!=SQLITE_OK ) goto abort_due_to_error; zData = (u8*)sMem.z; }else{ @@ -2662,8 +2663,8 @@ case OP_Column: { static u8 aZero[8]; /* This is the bogus content */ sqlite3VdbeSerialGet(aZero, t, pDest); }else{ - rc = sqlite3VdbeMemFromBtree(pCrsr, aOffset[p2], len, !pC->isTable, - pDest); + rc = sqlite3VdbeMemFromBtree(pC->uc.pCursor, aOffset[p2], len, + !pC->isTable, pDest); if( rc!=SQLITE_OK ) goto abort_due_to_error; sqlite3VdbeSerialGet((const u8*)pDest->z, t, pDest); pDest->flags &= ~MEM_Ephem; -- 2.47.2