aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordan <dan@noemail.net>2016-06-16 17:14:02 +0000
committerdan <dan@noemail.net>2016-06-16 17:14:02 +0000
commit3480bfdae9523d3b2e67c4b594e79bab6ca7776b (patch)
tree4c80f951387731d758f2e4d7e96e2f24310af2c8 /src
parent6b922881198683f958227ca2c5682251dab9cb2a (diff)
downloadsqlite-3480bfdae9523d3b2e67c4b594e79bab6ca7776b.tar.gz
sqlite-3480bfdae9523d3b2e67c4b594e79bab6ca7776b.zip
Add a missing OP_ColumnsUsed opcode to code for expressions like "? IN (SELECT ...)" in cases where expression can use an index that may contain NULL values.
FossilOrigin-Name: 0b1579caf06a2c42433b8bc9dc28c9ad381aa07c
Diffstat (limited to 'src')
-rw-r--r--src/expr.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/expr.c b/src/expr.c
index c6a09d9d9..ce3a47656 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -1818,6 +1818,11 @@ int sqlite3FindInIndex(Parse *pParse, Expr *pX, u32 inFlags, int *prRhsHasNull){
eType = IN_INDEX_INDEX_ASC + pIdx->aSortOrder[0];
if( prRhsHasNull && !pTab->aCol[iCol].notNull ){
+#ifdef SQLITE_ENABLE_COLUMN_USED_MASK
+ const i64 sOne = 1;
+ sqlite3VdbeAddOp4Dup8(v, OP_ColumnsUsed,
+ iTab, 0, 0, (u8*)&sOne, P4_INT64);
+#endif
*prRhsHasNull = ++pParse->nMem;
sqlite3SetHasNullFlag(v, iTab, *prRhsHasNull);
}