Tyvärr är det inte särskilt enkelt att utöka jOOQ för att grundligt stödja en ny SQL-dialekt. jOOQ:s API har vuxit omfattande med tiden och stöder en stor uppsättning standard- och leverantörsspecifika SQL-syntaxvarianter. Även om Apache Hive-dialekten kan likna MySQL, finns det förmodligen massor av subtila skillnader som skulle behöva implementeras i jOOQs interna funktioner. Den olika implementeringen av LIMIT .. OFFSET-klausulen är bara en fråga. Som sagt, det är i allmänhet inte en bra idé att använda jOOQ med en "okänd" eller "ej stödd" dialekt.
Lösning:På kort sikt
På kort sikt kommer du förmodligen att behöva patcha jOOQs renderade SQL. Den bästa tekniken för detta är att använda en ExecuteListener som dokumenteras här:
- http://www.jooq.org /doc/latest/manual/sql-execution/execute-listeners/
- http://www.jooq.org/javadoc/ senaste/org/jooq/ExecuteListener.html
När du får en "renderEnd()"-händelse kommer du att kunna komma åt den renderade SQL-koden och modifiera den med reguljära uttryck eller vilken teknik du än föredrar.
Lösning:På lång sikt
I det långa loppet kan det finnas en bättre lösning om / när #2337 är implementerat (men vi kommer förmodligen inte att implementera det)