Scala-запрос, генерирующий неверный SQL

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

В какой-то момент я запускаю запрос в скалярном запросе в форме:

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

Параметр - это черта, которая, как известно, имеет в себе пометку.

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

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

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

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

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

1 ответ

Решение

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

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

Это все еще оставляет проблему false генерируется несмотря на то, что код нацелен на oracle DB, но основная причина теперь устранена.

Другие вопросы по тегам