2016-04-23 14 views
2

javaアプリケーションに対してローカルh2を使用してMySQLクエリをテストしています。問題は、h2がMySQLクエリの "USE INDEX"(インデックスヒント)をサポートしていないことです。 「SQL文の構文エラー」を報告します。 h2でマスクされたUSE INDEXでこのクエリを実行する方法はありますか?h2で実行されているMySQLクエリで「USE INDEX」をマスクする方法

私は空の文字列でのUSE INDEXの一部を置き換えるためにエイリアスを使用しようとしました:

CREATE ALIAS `USE INDEX` FOR "<java-function-that-returns-empty-string>" 

が、それはうまくいきませんでした、すなわち、まだ「SQLステートメントの構文エラーは、」報告します。 「USE INDEX」はエイリアスによってサポートされていない2つの単語なので、それは疑わしいですか?しかし私は確信していません。助言がありますか?ありがとう。

+0

なぜh2のmysql用に書かれたクエリを使用していますか? –

+0

私たちの生産環境。 mysqlにありますが、ユニットテストではh2を使用しています。私は単体テストやプロダクション環境のデータベースエンジンを制御できません。 Btwでは、ユニットテストで 'h2を設定するために' migrations.sql 'を使用しています。それは私が "エイリアスを作成しようとしていたところ"です。 – user1783732

+0

ORMツールが通常この問題を解決する方法は、各ターゲットデータベースごとに異なる*方言です。 –

答えて

3

H2は現在、非標準の "USE INDEX"構文をサポートしていません。したがって、あなたのSQLはH2にとって無効です。

しかし、私は現在H2にこれを追加しています。

+0

h2の作業に感謝します。 FORCE INDEXとUSE INDEXを忘れないでください。 =)私が必要とするのは、私のテストスイートが合格するように構文が法的に考慮されることだけです。 –

+0

素晴らしい!プルリクエストが開かれていますか?私たちは見てみることはできますか? –

関連する問題