* Константин wrote, On 15.11.2006 5:13:
подозреваю что неправильно разбирается строка:
select 'OK' from rdb$database where 0 not in (null, 1)
=>
select 'OK' from rdb$database where not ((0 = null) or (0 = 1))
а должно в
select 'OK' from rdb$database where (0 <> null) or (0 <> 1)
или
select 'OK' from rdb$database where (not (0 = null) or not (0 = 1))
вот! ЭТО БАГА !!! И притом понкретная ...
Ну вообще-то если предполагать, что утверждения
a NOT IN (b)
и
NOT (a IN (b))
эквивалентны, то разбор, который ты предполагаешь, как раз правильный ;)
А так, как ты хочешь в "должно", вообще получается и ни туда, и ни сюда
- попробуй в конструкцию, построенную по такому принципу, подставить
присутствующее в IN значение (только не null) - всё равно у тебя
получится true.
--
С уважением,
Sergey mailto:[EMAIL PROTECTED]