diff options
author | dan <dan@noemail.net> | 2019-01-23 16:59:24 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2019-01-23 16:59:24 +0000 |
commit | d99950310ff4477be8df292744e91d783897263e (patch) | |
tree | 5ab274dedcc7f09bb269cb37b08af887ea57ff8a /src/resolve.c | |
parent | 4c7bdd159755ab03afff1825def5e7b88ac1ed4b (diff) | |
download | sqlite-d99950310ff4477be8df292744e91d783897263e.tar.gz sqlite-d99950310ff4477be8df292744e91d783897263e.zip |
Fix problems with sub-selects in WINDOW definitions. Also rename-column operations when the column being renamed appears in a WINDOW definition that is part of a VIEW or TRIGGER.
FossilOrigin-Name: 0387cb3add992b2028efe4f2100188d8f9fdfdcb233329857aa4b46a293cfc97
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/resolve.c b/src/resolve.c index da2febb1f..b2da946a9 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -858,10 +858,10 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ #ifndef SQLITE_OMIT_WINDOWFUNC if( pExpr->y.pWin ){ Select *pSel = pNC->pWinSelect; + sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef); sqlite3WalkExprList(pWalker, pExpr->y.pWin->pPartition); sqlite3WalkExprList(pWalker, pExpr->y.pWin->pOrderBy); sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter); - sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef); if( 0==pSel->pWin || 0==sqlite3WindowCompare(pParse, pSel->pWin, pExpr->y.pWin) ){ @@ -1536,6 +1536,17 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ } } + if( IN_RENAME_OBJECT ){ + Window *pWin; + for(pWin=p->pWinDefn; pWin; pWin=pWin->pNextWin){ + if( sqlite3ResolveExprListNames(&sNC, pWin->pOrderBy) + || sqlite3ResolveExprListNames(&sNC, pWin->pPartition) + ){ + return WRC_Abort; + } + } + } + /* If this is part of a compound SELECT, check that it has the right ** number of expressions in the select list. */ if( p->pNext && p->pEList->nExpr!=p->pNext->pEList->nExpr ){ |