sql >> Databáze >  >> RDS >> Mysql

jooq rozšířit stávající dialekt. Přijměte dialekt MySQL na dialekt Apache Hive

Bohužel rozšíření jOOQ tak, aby důkladně podporovalo nový dialekt SQL, není příliš jednoduché. Rozhraní API jOOQ se postupem času rozrostlo a podporuje velkou sadu standardních variant syntaxe SQL a variant syntaxe SQL specifických pro dodavatele. Zatímco dialekt Apache Hive se může zdát podobný MySQL, pravděpodobně existuje spousta jemných rozdílů, které by bylo nutné implementovat do vnitřních částí jOOQ. Rozdílná implementace klauzule LIMIT .. OFFSET je jen jedním problémem. To znamená, že obecně není dobrý nápad používat jOOQ s „neznámým“ nebo „nepodporovaným“ dialektem.

Řešení:Krátkodobě

V krátkodobém horizontu budete pravděpodobně muset opravit vykreslené SQL jOOQ. Nejlepší technikou je použít ExecuteListener, jak je zdokumentováno zde:

Po přijetí události "renderEnd()" budete moci přistupovat k vykreslenému SQL a upravovat jej pomocí regulárních výrazů nebo jakékoli techniky, kterou preferujete.

Řešení:Z dlouhodobého hlediska

Z dlouhodobého hlediska může existovat lepší řešení, pokud / když #2337 je implementováno (ale to pravděpodobně implementovat nebudeme)



  1. Jak získat nejčastější hodnotu SQL

  2. INSERT INTO s exec s více sadami výsledků

  3. SQLAlchemy:Vytvořte odstraňovací dotaz pomocí self-join na MySQL

  4. Příklady PLSQL kurzorů – Explicitní, implicitní a referenční kurzory