1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Small performance increase and size reduction in the OP_Column opcode.

FossilOrigin-Name: a9498407e646305e7b60115d63e85c642bbd1c3f
This commit is contained in:
drh
2016-11-25 17:03:03 +00:00
parent e9bb566096
commit 06a09a828a
3 changed files with 12 additions and 11 deletions

View File

@@ -1,5 +1,5 @@
C Performance\senhancement\sto\ssqlite3_snprintf(). C Small\sperformance\sincrease\sand\ssize\sreduction\sin\sthe\sOP_Column\sopcode.
D 2016-11-25T15:47:53.375 D 2016-11-25T17:03:03.293
F Makefile.in 6b572807415d3f0a379cebc9461416d8df4a12c8 F Makefile.in 6b572807415d3f0a379cebc9461416d8df4a12c8
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc bb4d970894abbbe0e88d00aac29bd52af8bc95f4 F Makefile.msc bb4d970894abbbe0e88d00aac29bd52af8bc95f4
@@ -454,7 +454,7 @@ F src/update.c 68714ed42a506d782a3d75ff8f09640706d6a3b2
F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
F src/util.c 3e2da6101888d073e79ecc6af5e0a2f70fa1e498 F src/util.c 3e2da6101888d073e79ecc6af5e0a2f70fa1e498
F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16 F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16
F src/vdbe.c e76ee960a2e6d099838173599ae2d0999dc3aa63 F src/vdbe.c 54a1d3e143a87ebcd355c956999b667dcfb64824
F src/vdbe.h c044be7050ac6bf596eecc6ab159f5dbc020a3b7 F src/vdbe.h c044be7050ac6bf596eecc6ab159f5dbc020a3b7
F src/vdbeInt.h 29b25318a0286c4b2599c0fbef6acf524398489a F src/vdbeInt.h 29b25318a0286c4b2599c0fbef6acf524398489a
F src/vdbeapi.c 97129bec6b1553da50d8e73f523c278bda66d9f6 F src/vdbeapi.c 97129bec6b1553da50d8e73f523c278bda66d9f6
@@ -1534,7 +1534,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P b6acf5d4ef016326a079463e70e71c2fc95a352d P c53dca7fadd81ea340fef776373cbb122c9ccd46
R 66214ce5c9237cac8843327752704c96 R 5cc42cc506bbe372234cb9f20b970e00
U drh U drh
Z 00ed6ef21d5c142098e92d37ff95081c Z dac9238c0e962ec79642eb1c1f1654f2

View File

@@ -1 +1 @@
c53dca7fadd81ea340fef776373cbb122c9ccd46 a9498407e646305e7b60115d63e85c642bbd1c3f

View File

@@ -2470,7 +2470,6 @@ case OP_Column: {
assert( pC->eCurType!=CURTYPE_VTAB ); assert( pC->eCurType!=CURTYPE_VTAB );
assert( pC->eCurType!=CURTYPE_PSEUDO || pC->nullRow ); assert( pC->eCurType!=CURTYPE_PSEUDO || pC->nullRow );
assert( pC->eCurType!=CURTYPE_SORTER ); assert( pC->eCurType!=CURTYPE_SORTER );
pCrsr = pC->uc.pCursor;
if( pC->cacheStatus!=p->cacheCtr ){ /*OPTIMIZATION-IF-FALSE*/ if( pC->cacheStatus!=p->cacheCtr ){ /*OPTIMIZATION-IF-FALSE*/
if( pC->nullRow ){ if( pC->nullRow ){
@@ -2486,6 +2485,7 @@ case OP_Column: {
goto op_column_out; goto op_column_out;
} }
}else{ }else{
pCrsr = pC->uc.pCursor;
assert( pC->eCurType==CURTYPE_BTREE ); assert( pC->eCurType==CURTYPE_BTREE );
assert( pCrsr ); assert( pCrsr );
assert( sqlite3BtreeCursorIsValid(pCrsr) ); assert( sqlite3BtreeCursorIsValid(pCrsr) );
@@ -2549,7 +2549,8 @@ case OP_Column: {
/* Make sure zData points to enough of the record to cover the header. */ /* Make sure zData points to enough of the record to cover the header. */
if( pC->aRow==0 ){ if( pC->aRow==0 ){
memset(&sMem, 0, sizeof(sMem)); 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; if( rc!=SQLITE_OK ) goto abort_due_to_error;
zData = (u8*)sMem.z; zData = (u8*)sMem.z;
}else{ }else{
@@ -2662,8 +2663,8 @@ case OP_Column: {
static u8 aZero[8]; /* This is the bogus content */ static u8 aZero[8]; /* This is the bogus content */
sqlite3VdbeSerialGet(aZero, t, pDest); sqlite3VdbeSerialGet(aZero, t, pDest);
}else{ }else{
rc = sqlite3VdbeMemFromBtree(pCrsr, aOffset[p2], len, !pC->isTable, rc = sqlite3VdbeMemFromBtree(pC->uc.pCursor, aOffset[p2], len,
pDest); !pC->isTable, pDest);
if( rc!=SQLITE_OK ) goto abort_due_to_error; if( rc!=SQLITE_OK ) goto abort_due_to_error;
sqlite3VdbeSerialGet((const u8*)pDest->z, t, pDest); sqlite3VdbeSerialGet((const u8*)pDest->z, t, pDest);
pDest->flags &= ~MEM_Ephem; pDest->flags &= ~MEM_Ephem;