yavon007
13424588b9
Support DBX connection deep links ( #359 )
...
* fix(mysql): avoid metadata collation conflicts
Split MySQL column and primary key metadata lookups so MariaDB and OceanBase do not join information_schema tables with incompatible collations.
* feat(grid): add invert column visibility action
* feat(grid): improve cell detail editing
* feat(grid): add keyboard cell navigation
* feat(grid): add column name copy in header tooltip
* feat(grid): improve transpose navigation
* feat(connection): support dbx connection deep links
* docs: document connection deep links
* fix(connection): harden deep link boolean handling
2026-05-20 16:10:14 +08:00
t8y2
bd727c32d0
fix(sqlserver): use BEGIN TRANSACTION instead of BEGIN for explicit transactions
...
SQL Server interprets bare "BEGIN" as a BEGIN...END block, not a
transaction start, causing syntax error when editing table data.
2026-05-20 11:08:44 +08:00
t8y2
abafa49acc
fix(agent): bound read_agent_line to prevent OOM abort on large responses
...
Add a 512MB maximum response size limit to read_agent_line to prevent
unbounded memory allocation that could cause the process to SIGABRT
when the agent returns an unexpectedly large response.
Ref: #345
2026-05-20 10:49:11 +08:00
t8y2
077aaa5c06
refactor(agent): wrap remaining protocol calls
2026-05-19 15:54:57 +08:00
t8y2
6896b2f879
refactor(agent): wrap schema and query calls
2026-05-19 15:44:23 +08:00
t8y2
db5da1e519
fix(duckdb): normalize temporal display
2026-05-19 14:12:14 +08:00
t8y2
261d43c1b7
fix(grid): respect page size row limits
2026-05-19 11:31:38 +08:00
t8y2
008656806e
feat(oracle): support service name and SID connections
2026-05-18 21:04:37 +08:00
t8y2
e1930550e2
feat(grid): support DuckDB database files
2026-05-18 13:18:02 +08:00
t8y2
f4566221b1
feat(query): add paged result fetching
2026-05-17 00:10:18 +08:00
t8y2
3be6f4486a
fix(jdbc): apply query execution context
2026-05-16 10:49:54 +08:00
t8y2
7ce2cf2163
feat: add 12 new agent-driven databases, migrate GaussDB to agent
...
Add H2, Snowflake, Trino, Hive, DB2, Informix, Neo4j, Cassandra,
BigQuery, Apache Kylin, SunDB as new agent-driven database types.
Migrate GaussDB from native rust-gaussdb to JDBC agent.
Remove rust-gaussdb dependency. Total agent-driven databases: 17.
2026-05-13 09:47:22 +08:00
t8y2
c50323cd6c
feat(agent): migrate Oracle to JDBC agent, add install progress bar and toast
...
- Migrate Oracle from rust-oracle to JDBC agent (ojdbc11)
- Delete oracle_driver.rs (567 lines) and rust-oracle dependency
- Add streaming download progress bar for driver/JRE installation
- Add toast notifications for install/uninstall success/failure
- Add "update available" badge in driver manager
2026-05-13 09:20:06 +08:00
t8y2
831883f156
perf(agent): use single execute_transaction RPC for batch commits
2026-05-13 05:34:01 +08:00
t8y2
e85f9df1fe
feat(agent): pluggable database drivers via JDBC agent subprocess
...
Migrate domestic database support (DaMeng, KingBase, Vastbase, GoldenDB) from
built-in ODBC/protocol drivers to standalone Java agent processes communicating
via stdin/stdout JSON-RPC 2.0. Agents are distributed as fat JARs with embedded
JDBC drivers, downloaded on-demand from GitHub Releases with proxy fallback.
- Add AgentDriverClient for subprocess lifecycle + JSON-RPC communication
- Add AgentManager for JRE/JAR install state management
- Add Tauri commands for driver install/uninstall/list
- Add DriverManager UI panel in settings dialog
- Extend DatabaseType with Kingbase, Vastbase, Goldendb variants
- Migrate Dameng from ODBC (dm_driver.rs) to JDBC agent
- Delete dm_driver.rs (343 lines)
- Add GitHub proxy fallback for downloads (update.hwdns.net, gh-proxy.org)
Agent code lives at https://github.com/t8y2/dbx-agents
2026-05-13 04:44:52 +08:00
t8y2
bf58045a28
Revert "feat(cli): add dbx-cli runtime and agent integration ( #229 )"
...
This reverts commit 58c47adef5 , reversing
changes made to 3bcec8ef7f .
2026-05-12 17:31:54 +08:00
Illuminated2020
8a81bdfdd5
feat(core): 支持 MySQL 和 Postgres 查询行数限制
...
- 新增 MySQL/Postgres limit-aware 查询执行函数
- 保持旧执行 API 默认转调 MAX_ROWS
- 让 query.rs 对 MySQL/Postgres 传递 row_limit
- 补充 limit-aware 驱动调用回归测试
2026-05-12 16:49:29 +08:00
Illuminated2020
2c3704a365
fix(query): 统一执行入口结果行数截断
...
- 在 execute_sql_statement_with_row_limit 成功返回前统一应用 row_limit
- 补充 truncate_result_with_row_limit 的截断、保留和零值限制单测
2026-05-12 16:49:29 +08:00
Illuminated2020
2f23df9675
fix(cli): 修复 headless 查询安全与 limit 下推
...
- 对 schema snapshot 和 safe-query 的内部失败使用安全错误映射
- 为 SQLite/DuckDB 嵌入式连接展开 tilde 路径
- 新增 limit-aware 查询执行接口并让 safe-query 传入读取上限
- 补充 SQLite 大结果集、错误清洗和 tilde 路径回归测试
2026-05-12 16:49:28 +08:00
t8y2
24ab55ed17
fix(sqlserver): preserve batch semantics for CTE and DECLARE statements
...
SQL Server treats `;` as a statement terminator, not a batch separator.
The previous logic split multi-statement SQL by `;` and executed each
independently, breaking variable/CTE scope across statements.
Send the entire SQL as a single batch via `simple_query` so DECLARE,
SET, and CTE definitions remain visible to subsequent statements.
Split only on the `GO` client directive when present.
2026-05-12 16:22:22 +08:00
t8y2
cab0e79dad
fix(oracle): 修复表数据加载与编辑
2026-05-11 16:35:59 +08:00
t8y2
7790b6fa04
fix(oracle): detect connection errors on non-English Windows ( closes #208 )
...
is_connection_error() only matched English keywords like "connection"
and "closed", missing localized OS messages on Chinese Windows such as
"I/O error: 远程主机强迫关闭了一个现有的连接。 (os error 10054)".
This prevented automatic reconnection, causing all subsequent queries
in database search to fail after a connection reset.
Add "i/o error" detection and Windows socket error code parsing
(10053/10054/10057/10058/10060/10061) so reconnect logic triggers
regardless of OS locale.
2026-05-11 12:01:40 +08:00
t8y2
9413df686e
fix(grid): Enter 键优先选中自动补全建议项 ( closes #202 )
...
WHERE 和 ORDER BY 输入框中,有自动补全建议显示时按 Enter 键
现在会选中当前高亮的建议项,而不是直接执行查询。
2026-05-11 11:00:02 +08:00
t8y2
bafb424b23
perf: full-stack performance optimization
...
Frontend:
- Debounce queryStore tab persistence (remove flush:sync deep watcher)
- Eliminate unnecessary object spreading in connectionStore error handling
- Use in-place delete for completion cache invalidation
- Deduplicate schema cache prefix API calls
- Split echarts, reka-ui, marked, @codemirror/commands into separate chunks
- Lazy-load xlsxExport and markdownTable in DataGrid
- Lazy-load marked parser in UpdateDialog
Backend:
- Replace tokio::sync::Mutex with RwLock for AppState connections/configs
(60+ concurrent reads no longer block each other)
- Parallelize PostgreSQL DDL metadata queries with tokio::try_join!
2026-05-10 23:23:22 +08:00
t8y2
d4afbc7b58
feat(external): add tabular source foundation
2026-05-10 20:52:03 +08:00
t8y2
d917842fca
perf(oracle): speed up initial table loading
2026-05-10 20:47:54 +08:00
BlueSkyXN
5975a0b0b7
feat(external): add tabular source foundation
2026-05-10 19:50:34 +08:00
t8y2
10bfede1c7
feat(jdbc): add optional JDBC plugin support
2026-05-10 12:57:38 +08:00
t8y2
f4f3193994
fix(sql): detect result queries after comments
2026-05-10 00:48:24 +08:00
t8y2
de6fecb18b
fix: restore workspace build and refine grid menu
2026-05-09 17:07:52 +08:00
t8y2
fc460a3f78
fix(mysql): run transaction edits with raw SQL
2026-05-09 16:30:46 +08:00
t8y2
f9993dd3f8
perf(query): stream rows with result limit
2026-05-09 15:57:55 +08:00
t8y2
dfd4d2d99d
feat: auto-detect OceanBase Oracle mode and use Oracle-style schema queries ( #155 )
...
Introduce MysqlMode enum to distinguish Normal/Bare/OceanBaseOracle MySQL
connections. On connect, if driver_profile contains "oceanbase", detect
tenant mode via SHOW VARIABLES LIKE 'ob_compatibility_mode'. When Oracle
mode is detected, schema queries use ALL_TABLES/ALL_TAB_COLUMNS/etc.
2026-05-08 22:57:48 +08:00
skyler
cf25b7d6d4
Merge pull request #139 from rarnu/feat/edit-on-resultset
...
add: 增加对于查询得到的结果集直接进行数据编辑的功能
2026-05-07 17:44:48 +08:00
rarnu
cacaf4d7a2
1. Rust 事务连接池问题 - 用 pool.acquire() 获取专用连接,所有语句在同一物理连接上执行
...
2. BEGIN 失败静默回退 - 直接返回错误,不再静默降级
3. queryStore.ts - 清除了 25+ 条 console.log,合并了两个分支的重复逻辑
4. DataGrid.vue - shouldUseTransaction() 改为 computed 属性 useTransaction
2026-05-07 16:55:32 +08:00
rarnu
814fda7433
add: 增加对于查询得到的结果集直接进行数据编辑的功能。当查询是单表且包含主键(有联合主键时包含全部主键)时,可以在结果集内双击单元格修改数据,修改结果以事务形式提交或回滚。
2026-05-07 15:09:59 +08:00
t8y2
8bea7e40c3
feat(elasticsearch): support REST queries in SQL editor ( #132 )
...
Execute GET/POST/PUT/DELETE queries like Kibana Dev Tools.
Search results are displayed as table rows with _id + _source fields.
Also hide database selector for Elasticsearch connections.
2026-05-07 11:41:33 +08:00
t8y2
6801048b40
feat: replace GaussDB ODBC driver with native rust-gaussdb
...
Drop ODBC dependency for GaussDB, use rust-gaussdb for native
SHA256 SASL authentication over TCP. Zero extra setup for users.
2026-05-07 03:34:19 +08:00
t8y2
b79e5b53bc
feat: add GaussDB ODBC support and flatten connection list
...
- Add GaussDB/openGauss support via ODBC (resolves #106 )
- Use pg_catalog queries instead of information_schema for compatibility
- Share ODBC environment across drivers with auto ODBCSYSINI detection
- Fix ODBC error message false positive on "Driver" keyword match
- Merge connection dialog categories into a single flat list
- Remove duplicate DDL button from data grid footer
2026-05-07 02:18:20 +08:00
t8y2
4bf4f3b77f
feat: add DM (Dameng) database support via ODBC
...
Connect to DM8 databases using the odbc-api crate with unixODBC.
Includes schema browsing, query execution, DDL generation,
and full frontend integration with download link to DM ODBC driver.
2026-05-07 01:02:56 +08:00
t8y2
b6a39c1fa0
feat(query): set schema context (search_path) before query execution ( #113 )
...
Add schema selector to the editor toolbar for schema-aware databases
(PostgreSQL, SQL Server, Oracle). When a schema is selected, the backend
sets the appropriate search_path before executing queries so users no
longer need to write schema-qualified table names.
2026-05-06 18:22:41 +08:00
t8y2
41445ff474
chore: add rustfmt.toml and apply unified code formatting
2026-05-05 14:16:18 +08:00
t8y2
cf4f25fd52
feat: extract dbx-core crate for web deployment support
...
Refactor all database drivers, query execution, schema operations, and
business logic into a shared `dbx-core` crate. The Tauri desktop app
becomes a thin shell delegating to dbx-core, enabling future web and
CLI frontends to reuse the same core.
2026-05-05 03:16:24 +08:00