]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When constructing the synthensized SELECT statement that is used to choose
authordrh <>
Wed, 19 May 2021 21:55:56 +0000 (21:55 +0000)
committerdrh <>
Wed, 19 May 2021 21:55:56 +0000 (21:55 +0000)
the rows in an UPDATE FROM, make sure the first table is really the table
being updated, and not some common-table expression that happens to have the
same name.  [forum:/forumpost/a274248080|forum post a274248080].  More
changes associated with CTE name resolution are pending.

FossilOrigin-Name: 0f0959c6f95046e8e7887716e0a7de95da18d1e926ab1f919527083a56541db5

manifest
manifest.uuid
src/build.c
src/update.c

index cf9dcdfb7141f17e5cfe30fa3d0f8bf0fc431e79..c85abefeec7c391eedae7616e8d843930c446b94 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sa\scomment\swith\suseful\sinformation\sabout\sSHM\slocking.\s\sNo\schanges\sto\ndeliverable\scode.
-D 2021-05-19T19:28:48.372
+C When\sconstructing\sthe\ssynthensized\sSELECT\sstatement\sthat\sis\sused\sto\schoose\nthe\srows\sin\san\sUPDATE\sFROM,\smake\ssure\sthe\sfirst\stable\sis\sreally\sthe\stable\nbeing\supdated,\sand\snot\ssome\scommon-table\sexpression\sthat\shappens\sto\shave\sthe\nsame\sname.\s\s[forum:/forumpost/a274248080|forum\spost\sa274248080].\s\sMore\nchanges\sassociated\swith\sCTE\sname\sresolution\sare\spending.
+D 2021-05-19T21:55:56.327
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -487,7 +487,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
 F src/btree.c 51ba86095316fceb3e25bc61617d673d84627e79f4ace83f8722910f33eedef3
 F src/btree.h 096cc53baa58be22b02c896d1cf933c38cfc6d65f9253c1367ece8cc88a24de5
 F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
-F src/build.c 4e13b92f77d3f6dc1285c3636a2ba7c6af5cbb793e52075a762fbcebcd36e968
+F src/build.c 65b87a05331914cf90bde90ae3d4797c0a18642bd13bb4ea1553a6238fd771ec
 F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 F src/ctime.c 2a322b9a3d75771fb4d99e0702851f4f68dda982507a0f798eefb0712969a410
@@ -610,7 +610,7 @@ F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
 F src/tokenize.c bae853ad129d1129c063de8630a3e99e306283bc40146f359b1bb91be2c08f1e
 F src/treeview.c e483aeedf6f207000db1f90eb6abd816350493314c30e8749d319bdb9ab3b08c
 F src/trigger.c e0fd347b2571a2d956318cdc6d011ccca7ce862d10a0ca04188a37920ef5440c
-F src/update.c b3abdaf4a314bbed238da69a6ca54c0f21262119389b412ee5778fffe62dd3cc
+F src/update.c 5902d1830e99fcc6d1d03f9bf93ec08b7830cc7569e0e75b4a2ba7849e8261ba
 F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235
 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
 F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048
@@ -1913,7 +1913,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 3daab94977af5e8a95690acc555540311403d890a3261a9757c633fcaaf428a9 6f2fb60e499fc758bea6ffec030fef8ab5f97d08d31450f0b3ffafc20e652891
-R 51a5c10eeb74e980a28bc317ddd05223
+P 4e81ea3b15fb3fce5f31b77273639e748a735ab0970620e564e9a5c977b24a1a
+R 2b48977b646d45167b0995ab8c8e71a0
 U drh
-Z b7fe08aae0b2fc89ef00be04a5d5c5af
+Z f25d248421de35ee2c36028d331f7af7
index ad72fd93f79d1b2b131992842db46567c29e95f3..c93104f1c8e040dd6fe4a960cf61489240b1423e 100644 (file)
@@ -1 +1 @@
-4e81ea3b15fb3fce5f31b77273639e748a735ab0970620e564e9a5c977b24a1a
\ No newline at end of file
+0f0959c6f95046e8e7887716e0a7de95da18d1e926ab1f919527083a56541db5
\ No newline at end of file
index 25954b4d44446b4ac7adae1a0cf335c644358336..cf952ce091d1e5ca32b532f41ae1166274051ecb 100644 (file)
@@ -492,7 +492,7 @@ Table *sqlite3LocateTableItem(
   SrcItem *p
 ){
   const char *zDb;
-  assert( p->pSchema==0 || p->zDatabase==0 );
+  /*  assert( p->pSchema==0 || p->zDatabase==0 ); FIX-ME */
   if( p->pSchema ){
     int iDb = sqlite3SchemaToIndex(pParse->db, p->pSchema);
     zDb = pParse->db->aDb[iDb].zDbSName;
index 6751bba016384a6579a4d89518e10bcea3d31aa8..a72c02a52faeacdcd232f0cbf1717ad8ae288934 100644 (file)
@@ -220,6 +220,10 @@ static void updateFromSelect(
 
   assert( pTabList->nSrc>1 );
   if( pSrc ){
+    if( pSrc->a[0].zDatabase==0 ){
+      int iSchema = sqlite3SchemaToIndex(db, pTab->pSchema);
+      pSrc->a[0].zDatabase = sqlite3DbStrDup(db, db->aDb[iSchema].zDbSName);
+    }
     pSrc->a[0].iCursor = -1;
     pSrc->a[0].pTab->nTabRef--;
     pSrc->a[0].pTab = 0;