mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-12 13:01:09 +03:00
Have the ALTER TABLE code handle the case where an entire expression that includes a sub-select is excluded from a view, trigger or index.
FossilOrigin-Name: f2c8179f3c0b77f10da3f9b0771db4dec30d0bbf0b7f4751ce439bfb08da8f6f
This commit is contained in:
15
src/alter.c
15
src/alter.c
@@ -727,6 +727,20 @@ static int renameUnmapExprCb(Walker *pWalker, Expr *pExpr){
|
||||
return WRC_Continue;
|
||||
}
|
||||
|
||||
/*
|
||||
** Walker callback used by sqlite3RenameExprUnmap().
|
||||
*/
|
||||
static int renameUnmapSelectCb(Walker *pWalker, Select *p){
|
||||
if( p->pSrc ){
|
||||
Parse *pParse = pWalker->pParse;
|
||||
int i;
|
||||
for(i=0; i<p->pSrc->nSrc; i++){
|
||||
sqlite3RenameTokenRemap(pParse, 0, (void*)p->pSrc->a[0].zName);
|
||||
}
|
||||
}
|
||||
return WRC_Continue;
|
||||
}
|
||||
|
||||
/*
|
||||
** Remove all nodes that are part of expression pExpr from the rename list.
|
||||
*/
|
||||
@@ -735,6 +749,7 @@ void sqlite3RenameExprUnmap(Parse *pParse, Expr *pExpr){
|
||||
memset(&sWalker, 0, sizeof(Walker));
|
||||
sWalker.pParse = pParse;
|
||||
sWalker.xExprCallback = renameUnmapExprCb;
|
||||
sWalker.xSelectCallback = renameUnmapSelectCb;
|
||||
sqlite3WalkExpr(&sWalker, pExpr);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user