]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Simplify the way the column cache is managed around OP_Move instructions.
authordrh <drh@noemail.net>
Fri, 12 Sep 2014 17:41:30 +0000 (17:41 +0000)
committerdrh <drh@noemail.net>
Fri, 12 Sep 2014 17:41:30 +0000 (17:41 +0000)
FossilOrigin-Name: 320556233e19cdd9d590a09655c3465754700d39

manifest
manifest.uuid
src/expr.c
src/select.c

index 4c19df8ec53ebc63e9ed6eeb9ef7ed45fab9b063..8501d7bcd0342502abefd7e77dc9b69bf1fc6abf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sproblem\swith\sparser\smemory\sallocation\son\s32-bit\ssystems.
-D 2014-09-12T04:28:33.110
+C Simplify\sthe\sway\sthe\scolumn\scache\sis\smanaged\saround\sOP_Move\sinstructions.
+D 2014-09-12T17:41:30.440
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -180,7 +180,7 @@ F src/complete.c 535183afb3c75628b78ce82612931ac7cdf26f14
 F src/ctime.c 16cd19215d9fd849ee2b7509b092f2e0bbd6a958
 F src/date.c 57a7f9ba9f6b4d5268f5e411739066a611f99036
 F src/delete.c fae81cc2eb14b75267d4f47d3cfc9ae02aae726f
-F src/expr.c 441a7e24e2f7bea9475778fa8acce9e8a69ca8f0
+F src/expr.c 19392d98e089640c3336e65b4254cc337efef7d1
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c da985ae673efef2c712caef825a5d2edb087ead7
 F src/func.c d4d218704b13bc1814b7d76874e405743c903773
@@ -226,7 +226,7 @@ F src/printf.c e74925089a85e3c9f0e315595f41c139d3d118c2
 F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
 F src/resolve.c 0d1621e45fffe4b4396477cf46e41a84b0145ffb
 F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
-F src/select.c b4457526cee73c0b69fad42f799f619b1d5a8a8a
+F src/select.c bd8ed75592642f79871fd331d869c37fc6a14846
 F src/shell.c c00220cdd7f2027780bc25b78376c16dc24e4b7d
 F src/sqlite.h.in 8b018219ce988913e5977d5de9ab4beb33be23b6
 F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
@@ -1197,7 +1197,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 34292b084ef48cd6e9ca5704f6b072a29733b4c2
-R 9210ace0d122525851cce20a27ee9393
+P 2f69a1fa6adc9377149ae7faa586a5d30b6a631b
+R 2196198b201612a018f7c15a4c2f1424
 U drh
-Z 8a9f5697995e1302a3aaac24500097fb
+Z a609740927532bd8f27cb3bc904eb4ff
index 2828da8f8138feb6956901e25fea479e89b450c0..2b28a6b8f4517b2ad04a07cbae50a7a9cb2bc1f6 100644 (file)
@@ -1 +1 @@
-2f69a1fa6adc9377149ae7faa586a5d30b6a631b
\ No newline at end of file
+320556233e19cdd9d590a09655c3465754700d39
\ No newline at end of file
index cd0983c5797af2c957d997b2e76aa06f26febd1c..c6d8b9e5f320231ee5b12bea47ef4f5a226e580e 100644 (file)
@@ -2432,16 +2432,9 @@ void sqlite3ExprCacheAffinityChange(Parse *pParse, int iStart, int iCount){
 ** over to iTo..iTo+nReg-1. Keep the column cache up-to-date.
 */
 void sqlite3ExprCodeMove(Parse *pParse, int iFrom, int iTo, int nReg){
-  int i;
-  struct yColCache *p;
   assert( iFrom>=iTo+nReg || iFrom+nReg<=iTo );
   sqlite3VdbeAddOp3(pParse->pVdbe, OP_Move, iFrom, iTo, nReg);
-  for(i=0, p=pParse->aColCache; i<SQLITE_N_COLCACHE; i++, p++){
-    int x = p->iReg;
-    if( x>=iFrom && x<iFrom+nReg ){
-      p->iReg += iTo-iFrom;
-    }
-  }
+  sqlite3ExprCacheRemove(pParse, iFrom, nReg);
 }
 
 #if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST)
index 31a70bff1bb026f2663e1b20c0c9938b1e89f575..7ecbf306974b1d2a8e60bd18203a5edbb647ccee 100644 (file)
@@ -488,7 +488,7 @@ static void pushOntoSorter(
     sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr);
   }
   if( nPrefixReg==0 ){
-    sqlite3VdbeAddOp3(v, OP_Move, regData, regBase+nExpr+bSeq, nData);
+    sqlite3ExprCodeMove(pParse, regData, regBase+nExpr+bSeq, nData);
   }
 
   sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase+nOBSat, nBase-nOBSat, regRecord);
@@ -524,7 +524,7 @@ static void pushOntoSorter(
     sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut);
     sqlite3VdbeAddOp1(v, OP_ResetSorter, pSort->iECursor);
     sqlite3VdbeJumpHere(v, addrFirst);
-    sqlite3VdbeAddOp3(v, OP_Move, regBase, regPrevKey, pSort->nOBSat);
+    sqlite3ExprCodeMove(pParse, regBase, regPrevKey, pSort->nOBSat);
     sqlite3VdbeJumpHere(v, addrJmp);
   }
   if( pSort->sortFlags & SORTFLAG_UseSorter ){