Commit Graph
386 Commits
Author SHA1 Message Date
zipg 2a2d46c48b Fix:同步 OceanBase 查询超时设置 (#2156) 2026-06-30 00:12:15 +08:00
zipg 7091615f8a fix: 修复 PostgreSQL 重载过程显示重复 2026-06-29 19:58:01 +08:00
lexmin0412 bc409cffc0 feat(ai): add vector DB assistant tools 2026-06-29 11:46:41 +08:00
zipg 3c7c1924ba Fix:修复 SQL Server datetime 查询和导出精度 2026-06-29 11:28:33 +08:00
Guoyu Su 7a5984a1fd fix(mongodb): support shell projection and db.version 2026-06-29 00:27:27 +08:00
Guoyu Su 7b32c71b1b fix(postgres): support pg10 routine metadata without prokind 2026-06-28 20:16:25 +08:00
zipg 56fb49058f fix(sidebar): preserve comment-matched tables during remote table list refresh 2026-06-28 18:52:40 +08:00
Guoyu Su 0fb39cb33f fix(mysql): use milliseconds for tcp keepalive 2026-06-28 16:34:09 +08:00
t8y2 6c232899b4 feat(agents): remove legacy Oracle Java agents 2026-06-28 16:11:22 +08:00
t8y2 7ce0addb61 fix(sqlite): add if and unistr compatibility functions 2026-06-28 12:16:07 +08:00
zipg be996a4352 fix(gbase8a): 优化 agent 启动错误提示 2026-06-28 10:31:59 +08:00
hb 388d59fb4a fix(redis): handle empty scan batches and exact key lookup fallback (#1992) 2026-06-27 15:09:46 +08:00
t8y2 9ae4d4b59e fix(duckdb): allow opening non-existent database files 2026-06-27 15:01:06 +08:00
t8y2 73120883b6 fix(dameng): separate materialized view metadata 2026-06-27 14:29:44 +08:00
hb 7b08307896 fix: prevent implicit database creation on connection for SQLite (#1986) 2026-06-27 12:31:02 +08:00
t8y2 c15fb85561 fix(doris): load indexes from table DDL 2026-06-27 11:06:49 +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
HaoNan Ye 11ed3a0d3b fix(postgres): include public schema in search_path for PostGIS functions (#1817) 2026-06-26 17:58:07 +08:00
ptma fdd7d2095b feat(influxdb): support influxdb epoch parameter (#1946) 2026-06-26 17:33:58 +08:00
t8y2 2f06ca5fe3 fix(data-compare): batch sync execution 2026-06-26 17:10:26 +08:00
t8y2 cdfe576024 fix(structure): load dynamic data type options 2026-06-26 15:22:33 +08:00
LRcoding eb664dba4c fix(core): support fuzzy table search 2026-06-26 13:15:01 +08:00
t8y2 c3d47ece2c fix(sqlserver): support 2008 query pagination 2026-06-26 12:03:25 +08:00
t8y2 2b6a8919d2 fix(sqlserver): display binary cells as hex 2026-06-26 11:44:32 +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
lexmin0412 c2376494d3 feat(vector): add ChromaDB support 2026-06-26 01:41:36 +08:00
t8y2 485188322b feat(clickhouse): show table size and comments 2026-06-26 01:37:13 +08:00
zipg 0f312084ff fix(sidebar): paginate table list by page size 2026-06-25 23:54:09 +08:00
t8y2 0cc0b84c95 fix(sqlserver): align schema tree and creation 2026-06-25 20:37:23 +08:00
t8y2 0c0e90ab1a feat(export): add table read cursor sessions 2026-06-25 18:37:04 +08:00
jischeng a595d4d4bd feat(mysql): support external catalogs (Paimon/Hive) via catalog= URL param
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.
2026-06-25 18:07:26 +08:00
t8y2 1098056152 fix(sqlserver): stream query result exports 2026-06-25 16:16:30 +08:00
t8y2 b2edf7cad6 fix(oracle): apply visible schema filter 2026-06-25 15:19:20 +08:00
t8y2 b367861fe1 fix(sqlserver): cast completion null placeholders 2026-06-25 12:35:08 +08:00
ptma 484d20922a fix(postgres): handle PostgreSQL views 2026-06-25 10:54:38 +08:00
大峰 40c93b9dad feat(connection): add visible schema filtering 2026-06-25 01:36:06 +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
t8y2 b356aa8df5 fix(connection): recover idle connection pools 2026-06-24 20:12:24 +08:00
zipgandstaff 902419a3b9 fix(postgres): compatibility with older PostgreSQL versions for table DDL
* Fix: 修复 PostgreSQL CTE DML 分页改写

* fix: 兼容 PostgreSQL 旧版本索引 DDL 查询

---------

Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-06-24 19:12:28 +08:00
t8y2 23edbe391f feat(postgres): support schema comments 2026-06-24 18:35:43 +08:00
t8y2 4558984016 fix(clickhouse): support data grid editing 2026-06-24 13:17:27 +08:00
t8y2 f51d622d3f fix(postgres): decode binary address types 2026-06-24 10:55:40 +08:00
t8y2 cebb39cb80 feat(completion): add scoped metadata assistant 2026-06-24 00:40:28 +08:00
hb 3f65297f25 fix(highgo): preserve nullable metadata for pg-compatible agents (#1585) 2026-06-24 00:35:47 +08:00
Guoyu Su 90fd77cb9e perf(redis): reduce large key search payload and render cost (#1672) 2026-06-23 22:57:03 +08:00
t8y2 49705a1a8f feat(sqlite): support custom database file suffixes 2026-06-23 20:15:06 +08:00
zipg 1c7ef0d235 feat(mysql): optimize table structure loading 2026-06-23 17:31:37 +08:00
t8y2 fc9f97b6b5 fix(redis): speed up large key scans 2026-06-23 15:14:24 +08:00