aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2017-01-01 12:44:07 +0000
committerdrh <drh@noemail.net>2017-01-01 12:44:07 +0000
commit245ce62ea28634be3dd85d60acb912168a0a27b9 (patch)
tree57672bef13a4dbfc967217c0be923f48b32b0689 /src/expr.c
parent3043b53222c647a5d971f6fce5df980aa71b637d (diff)
downloadsqlite-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.c5
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