aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2018-08-29 21:00:16 +0000
committerdan <dan@noemail.net>2018-08-29 21:00:16 +0000
commitc9461ecc28c216f6aeb3b41ebb406da183603000 (patch)
tree4b1c2d564330bc8964a1b655ad42a7f203a5b90d /src/resolve.c
parent3a843f525cf01eee7641b4f63080f678d1d362e8 (diff)
downloadsqlite-c9461ecc28c216f6aeb3b41ebb406da183603000.tar.gz
sqlite-c9461ecc28c216f6aeb3b41ebb406da183603000.zip
Extend RENAME TABLE to edit triggers and views. Still buggy.
FossilOrigin-Name: 01308bae3acf33f78b5bb90892085eab340df093aafc17e6ccf6a7d6cf324897
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/resolve.c b/src/resolve.c
index fb3833228..9fb4d4c63 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -264,6 +264,9 @@ static int lookupName(
if( sqlite3StrICmp(zTabName, zTab)!=0 ){
continue;
}
+ if( IN_RENAME_OBJECT && pItem->zAlias ){
+ sqlite3RenameTokenRemap(pParse, 0, (void*)&pExpr->pTab);
+ }
}
if( 0==(cntTab++) ){
pMatch = pItem;
@@ -349,7 +352,7 @@ static int lookupName(
#ifndef SQLITE_OMIT_UPSERT
if( pExpr->iTable==2 ){
testcase( iCol==(-1) );
- if( IN_RENAME_COLUMN ){
+ if( IN_RENAME_OBJECT ){
pExpr->iColumn = iCol;
pExpr->pTab = pTab;
eNewExprOp = TK_COLUMN;
@@ -442,7 +445,7 @@ static int lookupName(
cnt = 1;
pMatch = 0;
assert( zTab==0 && zDb==0 );
- if( IN_RENAME_COLUMN ){
+ if( IN_RENAME_OBJECT ){
sqlite3RenameTokenRemap(pParse, 0, (void*)pExpr);
}
goto lookupname_end;
@@ -672,21 +675,25 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
zTable = 0;
zColumn = pExpr->u.zToken;
}else{
+ Expr *pLeft = pExpr->pLeft;
notValid(pParse, pNC, "the \".\" operator", NC_IdxExpr);
pRight = pExpr->pRight;
if( pRight->op==TK_ID ){
zDb = 0;
- zTable = pExpr->pLeft->u.zToken;
}else{
assert( pRight->op==TK_DOT );
- zDb = pExpr->pLeft->u.zToken;
- zTable = pRight->pLeft->u.zToken;
+ zDb = pLeft->u.zToken;
+ pLeft = pRight->pLeft;
pRight = pRight->pRight;
}
+ zTable = pLeft->u.zToken;
zColumn = pRight->u.zToken;
- if( IN_RENAME_COLUMN ){
+ if( IN_RENAME_OBJECT ){
sqlite3RenameTokenRemap(pParse, (void*)pExpr, (void*)pRight);
}
+ if( IN_RENAME_OBJECT ){
+ sqlite3RenameTokenRemap(pParse, (void*)&pExpr->pTab, (void*)pLeft);
+ }
}
return lookupName(pParse, zDb, zTable, zColumn, pNC, pExpr);
}
@@ -769,7 +776,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
}
}
- if( 0==IN_RENAME_COLUMN ){
+ if( 0==IN_RENAME_OBJECT ){
#ifndef SQLITE_OMIT_WINDOWFUNC
assert( is_agg==0 || (pDef->funcFlags & SQLITE_FUNC_MINMAX)
|| (pDef->xValue==0 && pDef->xInverse==0)