diff options
author | dan <dan@noemail.net> | 2020-03-16 18:52:53 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2020-03-16 18:52:53 +0000 |
commit | 553948e51433715f32d57e6977db6e0992b7f8cd (patch) | |
tree | 27859a73d996738b96dfdf424d7c716b345cbd35 /src | |
parent | 14c98a4f4016bb60679535e3d2d9fe6c49bfe04a (diff) | |
download | sqlite-553948e51433715f32d57e6977db6e0992b7f8cd.tar.gz sqlite-553948e51433715f32d57e6977db6e0992b7f8cd.zip |
Fix handling of window functions in aggregate queries that have no GROUP BY clause. Also remove a faulty assert causing the error reported in [618156e3].
FossilOrigin-Name: 38e3dd389d142e520c71139ec84aa3c7722992af28a5f93a7f16e0ea176b74bb
Diffstat (limited to 'src')
-rw-r--r-- | src/select.c | 1 | ||||
-rw-r--r-- | src/window.c | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/select.c b/src/select.c index a9ec1e852..3128d482a 100644 --- a/src/select.c +++ b/src/select.c @@ -103,7 +103,6 @@ static void clearSelect(sqlite3 *db, Select *p, int bFree){ if( OK_IF_ALWAYS_TRUE(p->pWinDefn) ){ sqlite3WindowListDelete(db, p->pWinDefn); } - assert( p->pWin==0 ); #endif if( OK_IF_ALWAYS_TRUE(p->pWith) ) sqlite3WithDelete(db, p->pWith); if( bFree ) sqlite3DbFreeNN(db, p); diff --git a/src/window.c b/src/window.c index 3aafea543..db495d832 100644 --- a/src/window.c +++ b/src/window.c @@ -933,6 +933,7 @@ int sqlite3WindowRewrite(Parse *pParse, Select *p){ Window *pMWin = p->pWin; /* Master window object */ Window *pWin; /* Window object iterator */ Table *pTab; + u32 selFlags = p->selFlags; pTab = sqlite3DbMallocZero(db, sizeof(Table)); if( pTab==0 ){ @@ -1022,6 +1023,7 @@ int sqlite3WindowRewrite(Parse *pParse, Select *p){ sqlite3SrcListAssignCursors(pParse, p->pSrc); pSub->selFlags |= SF_Expanded; pTab2 = sqlite3ResultSetOfSelect(pParse, pSub, SQLITE_AFF_NONE); + pSub->selFlags |= (selFlags & SF_Aggregate); if( pTab2==0 ){ /* Might actually be some other kind of error, but in that case ** pParse->nErr will be set, so if SQLITE_NOMEM is set, we will get |