The expression "(X IS FALSE) IN (FALSE)" does not imply that X is NOT NULL.
Ticket [f8f472cbc77ba9c9]
FossilOrigin-Name: dd66134817ecbda01c59a05ad0d6ac44bee700ab10cd2119c869dd69af293fe2
diff --git a/src/expr.c b/src/expr.c
index 2792976..e87ff70 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -4995,7 +4995,7 @@
if( seenNot && ExprHasProperty(p, EP_xIsSelect) ) return 0;
assert( ExprHasProperty(p,EP_xIsSelect)
|| (p->x.pList!=0 && p->x.pList->nExpr>0) );
- return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
}
case TK_BETWEEN: {
ExprList *pList = p->x.pList;