1
0
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:
dan
2019-06-11 12:03:10 +00:00
parent 8e34e4061b
commit 0b277a980a
4 changed files with 36 additions and 10 deletions

View File

@@ -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);
}