sql >> Database >  >> RDS >> PostgreSQL

Dynamische runtime PostgreSQL-schemaselectie in jOOQ

Het lijkt erop dat het instellen van search_path voorlopig iets buiten het bereik van jOOQ valt. We zouden in theorie Java-migraties in Flyway kunnen gebruiken en alle verwijzingen binnen een functie dwingen om expliciete schema's te hebben, maar dat klinkt behoorlijk pijnlijk. We kunnen het zoekpad dus handmatig instellen, eventueel toevoegen aan ons transactiebeheer of een slimmere ConnectionProvider schrijven.

We hebben een vrij strikt één-query-per-transactiemodel op onze applicatie, dus er is niet echt transactiebeheer om de "set search_path =..."-query aan toe te voegen. De ConnectionProvider-oplossing lijkt onze beste optie.

We hebben al een aangepaste ConnectionProvider-implementatie voor pooling van verbindingen, dus het was niet al te veel gedoe om de logica toe te voegen (hierboven gegeven aan het einde van de vraag) om het zoekpad in te stellen. We zouden het performanter kunnen maken door de Verbinding te verfraaien met iets dat onthoudt waar het huidige zoekpad op is ingesteld, en het voorvoegsel "set search_path =...;" aan de voorkant van een verklaring voordat deze de deur uitgaat, indien nodig. We zien al een prestatie-impact bij het instellen van het zoekpad voor elk verzoek, dus het is slechts een kwestie van tijd voordat dit een noodzaak wordt. Nou, dat of teruggaan naar de pijn van onze oude eigen databasetoegangslaag.

Op zijn minst accepteer ik dit niet als het antwoord totdat ik de verbinding pooling/search_path instelling ConnectionProvider schrijf en open source, in de hoop dat iemand anders met een betere oplossing komt voordat ik eraan toekom.




  1. MySQL SELECTEER DISTINCT meerdere kolommen

  2. Waarde ophalen van een xml-element in Oracle PL SQL

  3. MySQL min en max van elke kolom

  4. mysql verwijderen in veilige modus