]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Further enhancements to geneverated VDBE code for ORDER BY.
authordrh <drh@noemail.net>
Mon, 24 Mar 2014 01:43:50 +0000 (01:43 +0000)
committerdrh <drh@noemail.net>
Mon, 24 Mar 2014 01:43:50 +0000 (01:43 +0000)
FossilOrigin-Name: e7188fad87ec82d36a39b80ccaf8006bf45a9bcd

manifest
manifest.uuid
src/select.c

index 140d5c124cb9f8910d2c38190a3ad92809ad2e1e..979df5c0f19582a930562ed4aa7006dba26ace78 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C merge\sfixes\sfrom\strunk
-D 2014-03-23T18:47:00.384
+C Further\senhancements\sto\sgeneverated\sVDBE\scode\sfor\sORDER\sBY.
+D 2014-03-24T01:43:50.641
 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 09fef04ec0746d168ddcff37031ee804ac19dd0e
+F src/select.c bf5446f892259f2bb59b0fd9f123b37862b6282b
 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 d696cdedacd39075aa7fc407ab7c7e50f01d9f39 641408a1395bfc911ca619ef9e5f073b913d856b
-R e64080ab6e1cc6573ca05b14626c10fb
+P faf7f9caf526ab33a6fdb9c89b45a0483510db21
+R 55d45b1a91856051dc771a7feb58050e
 U drh
-Z 0df19c139e23d451d51cd0e8cf9cddd3
+Z 450407adee455925374bbdaef08e9b36
index 49e295d769fce355ff362426d8e5b5ec101826e0..61b2c1f687e01ef5d0de400ea3d079ed26feec64 100644 (file)
@@ -1 +1 @@
-faf7f9caf526ab33a6fdb9c89b45a0483510db21
\ No newline at end of file
+e7188fad87ec82d36a39b80ccaf8006bf45a9bcd
\ No newline at end of file
index 1acc6d1020fa06299fb86f5c015bb1e1b1ee6825..5ececf15400a497737ea1157123a1ca66f9b2d03 100644 (file)
@@ -473,8 +473,7 @@ static void pushOntoSorter(
   int nOBSat = pSort->nOBSat;                      /* No. ORDER BY terms to skip */
   int op;                               /* Opcode to add sorter record to sorter */
 
-  sqlite3ExprCacheClear(pParse);
-  sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, 0);
+  sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, SQLITE_ECEL_DUP);
   sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr);
   sqlite3VdbeAddOp3(v, OP_Move, regData, regBase+nExpr+1, nData);
   sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase+nOBSat, nBase-nOBSat, regRecord);
@@ -1127,7 +1126,6 @@ static void generateSortTail(
   int addr;
   int addrOnce = 0;
   int iTab;
-  int pseudoTab = 0;
   ExprList *pOrderBy = pSort->pOrderBy;
   int eDest = pDest->eDest;
   int iParm = pDest->iSDParm;
@@ -1138,6 +1136,9 @@ static void generateSortTail(
   int nSortData;                  /* Trailing values to read from sorter */
   u8 p5;                          /* p5 parameter for 1st OP_Column */
   int i;
+#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
+  struct ExprList_item *aOutEx = p->pEList->a;
+#endif
 
   if( pSort->labelBkOut ){
     sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut);
@@ -1148,8 +1149,6 @@ static void generateSortTail(
   iTab = pSort->iECursor;
   regRow = sqlite3GetTempReg(pParse);
   if( eDest==SRT_Output || eDest==SRT_Coroutine ){
-    pseudoTab = pParse->nTab++;
-    sqlite3VdbeAddOp3(v, OP_OpenPseudo, pseudoTab, regRow, nColumn);
     regRowid = 0;
     regRow = pDest->iSdst;
     nSortData = nColumn;
@@ -1180,6 +1179,7 @@ static void generateSortTail(
   for(i=0; i<nSortData; i++){
     sqlite3VdbeAddOp3(v, OP_Column, iSortTab, nKey+1+i, regRow+i);
     if( i==0 ) sqlite3VdbeChangeP5(v, p5);
+    VdbeComment((v, "%s", aOutEx[i].zName ? aOutEx[i].zName : aOutEx[i].zSpan));
   }
   switch( eDest ){
     case SRT_Table: