sql >> Databasteknik >  >> RDS >> PostgreSQL

Dynamiskt postgreSQL-schemaval vid körning i jOOQ

Det verkar som att för närvarande åtminstone är inställningen av sökväg något utanför räckvidden för jOOQ. Vi skulle i teorin kunna använda Java-migreringar i Flyway och tvinga alla referenser i en funktion att ha explicita scheman, men det låter ganska smärtsamt. Vilket lämnar oss med att antingen ställa in sökvägen manuellt, eventuellt lägga till den i vår transaktionshantering eller skriva en smartare ConnectionProvider.

Vi har en ganska strikt en-fråga-per-transaktion-modell på vår applikation, så det finns egentligen ingen transaktionshantering på plats att lägga till "set search_path =..."-frågan till. ConnectionProvider-lösningen verkar vara vårt bästa alternativ.

Vi har redan en anpassad ConnectionProvider-implementering för anslutningspoolning, så det var inte så mycket krångel att lägga till logiken (som ges ovan i slutet av frågan) för att ställa in sökvägen. Vi skulle kunna göra den mer presterande genom att dekorera anslutningen med något som kom ihåg vad dess nuvarande sökväg är inställd på och prefixet "set sökväg =...;" till framsidan av något uttalande innan det går ut genom dörren om det behövs. Vi ser redan en prestandapåverkan för att ställa in sökvägen för varje begäran, så det är bara en tidsfråga innan detta blir en nödvändighet. Tja, det eller att gå tillbaka till smärtan i vårt gamla egenutvecklade databasåtkomstlager.

Åtminstone kommer jag inte att acceptera detta som svaret förrän jag skriver och öppnar källkoden för anslutningspooling/search_path-inställningen ConnectionProvider, i hopp om att någon annan ska komma på en bättre lösning innan jag kommer runt.




  1. Anslut med lokal-infil-alternativet i MySql Workbench

  2. SQL Server JOIN saknar NULL-värden

  3. Hur man ställer in ett standardvärde för en befintlig kolumn

  4. Hur man räknar(*) av flera tabeller, storlek och tabellutrymme i en fråga