StarRocks/Doris expose external storage through a catalog. dbx had no catalog concept, so connecting to e.g. `paimon_catalog.clip` failed: the URL path's database was sent as the MySQL handshake schema and rejected before any `SET catalog` could run, and table listing/preview ran against the default catalog. Add an opt-in `catalog=<name>` URL parameter for mysql-family connections: - `mysql_connection_catalog`: reads the `catalog` param (percent-decoded). - `mysql_setup_queries`: emits `SET catalog = <name>` when present. Pushed last so mysql_async's back-to-front setup execution (Vec::pop) runs it before `USE <database>`, which would otherwise fail (the database lives in the external catalog). The pool re-runs setup after each reset, so the catalog stays current. - `mysql_async_url`: when a catalog is configured, strip the database path from the URL handed to mysql_async so the handshake does not send the external-catalog database as the schema. The original URL (with path) is still used for setup, so `USE <database>` is emitted correctly. - Add `catalog` to `is_dbx_handled_mysql_url_param` so mysql_async ignores the unknown param. This is opt-in: only connections that set `catalog=` are affected; all existing mysql/StarRocks/Doris connections behave unchanged. Configure a Paimon connection as `database=clip`, `url_params=catalog=paimon_catalog`. Verified against a StarRocks + Paimon catalog via the dbx MCP bridge: SHOW DATABASES, SHOW TABLES, DESCRIBE, and unqualified `SELECT * FROM <t>` all resolve in the selected catalog. |
||
|---|---|---|
| .. | ||
| dbx-core | ||
| dbx-web | ||
| README.md | ||
README.md
Crates
Rust crates for DBX live here.
Directories
dbx-core/- shared database core, drivers, schema/query logic, import/export, transfer, and plugin support.dbx-web/- the Docker/web backend service binary published asdbx-web.
The workspace root is defined in the repository-level Cargo.toml.