aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/alter.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/alter.c b/src/alter.c
index 538ba7d9f..8e19c0ace 100644
--- a/src/alter.c
+++ b/src/alter.c
@@ -1318,6 +1318,8 @@ static int renameResolveTrigger(Parse *pParse){
SrcList *pSrc = sqlite3TriggerStepSrc(pParse, pStep);
if( pSrc ){
int i;
+ assert( pSrc->nSrc==1 || pSrc->nSrc==2 );
+ assert( pSrc->a[0].pSelect==0 );
for(i=0; i<pSrc->nSrc && rc==SQLITE_OK; i++){
SrcItem *p = &pSrc->a[i];
p->iCursor = pParse->nTab++;
@@ -1325,8 +1327,6 @@ static int renameResolveTrigger(Parse *pParse){
sqlite3SelectPrep(pParse, p->pSelect, 0);
sqlite3ExpandSubquery(pParse, p);
assert( i>0 );
- assert( pStep->pFrom->a[i-1].pSelect );
- sqlite3SelectPrep(pParse, pStep->pFrom->a[i-1].pSelect, 0);
}else{
p->pTab = sqlite3LocateTableItem(pParse, 0, p);
if( p->pTab==0 ){
@@ -1337,6 +1337,15 @@ static int renameResolveTrigger(Parse *pParse){
}
}
}
+ if( pStep->pFrom ){
+ 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( rc==SQLITE_OK && db->mallocFailed ){
rc = SQLITE_NOMEM;
}
@@ -1789,6 +1798,15 @@ static void renameTableFunc(
if( pStep->zTarget && 0==sqlite3_stricmp(pStep->zTarget, zOld) ){
renameTokenFind(&sParse, &sCtx, pStep->zTarget);
}
+ if( pStep->pFrom ){
+ int i;
+ for(i=0; i<pStep->pFrom->nSrc; i++){
+ SrcItem *pItem = &pStep->pFrom->a[i];
+ if( pItem->zName && 0==sqlite3_stricmp(pItem->zName, zOld) ){
+ renameTokenFind(&sParse, &sCtx, pItem->zName);
+ }
+ }
+ }
}
}
}