Unwanted Uppercase in liquibase generator

220 views
Skip to first unread message

Denis Miorandi

unread,
Jul 21, 2021, 6:35:43 AM7/21/21
to jOOQ User Group
Hello,
we are using liquibase generator to generate jooq classes for a small project. Actually we are testing on postgres (but this project is db vendor agnostic) that is case sensitive.

By default liquibase generator loose cases (convert in UPPERCASE every name of table and column).

How can I configure generator to preserve casing defined in liquibase?

File attached shows the case. Tks for help.


Thread Solutions s.r.l.
Address: via Roberto da Sanseverino, 95 - 38122 Trento - Italy

Questo messaggio viene inviato in osservanza al Reg. UE 2016/679. Le ricordiamo che in qualunque momento potrà esercitare tutti diritti previsti dal Reg. UE 2016/679, tra i quali il diritto di ottenere e/o accedere ai suoi dati personali per le finalità e modalità del trattamento, chiederne la rettifica e l’aggiornamento se incompleti o erronei, chiederne la cancellazione qualora la raccolta sia avvenuta in violazione di una legge o regolamento, nonché il diritto di opporsi al trattamento per motivi legittimi e specifici; esercitare il diritto alla cancellazione (ai sensi dell'Art. 17 del Reg. UE 2016/679), la trasformazione in forma anonima o il blocco dei dati trattati in violazione di legge; al trattamento di dati personali che la riguardano a fini di invio di materiale pubblicitario o di vendita diretta o per il compimento di ricerche di mercato o di comunicazione commerciale, contattando il Titolare del trattamento (Thread Solutions srl), con sede in via Sanseverino 95 Trento (Italy) - email pri...@thread.solutions. Può consultare la nostra informativa Privacy sul nostro sito istituzionale oppure presso la nostra sede. Le ricordiamo inoltre che il contenuto di questa e-mail è rivolto al destinatario della stessa, a carattere personale e riservato; se ha ricevuto questa e-mail per sbaglio chiediamo tempestivamente di comunicarcelo e successivamente di cancellare la stessa. 
La informiamo inoltre che in caso di assenza del destinatario, al fine di garantire la piena operatività aziendale, i messaggi di posta elettronica a questa indirizzo e-mail, verranno gestiti dai colleghi aziendali e/o di reparto, nel rispetto delle procedure previste dalle istruzioni impartite dal Titolare del Trattamento sull'utilizzo della posta elettronica. La preghiamo pertanto di non utilizzare questo indirizzo di posta elettronica aziendale per messaggi a carattere privato o che esulano dal contesto lavorativo.
changelog-master.xml
pom.xml
Events.java

Lukas Eder

unread,
Jul 21, 2021, 6:39:30 AM7/21/21
to jOOQ User Group
Thanks for your message.

The LiquibaseDatabase uses an H2-based simulation of your migration to generate code from. That's by design. In the future, we will interpret the liquibase-generated DDL, but we don't yet. So, you have to take into account this H2 dependency for now. Workarounds include:

- Making sure all your identifiers are case sensitive, and the DDL generated by Liquibase is, too (e.g. by quoting "identifiers")
- Use testcontainers instead to simulate your migration, and generate code from there

I hope this helps,
Lukas

--
You received this message because you are subscribed to the Google Groups "jOOQ User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jooq-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jooq-user/081e35a6-e3a3-46dc-80b2-b198b582f92dn%40googlegroups.com.

Denis Miorandi

unread,
Jul 21, 2021, 8:36:11 AM7/21/21
to jOOQ User Group
Hi Lukas, tks for your response. We managed it with a trick in two steps:
  • convert names into snake case in liquibase xml
  • configured runtime to always lower case
    Settings settings = new Settings()
    .withRenderQuotedNames(RenderQuotedNames.EXPLICIT_DEFAULT_UNQUOTED) // Defaults to EXPLICIT_DEFAULT_QUOTED
    .withRenderNameCase(RenderNameCase.LOWER_IF_UNQUOTED) // Defaults to AS_IS
    .withRenderMapping(new RenderMapping()
    .withSchemata(
    new MappedSchema().withInput("")
    .withOutput("MY_SCHEMA")));
    DSLContext create = DSL.using(SQLDialect.POSTGRES, settings);
Tks for your support.

Denis
Reply all
Reply to author
Forward
0 new messages