]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Now appears to work. All legacy tests pass. Need to add new tests, however.
authordrh <drh@noemail.net>
Tue, 14 Jul 2020 22:20:26 +0000 (22:20 +0000)
committerdrh <drh@noemail.net>
Tue, 14 Jul 2020 22:20:26 +0000 (22:20 +0000)
FossilOrigin-Name: 81e6450980ee745686aee5e2b84672d3c8404a041c82c658aa562013294b8628

manifest
manifest.uuid
src/select.c
src/where.c

index 47e306dfadd79241c66966508059be3f11198d24..4a626a1618f4a0795cd77c61db7d695ceb104ddd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,6 +1,6 @@
 B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b
-C Merge\sfixes\sfrom\strunk.
-D 2020-07-14T13:02:30.804
+C Now\sappears\sto\swork.\s\sAll\slegacy\stests\spass.\s\sNeed\sto\sadd\snew\stests,\showever.
+D 2020-07-14T22:20:26.394
 F Makefile.in 19374a5db06c3199ec1bab71ab74a103d8abf21053c05e9389255dc58083f806
 F Makefile.msc 48f5a3fc32672c09ad73795749f6253e406a31526935fbbffd8f021108d54574
 F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8
@@ -23,7 +23,7 @@ F src/parse.y b6b4b02f8cc8f94ac1d93a922543e0344dbb30b04877898736c01ec7ec03eaaa
 F src/pragma.c ae499b5ab8f4e833f67e28bf2322500e9aa612aadf12581d1324333f848d8b51
 F src/pragma.h 8dc78ab7e9ec6ce3ded8332810a2066f1ef6267e2e03cd7356ee00276125c6cf
 F src/resolve.c 79cee37182fea66703f90365b8b0a646ed7e9bfa9238b91fa90dfc74258b940e
-F src/select.c d9f067b2dda2202d1f80f820449acbd3f423010f29a453ce4e4a517a4bd679cb
+F src/select.c 5293c60dd32c87a599b16e6f4acaf2827b7f60fca317b614a7cfccfb0beecba9
 F src/shell.c.in 81fa23ac1a3d6ac9ed13e9ae711a3d8806396ca7cc12c5d6a2e2536f70b0c7ad
 F src/sqliteInt.h 8366e482a1330e9c103c9c9053c53894e373daf1fb9dd65bd953ffc0b3ad7a8b
 F src/test1.c fe56c4bcaa2685ca9aa25d817a0ee9345e189aff4a5a71a3d8ba946c7776feb8
@@ -31,7 +31,7 @@ F src/update.c 6a0484134635f167594d597a33d186051125d3ef41803a90b246cea6cf7f11f9
 F src/util.c c0bacc165f46169d2b720c37c8719165e383211698fad1de39dd16a8c161815a
 F src/vdbe.c 981666c49d33039df6dc9fccd40191575586ac4866255b2f57819cc5eb99f572
 F src/vdbeapi.c c1a9004ac554d8d48794d2ce5f80397f8e419fd28643a543cc1e004c7713c3ef
-F src/where.c 63d8cdbfc31ad06cfa4425dd315188b99e08fcb6830831591387b386b8bc8368
+F src/where.c 93d8a4317735a5a39af8fefc16db852da9fffd7b1946647e9b00a8f19575b6fc
 F src/window.c 0dec178bfa541c757d15a2be78f34aea36393a0966600366810e5f8739ccf370
 F test/altertab.test b8b2104212e8ea87c75c3cbe3cb78ed7236a6c828ee2e59ed09d3dbe9812d002
 F test/busy2.test 415364312743992641f9bf679c84918327296067f85a5d00012b339dc35acbd7
@@ -52,7 +52,7 @@ F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfa
 F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf
 F tool/showlocks.c 9cc5e66d4ebbf2d194f39db2527ece92077e86ae627ddd233ee48e16e8142564
 F tool/speed-check.sh 615cbdf50f1409ef3bbf9f682e396df80f49d97ed93ed3e61c8e91fae6afde58
-P b5d38e28c62dbc4f5f0e1b2590c9d6c2de9a140cc3528cae1968fd741e337fb0 f25a56c26e28abd44373230c6b5763aed35c9a7648abede8a53409dccc0bee1d
-R 7d63caad10b289fd88b705df244223bf
+P 2af372f59ea250ccf9ab7c30fe4bf8376a5da6e35c401edf643b9a193a38d33d
+R 88bbf706fac90aa9a3fe891a30d11418
 U drh
-Z 6ff44f5cef953a51b304c32568d26b12
+Z d59f0956f8a39b2804fc5a23cc402e01
index 80ebd5b4dd274d10a5f81ca01583b9c90fe707c5..8bbdd0d23bd8d960a636fac93fd9b6885fb03dd7 100644 (file)
@@ -1 +1 @@
-2af372f59ea250ccf9ab7c30fe4bf8376a5da6e35c401edf643b9a193a38d33d
\ No newline at end of file
+81e6450980ee745686aee5e2b84672d3c8404a041c82c658aa562013294b8628
\ No newline at end of file
index 16a79ab2925f45b4ee13183764e48ec79985817d..966c5d208d37dd8d4620f522b396c7b57c3c0b8b 100644 (file)
@@ -6706,6 +6706,7 @@ int sqlite3Select(
         explainSimpleCount(pParse, pTab, pBest);
       }else{
         int regAcc = 0;           /* "populate accumulators" flag */
+        int addrSkip;
 
         /* If there are accumulator registers but no min() or max() functions
         ** without FILTER clauses, allocate register regAcc. Register regAcc
@@ -6754,6 +6755,10 @@ int sqlite3Select(
         }
         updateAccumulator(pParse, regAcc, pAggInfo);
         if( regAcc ) sqlite3VdbeAddOp2(v, OP_Integer, 1, regAcc);
+        addrSkip = sqlite3WhereOrderByLimitOptLabel(pWInfo);
+        if( addrSkip!=sqlite3WhereContinueLabel(pWInfo) ){
+          sqlite3VdbeGoto(v, addrSkip);
+        }
         sqlite3WhereEnd(pWInfo);
         finalizeAggFunctions(pParse, pAggInfo);
       }
index 1afbb20992dd534e7815102e108affb4f048d3ad..960531e07d37c9573e743d239b9d9ab537acf30a 100644 (file)
@@ -4431,7 +4431,7 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
             && pWInfo->nOBSat==1
             && (pWInfo->wctrlFlags & (WHERE_ORDERBY_MIN|WHERE_ORDERBY_MAX))!=0
             ){
-        pFrom->aLoop[nLoop-1]->wsFlags |= WHERE_ONEROW;
+        pWInfo->bOrderedInnerLoop = 1;
       }
     }
     if( (pWInfo->wctrlFlags & WHERE_SORTBYGROUP)
@@ -5336,11 +5336,6 @@ void sqlite3WhereEnd(WhereInfo *pWInfo){
 #endif
     }else{
       sqlite3VdbeResolveLabel(v, pLevel->addrCont);
-      if( pLevel->regBignull ){
-        sqlite3VdbeResolveLabel(v, pLevel->addrBignull);
-        sqlite3VdbeAddOp2(v, OP_DecrJumpZero, pLevel->regBignull, pLevel->p2-1);
-        VdbeCoverage(v);
-      }
     }
     if( pLoop->wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){
       struct InLoop *pIn;