diff options
author | drh <> | 2021-04-17 13:46:23 +0000 |
---|---|---|
committer | drh <> | 2021-04-17 13:46:23 +0000 |
commit | 7b0d34fe32ef3b62b86647ff6eb7d04bd360f67d (patch) | |
tree | 559c5e1afeb4921cff792bd0eb8896d0615f6ed8 /src/walker.c | |
parent | 1929cc0d8aac2e7fa7732f3bd4eca60f7d4c16ba (diff) | |
download | sqlite-7b0d34fe32ef3b62b86647ff6eb7d04bd360f67d.tar.gz sqlite-7b0d34fe32ef3b62b86647ff6eb7d04bd360f67d.zip |
Ensure that variables are not used in the WINDOW clause of a query inside
of a trigger. dbsqlfuzz d9cf66100064952b66951845dfab41de1c124611
FossilOrigin-Name: 1a341378ab24a5091e6cf03b9e957d11b2bfe5c711835e8c583785f8fa0125d3
Diffstat (limited to 'src/walker.c')
-rw-r--r-- | src/walker.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/walker.c b/src/walker.c index 927f7e52d..648363881 100644 --- a/src/walker.c +++ b/src/walker.c @@ -130,10 +130,12 @@ int sqlite3WalkSelectExpr(Walker *pWalker, Select *p){ if( sqlite3WalkExpr(pWalker, p->pHaving) ) return WRC_Abort; if( sqlite3WalkExprList(pWalker, p->pOrderBy) ) return WRC_Abort; if( sqlite3WalkExpr(pWalker, p->pLimit) ) return WRC_Abort; -#if !defined(SQLITE_OMIT_WINDOWFUNC) && !defined(SQLITE_OMIT_ALTERTABLE) - { - Parse *pParse = pWalker->pParse; - if( pParse && IN_RENAME_OBJECT ){ +#if !defined(SQLITE_OMIT_WINDOWFUNC) + if( p->pWinDefn ){ + Parse *pParse; + if( pWalker->bWalkWinDefn + || ((pParse = pWalker->pParse)!=0 && IN_RENAME_OBJECT) + ){ /* The following may return WRC_Abort if there are unresolvable ** symbols (e.g. a table that does not exist) in a window definition. */ int rc = walkWindowList(pWalker, p->pWinDefn, 0); |