CalciteのデフォルトのSQL文法を変更して、「xxから(a、b、c)のようにfunc(id)を選択」などのSQLステートメントをサポートする方法。
SQLパーサーが受け入れる文法を変更するには、パーサーを変更する必要があります。これを行うには2つの方法があります。
1つ目は、プロジェクトをフォークして、コア文法であるParser.jjを変更することです。ただし、プロジェクトをフォークするときはいつものように、プロジェクトの新しいバージョンにアップグレードするたびに、変更を再適用する必要があります。
2つ目は、方解石プロジェクトによって提供される文法拡張ポイントの1つを使用することです。Calciteの文法はJavaCCで記述されていますが、最初にFreeMarkerテンプレートエンジンを介して文法を実行します。拡張ポイントは、プロジェクトが再割り当てできるテンプレート内の変数です。たとえば、新しいDDLコマンドを追加する場合createStatementParserMethods
は、Calciteのパーサー拡張テストで行われるように変数を変更できます。
# List of methods for parsing extensions to "CREATE [OR REPLACE]" calls.
# Each must accept arguments "(Span span, boolean replace)".
createStatementParserMethods: [
"SqlCreateTable"
]
これらのアプローチのどれを使用しますか?可能であれば、つまり、事前定義された拡張ポイントの1つで文法の変更が発生した場合は、必ず2番目を使用してください。文法のフォークを維持するという問題に遭遇するので、必要な場合にのみ最初のものを使用してください。
可能であれば、カルサイトが変更を貢献として受け入れるかどうかを確認してください。Calciteが文法拡張を維持する責任を負うため、これはあなたにとって理想的なシナリオです。ただし、変更が標準SQLであるか、1つ以上の主要なデータベースによって実装されている便利な機能である場合にのみ、変更を受け入れる可能性があります。また、コードが高品質であり、テストが伴う必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加