2012-06-01 3 views
1

Я использую scalaquery для подключения к серверам oracle и postgres. Такое поведение наблюдается как для Oracle, так и для Postgres, но оно является допустимым (и все еще некорректным) SQL в Postgres.Ошибка запроса Scala SQL

В какой-то момент, я бегу запрос в scalaquery формы:

row.foo.bind == parameter.foo || row.foo inSetBind parameter.foo.children 

Параметр является признаком, который, как известно, имеют Foo в нем.

Проблема здесь состоит в том, что из запросов ~ 100 запуска, Scala-запрос генерирует только правильный SQL один раз, в виде

... 
WHERE row.foo = ? or row.foo in (?, ?, ?, ?, ?) 
... 

Большую часть времени он вместо этого генерирует

... 
WHERE row.foo = ? or false 
... 

Почему это происходит непоследовательно, это ошибка (я полагаю, что это так), и как мне ее обойти?

ответ

1

Получается, что запрос смотрел на пустой набор, поскольку в большинстве случаев параметр.foo не имел дочерних элементов.

Учитывая, что WHERE row.foo IN() недействителен SQL, он был вместо этого выписан как false.

Это все еще оставляет вопрос о создании false, несмотря на то, что код был нацелен на Oracle, но основная причина была очищена.

Смежные вопросы