Commit Graph
135 Commits
Author SHA1 Message Date
t8y2 8364f468a0 fix(sqlserver): use legacy encryption for fallback 2026-07-07 22:51:04 +08:00
zipg 6cba08fccb fix(kingbase): 修复连接与元数据查询异常 2026-07-07 22:12:36 +08:00
jischeng c3893bf314 feat(spark): add Apache Spark database driver with catalog support
* feat(spark): add Apache Spark database driver

Spark Thrift Server speaks the HiveServer2 protocol, so the Spark driver
reuses the hive-jdbc agent runtime. Registers spark (agentKey=spark,
defaultPort=10015) across the manifest, DatabaseType enum, agent catalog,
SQL dialects, connection dialog, and a SparkAgent built on AbstractJdbcAgent.

* feat(spark): add catalog support and official logo

SparkAgent now supports Spark 3.4+ multi-catalog (Paimon, Lance, Iceberg)
via catalog=<name> in url_params, mirroring the StarRocks catalog flow:
- afterConnect switches to the configured catalog via USE <catalog>
- listDatabases returns the catalog name when SHOW DATABASES is empty
  (catalogs like Lance expose tables at the catalog root with no databases)
- listTables uses SHOW TABLES IN <catalog>[.<schema>] uniformly, working
  for both catalog-root tables (Lance) and catalog.schema tables (Paimon)
- setSchemaSQL qualifies USE with the catalog to prevent resetting to
  spark_catalog on schema switches
- buildJdbcUrl omits database from the URL path

Also replaces the placeholder lightning icon with the official Apache Spark
logo (spark-logo.png from spark.apache.org).

* fix(spark): use catalog-qualified DESCRIBE for column retrieval

getColumnsFromDescribe used USE <schema> + DESCRIBE <table>, which
generated USE `catalog`.`catalog` when the sidebar passed the catalog
name as the schema (Lance case where the catalog is the only node).
This failed and fell back to JDBC metadata which also returned nothing,
resulting in an empty DDL (CREATE TABLE ... ()).

Now uses DESCRIBE `catalog`.`table` directly when a catalog is
configured, bypassing USE entirely. Also fixes setSchemaSQL to treat
schema == catalog as catalog-only (no .schema suffix).

* fix(ci): add spark to metadata coverage matrix and BRIDGE_REQUIRED_TYPES

- agents/metadata-constraint-coverage.tsv: register spark as
  intentional-fallback (SHOW TABLES/SHOW DATABASES, like Hive/TDengine)
- packages/node-core/src/diagnostics.ts: add spark to
  BRIDGE_REQUIRED_TYPES (mcpMode=bridge, matches manifest)

* fix(ci): add spark to DBX_CONNECTION_TYPE_DESCRIPTION in mcp-server

The driver-manifest test asserts every manifest dbType appears in the
MCP server's connection type description string.
2026-07-07 14:36:22 +08:00
Guoyu Su 2b5aaa2a54 fix(desktop): clear connection error after successful test 2026-07-06 19:37:00 +08:00
zipgandzipg a212ccbfa7 fix(kafka): support cluster address separators
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 18:11:10 +08:00
t8y2 e84fb12fcc feat(sqlite): support SQLCipher encrypted databases 2026-07-06 14:24:28 +08:00
t8y2 5db35307d3 fix(influxdb): support InfluxDB 2 connections 2026-07-06 13:30:12 +08:00
zipg 95397f7152 fix(mysql): add TLS failure hint 2026-07-06 10:47:57 +08:00
t8y2 5c37c0ad0d fix(mysql): disable TLS by default 2026-07-06 10:10:30 +08:00
zergmk2 f800d80f90 feat: add SSH config aliases and PostgreSQL extensions 2026-07-05 20:29:49 +08:00
Moe. 8a1a791927 feat(connection): add connection attempt cancellation 2026-07-04 23:47:53 +08:00
t8y2 7e7c4944e9 refactor(desktop): organize lib modules by domain 2026-07-04 13:53:52 +08:00
t8y2 b80f3e8088 feat(connection): add HTTP tunnel 2026-07-03 22:11:03 +08:00
gggdsg b60f8b2039 feat(mongodb): add TLS connection options in connection tab (#2515)
Add MongoDB TLS options (`tlsAllowInvalidCertificates`, `retryWrites`, `tlsCAFile`) to the connection form with backend URL normalization and DocumentDB/SSH tunnel guidance, while preserving legacy `tlsCAFile` in `url_params` for existing DocumentDB users, hardening auth failure hint matching, and clarifying TLS bypass security labels.
2026-07-03 19:25:01 +08:00
LRcoding 21cec24e75 fix(mysql): support cleartext password auth option (#2499) 2026-07-03 13:47:47 +08:00
Tony Tang 23b9228f82 feat(connection): add StarRocks TLS support 2026-07-02 16:37:20 +08:00
miracle 72a7207283 fix(kafka): improve mq admin compatibility 2026-07-02 12:58:33 +08:00
t8y2 609f2ef7c7 feat(connection): allow revealing saved passwords 2026-07-02 02:49:02 +08:00
LRcodingandzero d30d47ccda fix(app): 修复可见对象过滤器候选列表
修复 #2272:已保存可见对象过滤后,再次打开过滤器时仍显示当前连接可选对象全集。

已有 visible_databases 只用于初始勾选状态,侧边栏树展示仍继续应用已保存过滤。

Co-authored-by: zero <zero@zeroMacmini.local>
2026-07-01 14:43:13 +08:00
t8y2 25dcbeb7e4 feat(oscar): add OSCAR database support 2026-06-30 20:07:55 +08:00
zipgandstaff d04463ebeb Feature:支持 SQL Server 旧版兼容模式 (#2181)
* fix: 支持 SQL Server 旧版非加密重试

* fix: 优化 SQL Server 旧版兼容模式入口

---------

Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-06-30 19:52:07 +08:00
zipg 93582df14a feat: 查询超时错误页支持跳转修改超时时间 2026-06-30 17:36:44 +08:00
miracle 7cec4892bf feat(kafka): support Kafka MQ admin client 2026-06-30 17:01:24 +08:00
zipg dab1d145bc fix(connection): show built-in driver update hint on connection failure (#2111) 2026-06-30 01:52:37 +08:00
zipg be996a4352 fix(gbase8a): 优化 agent 启动错误提示 2026-06-28 10:31:59 +08:00
zipgandstaff d55967cca8 fix(canvas): fix premature text truncation in canvas grid cells
* fix: 修复 Canvas 单元格文本提前截断

* fix: 清理 Dremio 未使用连接 URL 判断

---------

Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-06-28 00:32:11 +08:00
Spencer.Chang 350d2a3533 feat(connection): add Dremio JDBC connection support 2026-06-27 23:44:27 +08:00
Orwen Xiang 44884efa9b feat(h2): add split JDBC URL support 2026-06-27 20:03:16 +08:00
hb 7b08307896 fix: prevent implicit database creation on connection for SQLite (#1986) 2026-06-27 12:31:02 +08:00
zipgandstaff 46c72e163b fix(ui): 优化连接配置弹框布局
Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-06-27 01:37:07 +08:00
t8y2 aed96b4a06 fix(connection): hide default visible schema button 2026-06-27 01:35:03 +08:00
miracleandonceMisery d128604743 fix(connection): 修复数据库连接超时后无法可靠恢复的问题
* feat(core): implement PIP-0001 database connection timeout recovery

- Add DbOperationBudget struct for unified execution budget model
- Add deadpool create/recycle timeout for PostgreSQL pools
- Add checkout_postgres_client helper replacing 14 bare pool.get() calls
  with timeout + cancel token support
- Fix PostgreSQL TLS cancel: rebuild TLS connector from stored context,
  fallback to NoTls on failure
- Add timeout to MySQL kill_query and kill_query_with_opts (5s)
- Extend is_connection_error to match deadpool pool timeout messages
- Unify keepalive default to 30s (was 60s Rust / 0s frontend mismatch)
- Inject PostgreSQL TCP keepalive params (idle=30s, interval=10s, retries=3)
- Inject MySQL tcp_keepalive=30s in OptsBuilder
- Make MySQL inactive_connection_ttl configurable from idle_timeout_secs
- Add stage-based structured logging for pool.checkout/health.check/cancel
- Store PostgresCancelContext in AppState for TLS cancel reconstruction
- Clean up cancel contexts on pool removal/drain
- Add unit tests for DbOperationBudget and pool timeout error detection

* fix(core): align timeout recovery with PIP-0001

* fix(core): handle timeout recovery review issues

* fix(core): complete connection timeout recovery

* fix(core): fall back postgres cancel connector build

* refactor: revert comment translations to English in connection.rs and query.rs

- Revert DbOperationBudget doc comments to English (query.rs)
- Revert PostgresCancelContext and TLS cancel comments to English (connection.rs)
- Keep Chinese error-matching strings in is_connection_error unchanged

---------

Co-authored-by: onceMisery <onceMisery@users.noreply.github.com>
2026-06-26 21:41:56 +08:00
ptma fdd7d2095b feat(influxdb): support influxdb epoch parameter (#1946) 2026-06-26 17:33:58 +08:00
LRcodingandzero f963a6e793 fix(app): decode imported connection link names (#1930)
Co-authored-by: zero <zero@zeroMacmini.local>
2026-06-26 16:09:17 +08:00
dalew d815a16b86 feat(redis): move scan page size to connections 2026-06-26 11:13:34 +08:00
t8y2 dff94d60f5 fix(oceanbase): show oracle mode schemas in sidebar 2026-06-26 02:03:00 +08:00
t8y2 6646b432d3 fix(oceanbase): preserve oracle mode when editing connection 2026-06-26 01:46:42 +08:00
lexmin0412 c2376494d3 feat(vector): add ChromaDB support 2026-06-26 01:41:36 +08:00
t8y2 c3386a0dcd fix(nacos): guard stale connection test timeout 2026-06-26 01:22:11 +08:00
二丫讲梵 a149d9baa4 fix(nacos): route admin API through SSH/proxy transport 2026-06-26 01:01:08 +08:00
t8y2 b2edf7cad6 fix(oracle): apply visible schema filter 2026-06-25 15:19:20 +08:00
大峰 40c93b9dad feat(connection): add visible schema filtering 2026-06-25 01:36:06 +08:00
miracle 0effda91b3 feat(zookeeper): add agent client browsing and node management 2026-06-25 00:40:48 +08:00
t8y2 bf9ef4365b feat(vector): add weaviate support 2026-06-25 00:31:27 +08:00
jischeng 849caf4b39 feat(ssh): probe none authentication before credentials
Some SSH proxies and jump-hosts authenticate with the "none" method,
requiring no password or key. dbx only tried publickey/password/agent,
so connecting through such a host failed with "SSH public key
authentication failed" — and the frontend forced users to enter a
credential just to pass validation.

- Backend: probe authenticate_none first in connect_and_authenticate;
  on rejection fall back to the configured credential method, matching
  standard openssh behavior.
- Frontend: drop the "password/key/agent required" check in
  validateTransportLayers so passwordless hops can be saved and tested.

Refs #1628
2026-06-24 21:05:57 +08:00
二丫讲梵 3ebfae05a2 feat(nacos): add Nacos management console (#1456) 2026-06-24 01:19:18 +08:00
t8y2 49705a1a8f feat(sqlite): support custom database file suffixes 2026-06-23 20:15:06 +08:00
t8y2 489da1b7db fix(mongodb): support legacy indexes and driver mode 2026-06-23 19:47:10 +08:00
t8y2 2594dbaa30 fix(prestosql): apply builtin driver on selection 2026-06-23 01:31:02 +08:00
t8y2 e9dafbf38d fix(prestosql): select builtin JDBC driver 2026-06-23 01:28:03 +08:00