Hi all, extracted the PR I did on my github for now -> https://github.com/quarkusio/quarkus/pull/55677 / https://github.com/rmannibucau/quarkus-jdbc-generic but it might end up in quarkiverse so can be a good solution for polaris community maintained and quarkus supported
side note: i'll get way less computer time in less than a week so if somebody can follow up until I'm back it would be awesome. Romain Manni-Bucau @rmannibucau <https://x.com/rmannibucau> | .NET Blog <https://dotnetbirdie.github.io/> | Blog <https://rmannibucau.github.io/> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book <https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064> Javaccino <https://javaccino.dev/> founder (Java/.NET service - contact via linkedin) Le lun. 27 juil. 2026 à 23:58, Romain Manni-Bucau <[email protected]> a écrit : > Reaugmentation or its friend 'build commands are what makes final products > (like keycloak or polaris) not that consummable compared to standard plain > JVM solution (CDI, EE, microprofile, spring and friends apps) > > @Dmitri building doesn't add a jar, it does if you add a dependency > somehow, doing a "copy" somewhere does, the common use case is an init > container copying the driver from a well know driver (or location even if > now OCI images being mountable make it very smooth) to a folder in the > classpath of the app, 0 code modification of the "app", pure config. > Think this is what we should be after. > > Romain Manni-Bucau > @rmannibucau <https://x.com/rmannibucau> | .NET Blog > <https://dotnetbirdie.github.io/> | Blog <https://rmannibucau.github.io/> | > Old Blog <http://rmannibucau.wordpress.com> | Github > <https://github.com/rmannibucau> | LinkedIn > <https://www.linkedin.com/in/rmannibucau> | Book > <https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064> > Javaccino founder (Java/.NET service - contact via linkedin) > > > Le lun. 27 juil. 2026 à 19:31, Dmitri Bourlatchkov <[email protected]> a > écrit : > >> ... but we still need to add (at least) one more jar to the application, >> right? >> >> Is that possible without re-building? Sorry, I did not read the docs about >> "mutable-jar" :) >> >> Cheers, >> Dmitri. >> >> On Mon, Jul 27, 2026 at 1:22 PM Alexandre Dutra <[email protected]> >> wrote: >> >> > Hi Dmitri, >> > >> > From what I understand from the docs [1], it doesn't require a >> > (separate) build, however the application startup will be very slow >> > because it will be re-built on the fly. >> > >> > Here is the example they show: >> > >> > java -jar -Dquarkus.launch.rebuild=true >> > -Dquarkus.datasource.db-kind=mysql target/quarkus-app/quarkus-run.jar >> > >> > Thanks, >> > Alex >> > >> > [1]: >> > >> https://quarkus.io/guides/reaugmentation#2-re-augment-your-application-with-a-different-build-time-configuration >> > >> > On Mon, Jul 27, 2026 at 7:06 PM Dmitri Bourlatchkov <[email protected]> >> > wrote: >> > > >> > > Hi Alex, >> > > >> > > Re-augmentation requires a build, does it not? >> > > >> > > We can probably do that inside docker: >> > > >> > > * User adds a jar to the image >> > > * Quarkus build is executed inside docker build (using helper scripts >> > > from Polaris) >> > > * Final image is has the driver available via Quarkus. >> > > >> > > Did you mean something like this? >> > > >> > > Cheers, >> > > Dmitri. >> > > >> > > On Mon, Jul 27, 2026 at 10:30 AM Alexandre Dutra <[email protected]> >> > wrote: >> > > >> > > > Hi all, >> > > > >> > > > Indeed the Quarkus PR is likely not going to be accepted, however it >> > > > seems that moving it to Quarkiverse could be acceptable. >> > > > >> > > > Someone also suggested the Keycloak project's approach to this >> > > > problem: re-augmentation. Keycloak has exactly the same problem. Can >> > > > we explore this idea as well? >> > > > >> > > > Thanks, >> > > > Alex >> > > > >> > > > On Mon, Jul 27, 2026 at 4:26 PM Dmitri Bourlatchkov < >> [email protected]> >> > > > wrote: >> > > > > >> > > > > Hi All, >> > > > > >> > > > > Reading recent replies on Quarkus PR [55677] it does not looks >> like >> > this >> > > > > proposal is viable... unfortunately. >> > > > > >> > > > > If we go with a mixed approach similar to our PR [4984], how about >> > the >> > > > > following proposal? >> > > > > >> > > > > * Keep the JDBC persistence code generic and unaware of DataSource >> > > > > implementations (i.e. do not try to "manage" it there) >> > > > > >> > > > > * Handle custom DataSources at the CDI layer in the runtime/* >> modules >> > > > > (ServiceProducers or similar (shared) code). This layer will >> choose >> > > > whether >> > > > > to use the Quarkus-managed DataSource (default), or load the >> driver >> > > > > dynamically and "manually" configure the DataSource. Custom >> > downstream >> > > > > builds will keep the option to override the DataSource via CDI >> > mechanics. >> > > > > >> > > > > * Do not try to make custom DataSource configuration to be the >> same >> > as >> > > > the >> > > > > Quarkus configuration. It can only cause maintenance headache. >> Define >> > > > > separate, documented configuration options for the dynamic path. >> > Users of >> > > > > the dynamic driver will have to handle deployment differences >> anyway. >> > > > > >> > > > > * Use Agroal on both paths for consistency. >> > > > > >> > > > > * Add a small integration test for the dynamic path based on MySQL >> > > > > (test-only GPL deps are ok, I guess). >> > > > > >> > > > > As Alex noted above, we'll need to review observability in the >> custom >> > > > > DataSource case. I believe that no OTel support will be available >> > there >> > > > by >> > > > > default, which probably needs to be documented (at least). >> > > > > >> > > > > [4984] https://github.com/apache/polaris/pull/4984 >> > > > > >> > > > > [55677] https://github.com/quarkusio/quarkus/pull/55677 >> > > > > >> > > > > Cheers, >> > > > > Dmitri. >> > > > > >> > > > > On Mon, Jul 27, 2026 at 8:23 AM Jean-Baptiste Onofré < >> > [email protected]> >> > > > > wrote: >> > > > > >> > > > > > Hi all, >> > > > > > >> > > > > > I previously mentioned the potential for confusion in my review >> of >> > the >> > > > > > PR. I believe our next steps depend on timing: if a native >> > solution in >> > > > > > Agroal/Quarkus is achievable soon, that would be the ideal path. >> > > > > > Otherwise, I think PR #4984 could serve as a suitable temporary >> > > > > > mitigation. >> > > > > > >> > > > > > Regards, >> > > > > > JB >> > > > > > >> > > > > > On Mon, Jul 27, 2026 at 9:30 AM Alexandre Dutra < >> [email protected] >> > > >> > > > wrote: >> > > > > > > >> > > > > > > Hi Yufei, >> > > > > > > >> > > > > > > I am still uncomfortable with the approach taken in #4984 of >> > mixing >> > > > > > > managed and unmanaged datasources. IMHO it's confusing from a >> > > > > > > configuration and observability perspective, and I fear that >> > > > > > > maintaining unmanaged datasources will prove way more >> complicated >> > > > than >> > > > > > > "just" starting and stopping a datasource manually. >> > > > > > > >> > > > > > > Thanks, >> > > > > > > Alex >> > > > > > > >> > > > > > > >> > > > > > > On Sun, Jul 26, 2026 at 8:14 PM Yufei Gu < >> [email protected]> >> > > > wrote: >> > > > > > > > >> > > > > > > > Thanks for chiming in, JB! That's essentially the approach >> in >> > my >> > > > > > PR(4984 >> > > > > > > > <https://github.com/apache/polaris/pull/4984>), which >> > corresponds >> > > > to >> > > > > > Option >> > > > > > > > 2 in Robert's email. Are we OK moving foward with this? >> > > > > > > > >> > > > > > > > Per-realm routing is a potential use case, not the scope of >> > this >> > > > > > effort. >> > > > > > > > >> > > > > > > > Yufei >> > > > > > > > >> > > > > > > > >> > > > > > > > On Sun, Jul 26, 2026 at 10:03 AM Jean-Baptiste Onofré < >> > > > [email protected] >> > > > > > > >> > > > > > > > wrote: >> > > > > > > > >> > > > > > > > > Hi >> > > > > > > > > >> > > > > > > > > As already said, I still think Quarkus/Agroal stays the >> > default >> > > > and >> > > > > > > > > single supported pool. I think adding a narrow, JVM-only, >> > > > documented >> > > > > > > > > runtime driver escape hatch is right. >> > > > > > > > > >> > > > > > > > > Concretely, I would: >> > > > > > > > > 1. Split the PR: runtime driver loading is a small, >> > defensible >> > > > > > > > > feature. The second pool, and per-realm routing are not >> > imho, and >> > > > > > > > > should not ride in on its coattails. >> > > > > > > > > 2. I think per-realm routing is a way bigger architectural >> > > > decision. >> > > > > > > > > 3. I think we should have an explicit agreement on the >> > contract >> > > > > > before >> > > > > > > > > merging. >> > > > > > > > > >> > > > > > > > > The best would be to use Agroal, supporting a >> runtime-mounted >> > > > driver >> > > > > > > > > in JVM mode. I will ping my Quarkus contacts to get the >> > status of >> > > > > > > > > that. >> > > > > > > > > >> > > > > > > > > Regards >> > > > > > > > > JB >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > On Fri, Jul 24, 2026 at 10:24 PM Yufei Gu < >> > [email protected]> >> > > > > > wrote: >> > > > > > > > > > >> > > > > > > > > > Robert, >> > > > > > > > > > >> > > > > > > > > > I don't think these are hypothetical use cases. They've >> > been >> > > > > > recurring >> > > > > > > > > > design topics in Polaris for well over a year. >> > > > > > > > > > >> > > > > > > > > > - A JDBC driver supplied at runtime instead of being >> on >> > the >> > > > > > build time >> > > > > > > > > > classpath is important for proprietary and Apache >> > license >> > > > > > incompatible >> > > > > > > > > > drivers, such as MySQL. This has been discussed in >> the >> > > > > > community for >> > > > > > > > > some >> > > > > > > > > > time, and PR #4281[4] was blocked by this limitation. >> > > > > > > > > > - We've also discussed realm based datasource routing >> > > > > > repeatedly. For >> > > > > > > > > > example: >> > > > > > > > > > - Issue #3890 [1] tracks multi datasource support >> and >> > > > > > explicitly >> > > > > > > > > > discusses whether separation should be per realm >> or >> > by >> > > > > > workload. >> > > > > > > > > > - PR #1482 [2] proposed a concrete realm to >> > datasource >> > > > > > mapping. The >> > > > > > > > > > discussion wasn't that the use case was invalid, >> but >> > that >> > > > > > > > > Quarkus's build >> > > > > > > > > > time datasource model made it difficult. >> > > > > > > > > > - PR #3960 [3] introduced DataSourceResolver as >> > > > groundwork >> > > > > > for >> > > > > > > > > > datasource routing. The feedback was to refine the >> > > > design, >> > > > > > not >> > > > > > > > > > that the use >> > > > > > > > > > case itself shouldn't be supported. >> > > > > > > > > > >> > > > > > > > > > Given this history, I don't think the question is >> whether >> > these >> > > > > > are real >> > > > > > > > > > use cases. The project has already acknowledged them >> > multiple >> > > > > > times. >> > > > > > > > > > >> > > > > > > > > > Romain, thanks for the suggestion. I wish this could be >> > > > resolved >> > > > > > upstream >> > > > > > > > > > in Quarkus, but I don't have much hope, since build time >> > > > dependency >> > > > > > > > > > resolution is one of Quarkus's core design principles. >> > > > > > > > > > >> > > > > > > > > > [1] https://github.com/apache/polaris/issues/3890 >> > > > > > > > > > >> > > > > > > > > > [2] https://github.com/apache/polaris/pull/1482 >> > > > > > > > > > >> > > > > > > > > > [3] https://github.com/apache/polaris/pull/3960 >> > > > > > > > > > >> > > > > > > > > > [4] https://github.com/apache/polaris/pull/4281 >> > > > > > > > > > >> > > > > > > > > > Yufei >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > On Fri, Jul 24, 2026 at 8:54 AM Romain Manni-Bucau < >> > > > > > > > > [email protected]> >> > > > > > > > > > wrote: >> > > > > > > > > > >> > > > > > > > > > > If down stream users need to build anything instead of >> > mount >> > > > the >> > > > > > driver >> > > > > > > > > > > then polaris becomes a lib and not a server, think >> very >> > few >> > > > > > consumer >> > > > > > > > > see it >> > > > > > > > > > > this way nor would like it so I would favor runtime >> > support. >> > > > > > > > > > > >> > > > > > > > > > > The side note is that it is always better to not >> compète >> > with >> > > > > > its own >> > > > > > > > > stack >> > > > > > > > > > > so maybe two push back to quarkus natively before >> acting >> > > > there. >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > > Romain Manni-Bucau >> > > > > > > > > > > @rmannibucau <https://x.com/rmannibucau> | .NET Blog >> > > > > > > > > > > <https://dotnetbirdie.github.io/> | Blog < >> > > > > > > > > https://rmannibucau.github.io/> >> > > > > > > > > > > | Old >> > > > > > > > > > > Blog <http://rmannibucau.wordpress.com> | Github >> > > > > > > > > > > <https://github.com/rmannibucau> | LinkedIn >> > > > > > > > > > > <https://www.linkedin.com/in/rmannibucau> | Book >> > > > > > > > > > > < >> > > > > > > > > > > >> > > > > > > > > >> > > > > > >> > > > >> > >> https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064 >> > > > > > > > > > > > >> > > > > > > > > > > Javaccino founder (Java/.NET service - contact via >> > linkedin) >> > > > > > > > > > > >> > > > > > > > > > > Le ven. 24 juil. 2026, 17:50, Robert Stupp < >> > [email protected]> >> > > > a >> > > > > > écrit : >> > > > > > > > > > > >> > > > > > > > > > > > Hi Yufei, >> > > > > > > > > > > > >> > > > > > > > > > > > Option 1 would not provide either capability at >> > runtime in >> > > > the >> > > > > > > > > upstream >> > > > > > > > > > > > Polaris distribution. >> > > > > > > > > > > > Optional drivers would be added through a downstream >> > build >> > > > or >> > > > > > > > > assembly, >> > > > > > > > > > > and >> > > > > > > > > > > > datasource creation would remain Quarkus-managed. >> > > > > > > > > > > > >> > > > > > > > > > > > That is intentional rather than a missing part of >> > option 1. >> > > > > > > > > > > > I mentioned runtime driver loading and per-realm >> > routing >> > > > > > because >> > > > > > > > > they are >> > > > > > > > > > > > the two use cases stated for the POC, not because I >> > think >> > > > the >> > > > > > > > > project has >> > > > > > > > > > > > already agreed that Polaris itself must support >> both. >> > > > > > > > > > > > >> > > > > > > > > > > > The concrete current ask I see is a viable path for >> > > > optional >> > > > > > drivers >> > > > > > > > > that >> > > > > > > > > > > > Polaris cannot distribute in ASF releases. >> > > > > > > > > > > > Runtime loading is one possible answer to that ask. >> > > > > > > > > > > > A downstream build or assembly is another. >> > > > > > > > > > > > >> > > > > > > > > > > > Dynamic per-realm datasource creation is a separate >> > future >> > > > > > design. >> > > > > > > > > > > > I do not think it should become an implicit >> requirement >> > > > for the >> > > > > > > > > > > > optional-driver decision before its isolation, >> > lifecycle, >> > > > > > resource, >> > > > > > > > > and >> > > > > > > > > > > > operational contract has been discussed. >> > > > > > > > > > > > >> > > > > > > > > > > > So before evaluating option 1 against option 2's >> > > > capabilities, >> > > > > > I >> > > > > > > > > think we >> > > > > > > > > > > > need to decide whether runtime driver loading and >> > > > Polaris-owned >> > > > > > > > > dynamic >> > > > > > > > > > > > datasource creation are project requirements. >> > > > > > > > > > > > If both are requirements, option 1 is naturally >> > excluded. >> > > > > > > > > > > > If they are not, the POC's additional capabilities >> > should >> > > > not >> > > > > > by >> > > > > > > > > > > themselves >> > > > > > > > > > > > become acceptance criteria for every alternative. >> > > > > > > > > > > > >> > > > > > > > > > > > My preference remains to preserve the >> Quarkus-managed >> > path >> > > > and >> > > > > > > > > address >> > > > > > > > > > > the >> > > > > > > > > > > > optional-driver ask as narrowly as possible. >> > > > > > > > > > > > >> > > > > > > > > > > > Cheers, >> > > > > > > > > > > > Robert >> > > > > > > > > > > > >> > > > > > > > > > > > On Thu, Jul 23, 2026 at 8:59 PM Yufei Gu < >> > > > [email protected] >> > > > > > > >> > > > > > > > > wrote: >> > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > That ask does not by itself justify moving all >> > > > supported >> > > > > > > > > deployments >> > > > > > > > > > > > away >> > > > > > > > > > > > > > from Quarkus datasource management. >> > > > > > > > > > > > > > Doing so would make Polaris responsible for >> > > > configuration >> > > > > > > > > > > > compatibility, >> > > > > > > > > > > > > > lifecycle, health, metrics, tracing, >> > > > credentials-provider >> > > > > > > > > > > integration, >> > > > > > > > > > > > > > shutdown, upgrades, and the support matrix >> > currently >> > > > > > covered by >> > > > > > > > > > > > Quarkus. >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > > 1. Keep Quarkus-managed data-sources and >> document >> > the >> > > > > > downstream >> > > > > > > > > > > > > > build/assembly path for optional drivers. >> > > > > > > > > > > > > > 2. Keep Quarkus-managed data-sources as the >> > default and >> > > > > > add a >> > > > > > > > > > > > > deliberately >> > > > > > > > > > > > > > limited JVM-only runtime-driver escape hatch. >> > > > > > > > > > > > > > 3. Replace Quarkus-managed data-sources >> completely. >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > My current preference is ... (option1). >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > Robert, one thing I'm still unclear about is how >> > option 1 >> > > > > > would >> > > > > > > > > support >> > > > > > > > > > > > the >> > > > > > > > > > > > > following use cases that you mentioned: >> > > > > > > > > > > > > >> > > > > > > > > > > > > - Loading optional JDBC drivers at runtime. >> > > > > > > > > > > > > - Creating datasources dynamically as a >> building >> > > > block for >> > > > > > > > > future >> > > > > > > > > > > per >> > > > > > > > > > > > > realm routing. >> > > > > > > > > > > > > >> > > > > > > > > > > > > My PR proposes option 2 because it addresses these >> > use >> > > > cases >> > > > > > while >> > > > > > > > > > > > keeping >> > > > > > > > > > > > > the existing Quarkus managed deployment path >> > unchanged. >> > > > > > > > > > > > > >> > > > > > > > > > > > > Yufei >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > On Thu, Jul 23, 2026 at 8:59 AM Dmitri >> Bourlatchkov < >> > > > > > > > > [email protected]> >> > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > >> > > > > > > > > > > > > > Hi Yufei, >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > I wonder why you chose Hikari initially in your >> PR >> > > > 4984. >> > > > > > > > > > > Understanding >> > > > > > > > > > > > > that >> > > > > > > > > > > > > > rationale could be helpful for this discussion. >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > Thanks, >> > > > > > > > > > > > > > Dmitri. >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > On Wed, Jul 22, 2026 at 11:28 PM Yufei Gu < >> > > > > > [email protected]> >> > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > > Looks like we have two options at this point: >> > Hikari >> > > > > > (Alex, >> > > > > > > > > me) and >> > > > > > > > > > > > > > Agroal >> > > > > > > > > > > > > > > (Dmitri, JB, Romain). >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > Is there any further investigation we should >> do >> > > > before >> > > > > > making a >> > > > > > > > > > > > > decision? >> > > > > > > > > > > > > > > Or are we ready to start a vote? >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > Yufei >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 10:15 PM Romain >> > Manni-Bucau < >> > > > > > > > > > > > > > [email protected] >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > Maybe add "is there more than one committer" >> > on the >> > > > > > project >> > > > > > > > > as a >> > > > > > > > > > > > > > > criteria. >> > > > > > > > > > > > > > > > Agroal is far to be my preferred pool but it >> > is as >> > > > > > easy as >> > > > > > > > > others >> > > > > > > > > > > > in >> > > > > > > > > > > > > > > terms >> > > > > > > > > > > > > > > > of config starting from properties ([1]) and >> > using >> > > > its >> > > > > > > > > listeners. >> > > > > > > > > > > > > > > > Also note that I assume all properties will >> > not be >> > > > > > exposed >> > > > > > > > > but >> > > > > > > > > > > > > > abstracted >> > > > > > > > > > > > > > > > by polaris configuration (potentially >> enabling >> > a >> > > > switch >> > > > > > > > > later or >> > > > > > > > > > > a >> > > > > > > > > > > > > > > > multipool support like in Apache TomEE) so >> > maybe >> > > > it is >> > > > > > the >> > > > > > > > > first >> > > > > > > > > > > > > thing >> > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > define, the needed properties and callbacks? >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > [1] >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > >> > > > >> > >> https://github.com/agroal/agroal/blob/517fd36ab0cf1faebaae7d57a55c788d499a4c88/agroal-api/src/main/java/io/agroal/api/configuration/supplier/AgroalPropertiesReader.java#L56 >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > Romain Manni-Bucau >> > > > > > > > > > > > > > > > @rmannibucau <https://x.com/rmannibucau> | >> > .NET >> > > > Blog >> > > > > > > > > > > > > > > > <https://dotnetbirdie.github.io/> | Blog < >> > > > > > > > > > > > > > https://rmannibucau.github.io/ >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > | Old >> > > > > > > > > > > > > > > > Blog <http://rmannibucau.wordpress.com> | >> > Github >> > > > > > > > > > > > > > > > <https://github.com/rmannibucau> | LinkedIn >> > > > > > > > > > > > > > > > <https://www.linkedin.com/in/rmannibucau> | >> > Book >> > > > > > > > > > > > > > > > < >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > >> > > > >> > >> https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064 >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > Javaccino founder (Java/.NET service - >> contact >> > via >> > > > > > linkedin) >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > Le jeu. 16 juil. 2026 à 22:18, Alexandre >> Dutra >> > < >> > > > > > > > > > > [email protected]> >> > > > > > > > > > > > a >> > > > > > > > > > > > > > > > écrit : >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > Hi all, >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > I don't think the actual pool >> implementation >> > > > matters >> > > > > > much, >> > > > > > > > > but >> > > > > > > > > > > I >> > > > > > > > > > > > > > would >> > > > > > > > > > > > > > > > > weigh in some important criteria before >> > choosing: >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > - Is it easily configurable? >> > > > > > > > > > > > > > > > > - Is it easily instrumentable? >> > > > > > > > > > > > > > > > > - Is it well documented & maintained? >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > While Agroal is the de facto choice for >> > Quarkus >> > > > > > (it's a >> > > > > > > > > JBoss >> > > > > > > > > > > > > lib), I >> > > > > > > > > > > > > > > > > am not sure it outperforms Hikari for all >> the >> > > > > > criteria >> > > > > > > > > above. >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > Thanks, >> > > > > > > > > > > > > > > > > Alex >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 6:22 PM Yufei Gu < >> > > > > > > > > [email protected] >> > > > > > > > > > > > >> > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > Thanks everyone for chiming in. Agroal >> is a >> > > > good >> > > > > > option >> > > > > > > > > as >> > > > > > > > > > > > well. >> > > > > > > > > > > > > It >> > > > > > > > > > > > > > > > looks >> > > > > > > > > > > > > > > > > > like we're reaching consensus on direct >> > > > datasource >> > > > > > > > > management >> > > > > > > > > > > > at >> > > > > > > > > > > > > > > > runtime. >> > > > > > > > > > > > > > > > > > I'll start working on the implementation >> > soon. >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > Yufei >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 4:16 AM >> > Jean-Baptiste >> > > > > > Onofré < >> > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > Hi all, >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > I agree that direct datasource >> > management at >> > > > > > runtime >> > > > > > > > > is a >> > > > > > > > > > > > > better >> > > > > > > > > > > > > > > > > > > approach than relying on >> > quarkus-datasource, >> > > > > > which >> > > > > > > > > > > currently >> > > > > > > > > > > > > > > requires >> > > > > > > > > > > > > > > > > > > build-time dependencies. >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > However, we can stay within the >> Quarkus >> > > > > > ecosystem and >> > > > > > > > > avoid >> > > > > > > > > > > > > > > > > > > introducing new dependencies by using >> > Agroal, >> > > > > > which is >> > > > > > > > > > > > already >> > > > > > > > > > > > > > > > > > > included in our dependencies. This >> also >> > keeps >> > > > > > the door >> > > > > > > > > open >> > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > > > combining it with Panache in the >> future, >> > > > should >> > > > > > we >> > > > > > > > > decide >> > > > > > > > > > > to >> > > > > > > > > > > > do >> > > > > > > > > > > > > > so. >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > Regards, >> > > > > > > > > > > > > > > > > > > JB >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > On Thu, Jul 16, 2026 at 1:28 AM Yufei >> Gu >> > < >> > > > > > > > > > > > [email protected] >> > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > If our goal is to transition >> > entirely to >> > > > a >> > > > > > > > > > > > "runtime-driven" >> > > > > > > > > > > > > > > > > > > architecture, >> > > > > > > > > > > > > > > > > > > > we should commit to it completely by >> > fully >> > > > > > removing >> > > > > > > > > the >> > > > > > > > > > > > > > > > > > > > io.quarkus:quarkus-datasource >> > > > > > > > > > > > > > > > > > > > dependency and switching to Hikari >> > > > > > unconditionally. >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > Good point, Alex! I'm open to that. >> If >> > the >> > > > > > community >> > > > > > > > > > > > agrees, >> > > > > > > > > > > > > I >> > > > > > > > > > > > > > > can >> > > > > > > > > > > > > > > > > make >> > > > > > > > > > > > > > > > > > > > that change. >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > Romain, I chose Hikari because it is >> > lean, >> > > > > > fast, >> > > > > > > > > simple. >> > > > > > > > > > > > I'm >> > > > > > > > > > > > > > open >> > > > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > > > > alternatives like dbcp2 if its >> > evaluation >> > > > > > proves >> > > > > > > > > better. >> > > > > > > > > > > As >> > > > > > > > > > > > > you >> > > > > > > > > > > > > > > > said, >> > > > > > > > > > > > > > > > > > > both >> > > > > > > > > > > > > > > > > > > > have pros and cons. >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > Yufei >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > On Wed, Jul 15, 2026 at 11:03 AM >> Romain >> > > > > > Manni-Bucau < >> > > > > > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > Dumb question: why hikari? it has >> > some >> > > > > > issues like >> > > > > > > > > not >> > > > > > > > > > > > > > > respecting >> > > > > > > > > > > > > > > > > its >> > > > > > > > > > > > > > > > > > > conf >> > > > > > > > > > > > > > > > > > > > > intentionally (max size in >> > particular is >> > > > the >> > > > > > one >> > > > > > > > > which >> > > > > > > > > > > > > hurts >> > > > > > > > > > > > > > > > since >> > > > > > > > > > > > > > > > > you >> > > > > > > > > > > > > > > > > > > > > overconsume for a moment your >> > database >> > > > > > connections >> > > > > > > > > == >> > > > > > > > > > > > > prevent >> > > > > > > > > > > > > > > > some >> > > > > > > > > > > > > > > > > > > services >> > > > > > > > > > > > > > > > > > > > > to connect when scaled and tuned >> at >> > max >> > > > > > count), >> > > > > > > > > there >> > > > > > > > > > > is >> > > > > > > > > > > > no >> > > > > > > > > > > > > > > > silver >> > > > > > > > > > > > > > > > > > > bullet >> > > > > > > > > > > > > > > > > > > > > but something like dbcp2 can be >> neat >> > to >> > > > start >> > > > > > > > > _there_ >> > > > > > > > > > > if >> > > > > > > > > > > > > > agroal >> > > > > > > > > > > > > > > > is >> > > > > > > > > > > > > > > > > not >> > > > > > > > > > > > > > > > > > > used >> > > > > > > > > > > > > > > > > > > > > as a base no - that said I dont >> see >> > why >> > > > > > switching >> > > > > > > > > at >> > > > > > > > > > > all, >> > > > > > > > > > > > > > > agroal >> > > > > > > > > > > > > > > > > can be >> > > > > > > > > > > > > > > > > > > > > used without build time >> integration >> > and >> > > > stay >> > > > > > > > > consistent >> > > > > > > > > > > > > with >> > > > > > > > > > > > > > it >> > > > > > > > > > > > > > > > if >> > > > > > > > > > > > > > > > > a >> > > > > > > > > > > > > > > > > > > day it >> > > > > > > > > > > > > > > > > > > > > comes back? >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > Romain Manni-Bucau >> > > > > > > > > > > > > > > > > > > > > @rmannibucau < >> > https://x.com/rmannibucau> >> > > > | >> > > > > > .NET >> > > > > > > > > Blog >> > > > > > > > > > > > > > > > > > > > > <https://dotnetbirdie.github.io/> >> | >> > > > Blog < >> > > > > > > > > > > > > > > > > > > https://rmannibucau.github.io/> >> > > > > > > > > > > > > > > > > > > > > | Old >> > > > > > > > > > > > > > > > > > > > > Blog < >> > http://rmannibucau.wordpress.com> >> > > > | >> > > > > > Github >> > > > > > > > > > > > > > > > > > > > > <https://github.com/rmannibucau> >> | >> > > > LinkedIn >> > > > > > > > > > > > > > > > > > > > > < >> > https://www.linkedin.com/in/rmannibucau> >> > > > | >> > > > > > Book >> > > > > > > > > > > > > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > >> > > > >> > >> https://www.packtpub.com/en-us/product/java-ee-8-high-performance-9781788473064 >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > Javaccino founder (Java/.NET >> service >> > - >> > > > > > contact via >> > > > > > > > > > > > > linkedin) >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > Le mer. 15 juil. 2026 à 19:13, >> > Alexandre >> > > > > > Dutra < >> > > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > a >> > > > > > > > > > > > > > > > > > > > > écrit : >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > Hi all, >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > If jdbc-url is set, Polaris >> > creates >> > > > and >> > > > > > owns >> > > > > > > > > the >> > > > > > > > > > > > Hikari >> > > > > > > > > > > > > > > > > > > datasource. If >> > > > > > > > > > > > > > > > > > > > > > it is not set, we keep using the >> > > > existing >> > > > > > Quarkus >> > > > > > > > > > > > > > datasource >> > > > > > > > > > > > > > > > > path. >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > I have strong reservations >> > regarding >> > > > this >> > > > > > design. >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > Alternating between a Hikari >> pool >> > and >> > > > an >> > > > > > Agroal >> > > > > > > > > pool >> > > > > > > > > > > > > > > depending >> > > > > > > > > > > > > > > > > on the >> > > > > > > > > > > > > > > > > > > > > > configuration introduces >> > unnecessary >> > > > > > complexity >> > > > > > > > > and >> > > > > > > > > > > > > > potential >> > > > > > > > > > > > > > > > > > > > > > confusion. A major drawback is >> that >> > > > bugs, >> > > > > > > > > performance >> > > > > > > > > > > > > > > > > > > characteristics, >> > > > > > > > > > > > > > > > > > > > > > and configuration issues will >> vary >> > > > across >> > > > > > > > > deployments >> > > > > > > > > > > > > > purely >> > > > > > > > > > > > > > > > > based on >> > > > > > > > > > > > > > > > > > > > > > the underlying connection pool >> in >> > use. >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > If our goal is to transition >> > entirely >> > > > to a >> > > > > > > > > > > > > "runtime-driven" >> > > > > > > > > > > > > > > > > > > > > > architecture, we should commit >> to >> > it >> > > > > > completely >> > > > > > > > > by >> > > > > > > > > > > > fully >> > > > > > > > > > > > > > > > > removing the >> > > > > > > > > > > > > > > > > > > > > > io.quarkus:quarkus-datasource >> > > > dependency >> > > > > > and >> > > > > > > > > > > switching >> > > > > > > > > > > > to >> > > > > > > > > > > > > > > > Hikari >> > > > > > > > > > > > > > > > > > > > > > unconditionally. >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > Thanks, >> > > > > > > > > > > > > > > > > > > > > > Alex >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at 7:10 PM >> > Yufei >> > > > Gu < >> > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Hi Robert, JB, Dmitri, >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Thanks, this feedback makes >> > sense. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > There are really two >> motivations >> > > > here: >> > > > > > runtime >> > > > > > > > > > > > loading >> > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > > > > > drivers, >> > > > > > > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > > > dynamic datasource creation. >> The >> > > > former >> > > > > > is >> > > > > > > > > useful >> > > > > > > > > > > for >> > > > > > > > > > > > > ASF >> > > > > > > > > > > > > > > > > binaries >> > > > > > > > > > > > > > > > > > > > > where >> > > > > > > > > > > > > > > > > > > > > > a >> > > > > > > > > > > > > > > > > > > > > > > driver is supplied after >> Polaris >> > is >> > > > > > built. The >> > > > > > > > > > > latter >> > > > > > > > > > > > > is >> > > > > > > > > > > > > > a >> > > > > > > > > > > > > > > > > building >> > > > > > > > > > > > > > > > > > > > > block >> > > > > > > > > > > > > > > > > > > > > > > for future per realm >> datasources. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > I'm OK that Quarkus/Agroal >> > remains >> > > > the >> > > > > > default >> > > > > > > > > for >> > > > > > > > > > > > > > > supported >> > > > > > > > > > > > > > > > > > > backends. >> > > > > > > > > > > > > > > > > > > > > > > That's already part of the >> POC. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > The gap I'm trying to address >> is >> > > > where >> > > > > > those >> > > > > > > > > > > > > assumptions >> > > > > > > > > > > > > > no >> > > > > > > > > > > > > > > > > longer >> > > > > > > > > > > > > > > > > > > > > hold. >> > > > > > > > > > > > > > > > > > > > > > > Quarkus can select from >> > predefined >> > > > > > > > > datasources, but >> > > > > > > > > > > > > they >> > > > > > > > > > > > > > > > still >> > > > > > > > > > > > > > > > > > > need to >> > > > > > > > > > > > > > > > > > > > > be >> > > > > > > > > > > > > > > > > > > > > > > configured ahead of time. It >> > doesn't >> > > > > > currently >> > > > > > > > > > > > provide >> > > > > > > > > > > > > > > > Polaris >> > > > > > > > > > > > > > > > > > > with a >> > > > > > > > > > > > > > > > > > > > > > clean >> > > > > > > > > > > > > > > > > > > > > > > way to create new datasources >> > > > > > dynamically. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > So my intent is for the >> contract >> > to >> > > > be: >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > - Quarkus/Agroal remains >> the >> > > > default. >> > > > > > > > > > > > > > > > > > > > > > > - Polaris managed JDBC is a >> > JVM >> > > > only >> > > > > > escape >> > > > > > > > > > > hatch >> > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > > runtime >> > > > > > > > > > > > > > > > > > > > > provided >> > > > > > > > > > > > > > > > > > > > > > > drivers and dynamically >> > created >> > > > > > datasources. >> > > > > > > > > > > > > > > > > > > > > > > - Polaris owns the pool and >> > driver >> > > > > > > > > lifecycle on >> > > > > > > > > > > > that >> > > > > > > > > > > > > > > path. >> > > > > > > > > > > > > > > > > > > > > > > - Per realm datasource >> routing >> > > > should >> > > > > > be a >> > > > > > > > > > > > separate >> > > > > > > > > > > > > > > design >> > > > > > > > > > > > > > > > > > > > > discussion. >> > > > > > > > > > > > > > > > > > > > > > > It's out of scope for this >> > POC. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > JB, I agree we should continue >> > using >> > > > > > Quarkus >> > > > > > > > > JDBC >> > > > > > > > > > > > > drivers >> > > > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > > > > backends >> > > > > > > > > > > > > > > > > > > > > > > we support directly. This >> path is >> > > > mainly >> > > > > > for >> > > > > > > > > the >> > > > > > > > > > > > cases >> > > > > > > > > > > > > > > > outside >> > > > > > > > > > > > > > > > > that >> > > > > > > > > > > > > > > > > > > > > > model. >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Yufei >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at 8:03 AM >> > > > > > Jean-Baptiste >> > > > > > > > > > > Onofré < >> > > > > > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Hi >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Regarding JDBC drivers in >> the >> > > > Quarkus >> > > > > > > > > ecosystem >> > > > > > > > > > > (in >> > > > > > > > > > > > > > > > > > > > > quarkus-extensions >> > > > > > > > > > > > > > > > > > > > > > or >> > > > > > > > > > > > > > > > > > > > > > > > quarkiverse), I think we can >> > just >> > > > > > leverage >> > > > > > > > > the >> > > > > > > > > > > > > quarkus >> > > > > > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > > > > > drivers. >> > > > > > > > > > > > > > > > > > > > > > > > Using another loading >> mechanism >> > > > could >> > > > > > be >> > > > > > > > > > > > problematic >> > > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > > future >> > > > > > > > > > > > > > > > > > > > > > features >> > > > > > > > > > > > > > > > > > > > > > > > (imagine with we want to try >> > > > native app >> > > > > > > > > buld). >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > What is the problem with >> using >> > the >> > > > > > Quarkus >> > > > > > > > > JDBC >> > > > > > > > > > > > > > drivers? >> > > > > > > > > > > > > > > > > > > > > > > > I remember that we agreed >> to be >> > > > > > opinionated >> > > > > > > > > about >> > > > > > > > > > > > the >> > > > > > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > > > > > backends >> > > > > > > > > > > > > > > > > > > > > we >> > > > > > > > > > > > > > > > > > > > > > want >> > > > > > > > > > > > > > > > > > > > > > > > to support, so we can be >> > > > opinionated >> > > > > > about >> > > > > > > > > the >> > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > drivers >> > > > > > > > > > > > > > > > > :) >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > I'm not against it, but I >> would >> > > > like to >> > > > > > > > > > > understand >> > > > > > > > > > > > > > better >> > > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > > > > rationale. >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Regards >> > > > > > > > > > > > > > > > > > > > > > > > JB >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at >> 3:03 PM >> > > > Robert >> > > > > > Stupp < >> > > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > Thanks for pushing this >> > forward. >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > I agree that >> runtime-provided >> > > > JDBC >> > > > > > drivers >> > > > > > > > > are >> > > > > > > > > > > a >> > > > > > > > > > > > > real >> > > > > > > > > > > > > > > > > problem >> > > > > > > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > > > > > > solve. >> > > > > > > > > > > > > > > > > > > > > > > > > For ASF-distributed >> binaries, >> > > > there >> > > > > > are >> > > > > > > > > valid >> > > > > > > > > > > > cases >> > > > > > > > > > > > > > > where >> > > > > > > > > > > > > > > > > > > Polaris >> > > > > > > > > > > > > > > > > > > > > > should >> > > > > > > > > > > > > > > > > > > > > > > > > not bundle a driver, but >> > > > operators >> > > > > > still >> > > > > > > > > need a >> > > > > > > > > > > > way >> > > > > > > > > > > > > > to >> > > > > > > > > > > > > > > > > provide >> > > > > > > > > > > > > > > > > > > one. >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > My concern is that this PR >> > does >> > > > more >> > > > > > than >> > > > > > > > > load >> > > > > > > > > > > > > > runtime >> > > > > > > > > > > > > > > > > driver >> > > > > > > > > > > > > > > > > > > jars. >> > > > > > > > > > > > > > > > > > > > > > > > > It also introduces a >> second >> > > > > > datasource >> > > > > > > > > stack: >> > > > > > > > > > > > > > > > > Quarkus/Agroal >> > > > > > > > > > > > > > > > > > > via >> > > > > > > > > > > > > > > > > > > > > > > > > `quarkus.datasource.*` on >> one >> > > > side, >> > > > > > and >> > > > > > > > > > > > > Polaris-owned >> > > > > > > > > > > > > > > > > Hikari >> > > > > > > > > > > > > > > > > > > pools >> > > > > > > > > > > > > > > > > > > > > > via >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > `polaris.persistence.relational.jdbc.*` on >> > > > > > > > > the >> > > > > > > > > > > > > other. >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > Those two paths look >> similar >> > to >> > > > > > operators, >> > > > > > > > > but >> > > > > > > > > > > > they >> > > > > > > > > > > > > > do >> > > > > > > > > > > > > > > > not >> > > > > > > > > > > > > > > > > > > have the >> > > > > > > > > > > > > > > > > > > > > > same >> > > > > > > > > > > > > > > > > > > > > > > > > contract. >> > > > > > > > > > > > > > > > > > > > > > > > > The Quarkus path brings >> > > > > > Quarkus/Agroal >> > > > > > > > > > > lifecycle, >> > > > > > > > > > > > > > > health, >> > > > > > > > > > > > > > > > > > > metrics, >> > > > > > > > > > > > > > > > > > > > > > > > > credentials/secret-manager >> > > > > > integrations, >> > > > > > > > > and >> > > > > > > > > > > the >> > > > > > > > > > > > > > > broader >> > > > > > > > > > > > > > > > > > > datasource >> > > > > > > > > > > > > > > > > > > > > > > > config >> > > > > > > > > > > > > > > > > > > > > > > > > surface; those are all >> > important >> > > > for >> > > > > > > > > operators. >> > > > > > > > > > > > > > > > > > > > > > > > > The Polaris-managed path >> > means >> > > > > > Polaris owns >> > > > > > > > > > > pool >> > > > > > > > > > > > > > > > lifecycle, >> > > > > > > > > > > > > > > > > > > driver >> > > > > > > > > > > > > > > > > > > > > > > > loading, >> > > > > > > > > > > > > > > > > > > > > > > > > classloader behavior, and >> a >> > > > separate >> > > > > > > > > > > > config/support >> > > > > > > > > > > > > > > > > surface. >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > So I do not think this is >> > ready >> > > > to >> > > > > > move >> > > > > > > > > forward >> > > > > > > > > > > > as >> > > > > > > > > > > > > > just >> > > > > > > > > > > > > > > > > > > “another >> > > > > > > > > > > > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > > > > > > > > > > > configuration option.” >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > Before I would consider >> this >> > > > > > mergeable, I >> > > > > > > > > think >> > > > > > > > > > > > we >> > > > > > > > > > > > > > need >> > > > > > > > > > > > > > > > > > > explicit >> > > > > > > > > > > > > > > > > > > > > > > > agreement >> > > > > > > > > > > > > > > > > > > > > > > > > on the contract: >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > 1. Is Polaris-managed JDBC >> > only a >> > > > > > narrow >> > > > > > > > > escape >> > > > > > > > > > > > > hatch >> > > > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > > > > > > > > > runtime-provided >> > > > > > > > > > > > > > > > > > > > > > > > > driver jars, or a peer >> > supported >> > > > > > datasource >> > > > > > > > > > > path? >> > > > > > > > > > > > > > > > > > > > > > > > > 2. Which Quarkus/Agroal >> > > > integrations >> > > > > > are >> > > > > > > > > > > > > > intentionally >> > > > > > > > > > > > > > > > not >> > > > > > > > > > > > > > > > > > > > > available >> > > > > > > > > > > > > > > > > > > > > > on >> > > > > > > > > > > > > > > > > > > > > > > > > that path? >> > > > > > > > > > > > > > > > > > > > > > > > > 3. What lifecycle does >> > Polaris >> > > > own >> > > > > > for >> > > > > > > > > pools, >> > > > > > > > > > > > > loaded >> > > > > > > > > > > > > > > > > drivers, >> > > > > > > > > > > > > > > > > > > > > > shutdown, >> > > > > > > > > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > > > > > driver upgrades? >> > > > > > > > > > > > > > > > > > > > > > > > > 4. Is this meant to be >> part >> > of >> > > > future >> > > > > > > > > per-realm >> > > > > > > > > > > > > > > > datasource >> > > > > > > > > > > > > > > > > > > routing? >> > > > > > > > > > > > > > > > > > > > > > If >> > > > > > > > > > > > > > > > > > > > > > > > so, >> > > > > > > > > > > > > > > > > > > > > > > > > I think that needs a >> separate >> > > > design >> > > > > > > > > > > discussion. >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > Until that contract is >> > agreed, I >> > > > do >> > > > > > not >> > > > > > > > > think >> > > > > > > > > > > we >> > > > > > > > > > > > > > should >> > > > > > > > > > > > > > > > > present >> > > > > > > > > > > > > > > > > > > > > this >> > > > > > > > > > > > > > > > > > > > > > as a >> > > > > > > > > > > > > > > > > > > > > > > > > second supported JDBC >> path or >> > > > treat >> > > > > > the PR >> > > > > > > > > as >> > > > > > > > > > > > > > mergeable >> > > > > > > > > > > > > > > > > with >> > > > > > > > > > > > > > > > > > > > > > > > documentation >> > > > > > > > > > > > > > > > > > > > > > > > > updates alone. >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jul 7, 2026 at >> > 3:48 AM >> > > > Dmitri >> > > > > > > > > > > > Bourlatchkov >> > > > > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > > [email protected] >> > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > Hi Yufei, >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for the update. >> That >> > > > > > approach to >> > > > > > > > > > > loading >> > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > driver >> > > > > > > > > > > > > > > > > > > can >> > > > > > > > > > > > > > > > > > > > > > work, I >> > > > > > > > > > > > > > > > > > > > > > > > > > think. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > However, I'm not sure >> > whether >> > > > it is >> > > > > > > > > > > preferable >> > > > > > > > > > > > > to a >> > > > > > > > > > > > > > > > > proper >> > > > > > > > > > > > > > > > > > > > > Quarkus >> > > > > > > > > > > > > > > > > > > > > > > > > > downstream build. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > Adding jars to Polaris >> > still >> > > > > > requires >> > > > > > > > > some >> > > > > > > > > > > form >> > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > downstream >> > > > > > > > > > > > > > > > > > > > > > build, >> > > > > > > > > > > > > > > > > > > > > > > > > > whether it is tar-based >> or >> > > > > > docker-based. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > Performing a full >> Quarkus >> > build >> > > > > > > > > downstream >> > > > > > > > > > > > offers >> > > > > > > > > > > > > > > some >> > > > > > > > > > > > > > > > > > > > > advantages, >> > > > > > > > > > > > > > > > > > > > > > > > > though: >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > * Integration tests can >> be >> > > > > > executed with >> > > > > > > > > the >> > > > > > > > > > > > > > specific >> > > > > > > > > > > > > > > > > driver. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > * Dependencies are >> > resolved / >> > > > > > validated >> > > > > > > > > at >> > > > > > > > > > > > build >> > > > > > > > > > > > > > > time. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > * Quarkus manages the >> > > > DataSource >> > > > > > > > > lifecycle. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > I wonder what other >> people >> > > > think >> > > > > > too. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, >> > > > > > > > > > > > > > > > > > > > > > > > > > Dmitri. >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jul 6, 2026 at >> > 9:22 PM >> > > > > > Yufei Gu < >> > > > > > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Dmitri, >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > Good catch. The >> initial >> > POC >> > > > only >> > > > > > > > > proved the >> > > > > > > > > > > > > > driver >> > > > > > > > > > > > > > > > > works if >> > > > > > > > > > > > > > > > > > > > > it’s >> > > > > > > > > > > > > > > > > > > > > > > > > already >> > > > > > > > > > > > > > > > > > > > > > > > > > > visible to the runtime >> > > > > > classloader. >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > I updated the approach >> > so the >> > > > > > > > > > > Polaris-managed >> > > > > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > > > > > datasource >> > > > > > > > > > > > > > > > > > > > > can >> > > > > > > > > > > > > > > > > > > > > > > > load >> > > > > > > > > > > > > > > > > > > > > > > > > > > driver jars explicitly >> > before >> > > > > > creating >> > > > > > > > > > > > Hikari. >> > > > > > > > > > > > > In >> > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > binary >> > > > > > > > > > > > > > > > > > > > > > > > > > distribution, >> > > > > > > > > > > > > > > > > > > > > > > > > > > users can drop jars >> into: >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > server/jdbc-drivers/ >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > For admin-tool >> > > > bootstrap/purge, >> > > > > > the >> > > > > > > > > same >> > > > > > > > > > > > > applies >> > > > > > > > > > > > > > > > under: >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > admin/jdbc-drivers/ >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > They can also override >> > the >> > > > > > location >> > > > > > > > > with: >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > >> > > > >> > >> polaris.persistence.relational.jdbc.driver-directory=/path/to/jdbc-drivers >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > So this does not >> depend >> > on >> > > > > > adding jars >> > > > > > > > > to >> > > > > > > > > > > > > > lib/main >> > > > > > > > > > > > > > > or >> > > > > > > > > > > > > > > > > > > > > rebuilding >> > > > > > > > > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > > > > > > > > > Quarkus fast-jar >> > metadata. >> > > > The >> > > > > > jar just >> > > > > > > > > > > needs >> > > > > > > > > > > > > to >> > > > > > > > > > > > > > be >> > > > > > > > > > > > > > > > > present >> > > > > > > > > > > > > > > > > > > > > > before >> > > > > > > > > > > > > > > > > > > > > > > > > > Polaris >> > > > > > > > > > > > > > > > > > > > > > > > > > > creates the >> datasource. >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jul 6, 2026 at >> > > > 3:25 PM >> > > > > > Dmitri >> > > > > > > > > > > > > > Bourlatchkov >> > > > > > > > > > > > > > > < >> > > > > > > > > > > > > > > > > > > > > > [email protected] >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Yufei, >> > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > Could you provide >> some >> > more >> > > > > > details >> > > > > > > > > about >> > > > > > > > > > > > how >> > > > > > > > > > > > > > > > > exactly a >> > > > > > > > > > > > > > > > > > > 3rd >> > > > > > > > > > > > > > > > > > > > > > party >> > > > > > > > > > > > > > > > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > > > > > > > > > > > > > > driver is >> incorporated >> > into >> > > > > > Polaris? >> > > > > > > > > I >> > > > > > > > > > > > might >> > > > > > > > > > > > > > have >> > > > > > > > > > > > > > > > > missed >> > > > > > > > > > > > > > > > > > > that >> > > > > > > > > > > > > > > > > > > > > > in >> > > > > > > > > > > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > > > > > > > > > > PR, >> > > > > > > > > > > > > > > > > > > > > > > > > > > > but it was not >> > apparent to >> > > > me >> > > > > > at >> > > > > > > > > first >> > > > > > > > > > > > > reading. >> > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, >> > > > > > > > > > > > > > > > > > > > > > > > > > > > Dmitri. >> > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jul 6, 2026 >> at >> > > > 6:22 PM >> > > > > > Yufei >> > > > > > > > > Gu < >> > > > > > > > > > > > > > > > > > > > > [email protected]> >> > > > > > > > > > > > > > > > > > > > > > > > > wrote: >> > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi all, >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > I put together a >> > small >> > > > POC( >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > https://github.com/apache/polaris/pull/4984 >> > > > > > > > > > > > > > > > > > > > > > > > > > > ) >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > the relational >> JDBC >> > > > backend >> > > > > > so >> > > > > > > > > Polaris >> > > > > > > > > > > > can >> > > > > > > > > > > > > > > create >> > > > > > > > > > > > > > > > > its >> > > > > > > > > > > > > > > > > > > own >> > > > > > > > > > > > > > > > > > > > > > JDBC >> > > > > > > > > > > > > > > > > > > > > > > > > > > datasource >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > from config, >> instead >> > of >> > > > > > always >> > > > > > > > > relying >> > > > > > > > > > > on >> > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > Quarkus >> > > > > > > > > > > > > > > > > > > > > > datasource. >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > The config looks >> like >> > > > this: >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > >> > > > polaris.persistence.relational.jdbc.jdbc-url=jdbc:postgresql://... >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > >> > polaris.persistence.relational.jdbc.driver=org.postgresql.Driver >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> polaris.persistence.relational.jdbc.username=... >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> polaris.persistence.relational.jdbc.password=... >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > If jdbc-url is >> set, >> > > > Polaris >> > > > > > > > > creates and >> > > > > > > > > > > > > owns >> > > > > > > > > > > > > > > the >> > > > > > > > > > > > > > > > > Hikari >> > > > > > > > > > > > > > > > > > > > > > > > datasource. >> > > > > > > > > > > > > > > > > > > > > > > > > > If >> > > > > > > > > > > > > > > > > > > > > > > > > > > it >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > is not set, we >> keep >> > > > using the >> > > > > > > > > existing >> > > > > > > > > > > > > > Quarkus >> > > > > > > > > > > > > > > > > > > datasource >> > > > > > > > > > > > > > > > > > > > > > path. >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > I also added tests >> > > > showing >> > > > > > that: >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > - We can create >> > > > > > datasources >> > > > > > > > > > > > dynamically >> > > > > > > > > > > > > > from >> > > > > > > > > > > > > > > > > config >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Different >> > > > > > configurations can >> > > > > > > > > > > create >> > > > > > > > > > > > > > > > > independent >> > > > > > > > > > > > > > > > > > > > > > datasources, >> > > > > > > > > > > > > > > > > > > > > > > > > > which >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > could help >> future >> > > > > > per-realm >> > > > > > > > > > > datasource >> > > > > > > > > > > > > > > support >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > - A JDBC driver >> > can be >> > > > > > supplied >> > > > > > > > > at >> > > > > > > > > > > > > runtime >> > > > > > > > > > > > > > > > from >> > > > > > > > > > > > > > > > > a >> > > > > > > > > > > > > > > > > > > jar >> > > > > > > > > > > > > > > > > > > > > > instead >> > > > > > > > > > > > > > > > > > > > > > > > of >> > > > > > > > > > > > > > > > > > > > > > > > > > > being >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > on the >> build-time >> > > > > > classpath. >> > > > > > > > > This is >> > > > > > > > > > > > > very >> > > > > > > > > > > > > > > > > helpful >> > > > > > > > > > > > > > > > > > > for >> > > > > > > > > > > > > > > > > > > > > > > > > proprietary >> > > > > > > > > > > > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > Apache >> > > > > > license-incompatible >> > > > > > > > > drivers, >> > > > > > > > > > > > > like >> > > > > > > > > > > > > > > > MySQL. >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > This POC does not >> yet >> > > > > > implement >> > > > > > > > > full >> > > > > > > > > > > > > > per-realm >> > > > > > > > > > > > > > > > > > > datasource >> > > > > > > > > > > > > > > > > > > > > > > > routing. >> > > > > > > > > > > > > > > > > > > > > > > > > It >> > > > > > > > > > > > > > > > > > > > > > > > > > > > only >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > demonstrates the >> > > > lower-level >> > > > > > > > > building >> > > > > > > > > > > > > blocks: >> > > > > > > > > > > > > > > > > Polaris >> > > > > > > > > > > > > > > > > > > can >> > > > > > > > > > > > > > > > > > > > > > create >> > > > > > > > > > > > > > > > > > > > > > > > > > > managed >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > JDBC pools from >> > config, >> > > > > > multiple >> > > > > > > > > pools >> > > > > > > > > > > > can >> > > > > > > > > > > > > be >> > > > > > > > > > > > > > > > > created >> > > > > > > > > > > > > > > > > > > > > > > > > independently, >> > > > > > > > > > > > > > > > > > > > > > > > > > > and >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > the JDBC driver >> can >> > be >> > > > > > supplied at >> > > > > > > > > > > > runtime. >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > Feedback is >> welcome >> > > > before I >> > > > > > turn >> > > > > > > > > this >> > > > > > > > > > > > > into a >> > > > > > > > > > > > > > > > > formal >> > > > > > > > > > > > > > > > > > > PR. >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yufei >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > >> > > > > > >> > > > >> > >> >
