* Константин 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]

Ответить