diff options
author | dan <dan@noemail.net> | 2018-06-22 20:51:35 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-06-22 20:51:35 +0000 |
commit | 67a9b8eded051b514db853d53746f484f87bc23b (patch) | |
tree | cc14e3517ed605657b00b8278d520abd81051c01 /src/resolve.c | |
parent | 17074e3a9e1ab157fc37a361e2a4adc43d00e866 (diff) | |
download | sqlite-67a9b8eded051b514db853d53746f484f87bc23b.tar.gz sqlite-67a9b8eded051b514db853d53746f484f87bc23b.zip |
Omit all window-function related code when building with SQLITE_OMIT_WINDOWFUNC.
FossilOrigin-Name: 5f04b016467342b5a796bf702ed25b621eb86f2961c1e703d276c93f2cb6aa89
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/resolve.c b/src/resolve.c index 221564f9d..84ec6598e 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -757,6 +757,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ } } +#ifndef SQLITE_OMIT_WINDOWFUNC if( is_agg==0 && pExpr->pWin ){ sqlite3ErrorMsg(pParse, "%.*s() may not be used as a window function", nId, zId @@ -773,6 +774,10 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ }else{ zType = "aggregate"; } +#else + if( (is_agg && (pNC->ncFlags & NC_AllowAgg)==0) ){ + const char *zType = "aggregate"; +#endif sqlite3ErrorMsg(pParse, "misuse of %s function %.*s()", zType, nId,zId); pNC->nErr++; is_agg = 0; @@ -791,6 +796,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ if( is_agg ) pNC->ncFlags &= ~NC_AllowAgg; sqlite3WalkExprList(pWalker, pList); if( is_agg ){ +#ifndef SQLITE_OMIT_WINDOWFUNC if( pExpr->pWin ){ Select *pSel = pNC->pWinSelect; sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->pWin, pDef); @@ -800,7 +806,9 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ pExpr->pWin->pNextWin = pSel->pWin; pSel->pWin = pExpr->pWin; } - }else{ + }else +#endif /* SQLITE_OMIT_WINDOWFUNC */ + { NameContext *pNC2 = pNC; pExpr->op = TK_AGG_FUNCTION; pExpr->op2 = 0; @@ -1264,7 +1272,6 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ nCompound = 0; pLeftmost = p; while( p ){ - assert( p->pWin==0 ); assert( (p->selFlags & SF_Expanded)!=0 ); assert( (p->selFlags & SF_Resolved)==0 ); p->selFlags |= SF_Resolved; |