]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Small performance improvement to OP_Column.
authordrh <drh@noemail.net>
Mon, 29 Aug 2011 02:16:18 +0000 (02:16 +0000)
committerdrh <drh@noemail.net>
Mon, 29 Aug 2011 02:16:18 +0000 (02:16 +0000)
FossilOrigin-Name: b6b73a747ad8d0f026074e41c2a4adc529ec2674

manifest
manifest.uuid
src/vdbe.c

index 5d893103c6f75a93dd82bb9f896b142d9a3719d5..ddba4d71706c0ebf77eea9c0532810a010f45caf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C About\sa\s3%\simprovement\sin\sthe\sperformance\sof\sOP_Column.
-D 2011-08-28T02:15:34.550
+C Small\sperformance\simprovement\sto\sOP_Column.
+D 2011-08-29T02:16:18.855
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 8c930e7b493d59099ea1304bd0f2aed152eb3315
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -238,7 +238,7 @@ F src/update.c 74a6cfb34e9732c1e2a86278b229913b4b51eeec
 F src/utf.c c53eb7404b3eb5c1cbb5655c6a7a0e0ce6bd50f0
 F src/util.c 06302ffd2b80408d4f6c7af71f7090e0cf8d8ff7
 F src/vacuum.c 05513dca036a1e7848fe18d5ed1265ac0b32365e
-F src/vdbe.c 8c9e0508ce0fe16e45c7398b3042d62c2968d779
+F src/vdbe.c dc84628c47e76ffa5dd945afea1460815323ad91
 F src/vdbe.h c1eeedacab6bcf1e7c2cf8203ba9763a616f9a86
 F src/vdbeInt.h f9250326f264ca5f100acc19e9c07096bb889096
 F src/vdbeapi.c 11dc47987abacb76ad016dcf5abc0dc422482a98
@@ -961,7 +961,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5
 F tool/tostr.awk 11760e1b94a5d3dcd42378f3cc18544c06cfa576
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings.sh b7fdb2cc525f5ef4fa43c80e771636dd3690f9d2
-P 087dc96086fe4e45da93ab6a0d5dda34c932ce97
-R 1c4d03777b493872eab90f1e3c1ffa05
+P edff9d4a995095e555fcc9aec4c56f4bcaa1557e
+R 2bdc90f10d7d2094fa6ddf41f90c24fd
 U drh
-Z 518276ac7d503545f19a1d6a51270da1
+Z 9bbe13d88effafce7032c1658f4f21f3
index c1149bf53e5751fdbc48070f61bf0277dc69dad8..a29a8dd01681e83272348080f25591d00a93a725 100644 (file)
@@ -1 +1 @@
-edff9d4a995095e555fcc9aec4c56f4bcaa1557e
\ No newline at end of file
+b6b73a747ad8d0f026074e41c2a4adc529ec2674
\ No newline at end of file
index 891071ee7a09b5fd21982f7fe4864c2bf94a4e09..643f4b480fe7941f71ce9dc4da94544bae7938f5 100644 (file)
@@ -2118,6 +2118,7 @@ case OP_Column: {
   u32 szField;       /* Number of bytes in the content of a field */
   int szHdr;         /* Size of the header size field at start of record */
   int avail;         /* Number of bytes of available data */
+  u32 t;             /* A type code from the record header */
   Mem *pReg;         /* PseudoTable input register */
 
 
@@ -2295,8 +2296,14 @@ case OP_Column: {
     for(i=0; i<nField; i++){
       if( zIdx<zEndHdr ){
         aOffset[i] = offset;
-        zIdx += getVarint32(zIdx, aType[i]);
-        szField = sqlite3VdbeSerialTypeLen(aType[i]);
+        if( zIdx[0]<0x80 ){
+          t = zIdx[0];
+          zIdx++;
+        }else{
+          zIdx += sqlite3GetVarint32(zIdx, &t);
+        }
+        aType[i] = t;
+        szField = sqlite3VdbeSerialTypeLen(t);
         offset += szField;
         if( offset<szField ){  /* True if offset overflows */
           zIdx = &zEndHdr[1];  /* Forces SQLITE_CORRUPT return below */