feat: add 12 more databases through configuration only - #2648
Conversation
Nine bring their own driver from Maven Central, three reuse a jar already bundled for an existing plugin: SAP HANA com.sap.db.jdbc.Driver :30015 MonetDB nl.cwi.monetdb.jdbc.MonetDriver :50000 Altibase Altibase.jdbc.driver.AltibaseDriver :20300 Ocient com.ocient.jdbc.JDBCDriver :4050 InterSystems IRIS com.intersystems.jdbc.IRISDriver :1972 NuoDB com.nuodb.jdbc.Driver OpenSearch org.opensearch.jdbc.Driver :9200 DolphinDB com.dolphindb.jdbc.Driver :8848 Db2 for IBM i com.ibm.as400.access.AS400JDBCDriver GreptimeDB speaks MySQL wire, reuses the MySQL driver :4002 Apache Spark speaks HiveServer2, reuses the Hive driver :10000 TimechoDB an IoTDB distribution, reuses the IoTDB jar :6667 Driver classes were read out of each downloaded jar rather than assumed; ports come from DBeaver's own driver metadata. OpenSearch is routed to the Elasticsearch syntax plugin, and TimechoDB inherits the IoTDB entry's quoting rules (identifiers unquoted, table-only qualification) because dots are structural in its path-based references. Apache Kyuubi was evaluated and left out: its published kyuubi-hive-jdbc jar is unshaded and cannot load standalone, so shipping it would offer a driver that fails at connect time. Netezza, SQream, Timeplus, Athena and Impala have no driver on Maven Central at all. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Rq65mLom8mVWv1F6VzejN4
There was a problem hiding this comment.
Reviewed 9014d9: 0 critical, 1 high, 0 medium findings. Request changes because the OpenSearch default JDBC URL is not accepted by the configured driver, making the newly added connection path unusable with its shipped template. Coverage was limited to the single GitHub-provided configuration diff plus PR metadata and review history; no tests or runtime checks were run.
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
awmgmcpg
To allow these domains, add them to the
network.allowedlist in your workflow frontmatter:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
Generated by AI Pull Request Reviewer for #2648 · 7.12 AIC · ⌖ 2.8 AIC · ⊞ 17.2K
…hinDB
Review flagged the OpenSearch entry. The stated reason - a missing transport
scheme in the URL - does not hold: the driver's own UrlParser resolves
jdbc:opensearch://localhost:9200 to {host=localhost, port=9200, usessl=false},
and DBeaver marks the scheme optional in its template too.
The conclusion was right for a different reason. Loading each driver and
calling getConnection shows OpenSearch fails before it reaches the network
with NoClassDefFoundError on com.amazonaws.auth.AWSCredentialsProvider: the
published jar is unshaded. Running that same probe across the whole batch
found two more that never reach the network - Ocient (log4j-core) and
DolphinDB (com.xxdb.data.Vector).
My earlier check confirmed only that each jar declares a java.sql.Driver
service, which does not prove the driver can load. This is the same defect
Apache Kyuubi was excluded for in this branch, so the same standard applies.
DolphinDB is completed rather than dropped: its dependency closure is two
jars, and with dolphindb-javaapi and slf4j-api added through the existing
multi-jar mechanism it reaches the network. OpenSearch pulls the AWS SDK and
Ocient pulls netty on top of log4j and commons-text; neither closure is worth
pinning by hand, and both are removed.
The other nine drivers in this batch were probed and all reach the network.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rq65mLom8mVWv1F6VzejN4
|
Fixed in The stated reason does not hold. I ran the driver's own The scheme is optional and defaults to plain HTTP — which is also why DBeaver brackets it as The conclusion was right, for a different reason. Loading the driver and calling The published jar is unshaded. That is a real defect and the entry had to go. The check was worth generalising. I ran the same load-and-connect probe across all 12 entries in this PR, which found two more the review did not:
My original verification only confirmed each jar declares a Resolution:
I also probed the drivers in #2649 and the already-merged #2644; all of those reach the network, so no further entries are affected. |
There was a problem hiding this comment.
Reviewed 1a4c4bd: 0 critical, 0 high, 0 medium findings. The prior blocking finding is superseded because the OpenSearch entry is no longer present in the current diff; no merge-blocking issue was found in the remaining changed lines. Merge recommendation: proceed. Coverage was limited to the single current configuration patch plus pull request metadata and review history; no tests or runtime checks were run.
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
awmgmcpg
To allow these domains, add them to the
network.allowedlist in your workflow frontmatter:
network:
allowed:
- defaults
- "awmgmcpg"See Network Configuration for more information.
Generated by AI Pull Request Reviewer for #2648 · 6.27 AIC · ⌖ 3.04 AIC · ⊞ 17.2K
Superseded by updated review from same workflow.
Third batch on the config-only path, following #2633 and #2644. No new Java plugin code — all entries live in
generic.json.Bring their own driver
com.sap.db.jdbc.Drivernl.cwi.monetdb.jdbc.MonetDriverAltibase.jdbc.driver.AltibaseDrivercom.ocient.jdbc.JDBCDrivercom.intersystems.jdbc.IRISDrivercom.nuodb.jdbc.Driverorg.opensearch.jdbc.Drivercom.dolphindb.jdbc.Drivercom.ibm.as400.access.AS400JDBCDriverReuse a jar we already bundle
Two entries get non-default handling: OpenSearch is routed to the Elasticsearch syntax plugin, and TimechoDB inherits the IoTDB entry's quoting rules (
identifierQuotes: none, table-only qualification) because dots are structural in its path-based references and quoting any part would break the SQL.How the values were established
Same method as the previous two batches — nothing written from memory:
META-INF/services/java.sql.Driverread directly. MonetDB ships no service file, so its class was confirmed by listing the jar contents; the class matches what DBeaver declares.fc:queries) rather than guessing artifact names.plugin.xmldriver metadata (defaultPort).Deliberate omissions
kyuubi-hive-jdbcjar is unshaded and cannot load standalone. Shipping it would hand users a driver that fails at connect time.These belong to the "user supplies their own jar" path rather than the config-only path.
Progress against DBeaver
A gap analysis against DBeaver's repository (183 driver declarations across 75 ext plugins → 125 distinct products) put us at 44 supported. After #2644 and this PR we are at 69, with the gap down from 82 to 57.
What remains is mostly not reachable by configuration alone: ~23 commercially licensed drivers, ~11 non-JDBC engines needing dedicated plugins, and a set of cloud services requiring SDKs and credentials. The cheap wins from this mechanism are largely spent; the highest-leverage next step is a "bring your own driver jar" flow, which would unlock the licensed group in one change.
Verification
generic.jsongrows from 26 to 38 entries; additive diff only, no reformattingGenericPluginConfigLoadTestwhich parses the file🤖 Generated with Claude Code
https://claude.ai/code/session_01Rq65mLom8mVWv1F6VzejN4