diff options
author | drh <drh@noemail.net> | 2017-01-01 12:44:07 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2017-01-01 12:44:07 +0000 |
commit | 245ce62ea28634be3dd85d60acb912168a0a27b9 (patch) | |
tree | 57672bef13a4dbfc967217c0be923f48b32b0689 /src/expr.c | |
parent | 3043b53222c647a5d971f6fce5df980aa71b637d (diff) | |
download | sqlite-245ce62ea28634be3dd85d60acb912168a0a27b9.tar.gz sqlite-245ce62ea28634be3dd85d60acb912168a0a27b9.zip |
Detect row-value comparison size mismatches even when the size of one
operand is obscured by an unexpanded subquery.
FossilOrigin-Name: 2c4d167ccd4be591487f404de9ee629fd484c8bf
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/expr.c b/src/expr.c index ecc6c7928..b23f17983 100644 --- a/src/expr.c +++ b/src/expr.c @@ -527,7 +527,10 @@ static void codeVectorCompare( u8 opx = op; int addrDone = sqlite3VdbeMakeLabel(v); - assert( nLeft==sqlite3ExprVectorSize(pRight) ); + if( nLeft!=sqlite3ExprVectorSize(pRight) ){ + sqlite3ErrorMsg(pParse, "row value misused"); + return; + } assert( pExpr->op==TK_EQ || pExpr->op==TK_NE || pExpr->op==TK_IS || pExpr->op==TK_ISNOT || pExpr->op==TK_LT || pExpr->op==TK_GT |