diff options
author | drh <drh@noemail.net> | 2019-12-25 23:54:21 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2019-12-25 23:54:21 +0000 |
commit | a9ebfe20309d5aeec90337099a27e68454d16ff6 (patch) | |
tree | 7951f0603588b693977a4b054ab8eec965e92362 /src/expr.c | |
parent | b44fec68a53b88612d1d0954eecaa638674764a4 (diff) | |
download | sqlite-a9ebfe20309d5aeec90337099a27e68454d16ff6.tar.gz sqlite-a9ebfe20309d5aeec90337099a27e68454d16ff6.zip |
When the sqlite3WindowRewrite() routine detects and error, have it convert
the SELECT statement into just "SELECT null" so that it does not leave the
parse tree in a goofy state that can cause problems with subsequent code
before the stack has a chance to unwind and report the error.
Ticket [d87336c81c7d0873]
FossilOrigin-Name: fa58aad48a788802b13a819e49f9b8787f713bbe395c46c7295e821c52c81738
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/expr.c b/src/expr.c index 601574e68..7901608d2 100644 --- a/src/expr.c +++ b/src/expr.c @@ -594,6 +594,7 @@ static void codeVectorCompare( int addrDone = sqlite3VdbeMakeLabel(pParse); int isCommuted = ExprHasProperty(pExpr,EP_Commuted); + if( pParse->nErr ) return; if( nLeft!=sqlite3ExprVectorSize(pRight) ){ sqlite3ErrorMsg(pParse, "row value misused"); return; @@ -2686,8 +2687,10 @@ static char *exprINAffinity(Parse *pParse, Expr *pExpr){ ** "sub-select returns N columns - expected M" */ void sqlite3SubselectError(Parse *pParse, int nActual, int nExpect){ - const char *zFmt = "sub-select returns %d columns - expected %d"; - sqlite3ErrorMsg(pParse, zFmt, nActual, nExpect); + if( pParse->nErr==0 ){ + const char *zFmt = "sub-select returns %d columns - expected %d"; + sqlite3ErrorMsg(pParse, zFmt, nActual, nExpect); + } } #endif |