Commit Graph

377 Commits

Author SHA1 Message Date
t8y2 fc71be8f1a feat: remove deprecated connect function and streamline SQLite connection handling 2026-05-04 02:57:05 +08:00
t8y2 ae21053f69 feat: add execute_multi command and update query handling for multiple results 2026-05-04 02:55:19 +08:00
Agent-43 81bd188972 Fix SQLite UNC path connections 2026-05-03 23:28:45 +05:30
yavon007 8013a19e50 fix: separate key columns from included in PG index, add varbinary(max) for SQL Server
PostgreSQL list_indexes was returning all_cols (key + included) in IndexInfo.columns,
causing DDL and UI duplication. Now only key columns are returned in columns, with
included columns correctly split via indnkeyatts.

SQL Server varbinary now handles Some(-1) to display varbinary(max).
2026-05-03 21:03:49 +08:00
yavon007 8106b6370c Merge remote-tracking branch 'origin/main' 2026-05-03 20:34:19 +08:00
yavon007 a59494e4c4 fix: guard index column splits, restrict INCLUDE/WHERE by db, unify index type dropdowns
- Filter empty strings from STRING_AGG/LISTAGG splits in SQL Server, Oracle, MySQL
- Emit INCLUDE clause only for PostgreSQL and SQL Server (not MySQL/SQLite)
- Emit WHERE clause only for PostgreSQL, SQL Server, SQLite (not MySQL)
- Replace index type free-text input with dropdown for all 5 database types
- Fix hardcoded column count in resize handle (use indexColLabels.length - 1)
- Fix pg_get_indexdef type mismatch: cast k.n from bigint to integer
2026-05-03 20:33:09 +08:00
yavon007 25f2f46718 fix: correct PostgreSQL numeric_scale formula and add index SQL test coverage
The numeric_scale extraction used (& 2047) - 1024 which produces negative
values; fixed to & 65535. Added 12 tests for index SQL generation: INCLUDE,
USING, WHERE, COMMENT ON INDEX, type prefix, and combined scenarios.
2026-05-03 20:11:44 +08:00
yavon007 4e1b35186b feat: add index type, included columns, filter, and comment support
- Add filter, index_type, included_columns, and comment fields to IndexInfo
- PostgreSQL: query pg_am for index type, use indnkeyatts to split key/included columns, retrieve index comments via obj_description()
- SQL Server: add type_desc, filter_definition, included columns via is_included_column
- MySQL: add INDEX_TYPE from information_schema.STATISTICS
- Oracle: add INDEX_TYPE from ALL_INDEXES
- DDL generation: add USING (PostgreSQL), type prefix + INCLUDE + WHERE (SQL Server), COMMENT ON INDEX (PostgreSQL)
- Frontend: update types, state mapping, SQL generation, and i18n translations
2026-05-03 20:10:35 +08:00
yavon007 b88e1b8ccb fix: improve column type precision and SQL correctness across all databases
- PostgreSQL: rewrite column query from information_schema to pg_attribute for accurate type info via format_type(atttypid, atttypmod); extract character_maximum_length from atttypmod for varchar/bpchar; fix execute_query with persistent(false) and empty result fallback
- SQL Server: reconstruct column types with precision (varchar(max), decimal(p,s), datetime2(p)); stop dividing nvarchar/nchar CHARACTER_MAXIMUM_LENGTH by 2
- MySQL: use COLUMN_TYPE instead of DATA_TYPE for full type definitions; add CHARACTER_MAXIMUM_LENGTH; fix ONLY_FULL_GROUP_BY with MIN(NON_UNIQUE)
- Oracle: add CHAR_LENGTH/DATA_LENGTH for column type precision; fix INDEX_OWNER join to prevent cartesian product
- SQLite: fix PRAGMA injection via double-quote escaping; detect primary key indexes via origin column
2026-05-03 20:10:35 +08:00
t8y2 3cd328ece8 feat: enhance application run logic to handle macOS window reopening 2026-05-03 18:50:12 +08:00
t8y2 53df4e56cb feat: MCP bridge enhancements — window focus, execute-query, markdown output
- Auto-focus DBX window when MCP opens a table or executes a query
- Ensure connections are loaded before handling MCP events
- Add /execute-query bridge route and dbx_execute_and_show tool
- Format all tool responses as markdown tables (less tokens, more readable)
- Extract shared bridgeRequest helper to reduce duplication
2026-05-03 14:50:44 +08:00
t8y2 aa59c26fa2 feat: add MCP bridge for AI agent integration
Localhost HTTP listener (dynamic port) allows MCP Server and other AI agents
to open tables directly in DBX UI via Tauri events.
2026-05-03 14:35:48 +08:00
skyler 1b8d56a43b
Merge pull request #65 from SuLea-IT/codex/field-lineage
[codex] Add field lineage viewer and review fixes
2026-05-03 11:18:36 +08:00
SuLea-IT 4d6cd5351c fix: address lineage review feedback 2026-05-03 06:02:39 +08:00
yavon007 58ca9a3b21 feat: add SSH key passphrase field and file picker for key path
- Add ssh_key_passphrase field to ConnectionConfig model with full keyring lifecycle
- Pass passphrase to russh load_secret_key for encrypted SSH keys
- Add native file picker (FolderOpen icon) next to SSH key path input
- Add password-type input for key passphrase in connection dialog
- Make connection dialog form scrollable for short windows
- Fix alignment of key path input and browse button
- Add i18n keys (en + zh-CN)
2026-05-03 04:39:03 +08:00
t8y2 f598b5a91c feat: enhance MySQL connection handling with bare option and optimize component imports 2026-05-02 23:25:39 +08:00
skyler adb7bc9253
Merge pull request #61 from SuLea-IT/codex/explain-plan-viewer
feat: add explain plan viewer
2026-05-02 21:54:54 +08:00
t8y2 44c98ba335 feat: add support for bare MySQL connections and improve SQL query handling for doris 2026-05-02 21:51:50 +08:00
SuLea-IT d180539778 feat: add explain plan viewer 2026-05-02 21:00:53 +08:00
t8y2 eab5556b6f feat: enhance AI streaming with reasoning support and UI updates 2026-05-02 20:43:49 +08:00
SuLea-IT 2ebd72b3b7 feat: import table data from files 2026-05-02 19:04:41 +08:00
t8y2 a025649f89 fix: update MySql connection options to include pipes as concat and timezone settings 2026-05-02 17:36:00 +08:00
t8y2 c6f9bb89ec fix: support for ClickHouse database username and password configuration 2026-05-02 17:25:16 +08:00
t8y2 40a67434ee feat: use file-based secret store in debug mode to avoid macOS Keychain prompts
During development, every Rust recompile changes the binary signature,
causing macOS to invalidate Keychain "Always Allow" and prompt for the
password on every hot reload. Switch to a JSON file store in debug
builds so dev workflow is uninterrupted; release builds still use the
system keychain.
2026-05-02 16:45:17 +08:00
SuLe b6f89f02fb add database relationship diagrams 2026-05-02 13:09:53 +08:00
skyler 0273f9f65d
Merge pull request #50 from kingcanfish/fix/numeric-precision-display
fix: resolve PostgreSQL/MySQL/SQL Server NUMERIC/DECIMAL display issues
2026-05-02 10:36:27 +08:00
kingcanfish d1075c0042
fix: resolve PostgreSQL/MySQL/SQL Server NUMERIC/DECIMAL display issues
- Add rust_decimal feature to sqlx and tiberius for proper Decimal type handling
- Fix try_get_unchecked<String> causing NULL or garbled output for numeric types
- Add numeric_precision and numeric_scale to ColumnInfo for all database drivers
- Update frontend to display precision (e.g., numeric(20,6)) in column headers
- Fix typeColorClass to handle type names with precision suffix

Root cause: PostgreSQL binary protocol sends NUMERIC as PgNumeric binary format,
not UTF-8 text. try_get_unchecked<String> attempted to decode binary bytes as UTF-8,
causing decode failures (NULL) or garbage characters (乱码).
2026-05-02 10:14:01 +08:00
skyler 8b153bef0d
Merge pull request #49 from SuLea-IT/codex/sql-file-execution
Add SQL file execution workflow
2026-05-02 09:47:33 +08:00
SuLe 518bdc2c38 support sql file dump splitter cases 2026-05-02 05:42:34 +08:00
SuLe 69cd5831a1 skip comment-only sql file statements 2026-05-02 05:06:14 +08:00
SuLe 41066476be harden sql file execution 2026-05-02 04:57:41 +08:00
SuLe 7a3b356379 emit sql file io errors 2026-05-02 04:51:10 +08:00
SuLe 15fa5b0d2c execute sql files with progress 2026-05-02 04:47:43 +08:00
SuLe 33705b9cbb speed up query timeout test 2026-05-02 04:41:09 +08:00
SuLe ed475f1d1b share query execution helper 2026-05-02 04:36:44 +08:00
SuLe f862a27858 fix streamed comment splitting 2026-05-02 04:29:10 +08:00
SuLe 733fc69e13 fix connection test initializer 2026-05-02 04:26:03 +08:00
SuLe 893c17ef9f add sql file statement splitter 2026-05-02 04:24:52 +08:00
SuLe d14329ea15 store connection secrets in system keyring 2026-05-02 03:37:52 +08:00
t8y2 3f71cd6dfa feat: enhance AI functionality with conversation management and cancellation 2026-05-02 03:05:02 +08:00
t8y2 557897f428 feat: enhance MySQL connection handling and update connection dialog for Doris, SelectDB, and StarRocks 2026-05-01 19:36:17 +08:00
t8y2 6e0fdf1c92 feat: add ssh_expose_lan configuration and localization support 2026-05-01 15:37:52 +08:00
t8y2 65cd285567 feat: add AiApiStyle support and integrate into AI completion and streaming functions 2026-05-01 12:10:32 +08:00
t8y2 e6be189992 feat: implement SSH tunneling using russh library 2026-05-01 10:00:51 +08:00
t8y2 f5ef4fe6ce feat: update connection URL parameters handling for Doris and StarRocks databases; improve UI element heights and add localization for edit action 2026-05-01 09:22:11 +08:00
t8y2 4c4f5de6d8 feat: add IPv6 support for connection URLs by bracketing host addresses 2026-05-01 01:28:54 +08:00
t8y2 b43e67b4fc feat: add support for Doris, StarRocks, and Redshift databases in connection handling and UI 2026-05-01 01:26:35 +08:00
t8y2 75244339e4 feat(postgres): enhance JSON serialization for temporal and numeric types 2026-05-01 00:13:42 +08:00
SuLea-IT 806a855ef0
Add query cancellation controls (#41)
Co-authored-by: SuLe <sule@SuLedeMacBook-Air.local>
Co-authored-by: skyler <77960507+t8y2@users.noreply.github.com>
2026-05-01 00:05:15 +08:00
t8y2 c840ab4e45 feat: implement data transfer functionality with progress tracking 2026-05-01 00:00:59 +08:00
t8y2 1e15249da9 feat(ai): 添加流式数据处理和执行 SQL 功能 2026-04-30 21:46:57 +08:00
t8y2 9e7ed096b7 feat: add AI streaming functionality and enhance AI assistant features 2026-04-30 21:25:01 +08:00
skyler 23551ffa16
feat: exclude temporary schemas from list_schemas query (#39) 2026-04-30 19:49:56 +08:00
skyler b1f4d4c300
feat: add Elasticsearch support with document browser (#38)
- New elasticsearch_driver using reqwest HTTP client
- Reuse MongoDB document browser (MongoDocBrowser) for ES indices
- ES indices shown as collections under "default" database
- Document CRUD via ES REST API (_search, _doc)
- No extra dependencies (uses existing reqwest)
2026-04-30 19:40:12 +08:00
skyler 9fa6ab063d
feat: display column comments in sidebar and data grid header (#37)
- Add comment field to ColumnInfo (MySQL COLUMN_COMMENT, PostgreSQL col_description)
- Show column comments in sidebar tree nodes
- Show column comments on hover in data grid header
- Default MySQL charset to utf8mb4 for proper CJK support
Closes #14
2026-04-30 18:54:26 +08:00
skyler 2b4cd311b3
feat(mongodb): support direct URL connection string (#32)
* chore: bump version to 0.2.1

* fix(ci): wait for Release workflow before publishing packages

Changed trigger from release:published to workflow_run on Release
completion, so assets are already uploaded when download starts.

* feat(mongodb): support direct URL connection string

Allow pasting a full MongoDB URI (e.g. mongodb+srv://) to connect
to Atlas clusters, replica sets, and other multi-instance setups.
2026-04-30 17:23:50 +08:00
skyler 9ee31aa188
fix(redis): show empty databases (#25) 2026-04-30 16:32:50 +08:00
t8y2 4a72366863 feat: add update checking functionality and UI support 2026-04-30 16:09:44 +08:00
t8y2 4d8ae1221e feat(connection): enhance connection handling with SSH tunnel support 2026-04-30 16:07:26 +08:00
Sugar ac76aadbed
修复:避免在连接导出和日志中泄露敏感信息 / avoid leaking connection credentials in exports and logs (#16)
* fix: redact ssh password from connection exports

* test: cover redacted connection targets

* fix: avoid logging connection credentials

* fix(redis): support stream value preview
2026-04-30 15:44:53 +08:00
Yikuanzz 9e58fefab8
fix(mysql): 查询结果中正确序列化 DATETIME 等时间类型,避免显示为 null (#20) 2026-04-30 15:40:40 +08:00
t8y2 62ae308914 fix(sqlserver): support TLS fallback, TOP syntax, and schema browsing 2026-04-30 14:36:31 +08:00
t8y2 4ef13e68c4 feat(connection): add compatible driver profiles 2026-04-30 14:00:59 +08:00
t8y2 1a60c5b7ac feat(connection): add connection colors and database tab labels 2026-04-30 13:18:15 +08:00
t8y2 5c546f68af feat(redis): implement pagination for Redis key scanning and enhance UI for loading more keys 2026-04-30 13:04:48 +08:00
t8y2 1fb5d2bff1 fix(mysql): handle large numeric display and edit saves 2026-04-30 11:24:47 +08:00
t8y2 b325cc50c4 feat: add SSL/TLS support for Redis connections and update related configurations 2026-04-30 11:01:14 +08:00
t8y2 cd273441a3 feat: add execute_batch command for executing multiple SQL statements in a single call 2026-04-30 09:42:34 +08:00
t8y2 125793bd62 feat: refactor Oracle database handling to use OracleClient instead of OraclePool 2026-04-30 09:26:24 +08:00
t8y2 11e96a96e6 feat: add percent-encoding for connection URL parameters 2026-04-30 09:23:23 +08:00
t8y2 2e971ce152 feat: add Oracle database support 2026-04-30 04:28:33 +08:00
t8y2 2ab2a81e19 feat: add get_table_ddl command and integrate DDL functionality in DataGrid 2026-04-30 02:12:27 +08:00
t8y2 f16e9a9ae7 fix: update MySQL connection string to include SSL mode preference 2026-04-29 23:09:45 +08:00
t8y2 20546d6c71 feat: add tauri-plugin-shell and update permissions for shell access 2026-04-29 22:25:28 +08:00
t8y2 ccb3667a0c feat: Enhance AI Assistant with new actions and context handling 2026-04-29 21:32:35 +08:00
t8y2 3e1ab0b3a4 feat: add SSH password authentication support 2026-04-29 20:36:07 +08:00
t8y2 b2e6dfad7e feat: initial release
Multi-database management tool built with Tauri + Vue 3.
Supports MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server.
2026-04-29 18:09:23 +08:00