Skip to content

feat: add 12 more databases through configuration only - #2648

Merged
Chat2DB-Pro merged 3 commits into
mainfrom
feat/tier-b-databases
Aug 7, 2026
Merged

Chat2DB-Pro merged 3 commits into
mainfrom
feat/tier-b-databases

Conversation

@Chat2DB-Pro

Copy link
Copy Markdown
Collaborator

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

Database Driver class Port
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

Reuse a jar we already bundle

Database Reuses Why Port
GreptimeDB MySQL driver speaks the MySQL wire protocol 4002
Apache Spark Hive driver speaks HiveServer2 10000
TimechoDB IoTDB driver is an IoTDB distribution 6667

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:

  • Driver classes — every jar was downloaded from Maven Central and its META-INF/services/java.sql.Driver read directly. MonetDB ships no service file, so its class was confirmed by listing the jar contents; the class matches what DBeaver declares.
  • Coordinates — found by reverse-searching Maven Central on the fully-qualified driver class (fc: queries) rather than guessing artifact names.
  • Ports — from DBeaver's own plugin.xml driver metadata (defaultPort).

Deliberate omissions

  • Apache Kyuubi — the published kyuubi-hive-jdbc jar is unshaded and cannot load standalone. Shipping it would hand users a driver that fails at connect time.
  • Netezza, SQream, Timeplus — no driver on Maven Central (zero results).
  • Athena, Cloudera Impala — vendor-distributed drivers, not on Maven Central.

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.json grows from 26 to 38 entries; additive diff only, no reformatting
  • generic plugin unit tests pass, including GenericPluginConfigLoadTest which parses the file
  • Live connections were not exercised; these are configuration entries and need the respective engines to test end to end

🤖 Generated with Claude Code

https://claude.ai/code/session_01Rq65mLom8mVWv1F6VzejN4

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.allowed list 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
@Chat2DB-Pro

Copy link
Copy Markdown
Collaborator Author

Fixed in 1a4c4bd15, but the finding needs correcting on the reason.

The stated reason does not hold. I ran the driver's own UrlParser.parseProperties against the shipped template:

jdbc:opensearch://localhost:9200         -> {port=9200, host=localhost, usessl=false}
jdbc:opensearch://https://localhost:9200 -> {port=9200, host=localhost, usessl=true}
jdbc:opensearch://http://localhost:9200  -> {port=9200, host=localhost, usessl=false}

The scheme is optional and defaults to plain HTTP — which is also why DBeaver brackets it as [{scheme}://] in its own sample URL. So the URL was not the problem.

The conclusion was right, for a different reason. Loading the driver and calling getConnection shows it fails before reaching the network:

NoClassDefFoundError: com/amazonaws/auth/AWSCredentialsProvider

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:

Entry Result
OpenSearch fails on AWS SDK
Ocient fails on log4j-core
DolphinDB fails on com.xxdb.data.Vector
HANA, MonetDB, Altibase, IRIS, NuoDB, Db2 for IBM i reach the network
GreptimeDB, Apache Spark, TimechoDB reuse already-bundled drivers

My original verification only confirmed each jar declares a java.sql.Driver service, which does not prove the driver can load. That is exactly the defect Apache Kyuubi was excluded for in this same PR, so I applied the same standard.

Resolution:

  • DolphinDB kept — its closure is just two jars (dolphindb-javaapi, slf4j-api), added via the existing multi-jar mechanism (same shape as the Derby entry). Re-probed: reaches the network.
  • OpenSearch and Ocient removed — AWS SDK and netty/commons-text closures respectively, not worth pinning by hand.

I also probed the drivers in #2649 and the already-merged #2644; all of those reach the network, so no further entries are affected.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.allowed list 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

@github-actions
github-actions Bot dismissed their stale review August 7, 2026 08:07

Superseded by updated review from same workflow.

@Chat2DB-Pro
Chat2DB-Pro merged commit c65bd7c into main Aug 7, 2026
15 of 16 checks passed
@Chat2DB-Pro
Chat2DB-Pro deleted the feat/tier-b-databases branch August 7, 2026 09:17
@openai0229 openai0229 moved this from In Review to Done in Chat2DB Community Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants