gpt4 book ai didi

跨多个 DBMS 供应商进行测试

转载 作者:行者123 更新时间:2023-11-28 20:47:45 24 4
gpt4 key购买 nike

接受这个查询:

  SELECT *
FROM MyTable
WHERE MyColumn = 'SomeValue'
ORDER BY SomeFakeQualifier.MyColumn DESC

在这种情况下,SqlServer 似乎只是忽略了限定符。如果您添加一个 JOIN,那么它会考虑它。

这真的不是问题,除非您想让您的查询在 DBMS 供应商之间可行。例如,Oracle 会合理地提示限定符无效。

是的,我们使用 ORM 消除了很多这种情况,但我们仍然需要 JDBC 来执行某些操作(这是我们产品的本质及其对动态查询的支持)。事实上,正是因为这个出现了这个问题 - 有人将 JPA 命名查询复制到 JDBC 提供的查询,但保留了对象名而不是表名。

所以我想问题是:还有其他人遇到过这个吗?如果是这样,测试您的代码以确保它可以跨“主要三个”DBMS(SqlServer、Oracle、DB2)工作的最佳方法是什么?我们有一个 QA 团队,但似乎应该有更好的方法来对这些特性进行单元测试。

请注意,我们总是尝试强制编写 ANSI SQL 以避免出现问题,但有些事情(例如上述问题)可能会被忽略

我希望这是有道理的。如有必要,我可以提供更多背景信息。

TIA

最佳答案

您的解决方案实际上是结合 continuous integration 对您的查询进行单元测试。 .您有 JDBC 代码形式的查询。编写单元测试以连接到您的相关数据库并以这样的方式运行查询非常容易,即使您不关心结果,您至少可以看到它们是否执行,这就是您正在谈论的标准.

可以说您可以扩展它来衡量性能和/或结果,但我发现这些类型的测试非常脆弱,并且随着不可避免地发生更多变化而很快就会崩溃。

关于跨多个 DBMS 供应商进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com