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
徐文彬
c56bcb8e2d
feat(mongodb): 支持聚合查询、批量写入和 MCP 集成
...
- 桌面端:解析 db.<集合>.aggregate([...]) shell 语法,新增 mongoAggregateDocuments
接口(Tauri + HTTP);mongo 入口统一补 ensureConnected;ObjectId(...) 自动
转换为 {"\$oid":"..."} 扩展 JSON 表示。
- dbx-core:新增 aggregate_documents、insert/update/delete_documents bulk
操作;扩展 JSON 解析识别 \$oid;schema list_tables_core 补 MongoDB/Elasticsearch
分支返回 COLLECTION/INDEX。
- dbx-web / Tauri 命令 / MCP bridge:注册 4 个新 mongo 路由
(aggregate/insert/update/delete documents);MCP bridge 新增 mongo HTTP 入口
和 lazy 连接复用。
- node-core (MCP 后端):mongodb 走专属 executeQuery / listTables /
describeTable;read-only 默认 + DBX_MCP_ALLOW_WRITES /
DBX_MCP_ALLOW_DANGEROUS_SQL 两级开关;aggregate 含 \$out/\$merge 走同样开关;
describeTable 抽样 20 条文档推断字段类型,_id 自动标记主键。
- mcp-server:mongodb 跳过 SQL safety evaluator(mongo shell 与 SQL 语法
不兼容),改由 backend 做命令级 gating;附注释。
- AiAssistant 同时 emit replaceSql + executeSql 让编辑器和结果保持一致;
App.vue ensureQueryTab 在无上下文时回退到连接默认库;aiMessageRender
识别 mongodb / mongo 代码块。
- Review 修复:合并两份重复的 evaluateMongo*Safety 实现(同时修复 web-backend
用字符串比较导致空 filter 检查可被空格绕过的 bug);ObjectId 正则兼容
单/双引号;mongo_ops 错误文案 "MCP" 改为 "bulk";补 aggregate 解析测试用例。
测试:pnpm test 911 通过;vue-tsc 通过;cargo check -p dbx-core 通过。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 21:25:43 +08:00
t8y2
fcdc7cfc07
fix(rust): update mtls tests for timeout params
2026-05-28 20:35:15 +08:00
t8y2
fa39fb9f92
fix(rust): update tests for connection timeout changes
2026-05-28 20:25:09 +08:00
t8y2
2fbdffebf5
style(rust): format core modules
2026-05-28 19:23:49 +08:00
t8y2
c124ce3b69
fix(desktop): persist tray icon preference
2026-05-28 19:21:43 +08:00
t8y2
e725dd0379
fix(connection): keep config after disconnect
2026-05-28 18:48:53 +08:00
t8y2
832d8276a0
fix(mysql): treat desc as result-set query
2026-05-28 18:36:13 +08:00
t8y2
4a93abd1b9
fix(postgres): use single-name search_path
2026-05-28 18:26:28 +08:00
t8y2
486d9bb3a6
fix(connection): move query timeout into per-connection settings
2026-05-28 18:18:45 +08:00
skyler
9f72c38253
Merge pull request #502 from adntian/feat/connect-timeout
...
feat: add per-connection configurable connect timeout
2026-05-28 17:59:00 +08:00
t8y2
d35aeaa08c
fix: continue transfer after table failure
2026-05-28 16:11:29 +08:00