3

我们将 HSQLDB 与 Oracle 数据库语法 (jdbc:hsqldb:mem:TestDB;sql.syntax_ora=true) 一起用于我们的数据层单元测试。

(我们意识到这并不理想,如果我们可以针对实际的 Oracle 数据库进行测试会更好。但这不是一个选项,因为我们希望确保我们可以在任何地方运行我们的自动化测试。在后面的步骤中,所有查询还在实际 Oracle 数据库的集成测试中进行了测试,该数据库的设置类似于生产数据库。)

有什么方法可以支持使用 HSQLDB 进行查询的 Oracle 外连接 (+) 表示法?

在我自己看来,我们不应该使用 (+) 表示法,而是使用标准的外连接表示法。但是,负责调优查询的人使用这种表示法,因此与他们的沟通会变得更加困难/容易出错。虽然如果没有找到解决方案可能是一个选项,但这不是这里的问题。

我找到了以下线程: http : //comments.gmane.org/gmane.comp.java.hsqldb.user/5756 使用那里提到的 QueryRewrite 补丁,我将有必要的钩子来自己处理(+),但是接口从未进入官方 HSQL 版本。

对于 HSQL 是否有另一种解决方法?

我们可以在我们的单元测试本身的某个地方添加查询重写(而不是在测试数据库级别),但如果我们能避免这种情况会更好。

如果 HSQL 没有解决方法,是否有任何其他可从 jar 启动的内存数据库/数据库支持此 (+) 外连接表示法?

4

2 回答 2

0

我认为您已经在问题中引用了所有“简单”的可能性。

所以剩下的唯一方法是在将查询发送到 HSQLDB 之前重写代码中的查询。

将查询编写为不使用 (+) 符号应该更简单,然后为您的数据库调谐器重写它们(使用脚本)。这种重写应该比其他方向更容易,因为标准符号在其结构中包含更多信息。

于 2013-05-22T10:25:00.330 回答
0

根本不使用它。有时,Oracle 优化器以不同的方式处理这两种语法。从 11g 开始,它已经结束,没有理由坚持这种语法。

但无论如何,Oracle 有另一个 SQL 语法增强功能——例如分析查询。也许您应该使用 OracleXE 进行自动化测试。

于 2013-05-22T10:33:50.027 回答