db2 查询语法错误,如何 运行 使用 h2 进行单元测试

db2 query bad grammar, how to run unit test with h2

这里有两部分问题,考虑以下 db2 查询:

select col1!!col2 from table1
  1. 我从未见过双感叹号 (!!) 运算符。从它的结果 returns 来看,它似乎是在对 col1 和 col2 进行简单的串联。我在 db2 文档中在线查看,但未能找到定义。有人可以验证一下吗?
  2. 不允许我更改查询以使用不同的语法,我希望能够运行使用内存数据库中的 h2 对该查询和其他具有一些 db2 的查询进行单元测试怪癖。我如何使用 junit4 实现此目的?

我最终解决这个问题的方式可能有点难看,但这是我在我所拥有的范围内所能做到的最好的:

  • 不能将 docker 容器用于实际 db2 数据库的测试实例
  • 不能直接修改源文件中定义的查询

在我的单元测试中,我做了以下事情:

  1. 在 returned 原始查询
  2. 的服务方法上设置间谍 beans
  3. 在 spy bean 上创建了 when 条件,这样就可以代替 return 查询我知道行不通的查询(根据示例,使用 !!^<, 等), when 条件将 return 等同于 具有 h2 兼容语法的查询 (||, >=, 等等)
  4. 使用修改后的查询查询 h2 数据库

希望这对某人有所帮助。