我正在使用scalaquery连接到oracle和postgres服务器。 Oracle和Postgres都会出现这种情况,但它只在Postgres中有效(并且仍然不正确)。
在某些时候,我正在使用以下形式的scalaquery运行查询:
row.foo.bind == parameter.foo || row.foo inSetBind parameter.foo.children
参数是一个特征,已知其中有一个foo。
这里的问题是,在运行~100次查询中,scala-query只生成一次正确的SQL,格式为
...
WHERE row.foo = ? or row.foo in (?, ?, ?, ?, ?)
...
大部分时间它会生成
...
WHERE row.foo = ? or false
...
为什么这种情况不一致,这是一个错误(我认为是这样),我该如何解决它?
答案 0 :(得分:1)
事实证明,查询正在查看一个空集,因为在大多数情况下parameter.foo没有孩子。
鉴于WHERE row.foo IN ()
不是有效的SQL,它被写为false
。
尽管代码以oracle DB为目标,但仍会产生false
的问题,但根本原因现已被清除。