]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure temporary registers used within a co-routine are not also used tkt-8c63ff0eca
authordrh <drh@noemail.net>
Tue, 25 Feb 2014 19:38:46 +0000 (19:38 +0000)
committerdrh <drh@noemail.net>
Tue, 25 Feb 2014 19:38:46 +0000 (19:38 +0000)
outside of that co-routine, in order to prevent concurrent use of the same
register for two different things.  Ticket [8c63ff0eca81a9132d8]

FossilOrigin-Name: cc5eda54226506652057687f711e0a7d3aa584af

manifest
manifest.uuid
src/insert.c
src/select.c

index f25d3185ffd07bf8d3c49512f7e361b36718a94b..a3fbbf8c07968c81207735c873dec7df8c0df916 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Also\sadjust\sthe\sorder\sof\sfiles\sin\sthe\samalgamation\sto\sensure\sthat\n_FILE_OFFSET_BITS\sis\sdefined\sbefore\sany\s#include,\sfor\sQNX.
-D 2014-02-25T18:12:58.878
+C Make\ssure\stemporary\sregisters\sused\swithin\sa\sco-routine\sare\snot\salso\sused\noutside\sof\sthat\sco-routine,\sin\sorder\sto\sprevent\sconcurrent\suse\sof\sthe\ssame\nregister\sfor\stwo\sdifferent\sthings.\s\sTicket\s[8c63ff0eca81a9132d8]
+D 2014-02-25T19:38:46.123
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -180,7 +180,7 @@ F src/global.c 1d7bb7ea8254ae6a68ed9bfaf65fcb3d1690b486
 F src/hash.c d139319967164f139c8d1bb8a11b14db9c4ba3cd
 F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22
 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
-F src/insert.c d3d1164299faa53b5347f8ff676d3787537fa9e5
+F src/insert.c 3e875c32678eba2d94bce52c3d588c72889d2db1
 F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
 F src/legacy.c 0df0b1550b9cc1f58229644735e317ac89131f12
 F src/lempar.c cdf0a000315332fc9b50b62f3b5e22e080a0952b
@@ -216,7 +216,7 @@ F src/printf.c 85d07756e45d7496d19439dcae3e6e9e0090f269
 F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
 F src/resolve.c ca8b99d894164435f5c55cb304c1b8121705c51e
 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
-F src/select.c 28bff39f9bc5ec618b0719fe3f7b4be9f88b6f02
+F src/select.c 7c3aa7b5f1f877fc53a6d18d7674f62806bebe83
 F src/shell.c 3dd86bf73ccd079f0e32ef5069600586085e8239
 F src/sqlite.h.in a2ef671f92747a5a1c8a47bad5c585a8dd9eca80
 F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e
@@ -1151,7 +1151,10 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P 953cdd6adadfd46b51ad61d7939cecca154a02cb
-R d169e5164f16cb0355a3972eba04326c
+P 23001a85cd334090cf6c70d4d7e722a01f4f6899
+R 805f25ef58778d8423f464038dea3667
+T *branch * tkt-8c63ff0eca
+T *sym-tkt-8c63ff0eca *
+T -sym-trunk *
 U drh
-Z 6c6f89e1dd41d2a146386cfa06ae53d9
+Z 5c2047d046179f548648d68a3e09d052
index a069c374c5d8a5a57da236dcf069eea2831d3752..26f46a58d74cbd04097bf62ef37ed67704c32a4e 100644 (file)
@@ -1 +1 @@
-23001a85cd334090cf6c70d4d7e722a01f4f6899
\ No newline at end of file
+cc5eda54226506652057687f711e0a7d3aa584af
\ No newline at end of file
index 1d29da30923c008a7da4b0cf96673acab5c6b787..6f2b7dae517212a37e47719cc62f4215fe2b9e1e 100644 (file)
@@ -647,6 +647,7 @@ void sqlite3Insert(
     assert( pParse->nErr==0 || rc );
     if( rc || db->mallocFailed ) goto insert_cleanup;
     sqlite3VdbeAddOp1(v, OP_EndCoroutine, regYield);
+    sqlite3ClearTempRegCache(pParse);
     sqlite3VdbeJumpHere(v, addrTop - 1);                       /* label B: */
     assert( pSelect->pEList );
     nColumn = pSelect->pEList->nExpr;
index 93947d56b2b2daa634d4fa7adc241ff039f92c4a..7c3666588e69969dc3492487e51370ff6275c65d 100644 (file)
@@ -2751,6 +2751,7 @@ static int multiSelectOrderBy(
   explainSetInteger(iSub1, pParse->iNextSelectId);
   sqlite3Select(pParse, pPrior, &destA);
   sqlite3VdbeAddOp1(v, OP_EndCoroutine, regAddrA);
+  sqlite3ClearTempRegCache(pParse);
   sqlite3VdbeJumpHere(v, j1);
 
   /* Generate a coroutine to evaluate the SELECT statement on 
@@ -2768,6 +2769,7 @@ static int multiSelectOrderBy(
   p->iLimit = savedLimit;
   p->iOffset = savedOffset;
   sqlite3VdbeAddOp1(v, OP_EndCoroutine, regAddrB);
+  sqlite3ClearTempRegCache(pParse);
 
   /* Generate a subroutine that outputs the current row of the A
   ** select as the next output row of the compound select.