QueryParser Driver: Protect against NULLs
mrd.attrs->'value' can return NULL. If this happens:
Checking that the value is within a range or list will work fine.
NEGATING that will not.
This is because:
AND NULL returns NULL
AND NOT (NULL) also returns NULL
The solution? Adjust things so we can wrap all the offending checks in a
COALESCE to false. Then if mrd.attrs->'value' is null we get a false.
In the process we move any and all negations to outside the COALESCE.
Also apply the same logic to the bib_source filter, not to mention
making it support being negated.
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>