Malheureusement, étendre jOOQ pour prendre en charge complètement un nouveau dialecte SQL n'est pas très simple. L'API de jOOQ s'est développée au fil du temps, prenant en charge un grand nombre de variantes de syntaxe SQL standard et spécifiques au fournisseur. Bien que le dialecte Apache Hive puisse sembler similaire à MySQL, il existe probablement de nombreuses différences subtiles qui devraient être implémentées dans les composants internes de jOOQ. L'implémentation différente de la clause LIMIT .. OFFSET n'est qu'un problème. Cela dit, ce n'est généralement pas une bonne idée d'utiliser jOOQ avec un dialecte "inconnu" ou "non pris en charge".
Solution :à court terme
À court terme, vous devrez probablement corriger le rendu SQL de jOOQ. La meilleure technique pour cela est d'utiliser un ExecuteListener comme documenté ici :
- http://www.jooq.org /doc/latest/manual/sql-execution/execute-listeners/
- http://www.jooq.org/javadoc/ dernier/org/jooq/ExecuteListener.html
À la réception d'un événement "renderEnd()", vous pourrez accéder au SQL rendu et le modifier à l'aide d'expressions régulières ou de la technique que vous préférez.
Solution :à long terme
À long terme, il peut y avoir une meilleure solution si/quand #2337 est implémenté (mais nous ne l'implémenterons probablement pas)