aboutsummaryrefslogtreecommitdiff
path: root/src/attach.c
diff options
context:
space:
mode:
authordrh <>2024-08-27 13:57:43 +0000
committerdrh <>2024-08-27 13:57:43 +0000
commitfcd65efcf10957ef84cccf0f2bd9381b69dd6dde (patch)
treea7e2f567f27186780dd500f8bfe0cf295fd9ffef /src/attach.c
parent3a39c44c21a801927f98aa3cdb2240f00e701b8a (diff)
parentc013fa50db60dad905aff1c2202edfa7223bdd67 (diff)
downloadsqlite-fcd65efcf10957ef84cccf0f2bd9381b69dd6dde.tar.gz
sqlite-fcd65efcf10957ef84cccf0f2bd9381b69dd6dde.zip
Merge all the latests trunk enhancements into the win-dupe-crt-fio branch.
FossilOrigin-Name: 2d52db98f47fbcda0622c034b21c2fb19bf4345b88c5c565ae9e6f7128642e43
Diffstat (limited to 'src/attach.c')
-rw-r--r--src/attach.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/attach.c b/src/attach.c
index 4a6a25bf0..76476685f 100644
--- a/src/attach.c
+++ b/src/attach.c
@@ -479,20 +479,21 @@ static int fixSelectCb(Walker *p, Select *pSelect){
if( NEVER(pList==0) ) return WRC_Continue;
for(i=0, pItem=pList->a; i<pList->nSrc; i++, pItem++){
- if( pFix->bTemp==0 ){
- if( pItem->zDatabase ){
- if( iDb!=sqlite3FindDbName(db, pItem->zDatabase) ){
+ if( pFix->bTemp==0 && pItem->fg.isSubquery==0 ){
+ if( pItem->fg.fixedSchema==0 && pItem->u4.zDatabase!=0 ){
+ if( iDb!=sqlite3FindDbName(db, pItem->u4.zDatabase) ){
sqlite3ErrorMsg(pFix->pParse,
"%s %T cannot reference objects in database %s",
- pFix->zType, pFix->pName, pItem->zDatabase);
+ pFix->zType, pFix->pName, pItem->u4.zDatabase);
return WRC_Abort;
}
- sqlite3DbFree(db, pItem->zDatabase);
- pItem->zDatabase = 0;
+ sqlite3DbFree(db, pItem->u4.zDatabase);
pItem->fg.notCte = 1;
+ pItem->fg.hadSchema = 1;
}
- pItem->pSchema = pFix->pSchema;
+ pItem->u4.pSchema = pFix->pSchema;
pItem->fg.fromDDL = 1;
+ pItem->fg.fixedSchema = 1;
}
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)
if( pList->a[i].fg.isUsing==0