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, но основная причина теперь устранена.