Commit Graph
417 Commits
Author SHA1 Message Date
t8y2 26245514bb refactor: remove ODBC dependency entirely
DaMeng now uses JDBC agent instead of ODBC. Remove odbc-api crate,
ODBC_ENV static, unixodbc system dependency from CI, and ODBC library
bundling from macOS release builds. macOS no longer needs any brew
dependencies for development.
2026-05-13 05:27:56 +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 780311a542 feat(agent-runtime): 接入 handoff 审阅状态
- 支持 handoff queued/shown 状态加载、mark shown 和 reject 持久化

- 为 Tauri/API/Pinia store 接入 handoff 审阅状态流转

- 新增 AgentHandoffDialog 审阅 UI,拒绝操作不执行 SQL
2026-05-12 16:52:34 +08:00
Illuminated2020 feff43c459 style: 恢复 hook 后 Rust 格式化 2026-05-12 16:49:29 +08:00
Illuminated2020 5b62f936d1 style: 应用 Rust 格式化 2026-05-12 16:49:29 +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 4267c6f1e0 style: 应用 CLI 相关 Rust 格式化 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 368fa5a102 feat(redis): add bulk operations and command runner 2026-05-12 13:38:43 +08:00
Alexandr ad5e6fcce4 Merge branch 't8y2:main' into main 2026-05-11 17:11:12 +04:00
KraH 23bbfcb157 Added support for integer arrays
Added support for float4
2026-05-11 17:06:43 +04:00
t8y2 cab0e79dad fix(oracle): 修复表数据加载与编辑 2026-05-11 16:35:59 +08:00
t8y2 79277c660f feat(proxy): 增加数据库和 AI 代理支持 2026-05-11 15:05:25 +08:00
t8y2 7c38af6cbb fix(oracle): speed up schema diff and add comment sync (closes #198)
- Replace ALL_OBJECTS with ALL_TABLES UNION ALL_VIEWS in list_databases
  query to avoid slow full scan on large Oracle instances
- Add loading indicator in SchemaDiffDialog during database/schema loading
- Generate COMMENT ON TABLE/COLUMN statements in schema diff sync SQL
- Compare column and table comments in diff detection
2026-05-11 12:59:07 +08:00
t8y2 cb70625bd8 fix(objects): save SQL Server object source definitions 2026-05-11 12:17:18 +08:00
t8y2 9413df686e fix(grid): Enter 键优先选中自动补全建议项 (closes #202)
WHERE 和 ORDER BY 输入框中,有自动补全建议显示时按 Enter 键
现在会选中当前高亮的建议项,而不是直接执行查询。
2026-05-11 11:00:02 +08:00
t8y2 6d513afc16 feat(objects): show routines in object browser 2026-05-10 21:14:16 +08:00
t8y2 d917842fca perf(oracle): speed up initial table loading 2026-05-10 20:47:54 +08:00
t8y2 61bd7480f4 fix(oracle): refresh schema cache and complete table lists 2026-05-10 20:05:11 +08:00
t8y2 3e321d869c fix(oracle): decode NCHAR values correctly 2026-05-10 19:09:06 +08:00
t8y2 f4f3193994 fix(sql): detect result queries after comments 2026-05-10 00:48:24 +08:00
t8y2 afb177db85 fix(connection): hide system database objects 2026-05-09 19:50:28 +08:00
t8y2 9c71442f43 feat(connection): add configurable SSH timeout 2026-05-09 19:34:30 +08:00
t8y2 f9993dd3f8 perf(query): stream rows with result limit 2026-05-09 15:57:55 +08:00
t8y2 af029daf57 fix(db): normalize default database handling 2026-05-09 15:53:06 +08:00
t8y2 1a1f128f2b feat: Redis browser overhaul — Navicat-style table, editing, and pagination
- Unified key table with columns: key, type, value preview, size, TTL
- Top-bottom split layout: key table above, value detail below
- Virtual scrolling via RecycleScroller for large key sets
- ZSet editing: add/remove members with scores
- TTL inline editing: click badge to modify expiration
- Batch key deletion with checkbox selection
- Paginated loading for Hash/Set/ZSet/List values (HSCAN/SSCAN/ZSCAN)
- Debounced auto-search (400ms) for key filtering
- Value previews fetched during key scan for instant display
2026-05-09 11:45:50 +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
t8y2 000e16e633 fix: remove EXISTS filter from GaussDB list_schemas for consistency (#154)
The EXISTS check only showed schemas containing tables, hiding empty
schemas that PostgreSQL driver would display. This caused a regression
for openGauss users after switching to the native GaussDB driver.
2026-05-08 20:20:52 +08:00
t8y2 85be58822e fix(oracle): Oracle 11g compatibility and sidebar improvements
- Rewrite FETCH FIRST to ROWNUM for Oracle 11g (no 12c+ syntax)
- Filter APEX_*, FLOWS_*, $-prefixed system schemas from sidebar
- Set schema prefix on table nodes for schema-aware databases
- Use all_objects instead of all_tables+all_views (4x faster)
- Disable statement cache to avoid stale cursor issues
- Update rust-oracle with streaming TTC, drain fixes
2026-05-08 18:54:24 +08:00
t8y2 c036dd19e4 feat: support middle-click to close tabs (#162) 2026-05-08 17:19:31 +08:00
t8y2 edda036f3c fix: add type fallback for MySQL to prevent all-NULL display (#40)
Add i32/i16 type decoding and try_get_unchecked fallback to
mysql_value_to_json(), fixing all columns showing NULL on older
MySQL versions (e.g. 5.6) where sqlx type-checked decoding fails.
2026-05-08 17:01:32 +08:00
t8y2 92fe47b913 fix: pass SQL directly in AI execute to avoid stale state (#153)
When executing SQL from the AI panel, pass the SQL string directly to
tryExecute() instead of relying on the executableSql computed property,
which could use stale selectedSql or cursorPos values.
2026-05-08 16:45:01 +08:00
t8y2 ae890092dd fix(ci): use pull_request_target for fork PR secret access 2026-05-08 16:07:48 +08:00
t8y2 6dc6e15ff3 ci: add auto PR review with DeepSeek 2026-05-08 15:40:49 +08:00
skyler de244a0b12 Merge pull request #149 from Bacon2994/codex/redis-rdm-consistency
feat(redis): 修复全库键浏览与二进制展示
2026-05-08 11:34:20 +08:00
t8y2 9fd16e3c1f perf(grid): pre-stringify JSON/JSONB values and truncate cell display
Serialize JSON/JSONB as strings in Postgres and MySQL drivers to avoid
repeated JSON.stringify in the render loop. Truncate cell display to
256 chars so the browser doesn't lay out huge text nodes on scroll.
2026-05-08 11:23:31 +08:00
Bacon2994 3106dfce6f fix(redis): 避免反斜杠字符串误判为二进制 2026-05-08 11:09:25 +08:00
Bacon2994 d6f5c25c17 fix(redis): 优化 UTF-8 展示与提示文案 2026-05-08 10:31:51 +08:00
Bacon2994 b669efb5ff style(redis): 修正 Rust 格式检查 2026-05-08 10:11:44 +08:00
Bacon2994 0fb6aebd59 feat(redis): 修复全库键浏览与二进制展示 2026-05-08 10:06:16 +08:00
t8y2 2083f48add fix: preserve bigint precision for values exceeding JS safe integer range
Closes #137
2026-05-07 18:12:23 +08:00
t8y2 0f904fc2a8 refactor: rename oracle-rs to rust-oracle and unify to git source 2026-05-07 15:41:39 +08:00
t8y2 75d7edda27 fix: add missing comment field to TableInfo initializers
The comment field was added to TableInfo but not updated in
clickhouse, gaussdb, oracle, sqlite, sqlserver, dm, and schema drivers.
2026-05-07 14:35:09 +08:00
t8y2 63b7458347 ci: install x86_64 unixodbc for cross-compilation on ARM macOS
The ARM runner's Homebrew installs arm64 libraries, which can't link
when cross-compiling for x86_64. Use arch -x86_64 to install the
Intel version of unixodbc and set LIBRARY_PATH accordingly.
2026-05-07 14:14:43 +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 edd1e58286 fix(sqlserver): handle i16 column metadata and add N'' prefix for Unicode
- Use try_get with i16 fallback to prevent panic on column metadata
- Add N'' prefix for string literals in SQL Server INSERT/UPDATE to fix Chinese character corruption
2026-05-07 11:12:27 +08:00
t8y2 0c430c9fb4 fix: filter system schemas for Oracle and DM (Dameng) 2026-05-07 04:10:30 +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