| Did you know ... | Search Documentation: |
| CQL: Removing null comparisions |
Use the ignore_if_null wrapper in your CQL to’filter out’null input values. This is a useful extension for creating user-designed searches.
{[],
se_lt_x :: [a-UserName,
b-ignore_if_null(SearchKey),
...]}
At runtime, if SearchKey is bound to a value other than {null} then
the query will contain WHERE ... b = ?. If, however,
SearchKey is bound to {null}, then this comparison will be
omitted.
Disjunctions
In general, don't use ignore_if_null in disjunctions. Consider this query:
SearchKey = '%ELSTON%',
{[],
se_lt_x :: [a-UserName,
b-RealName],
( RealName =~ SearchKey
; UserName =~ SearchKey)}
The query means "find a user where the UserName contains ELSTON OR
the RealName contain ELSTON". If !SearchKey is {null} then RealName=~ {null}
will fail, which is correct. If ignore_if_null was used, the test would
succeed, which means the disjunction would always succeed i.e.
the query would contain no restriction, which is clearly not the
intended result. FIXME: Mike, what is this all about?