]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Remove a pointless OP_Once operation in ORDER BY clauses with LIMIT.
authordrh <drh@noemail.net>
Mon, 24 Mar 2014 02:20:53 +0000 (02:20 +0000)
committerdrh <drh@noemail.net>
Mon, 24 Mar 2014 02:20:53 +0000 (02:20 +0000)
FossilOrigin-Name: e6c59d23316c83b318b1a94d9b28a5d321737fa5

manifest
manifest.uuid
src/select.c

index 979df5c0f19582a930562ed4aa7006dba26ace78..e046917d18abe327127606647891eb2138bdb60e 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Further\senhancements\sto\sgeneverated\sVDBE\scode\sfor\sORDER\sBY.
-D 2014-03-24T01:43:50.641
+C Remove\sa\spointless\sOP_Once\soperation\sin\sORDER\sBY\sclauses\swith\sLIMIT.
+D 2014-03-24T02:20:53.278
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -217,7 +217,7 @@ F src/printf.c e5a0005f8b3de21f85da6a709d2fbee76775bf4b
 F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
 F src/resolve.c 273d5f47c4e2c05b2d3d2bffeda939551ab59e66
 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
-F src/select.c bf5446f892259f2bb59b0fd9f123b37862b6282b
+F src/select.c ece2324b5505317477cbb30cde1ddf67f6304a73
 F src/shell.c cee9f46f2688a261601b1fd3d7f4b3cddf9b5cdf
 F src/sqlite.h.in a2ef671f92747a5a1c8a47bad5c585a8dd9eca80
 F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e
@@ -1157,7 +1157,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P faf7f9caf526ab33a6fdb9c89b45a0483510db21
-R 55d45b1a91856051dc771a7feb58050e
+P e7188fad87ec82d36a39b80ccaf8006bf45a9bcd
+R 7cf4844b34fb28597f11c358a9ceae37
 U drh
-Z 450407adee455925374bbdaef08e9b36
+Z 5144b0c0a9c74c80111921622c3f3ee8
index 61b2c1f687e01ef5d0de400ea3d079ed26feec64..0c4d7e566f343934de5a1fb5a1d47147b3912273 100644 (file)
@@ -1 +1 @@
-e7188fad87ec82d36a39b80ccaf8006bf45a9bcd
\ No newline at end of file
+e6c59d23316c83b318b1a94d9b28a5d321737fa5
\ No newline at end of file
index 5ececf15400a497737ea1157123a1ca66f9b2d03..013feb019f4106472d9e8253d7b904fa645cd2c9 100644 (file)
@@ -1144,7 +1144,6 @@ static void generateSortTail(
     sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut);
     sqlite3VdbeAddOp2(v, OP_Goto, 0, addrBreak);
     sqlite3VdbeResolveLabel(v, pSort->labelBkOut);
-    addrOnce = sqlite3CodeOnce(pParse); VdbeCoverage(v);
   }
   iTab = pSort->iECursor;
   regRow = sqlite3GetTempReg(pParse);
@@ -1161,6 +1160,9 @@ static void generateSortTail(
   if( pSort->sortFlags & SORTFLAG_UseSorter ){
     int regSortOut = ++pParse->nMem;
     iSortTab = pParse->nTab++;
+    if( pSort->labelBkOut ){
+      addrOnce = sqlite3CodeOnce(pParse); VdbeCoverage(v);
+    }
     sqlite3VdbeAddOp3(v, OP_OpenPseudo, iSortTab, regSortOut, nKey+1+nSortData);
     if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce);
     addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak);
@@ -1169,10 +1171,8 @@ static void generateSortTail(
     sqlite3VdbeAddOp2(v, OP_SorterData, iTab, regSortOut);
     p5 = OPFLAG_CLEARCACHE;
   }else{
-    if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce);
     addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak); VdbeCoverage(v);
     codeOffset(v, p->iOffset, addrContinue);
-    sqlite3VdbeAddOp3(v, OP_Column, iTab, nKey+1, regRow);
     iSortTab = iTab;
     p5 = 0;
   }