Mysql
 sql >> Datenbank >  >> RDS >> Mysql

jooq erweitern bestehenden Dialekt. Übernehmen Sie den MySQL-Dialekt in den Apache Hive-Dialekt

Leider ist die Erweiterung von jOOQ zur vollständigen Unterstützung eines neuen SQL-Dialekts nicht sehr einfach. Die API von jOOQ ist im Laufe der Zeit umfangreich gewachsen und unterstützt eine große Auswahl an Standard- und herstellerspezifischen SQL-Syntaxvarianten. Während der Apache Hive-Dialekt MySQL ähnlich erscheinen mag, gibt es wahrscheinlich viele subtile Unterschiede, die in den Interna von jOOQ implementiert werden müssten. Die unterschiedliche Implementierung der LIMIT .. OFFSET-Klausel ist nur ein Problem. Allerdings ist es im Allgemeinen keine gute Idee, jOOQ mit einem „unbekannten“ oder „nicht unterstützten“ Dialekt zu verwenden.

Lösung:Kurzfristig

Kurzfristig müssen Sie wahrscheinlich das gerenderte SQL von jOOQ patchen. Die beste Technik dafür ist die Verwendung eines ExecuteListeners, wie hier dokumentiert:

Nach Erhalt eines "renderEnd()"-Ereignisses können Sie auf das gerenderte SQL zugreifen und es mit regulären Ausdrücken oder einer anderen von Ihnen bevorzugten Technik ändern.

Lösung:Langfristig

Langfristig kann es eine bessere Lösung geben, wenn / wenn #2337 implementiert ist (aber wir werden das wahrscheinlich nicht implementieren)