mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-12 13:01:09 +03:00
Ensure that sqlite3RenameExprUnmap() does an unmap of the result set alias
names in subqueries when ALTER TABLE fails because of a syntax error in a trigger. FossilOrigin-Name: d3b6f1665f6fb5fc5cf1c0864d779d0b24746ada530f755c7b6ff34766bd2188
This commit is contained in:
17
src/alter.c
17
src/alter.c
@@ -731,11 +731,20 @@ static int renameUnmapExprCb(Walker *pWalker, Expr *pExpr){
|
||||
** Walker callback used by sqlite3RenameExprUnmap().
|
||||
*/
|
||||
static int renameUnmapSelectCb(Walker *pWalker, Select *p){
|
||||
Parse *pParse = pWalker->pParse;
|
||||
int i;
|
||||
if( ALWAYS(p->pEList) ){
|
||||
ExprList *pList = p->pEList;
|
||||
for(i=0; i<pList->nExpr; i++){
|
||||
if( pList->a[i].zName ){
|
||||
sqlite3RenameTokenRemap(pParse, 0, (void*)pList->a[i].zName);
|
||||
}
|
||||
}
|
||||
}
|
||||
if( ALWAYS(p->pSrc) ){ /* Every Select as a SrcList, even if it is empty */
|
||||
Parse *pParse = pWalker->pParse;
|
||||
int i;
|
||||
for(i=0; i<p->pSrc->nSrc; i++){
|
||||
sqlite3RenameTokenRemap(pParse, 0, (void*)p->pSrc->a[0].zName);
|
||||
SrcList *pSrc = p->pSrc;
|
||||
for(i=0; i<pSrc->nSrc; i++){
|
||||
sqlite3RenameTokenRemap(pParse, 0, (void*)pSrc->a[i].zName);
|
||||
}
|
||||
}
|
||||
return WRC_Continue;
|
||||
|
||||
Reference in New Issue
Block a user