Commit Graph

425 Commits

Author SHA1 Message Date
t8y2 ac7a5b7576 feat(desktop): drop tree schema objects 2026-06-02 00:33:58 +08:00
t8y2 130a33808e feat(desktop): improve table structure editor 2026-06-01 23:52:53 +08:00
t8y2 2f1a6875b7 feat(sqlite): support loading extension libraries 2026-06-01 22:40:29 +08:00
t8y2 7eca75b325 feat: support Oracle package sources 2026-06-01 18:43:20 +08:00
SKZ 76378f3a65
fix(mongo): support string document ids in update/delete
Support MongoDB documents whose _id is stored as a string, including 24-character hex strings that look like ObjectIds. Adds tests for the id filter fallback behavior.
2026-06-01 18:12:20 +08:00
t8y2 6da367a47b fix(jdbc): support encrypted sqlite with managed runtime 2026-06-01 17:52:11 +08:00
t8y2 46c05b811f feat(connection): support multi-hop ssh tunnels 2026-06-01 14:48:33 +08:00
t8y2 f8501bcaf1 fix(driver-store): show IRIS agent driver 2026-06-01 12:16:41 +08:00
t8y2 738696f38e chore(release): v0.5.26 2026-06-01 00:50:24 +08:00
t8y2 c67706db51 fix(desktop): store portable agent runtime in data dir 2026-06-01 00:45:21 +08:00
t8y2 e28495f3c1 perf: optimize table data loading 2026-05-31 22:10:02 +08:00
t8y2 da6074caaa refactor(sql-file): share import executor 2026-05-31 11:58:15 +08:00
t8y2 f5cc81f761 perf(sql-file): optimize import batching 2026-05-31 11:14:14 +08:00
vrustx bc4e912504
Add configurable black app icons and logo (#564) 2026-05-31 10:15:59 +08:00
t8y2 ff26e90177 fix(duckdb): reuse connection for query sessions 2026-05-31 00:51:22 +08:00
vrustx 7c0ed986c1
fix: enable SQLite math functions (#553) 2026-05-30 23:22:44 +08:00
t8y2 c334550252 feat: add tiered Oracle agent profiles 2026-05-30 22:43:02 +08:00
vrustx fa08ed56a0
fix: display partition tables hierarchically 2026-05-30 21:51:21 +08:00
skyler 528b51fb8d
fix(updates): guard portable builds from installer updates (#550) 2026-05-30 19:15:37 +08:00
t8y2 0eacda465e fix(mysql): preserve session state for multi-statement queries 2026-05-30 17:57:28 +08:00
t8y2 a9e7f3946d fix(redis): support insecure tls connections 2026-05-30 16:00:13 +08:00
t8y2 74b4acba19 chore(release): bump version to 0.5.25 2026-05-30 13:23:42 +08:00
t8y2 dcc3e723a7 fix(mysql): retry unsupported prepared statements 2026-05-30 13:10:43 +08:00
t8y2 6481af3ed8 fix(oracle): preserve jdbc descriptors 2026-05-30 13:06:52 +08:00
t8y2 4f3a72aa1b style(core): format connection pool cleanup 2026-05-30 12:46:39 +08:00
t8y2 13d52514d9 feat(connection): close database scoped pools 2026-05-30 12:34:14 +08:00
t8y2 41e23cccc3 feat(desktop): improve sql file preview 2026-05-30 11:22:17 +08:00
t8y2 81e50cadb5 feat: add XuguDB agent support 2026-05-30 09:12:34 +08:00
t8y2 f88367a872 feat: add OpenGauss support and enhance MySQL URL parameter handling 2026-05-30 00:31:29 +08:00
t8y2 b6ac1f177b refactor(agent): consolidate driver architecture 2026-05-29 23:29:27 +08:00
t8y2 cd87d2a4e4 fix: normalize MySQL SSL mode URL params 2026-05-29 20:22:31 +08:00
t8y2 c71804d144 feat: add InterSystems IRIS database support
Add IRIS as a new agent-driven database type with:
- iris:// connection URL scheme (default port 1972, user _SYSTEM)
- JDBC driver via agent (com.intersystems.jdbc.IRISDriver)
- Oracle-compatible DDL dialect and schema-aware SQL dialect
- Capability sets: schema-aware, tree schema, diagram, search, table structure

Closes #368
2026-05-29 19:15:11 +08:00
t8y2 b07273249b chore: cargo fmt with rustc 1.96 to fix CI format check 2026-05-29 18:15:15 +08:00
t8y2 58f2942520 feat: generalize URL params field to all database types and support oceanbase-oracle URL params
Remove the hardcoded 12-type whitelist for the URL params form field so all
database types (including agent-driven ones like oceanbase-oracle) can set
custom URL parameters. Also append url_params to oceanbase-oracle connection
URLs in the Rust backend (matching the existing Postgres/Redshift pattern).
2026-05-29 17:56:03 +08:00
t8y2 ef4baba57a feat: support double-clicking .db/.sqlite/.duckdb files to open in IDE
Add OS file association for database files (.db, .sqlite, .sqlite3, .duckdb)
so double-clicking them in Finder/Explorer automatically creates a connection.
If the same file path is already connected, prompts the user to switch instead.

Also fix 42 pre-existing clippy warnings in dbx-core (needless_borrow,
too_many_arguments, derivable_impls, manual_div_ceil, type_complexity, etc.).

Closes #527
2026-05-29 17:25:52 +08:00
t8y2 bbdb21c1e6 fix: strip JDBC-only MySQL URL parameters before driver parsing
JDBC connection URLs contain MySQL Connector/J-specific parameters
(useUnicode, characterEncoding, zeroDateTimeBehavior, useSSL,
serverTimezone, etc.) that mysql_async::Opts::from_url() does not
recognize, causing "Invalid MySQL URL: Unknown connection URL
parameter" errors. Filter these parameters out in mysql_async_url()
before passing the URL to the driver.

Fixes #524
2026-05-29 16:48:54 +08:00
t8y2 027c39a610 perf: optimize database connection pooling and query execution
- Increase MySQL pool max from 1 to 3 to avoid contention across tabs
- Merge get_columns serial queries into a single LEFT JOIN
- Clone pool handles before health checks in refresh_connections to reduce lock contention
- Skip COUNT(*) when result rows are fewer than the page size
2026-05-29 16:26:19 +08:00
t8y2 4fd8d895f4 fix: cargo fmt formatting in dbx-web main.rs 2026-05-29 15:46:32 +08:00
t8y2 4cf179f0c0 style: cargo fmt 格式化修复 2026-05-29 15:13:07 +08:00
t8y2 b54eda1889 fix: 修复应用长时间挂后台后恢复时表格数据永久加载的问题
三层防护:
- MySQL 连接获取时执行 ping 健康检查,死连接自动重连
- macOS Reopen 事件 + 前端 visibilitychange 触发连接刷新
- 前端 Promise.race 超时保护,确保 loading 状态不会超过 60s
2026-05-29 15:12:14 +08:00
t8y2 6c0db6f517 feat: add "Copy as SQL ALTER" to DataGrid column header context menu
Right-click a column header in the data grid to copy the ALTER TABLE
statement for that column, making it easy to replicate column definitions
across databases. Supports all major dialects (MySQL, Postgres, SQL Server,
Oracle, ClickHouse, SQLite, DuckDB, H2).

Closes #516
2026-05-29 15:09:10 +08:00
rarnu 51e62d4c60
SSH 隧道连接优化 (#517)
* 1. 增加 SSH 隧道保活
每 30 秒发一次 keepalive 包,防止 NAT/防火墙丢弃空闲连接。

2. SSH 隧道自动重连
整体逻辑为:
  └─ 初始连接(失败则立即报错,防止 credential 错误时无限重试)
  └─ 绑定 TcpListener(端口不变)
  └─ 启动 tunnel_reconnect_loop
      ├─ forward_loop()  ← 转发数据,检测到 session 断开后退出
      ├─ 睡眠 5 秒
      ├─ connect_and_authenticate() 重连
      ├─ 重连失败?→ 继续等 5 秒 → 重试
      └─ 重连成功 → 回到 forward_loop()

* 修复rust代码风格

* 1:指数退避
延迟序列: 5s → 10s → 20s → 40s → 60s → 60s → ...(封顶 60s)
不再是固定 5 秒重试,避免临时故障时刷屏。

2:最大重试次数
连续失败 10 次后放弃,打一条 fatal 日志 max reconnect attempts exhausted, giving up,然后隧道任务退出。不再无限循环。

3:日志改进
失败日志现在带进度:SSH reconnect failed (host:port, attempt 3/10): error
成功重连日志也带 (attempt N) 方便排查。
2026-05-29 13:31:31 +08:00
t8y2 521195c801 chore(release): v0.5.24 2026-05-29 02:03:18 +08:00
t8y2 eaff976de7 fix(connection): retry metadata loads after idle disconnect 2026-05-29 01:22:08 +08:00
t8y2 2e431d6e33 feat(transfer): improve postgres cross-version migration 2026-05-29 00:49:29 +08:00
t8y2 c7b7bed140 feat(editor): add extended column properties support for MySQL, PostgreSQL, and SQL Server
MySQL: AUTO_INCREMENT, ON UPDATE CURRENT_TIMESTAMP
PostgreSQL: GENERATED AS IDENTITY (BY DEFAULT / ALWAYS)
SQL Server: IDENTITY(seed, increment)
2026-05-29 00:41:51 +08:00
t8y2 a1e00fcf1a fix: release duckdb session locks on pool close 2026-05-29 00:16:37 +08:00
t8y2 39b960c46c fix(mysql): select database during URL connection setup 2026-05-28 23:02:44 +08:00
t8y2 539faef23d feat(query): display total row count in result status bar
Execute COUNT query asynchronously after main query to show total
matching rows. Strip user-supplied LIMIT/OFFSET from count SQL so
the total reflects all rows, not just the limited page.
2026-05-28 22:44:13 +08:00
徐文彬 5ea146e08e fix(mongodb): guard aggregate execution paths 2026-05-28 21:29:08 +08:00