aboutsummaryrefslogtreecommitdiff
path: root/src/alter.c
diff options
context:
space:
mode:
authordrh <>2024-08-20 23:11:28 +0000
committerdrh <>2024-08-20 23:11:28 +0000
commit5648d717b15c1722ff19e7af1e55d68d1d172f1d (patch)
tree971f2c19f00ab2073124d4ecedaa7df3f0b42509 /src/alter.c
parent781163aa9dce91608ba33af479564f83dda1bd40 (diff)
parenta0651b370706e58f9014453c5f36124ca8a738c9 (diff)
downloadsqlite-5648d717b15c1722ff19e7af1e55d68d1d172f1d.tar.gz
sqlite-5648d717b15c1722ff19e7af1e55d68d1d172f1d.zip
Refactor the SrcItem object to move fields associated with subqueries out
into a separate object named Subquery. This reduces the size of the SrcItem object by about 1/3rd and provides improved performance. FossilOrigin-Name: 484bcd75bc95491d8540c791c1c4d40d996cb465839564662e14f98739699bf1
Diffstat (limited to 'src/alter.c')
-rw-r--r--src/alter.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/alter.c b/src/alter.c
index a8556d115..ff2075758 100644
--- a/src/alter.c
+++ b/src/alter.c
@@ -1366,8 +1366,9 @@ static int renameResolveTrigger(Parse *pParse){
int i;
for(i=0; i<pStep->pFrom->nSrc && rc==SQLITE_OK; i++){
SrcItem *p = &pStep->pFrom->a[i];
- if( p->pSelect ){
- sqlite3SelectPrep(pParse, p->pSelect, 0);
+ if( p->fg.isSubquery ){
+ assert( p->u4.pSubq!=0 );
+ sqlite3SelectPrep(pParse, p->u4.pSubq->pSelect, 0);
}
}
}
@@ -1435,8 +1436,12 @@ static void renameWalkTrigger(Walker *pWalker, Trigger *pTrigger){
}
if( pStep->pFrom ){
int i;
- for(i=0; i<pStep->pFrom->nSrc; i++){
- sqlite3WalkSelect(pWalker, pStep->pFrom->a[i].pSelect);
+ SrcList *pFrom = pStep->pFrom;
+ for(i=0; i<pFrom->nSrc; i++){
+ if( pFrom->a[i].fg.isSubquery ){
+ assert( pFrom->a[i].u4.pSubq!=0 );
+ sqlite3WalkSelect(pWalker, pFrom->a[i].u4.pSubq->pSelect);
+ }
}
}
}
@@ -1683,7 +1688,7 @@ static int renameTableSelectCb(Walker *pWalker, Select *pSelect){
}
for(i=0; i<pSrc->nSrc; i++){
SrcItem *pItem = &pSrc->a[i];
- if( pItem->pTab==p->pTab ){
+ if( pItem->pSTab==p->pTab ){
renameTokenFind(pWalker->pParse, p, pItem->zName);
}
}