On 14 Jul 2010, at 5:13pm, Richard Hipp wrote:

> Improvements to the IN operator documentation can be found here:
> 
>     http://www.sqlite.org/draft/lang_expr.html#in_op

I find that table difficult to understand: you have some mutually exclusive 
columns.  Could it be replaced by this sequence of four tests and an 
'otherwise' ?

        If the right op is the empty list, then IN = false
else    if the left op is NULL, then            IN = NULL
else    if the right op contains left op, then  IN = true
else    if the right op contains NULL, then     IN = NULL
otherwise                                       IN = false

Also NOT true = false, NOT false = true, NOT NULL = NULL.
        
That should match the source code, so it should be better documentation.

By the way, can someone explain why this rule, equivalent to line 4 of the 
table, is there:

else    if the right op contains NULL, then     IN = NULL

By the time we've got there we already know that the left op is not NULL.  Why 
does the handling of a NULL right op require a special case like that ?  We 
definitely know that the left op is not IN it.

Simon.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to