]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Abort the window function tree rewrite early following an OOM.
authordrh <drh@noemail.net>
Sat, 23 Nov 2019 16:34:40 +0000 (16:34 +0000)
committerdrh <drh@noemail.net>
Sat, 23 Nov 2019 16:34:40 +0000 (16:34 +0000)
FossilOrigin-Name: d66f95a51530259ab48f78c9f91acc38055caf338b6fee846b99a8c077466e95

manifest
manifest.uuid
src/window.c

index e3f8ef8d8e27b96fc9636346c6e19f377157875f..70c5fd08abfc35afbe728ddb8da7a0b6ca5a10be 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\sevaluating\sPARTITION\sBY\sor\sORDER\sBY\sexpressions\smultiple\stimes\sfor\swindow\sfunction\squeries\sthat\suse\smultiple\swindow\sfunctions\swith\sthe\ssame\swindow-definition.
-D 2019-11-23T15:10:28.586
+C Abort\sthe\swindow\sfunction\stree\srewrite\searly\sfollowing\san\sOOM.
+D 2019-11-23T16:34:40.792
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -616,7 +616,7 @@ F src/where.c 874845fb5d93b3bc07123df8fee805e9650bd091e3ed62988273c7e2141ab8bd
 F src/whereInt.h 4a296fd4fa79fdcbc2b5e8c1b898901617655811223e1082b899c23ecb092217
 F src/wherecode.c 909325b98d5cb313f24e5c8cb304a3e3c73ca6631cdb19cfa1f580dde182fedb
 F src/whereexpr.c 39b6a538804c6e1248c22b33e09d00f89ae6a099c849c4d841ce3995562287b4
-F src/window.c 35148e95bbc39c8bf0ae356096817188caa3657b9a0de516bd479451bb5b914c
+F src/window.c a77f12078dd4b10e655d4ba5a73ca32dbe00e0206018305185c7e86445d3f429
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
 F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627
 F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d
@@ -1851,7 +1851,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P ffeec62cb5223ae70bc1889df4c0b241f5d17b1a10156362ca59953028741480
-R 4ed90086329d6a5308b322479c4793a3
-U dan
-Z 58f694df3aeffd18f733f631c7499dc0
+P 57070c68bbe15fc1d19a765182432e844c082909bdbc63b58fd86b96e2c521dd
+R 5ec4b862f5e315c01dbee90c995a71d6
+U drh
+Z b069a61ef07a50420fc34a99d1dc8940
index 6aae45bde9c30cf8d8657e8ee1a01e6f4848de96..418e7ff21d7500e2026b1711c670e23ba4508e3d 100644 (file)
@@ -1 +1 @@
-57070c68bbe15fc1d19a765182432e844c082909bdbc63b58fd86b96e2c521dd
\ No newline at end of file
+d66f95a51530259ab48f78c9f91acc38055caf338b6fee846b99a8c077466e95
\ No newline at end of file
index 1d37d4b024a62b5a82cc02815e31134264413384..06a341d270a7c1faf594458eda5974a87f8a80bd 100644 (file)
@@ -813,7 +813,7 @@ static int selectWindowRewriteExprCb(Walker *pWalker, Expr *pExpr){
         pExpr->iTable = p->pWin->iEphCsr;
         pExpr->y.pTab = p->pTab;
       }
-
+      if( pParse->db->mallocFailed ) return WRC_Abort;
       break;
     }
 
@@ -1273,6 +1273,7 @@ void sqlite3WindowLink(Select *pSel, Window *pWin){
 ** Identical window objects can be processed in a single scan.
 */
 int sqlite3WindowCompare(Parse *pParse, Window *p1, Window *p2, int bFilter){
+  if( NEVER(p1==0) || NEVER(p2==0) ) return 1;
   if( p1->eFrmType!=p2->eFrmType ) return 1;
   if( p1->eStart!=p2->eStart ) return 1;
   if( p1->eEnd!=p2->eEnd ) return 1;