]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Ensure that temporary SrcItem objects created by trigger processing have
authordrh <>
Wed, 24 Apr 2024 11:21:27 +0000 (11:21 +0000)
committerdrh <>
Wed, 24 Apr 2024 11:21:27 +0000 (11:21 +0000)
either SrcItem.zName or SrcItem.pSelect defined.  Every SrcItem should have
one or the other.

FossilOrigin-Name: cef4d9e3ba586735598f03eb5e8f29072c9e6f62b0d34ddd2fb3ed1795f6e21c

manifest
manifest.uuid
src/resolve.c
src/trigger.c

index d09a6714d844a9eebc6e935106752f9c04a76757..69f0bf480d18eb4b6b0b6640df12dc15dc6bcd1e 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\san\sundocumented\sfeature\sfrom\sthe\sJS\sWorker1.open\sAPI\sbecause\sit\srelies\son\sbroken\sbehavior\swhich\shas\sno\sVFS-agnostic\sworkaround.
-D 2024-04-24T06:43:17.626
+C Ensure\sthat\stemporary\sSrcItem\sobjects\screated\sby\strigger\sprocessing\shave\neither\sSrcItem.zName\sor\sSrcItem.pSelect\sdefined.\s\sEvery\sSrcItem\sshould\shave\none\sor\sthe\sother.
+D 2024-04-24T11:21:27.855
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -749,7 +749,7 @@ F src/pragma.h e690a356c18e98414d2e870ea791c1be1545a714ba623719deb63f7f226d8bb7
 F src/prepare.c 371f6115cb69286ebc12c6f2d7511279c2e47d9f54f475d46a554d687a3b312c
 F src/printf.c 87b67bba3662a0523f39ae6b084a3907109702f717c654d6cecb838af5cd57f1
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
-F src/resolve.c 6310bdfed32184cd3a5d6ba203dfee1ea323051cb38a6c2e80a5b79c069f4e87
+F src/resolve.c f430c3744a22486323a09b57185dbf38347c3dd1848af453e96ac42b3676c668
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c 51893b3e34d38ad8d46b5010a6e380ca878b578be5001a640daa907336187424
 F src/shell.c.in 0354ca51eee5fbf6af394a7ef9f5ef6823ef45b743db65431f6777e4d5be2199
@@ -815,7 +815,7 @@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
 F src/tokenize.c 3f703cacdab728d7741e5a6ac242006d74fe1c2754d4f03ed889d7253259bd68
 F src/treeview.c a8aa3086c886c6eb2ff2b6354b0f23d251f7219bf08fad52d4f2791e55324f1b
-F src/trigger.c 0905b96b04bb6658509f711a8207287f1315cdbc3df1a1b13ba6483c8e341c81
+F src/trigger.c fd559df58f17e127701847c74e3a0d78419d356f6c662463bc959e39ac6fed9c
 F src/update.c 732404a04d1737ef14bb6ec6b84f74edf28b3c102a92ae46b4855438a710efe7
 F src/upsert.c 2e60567a0e9e8520c18671b30712a88dc73534474304af94f32bb5f3ef65ac65
 F src/utf.c f23165685a67b4caf8ec08fb274cb3f319103decfb2a980b7cfd55d18dfa855e
@@ -2185,8 +2185,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 86e8c782e7494377de3c27b750cd83a7eb2302c1182ee2004d3864db50fca557
-R 13de094fa4800b17b613a51d0d124b97
-U stephan
-Z ed94745ed0281633dd50a259c15a286e
+P 3a640038c70c8511e7051af83aa35d163c4f96f05c5064cffd3e4e2e63cd44a9
+R 63f308f782c1ae167ab94842d682dae8
+U drh
+Z 8a5b2c860abce773c65eadddadd69986
 # Remove this line to create a well-formed Fossil manifest.
index 3252cc5298232540702214358a60e94d42d41a07..d3d5c10c8f11a1634ab66d0188d0cae144cae947 100644 (file)
@@ -1 +1 @@
-3a640038c70c8511e7051af83aa35d163c4f96f05c5064cffd3e4e2e63cd44a9
\ No newline at end of file
+cef4d9e3ba586735598f03eb5e8f29072c9e6f62b0d34ddd2fb3ed1795f6e21c
\ No newline at end of file
index 68a1d94a26e52ace3bfc1185eedf505c491db6a3..81f3d99474b8d80014af9a7a63974b0b70b6e00b 100644 (file)
@@ -1889,6 +1889,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
     if( pOuterNC ) pOuterNC->nNestedSelect++;
     for(i=0; i<p->pSrc->nSrc; i++){
       SrcItem *pItem = &p->pSrc->a[i];
+      assert( pItem->zName!=0 || pItem->pSelect!=0 );
       if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){
         int nRef = pOuterNC ? pOuterNC->nRef : 0;
         const char *zSavedContext = pParse->zAuthContext;
index 97ca249be58175b58229383953f87e84e704d976..813b2fac72bfdcfa74e1b9ea0a7fbde1061dd290 100644 (file)
@@ -987,6 +987,7 @@ static void codeReturningTrigger(
   sSelect.pSrc = &sFrom;
   sFrom.nSrc = 1;
   sFrom.a[0].pTab = pTab;
+  sFrom.a[0].zName = pTab->zName;
   sFrom.a[0].iCursor = -1;
   sqlite3SelectPrep(pParse, &sSelect, 0);
   if( pParse->nErr==0 ){