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

Small performance improvement to OP_Column.

FossilOrigin-Name: b6b73a747ad8d0f026074e41c2a4adc529ec2674
This commit is contained in:
drh
2011-08-29 02:16:18 +00:00
parent e6f43fc4f8
commit 5a077b741f
3 changed files with 16 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
C About\sa\s3%\simprovement\sin\sthe\sperformance\sof\sOP_Column. C Small\sperformance\simprovement\sto\sOP_Column.
D 2011-08-28T02:15:34.550 D 2011-08-29T02:16:18.855
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 8c930e7b493d59099ea1304bd0f2aed152eb3315 F Makefile.in 8c930e7b493d59099ea1304bd0f2aed152eb3315
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -238,7 +238,7 @@ F src/update.c 74a6cfb34e9732c1e2a86278b229913b4b51eeec
F src/utf.c c53eb7404b3eb5c1cbb5655c6a7a0e0ce6bd50f0 F src/utf.c c53eb7404b3eb5c1cbb5655c6a7a0e0ce6bd50f0
F src/util.c 06302ffd2b80408d4f6c7af71f7090e0cf8d8ff7 F src/util.c 06302ffd2b80408d4f6c7af71f7090e0cf8d8ff7
F src/vacuum.c 05513dca036a1e7848fe18d5ed1265ac0b32365e F src/vacuum.c 05513dca036a1e7848fe18d5ed1265ac0b32365e
F src/vdbe.c 8c9e0508ce0fe16e45c7398b3042d62c2968d779 F src/vdbe.c dc84628c47e76ffa5dd945afea1460815323ad91
F src/vdbe.h c1eeedacab6bcf1e7c2cf8203ba9763a616f9a86 F src/vdbe.h c1eeedacab6bcf1e7c2cf8203ba9763a616f9a86
F src/vdbeInt.h f9250326f264ca5f100acc19e9c07096bb889096 F src/vdbeInt.h f9250326f264ca5f100acc19e9c07096bb889096
F src/vdbeapi.c 11dc47987abacb76ad016dcf5abc0dc422482a98 F src/vdbeapi.c 11dc47987abacb76ad016dcf5abc0dc422482a98
@@ -961,7 +961,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5
F tool/tostr.awk 11760e1b94a5d3dcd42378f3cc18544c06cfa576 F tool/tostr.awk 11760e1b94a5d3dcd42378f3cc18544c06cfa576
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
F tool/warnings.sh b7fdb2cc525f5ef4fa43c80e771636dd3690f9d2 F tool/warnings.sh b7fdb2cc525f5ef4fa43c80e771636dd3690f9d2
P 087dc96086fe4e45da93ab6a0d5dda34c932ce97 P edff9d4a995095e555fcc9aec4c56f4bcaa1557e
R 1c4d03777b493872eab90f1e3c1ffa05 R 2bdc90f10d7d2094fa6ddf41f90c24fd
U drh U drh
Z 518276ac7d503545f19a1d6a51270da1 Z 9bbe13d88effafce7032c1658f4f21f3

View File

@@ -1 +1 @@
edff9d4a995095e555fcc9aec4c56f4bcaa1557e b6b73a747ad8d0f026074e41c2a4adc529ec2674

View File

@@ -2118,6 +2118,7 @@ case OP_Column: {
u32 szField; /* Number of bytes in the content of a field */ u32 szField; /* Number of bytes in the content of a field */
int szHdr; /* Size of the header size field at start of record */ int szHdr; /* Size of the header size field at start of record */
int avail; /* Number of bytes of available data */ int avail; /* Number of bytes of available data */
u32 t; /* A type code from the record header */
Mem *pReg; /* PseudoTable input register */ Mem *pReg; /* PseudoTable input register */
@@ -2295,8 +2296,14 @@ case OP_Column: {
for(i=0; i<nField; i++){ for(i=0; i<nField; i++){
if( zIdx<zEndHdr ){ if( zIdx<zEndHdr ){
aOffset[i] = offset; aOffset[i] = offset;
zIdx += getVarint32(zIdx, aType[i]); if( zIdx[0]<0x80 ){
szField = sqlite3VdbeSerialTypeLen(aType[i]); t = zIdx[0];
zIdx++;
}else{
zIdx += sqlite3GetVarint32(zIdx, &t);
}
aType[i] = t;
szField = sqlite3VdbeSerialTypeLen(t);
offset += szField; offset += szField;
if( offset<szField ){ /* True if offset overflows */ if( offset<szField ){ /* True if offset overflows */
zIdx = &zEndHdr[1]; /* Forces SQLITE_CORRUPT return below */ zIdx = &zEndHdr[1]; /* Forces SQLITE_CORRUPT return below */