1

我正在使用 scalaquery 连接到 oracle 和 postgres 服务器。Oracle 和 Postgres 都会出现这种行为,但它在 Postgres 中只是有效(并且仍然不正确)的 SQL。

在某些时候,我正在以 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
...

为什么这种情况不一致发生,它是一个错误(我认为是),我该如何解决它?

4

1 回答 1

1

事实证明,查询正在查看一个空集,因为 parameter.foo 在大多数情况下没有子集。

鉴于这WHERE row.foo IN ()不是有效的 SQL,它被写成false.

尽管代码针对的是 oracle DB,但仍然存在生成的问题false,但根本原因现在已经清除。

于 2012-06-01T15:06:08.700 回答