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

Reply via email to