sql >> Database teknologi >  >> RDS >> Mysql

jooq udvide eksisterende dialekt. Adopter MySQL-dialekt til apache Hive-dialekt

Desværre er det ikke særlig ligetil at udvide jOOQ til grundigt at understøtte en ny SQL-dialekt. jOOQ's API er vokset omfattende over tid og understøtter et stort sæt standard- og leverandørspecifikke SQL-syntaksvarianter. Selvom Apache Hive-dialekten kan se ud som MySQL, er der sandsynligvis masser af subtile forskelle, der skal implementeres i jOOQ's interne funktioner. Den forskellige implementering af LIMIT .. OFFSET-klausulen er bare et problem. Når det er sagt, er det generelt ikke en god idé at bruge jOOQ med en "ukendt" eller "ikke-understøttet" dialekt.

Løsning:På kort sigt

På kort sigt bliver du sandsynligvis nødt til at patche jOOQ's renderede SQL. Den bedste teknik til dette er at bruge en ExecuteListener som dokumenteret her:

Når du modtager en "renderEnd()"-hændelse, vil du være i stand til at få adgang til den renderede SQL og ændre den ved hjælp af regulære udtryk eller hvilken teknik du måtte foretrække.

Løsning:I det lange løb

I det lange løb kan der være en bedre løsning, hvis / når #2337 er implementeret (men det implementerer vi nok ikke)



  1. Hvad er forskellen mellem Non-Repeatable Read og Phantom Read?

  2. Vil du tilføje Auto-Increment ID til eksisterende tabel?

  3. Liste alle tabeller, der indeholder et givet kolonnenavn

  4. Betinget CASCADE-operation for fremmednøglebegrænsning?