From: drh <> Date: Wed, 24 Apr 2024 11:21:27 +0000 (+0000) Subject: Ensure that temporary SrcItem objects created by trigger processing have X-Git-Tag: version-3.46.0~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b065eceb560a32595ccfe0ecd99bc2a0488f8062;p=thirdparty%2Fsqlite.git Ensure that temporary SrcItem objects created by trigger processing have either SrcItem.zName or SrcItem.pSelect defined. Every SrcItem should have one or the other. FossilOrigin-Name: cef4d9e3ba586735598f03eb5e8f29072c9e6f62b0d34ddd2fb3ed1795f6e21c --- diff --git a/manifest b/manifest index d09a6714d8..69f0bf480d 100644 --- 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. diff --git a/manifest.uuid b/manifest.uuid index 3252cc5298..d3d5c10c8f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3a640038c70c8511e7051af83aa35d163c4f96f05c5064cffd3e4e2e63cd44a9 \ No newline at end of file +cef4d9e3ba586735598f03eb5e8f29072c9e6f62b0d34ddd2fb3ed1795f6e21c \ No newline at end of file diff --git a/src/resolve.c b/src/resolve.c index 68a1d94a26..81f3d99474 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -1889,6 +1889,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ if( pOuterNC ) pOuterNC->nNestedSelect++; for(i=0; ipSrc->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; diff --git a/src/trigger.c b/src/trigger.c index 97ca249be5..813b2fac72 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -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 ){