diff options
author | dan <dan@noemail.net> | 2020-02-29 17:19:42 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2020-02-29 17:19:42 +0000 |
commit | 0a21ea997dfcf520be78957dedd1e905b55446b2 (patch) | |
tree | 13d789dbf3bd671cce12776ba6ece9cfe91a633f /src | |
parent | 4a3a3eb3d75af89b9da530f63ee31c3b2e56b189 (diff) | |
download | sqlite-0a21ea997dfcf520be78957dedd1e905b55446b2.tar.gz sqlite-0a21ea997dfcf520be78957dedd1e905b55446b2.zip |
Fix a problem with window functions occuring within sub-selects that are part of an OR term in a WHERE clause of the outer SELECT.
FossilOrigin-Name: 1e174ed0d29366eb56ad1a0cc8defcb440b426bfd9525aed2f93468248606efc
Diffstat (limited to 'src')
-rw-r--r-- | src/window.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/window.c b/src/window.c index a72ec0d2d..3aafea543 100644 --- a/src/window.c +++ b/src/window.c @@ -1910,6 +1910,7 @@ static int windowInitAccum(Parse *pParse, Window *pMWin){ Window *pWin; for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ FuncDef *pFunc = pWin->pFunc; + assert( pWin->regAccum ); sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); nArg = MAX(nArg, windowArgCount(pWin)); if( pMWin->regStartRowid==0 ){ @@ -2288,6 +2289,10 @@ Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p){ pNew->eStart = p->eStart; pNew->eExclude = p->eExclude; pNew->regResult = p->regResult; + pNew->regAccum = p->regAccum; + pNew->iArgCol = p->iArgCol; + pNew->iEphCsr = p->iEphCsr; + pNew->bExprArgs = p->bExprArgs; pNew->pStart = sqlite3ExprDup(db, p->pStart, 0); pNew->pEnd = sqlite3ExprDup(db, p->pEnd, 0); pNew->pOwner = pOwner; |