]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
During compilation, transfer the azVar[0..nzVar-1] array from Parse to Vdbe
authordrh <drh@noemail.net>
Wed, 20 Jan 2016 01:48:25 +0000 (01:48 +0000)
committerdrh <drh@noemail.net>
Wed, 20 Jan 2016 01:48:25 +0000 (01:48 +0000)
rather than copying it.  Smaller and faster code.

FossilOrigin-Name: 80dd495f378614e4eca72e71e43061b1b94ee450

manifest
manifest.uuid
src/sqliteInt.h
src/vdbeaux.c

index da7d7696b2b2e0e287000098d59534c566b91683..2bdfa7fcddc73f08b3af74f21cc47a422e1eda7b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Very\ssmall\ssimplification\sto\sthe\sbtree\sbalancer.
-D 2016-01-20T01:32:00.028
+C During\scompilation,\stransfer\sthe\sazVar[0..nzVar-1]\sarray\sfrom\sParse\sto\sVdbe\nrather\sthan\scopying\sit.\s\sSmaller\sand\sfaster\scode.
+D 2016-01-20T01:48:25.150
 F Makefile.in a476545d0c8626224d0bacac85c6e2967474af81
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 01e855f958932d0d3ed62ec675fc63e2cef61fcb
@@ -350,7 +350,7 @@ F src/shell.c dcd7a83645ef2a58ee9c6d0ea4714d877d7835c4
 F src/sqlite.h.in 214476a62012e578f42133a9a3b4f97a9aa421a3
 F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
 F src/sqlite3ext.h dfbe62ffd95b99afe2140d8c35b180d11924072d
-F src/sqliteInt.h 8fbaf9dc2bb979865c739e5272fe0b352fbc709f
+F src/sqliteInt.h 9c506d4bc748667c0ea74abd4f034124a4c9a0d1
 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46
 F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba
 F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e
@@ -414,7 +414,7 @@ F src/vdbe.c b90d9d38e5e0260c2eafa3cb4c2274d8ea94da27
 F src/vdbe.h 7a733ea8aac1b77305a67698e784fa3484ee3337
 F src/vdbeInt.h 42eefa4f9e7432b9968d321b44e48821ec13b189
 F src/vdbeapi.c ffae8f5af4570fbd548504e815e9fb7227f0822e
-F src/vdbeaux.c fcbca1519bdfe619edf2e95b64aad8e7b718494c
+F src/vdbeaux.c f53b709c4c0d8f80e51dbf343292564e8628e217
 F src/vdbeblob.c 37c3d11a753e403698c69e17383d282e1ae73e75
 F src/vdbemem.c b9181e77eca2a095929d46250daf85c8d2621fc0
 F src/vdbesort.c 0971557e5d3c289e46f56a52aed2197c13251de7
@@ -1419,7 +1419,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 5bf6442bec83977006bc5049adcdbd4dd39369fe
-R 70eccaeca6a4cd2462229055942e9f5d
+P f421adf54c9db91ba6ca64a8ba3751680e47924a
+R 0c5d0312a4aace8397299f6692596f42
 U drh
-Z 7b4de528ceedb108b3157672b1895b78
+Z ec44132b48754f37e54bd488e98f7a49
index 804b1f705db0cb8aff6c71ec77fda755703c59cb..1408be74b125f10698bf10405517617fc029f39b 100644 (file)
@@ -1 +1 @@
-f421adf54c9db91ba6ca64a8ba3751680e47924a
\ No newline at end of file
+80dd495f378614e4eca72e71e43061b1b94ee450
\ No newline at end of file
index 5d8a504f871705ee2a752acb50ac34f51e352569..6684953fd521dc8b2574b7a727d6ff10610c63ef 100644 (file)
@@ -2794,7 +2794,7 @@ struct Parse {
   ** in the recursive region.
   ************************************************************************/
 
-  int nVar;                 /* Number of '?' variables seen in the SQL so far */
+  ynVar nVar;               /* Number of '?' variables seen in the SQL so far */
   int nzVar;                /* Number of available slots in azVar[] */
   u8 iPkSortOrder;          /* ASC or DESC for INTEGER PRIMARY KEY */
   u8 explain;               /* True if the EXPLAIN flag is found on the query */
index 7cce57a73898ea578a8a236eca45a84814027e89..cbb707d25a0635c39fab08d6856da26c6575618b 100644 (file)
@@ -1897,7 +1897,6 @@ void sqlite3VdbeMakeReady(
     p->aMem = allocSpace(p->aMem, nMem*sizeof(Mem), zCsr, &nFree, &nByte);
     p->aVar = allocSpace(p->aVar, nVar*sizeof(Mem), zCsr, &nFree, &nByte);
     p->apArg = allocSpace(p->apArg, nArg*sizeof(Mem*), zCsr, &nFree, &nByte);
-    p->azVar = allocSpace(p->azVar, nVar*sizeof(char*), zCsr, &nFree, &nByte);
     p->apCsr = allocSpace(p->apCsr, nCursor*sizeof(VdbeCursor*),
                           zCsr, &nFree, &nByte);
     p->aOnceFlag = allocSpace(p->aOnceFlag, nOnce, zCsr, &nFree, &nByte);
@@ -1920,11 +1919,10 @@ void sqlite3VdbeMakeReady(
       p->aVar[n].db = db;
     }
   }
-  if( p->azVar && pParse->nzVar>0 ){
-    p->nzVar = pParse->nzVar;
-    memcpy(p->azVar, pParse->azVar, p->nzVar*sizeof(p->azVar[0]));
-    memset(pParse->azVar, 0, pParse->nzVar*sizeof(pParse->azVar[0]));
-  }
+  p->nzVar = pParse->nzVar;
+  p->azVar = pParse->azVar;
+  pParse->nzVar =  0;
+  pParse->azVar = 0;
   if( p->aMem ){
     p->aMem--;                      /* aMem[] goes from 1..nMem */
     p->nMem = nMem;                 /*       not from 0..nMem-1 */
@@ -2911,6 +2909,7 @@ void sqlite3VdbeClearObject(sqlite3 *db, Vdbe *p){
     sqlite3DbFree(db, pSub);
   }
   for(i=p->nzVar-1; i>=0; i--) sqlite3DbFree(db, p->azVar[i]);
+  sqlite3DbFree(db, p->azVar);
   vdbeFreeOpArray(db, p->aOp, p->nOp);
   sqlite3DbFree(db, p->aColName);
   sqlite3DbFree(db, p->zSql);