]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Omit the sequence value from sorter records used by GROUP BY queries that cannot...
authordan <dan@noemail.net>
Mon, 24 Mar 2014 20:19:07 +0000 (20:19 +0000)
committerdan <dan@noemail.net>
Mon, 24 Mar 2014 20:19:07 +0000 (20:19 +0000)
FossilOrigin-Name: 3f90abddc31ac20739778c235a834c33f7057997

manifest
manifest.uuid
src/select.c
src/vdbesort.c

index a1b753f05eab973f9e35f823897af426a9325214..63d2130c2b14b81a57dd61ddf9055cdfe7c98709 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\sunnecessary\smoving\sof\scontent\sbetween\sregisters\sduring\san\sORDER\sBY.
-D 2014-03-24T18:08:15.960
+C Omit\sthe\ssequence\svalue\sfrom\ssorter\srecords\sused\sby\sGROUP\sBY\squeries\sthat\scannot\suse\san\sindex.
+D 2014-03-24T20:19:07.793
 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 7f4a1ef9c9e893ee6da160441cd773c951f3d44e
+F src/select.c 2b8722c9888be5e2b358dcd1369a652b38d7ccc4
 F src/shell.c cee9f46f2688a261601b1fd3d7f4b3cddf9b5cdf
 F src/sqlite.h.in a2ef671f92747a5a1c8a47bad5c585a8dd9eca80
 F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e
@@ -285,7 +285,7 @@ F src/vdbeapi.c 0ed6053f947edd0b30f64ce5aeb811872a3450a4
 F src/vdbeaux.c 5078ca7de4fd5ba4535bd17fe44d5b56c2d3294c
 F src/vdbeblob.c 15377abfb59251bccedd5a9c7d014a895f0c04aa
 F src/vdbemem.c 6fc77594c60f6155404f3f8d71bf36d1fdeb4447
-F src/vdbesort.c 4abb7c0f8f19b7d7d82f4558d5da1a30fdf9ea38
+F src/vdbesort.c 46e50c6bc9300625cff144f8948381a2c53116bf
 F src/vdbetrace.c 6f52bc0c51e144b7efdcfb2a8f771167a8816767
 F src/vtab.c 21b932841e51ebd7d075e2d0ad1415dce8d2d5fd
 F src/wal.c 76e7fc6de229bea8b30bb2539110f03a494dc3a8
@@ -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 5d506743f541b022cde04a9606baa4680cdfd70b
-R edfc832bbac864fb9d0e2cb38ae7f098
-U drh
-Z a04be0daeb9646c039a07b2f019c65a9
+P 4f472accf072d9cb64f209923924b26f21b13d27
+R e1309a603202b4d83715c783fe89f3da
+U dan
+Z 8e3a9a2ddbbe8575a70cbc6b0dba434a
index 1c7384bd0a7ceb36f0892b4465737e006026a814..0ff8edcdd36cfc6ef0f2beeabf7aa8d2ba58c12f 100644 (file)
@@ -1 +1 @@
-4f472accf072d9cb64f209923924b26f21b13d27
\ No newline at end of file
+3f90abddc31ac20739778c235a834c33f7057997
\ No newline at end of file
index 40fd59daabb3bdb50c9a2da04734d9a24a43ff23..7e0085dd36790577396528a520b71ccfcd40818b 100644 (file)
@@ -4910,7 +4910,7 @@ int sqlite3Select(
     sNC.pSrcList = pTabList;
     sNC.pAggInfo = &sAggInfo;
     sAggInfo.mnReg = pParse->nMem+1;
-    sAggInfo.nSortingColumn = pGroupBy ? pGroupBy->nExpr+1 : 0;
+    sAggInfo.nSortingColumn = pGroupBy ? pGroupBy->nExpr : 0;
     sAggInfo.pGroupBy = pGroupBy;
     sqlite3ExprAnalyzeAggList(&sNC, pEList);
     sqlite3ExprAnalyzeAggList(&sNC, sSort.pOrderBy);
@@ -5002,8 +5002,8 @@ int sqlite3Select(
 
         groupBySort = 1;
         nGroupBy = pGroupBy->nExpr;
-        nCol = nGroupBy + 1;
-        j = nGroupBy+1;
+        nCol = nGroupBy;
+        j = nGroupBy;
         for(i=0; i<sAggInfo.nColumn; i++){
           if( sAggInfo.aCol[i].iSorterColumn>=j ){
             nCol++;
@@ -5013,8 +5013,7 @@ int sqlite3Select(
         regBase = sqlite3GetTempRange(pParse, nCol);
         sqlite3ExprCacheClear(pParse);
         sqlite3ExprCodeExprList(pParse, pGroupBy, regBase, 0);
-        sqlite3VdbeAddOp2(v, OP_Sequence, sAggInfo.sortingIdx,regBase+nGroupBy);
-        j = nGroupBy+1;
+        j = nGroupBy;
         for(i=0; i<sAggInfo.nColumn; i++){
           struct AggInfo_col *pCol = &sAggInfo.aCol[i];
           if( pCol->iSorterColumn>=j ){
index d1b726b727a0711b1577f3a49e0f0506ed89916d..d55156a2c150751bfbb154aba3103560e4f8f3d8 100644 (file)
@@ -480,6 +480,7 @@ int sqlite3VdbeSorterInit(sqlite3 *db, VdbeCursor *pCsr){
   pSorter->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pCsr->pKeyInfo, 0, 0, &d);
   if( pSorter->pUnpacked==0 ) return SQLITE_NOMEM;
   assert( pSorter->pUnpacked==(UnpackedRecord *)d );
+  pSorter->pUnpacked->nField = pCsr->pKeyInfo->nField;
 
   if( !sqlite3TempInMemory(db) ){
     pgsz = sqlite3BtreeGetPageSize(db->aDb[0].pBt);