sql >> Database >  >> RDS >> Mysql

jooq breidt bestaand dialect uit. Adopteer MySQL-dialect naar apache Hive-dialect

Helaas is het niet erg eenvoudig om jOOQ uit te breiden om een ​​nieuw SQL-dialect grondig te ondersteunen. De API van jOOQ is in de loop van de tijd enorm gegroeid en ondersteunt een groot aantal standaard- en leverancierspecifieke SQL-syntaxisvarianten. Hoewel het Apache Hive-dialect lijkt op MySQL, zijn er waarschijnlijk veel subtiele verschillen die in de interne onderdelen van jOOQ moeten worden geïmplementeerd. De verschillende implementatie van de LIMIT .. OFFSET-clausule is slechts één probleem. Dat gezegd hebbende, is het over het algemeen geen goed idee om jOOQ te gebruiken met een "onbekend" of "niet-ondersteund" dialect.

Oplossing:op korte termijn

Op korte termijn zul je waarschijnlijk de door jOOQ gerenderde SQL moeten patchen. De beste techniek hiervoor is om een ​​ExecuteListener te gebruiken zoals hier beschreven:

Na ontvangst van een "renderEnd()"-gebeurtenis, hebt u toegang tot de gerenderde SQL en kunt u deze wijzigen met behulp van reguliere expressies of welke techniek u ook verkiest.

Oplossing:op de lange termijn

Op de lange termijn kan er een betere oplossing zijn als / wanneer #2337 is geïmplementeerd (maar dat zullen we waarschijnlijk niet implementeren)



  1. Mysql - zoekvelden die eindigen als zoekterm

  2. Algemene boomtraversal (oneindig) in de breedte-first zoekmanier

  3. MYSQL volgorde op tijd am/pm

  4. Hoe grote tabelgegevens in SQL verwijderen zonder logboek?