]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a possible problem following OOM in a WITH statement.
authordrh <>
Mon, 26 Jan 2026 00:11:01 +0000 (00:11 +0000)
committerdrh <>
Mon, 26 Jan 2026 00:11:01 +0000 (00:11 +0000)
FossilOrigin-Name: c38797d400dc4135108a6e303f2c10779ba9adf0daae28f1789f9106a68d21d5

manifest
manifest.uuid
src/select.c

index 8ee020e20e73303c7f7feec56d11f9654e866a58..be5b9fb6e5068fe5a2310e48e5b6bc571b4d4a18 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Always\suse\sthe\ssort-and-merge\salgorithm\sfor\sEXCEPT,\sINTERSECT,\sand\sUNION,\neven\sif\sthere\sis\sno\sORDER\sBY\sclause.
-D 2026-01-25T23:28:42.931
+C Fix\sa\spossible\sproblem\sfollowing\sOOM\sin\sa\sWITH\sstatement.
+D 2026-01-26T00:11:01.035
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -738,7 +738,7 @@ F src/printf.c b1b29b5e58e1530d5daeee5963d3c318d8ab2d7e38437580e28755753e0c1ded
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 47aa7fdc9ec4c19b103ac5e79d7887d30119b5675309facf5eed1118391c868b
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
-F src/select.c 003b15bdb8b7126e8710af32c592d922157f89f29c6c2080552fe92de4dd3118
+F src/select.c 65d7ffa2af9670b5e9ca2b23a98a92cd4a32c12b098edeff80e6df61da9b9a6e
 F src/shell.c.in e8818572acd50464bc00426fe0d755e98239f73d531437c3dc7721d1fecb1231
 F src/sqlite.h.in 69eccc01b4c0ff8e8c830e1961971290f1b94d46dc59cfd40f82d26cb9331eb0
 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
@@ -2193,9 +2193,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 8b53b97833afe27c0c3782c5fbc0437976215b571579f73a94c33e28d3fedb41 1fe5a1ca72892987716b71b9419265f25c8c426e52320acf56724fd64b838be6
-R 24b1fff6258b99aab1ec1e8d96bb13c7
-T +closed 1fe5a1ca72892987716b71b9419265f25c8c426e52320acf56724fd64b838be6
+P 132ba781b031972c6ac564ff0d1d6b2dfaeee77fe503ad6e9e8647bb5ba28bd3
+R c35fd8700b1cd68ef1adbbe1e7bea41f
 U drh
-Z 4395589489e05fdfc92eea4ff45b5f14
+Z 2977849ebb7bbf55fa33d706ecf5ef18
 # Remove this line to create a well-formed Fossil manifest.
index 49a19597d7063f3e8f9a551430acb218e4bf3c61..9d18dadde9ab59b88b3620be5014830f7d4a13fe 100644 (file)
@@ -1 +1 @@
-132ba781b031972c6ac564ff0d1d6b2dfaeee77fe503ad6e9e8647bb5ba28bd3
+c38797d400dc4135108a6e303f2c10779ba9adf0daae28f1789f9106a68d21d5
index 97d8fbcb5a2ab2aee0d8fc5a9075183257803a43..aef1c67b670ac959b63fb1958746ce337fd1b1a6 100644 (file)
@@ -2738,17 +2738,18 @@ static void generateWithRecursiveQuery(
     assert( p->pEList!=0 );
     nCol = p->pEList->nExpr;
     pKeyInfo = sqlite3KeyInfoAlloc(pParse->db, nCol, 1);
-    if( !pKeyInfo ){
-      goto end_of_recursive_query;
-    }
-    for(i=0, apColl=pKeyInfo->aColl; i<nCol; i++, apColl++){
-      *apColl = multiSelectCollSeq(pParse, p, i);
-      if( 0==*apColl ){
-        *apColl = pParse->db->pDfltColl;
+    if( pKeyInfo ){
+      for(i=0, apColl=pKeyInfo->aColl; i<nCol; i++, apColl++){
+        *apColl = multiSelectCollSeq(pParse, p, i);
+        if( 0==*apColl ){
+          *apColl = pParse->db->pDfltColl;
+        }
       }
+      sqlite3VdbeAddOp4(v, OP_OpenEphemeral, iDistinct, nCol, 0,
+                           (void*)pKeyInfo, P4_KEYINFO);
+    }else{
+      assert( pParse->nErr>0 );
     }
-    sqlite3VdbeAddOp4(v, OP_OpenEphemeral, iDistinct, nCol, 0,
-                         (void*)pKeyInfo, P4_KEYINFO);
   }
 
   /* Detach the ORDER BY clause from the compound SELECT */