From: drh Date: Thu, 12 Nov 2009 20:39:03 +0000 (+0000) Subject: Shift more OP_Found opcodes over to using the unpacked format, for improved X-Git-Tag: fts3-refactor~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=91fc4a0c4ddda097fb9704d9414717cdfbf01272;p=thirdparty%2Fsqlite.git Shift more OP_Found opcodes over to using the unpacked format, for improved performance. FossilOrigin-Name: 6705ab1ad12cbdbbcf1f3e5439a4e6cbdcc421b3 --- diff --git a/manifest b/manifest index 6be104b524..a74ddf079b 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C Enhance\sthe\sOP_Found\sand\sOP_NotFound\sopcodes\sso\sthat\sthey\scan\saccept\san\narray\sof\sregisters\sas\san\sunpacked\srecord\sin\saddition\sto\sa\srecord\sbuilt\nusing\sOP_MakeRecord.\s\sUse\sthis\sto\savoid\sOP_MakeRecord\scalls\sduring\sIN\nexpression\sprocessing. -D 2009-11-12T19:59:44 +C Shift\smore\sOP_Found\sopcodes\sover\sto\susing\sthe\sunpacked\sformat,\sfor\simproved\nperformance. +D 2009-11-12T20:39:03 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 53f3dfa49f28ab5b80cb083fb7c9051e596bcfa1 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -157,13 +157,13 @@ F src/parse.y f785d814562a14dc19202f61abb4372845f64752 F src/pcache.c 3b079306376e0e04c0d3df40c0a4b750a1839310 F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050 F src/pcache1.c db4a996e456eec2380732a1036e23e3f551f6573 -F src/pragma.c 0057a8838eec9ac78ed759687fe30e45622fd58b +F src/pragma.c 6936d7df5e04b9f996f8f320d15e65b6944b2caa F src/prepare.c ad90970bba3aead154266d8bb6faf9fbb5233b94 F src/printf.c 03fabdd6112a0e23f78f8ac9a1396947ade0273b F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c aa3cb21e1ecd905c071fce8fb64d1a166cefc239 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 -F src/select.c 55051bfa85dc23079a333230a368e0bce4a78cf8 +F src/select.c a727f61f3267bfa20ce1c3e85d38dc2132db1060 F src/shell.c f4948cb6d30665d755a6b5e0ec313d1094aab828 F src/sqlite.h.in 4464e9772122f0447305d425e04d122b6f1bffec F src/sqlite3ext.h 69dfb8116af51b84a029cddb3b35062354270c89 @@ -771,14 +771,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P fcff5b7e2d059ffb8d21df57d0c9648bd876e813 -R 289cc41bc3e406dfdc738b417fc25b8c +P b9eab885cd2ca1a1633329e7036c125e8dba62c5 +R bfa1e6d0d13eb6efded0b2eed08f59ea U drh -Z 968caa638a1107429c124a260631802c +Z d7c2b8cfb0a9b4cbaabc9813a91bb3c2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFK/GkzoxKgR168RlERAl33AJ9QBMxhsMt2M9vYW0zsZxtSjE5sMACfUjh4 -j4sLHQ3TmHMP7T2ltUWwkRc= -=u7bi +iD8DBQFK/HJqoxKgR168RlERAviFAJ9aMaBxiz20SHBh7VnDB+/x4A0hUQCfQ7jk +jfzZx12yW5yQrNg8aanD/xQ= +=snJx -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index 036e1f3f50..4c3291e803 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b9eab885cd2ca1a1633329e7036c125e8dba62c5 \ No newline at end of file +6705ab1ad12cbdbbcf1f3e5439a4e6cbdcc421b3 \ No newline at end of file diff --git a/src/pragma.c b/src/pragma.c index 69dea4edb0..0afce9706d 100644 --- a/src/pragma.c +++ b/src/pragma.c @@ -1128,6 +1128,7 @@ void sqlite3Pragma( sqlite3VdbeAddOp2(v, OP_AddImm, 2, 1); /* increment entry count */ for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){ int jmp2; + int r1; static const VdbeOpList idxErr[] = { { OP_AddImm, 1, -1, 0}, { OP_String8, 0, 3, 0}, /* 1 */ @@ -1141,8 +1142,8 @@ void sqlite3Pragma( { OP_IfPos, 1, 0, 0}, /* 9 */ { OP_Halt, 0, 0, 0}, }; - sqlite3GenerateIndexKey(pParse, pIdx, 1, 3, 1); - jmp2 = sqlite3VdbeAddOp4Int(v, OP_Found, j+2, 0, 3, 0); + r1 = sqlite3GenerateIndexKey(pParse, pIdx, 1, 3, 0); + jmp2 = sqlite3VdbeAddOp4Int(v, OP_Found, j+2, 0, r1, pIdx->nColumn+1); addr = sqlite3VdbeAddOpList(v, ArraySize(idxErr), idxErr); sqlite3VdbeChangeP4(v, addr+1, "rowid ", P4_STATIC); sqlite3VdbeChangeP4(v, addr+3, " missing from index ", P4_STATIC); diff --git a/src/select.c b/src/select.c index 80a04f40e6..d6b7c0bdb9 100644 --- a/src/select.c +++ b/src/select.c @@ -439,8 +439,8 @@ static void codeDistinct( v = pParse->pVdbe; r1 = sqlite3GetTempReg(pParse); + sqlite3VdbeAddOp4Int(v, OP_Found, iTab, addrRepeat, iMem, N); sqlite3VdbeAddOp3(v, OP_MakeRecord, iMem, N, r1); - sqlite3VdbeAddOp4Int(v, OP_Found, iTab, addrRepeat, r1, 0); sqlite3VdbeAddOp2(v, OP_IdxInsert, iTab, r1); sqlite3ReleaseTempReg(pParse, r1); }