Commit Graph
71 Commits
Author SHA1 Message Date
t8y2 7e1e9053f8 fix(query): box transaction command errors 2026-08-24 12:38:05 +08:00
t8y2 e03cc2d269 fix(query): recover expired manual transaction sessions 2026-08-24 12:19:27 +08:00
zipg acc2137cde feat(postgres): support editing table owners 2026-08-23 01:39:23 +08:00
Tara bf029cd342 feat(postgres): support safe database renaming 2026-08-22 19:30:38 +08:00
二丫讲梵 a6f4cebd18 feat(editor): include database name in generated SQL 2026-08-22 13:40:42 +08:00
zipg 47e02b8da7 fix(oracle): defer XMLTYPE in manual transactions 2026-08-21 19:44:13 +08:00
二丫讲梵 a7edb8f8db feat(grid): add conditional bulk updates for MySQL 2026-08-21 01:04:16 +08:00
Melody Ruch b4015a4393 fix(sidebar): make destructive table operation cancellation reliable 2026-08-20 22:23:37 +08:00
amwps290 11407b537f feat(postgres): add table vacuum action 2026-08-20 16:04:22 +08:00
Melody Ruch 89e0f1734b fix(sidebar): keep destructive table operations cancellable 2026-08-20 15:14:45 +08:00
t8y2 4c6c3142c0 feat(mysql): add auto-increment counter action
Closes #3019
2026-08-14 01:59:04 +00:00
t8y2 fc6c5d4aa6 fix(jdbc): support Caché data grid pagination
Closes #3423
2026-08-13 20:50:07 +08:00
zipg e85d3dcc59 fix(grid): bound large table previews by byte budget 2026-08-13 13:25:04 +08:00
zhangyc c51abd2178 fix(schema-diff): guard and review destructive DDL 2026-08-13 12:42:51 +08:00
zipg c27a4dd83d perf(mysql): limit large table result memory 2026-08-12 14:06:33 +08:00
t8y2 11d9df0169 fix(gbase8s): omit owner from data grid writes
Closes #5911
2026-08-11 10:59:54 +00:00
miracle bcafc4a474 fix(query): preserve structured backend errors 2026-08-02 16:37:46 +08:00
t8y2 d347c77c3d feat(duckdb): move support to standalone driver 2026-07-30 00:50:39 +08:00
greathaoqi ed018dbc77 feat(query): show live statement execution progress 2026-07-30 00:44:10 +08:00
jischeng 2152f8cde8 fix(mysql): use database-specific catalog switching 2026-07-29 20:41:09 +08:00
dbin0123 002a2c85c0 feat(schema-diff): preserve dialect-specific DDL semantics 2026-07-29 03:47:19 +08:00
二丫讲梵 ed9dd1072e feat(desktop): show batch drop progress 2026-07-29 00:33:48 +08:00
soddygo 0b7a886cfd feat(data-grid): add multi-format copy extractors 2026-07-27 16:11:53 +08:00
二丫讲梵 85836f8e95 feat(sqlite): support attached database schema changes 2026-07-20 10:51:16 +08:00
Abeautifulsnow badb3b61b9 feat(diagnostics): add SQL execution debug logging 2026-07-16 17:01:24 +08:00
zipg e4c56e6165 feat(sqlserver): add execution plan support 2026-07-16 16:32:52 +08:00
gggaiitx e9e59113a3 fix(query): continue batch after statement errors 2026-07-14 12:51:24 +08:00
onenewcode 7a42b1e96b fix(mysql): stop multi-statement execution after first error 2026-07-12 21:30:27 +08:00
onenewcode fc8d407a62 feat(sqlite): support table structure changes 2026-07-10 20:02:56 +08:00
zipg e1d6d1224e feat(oracle): support explain plans 2026-07-10 17:55:03 +08:00
t8y2 2bfd03cca4 feat(database): add database creation and property editing 2026-07-06 02:00:01 +08:00
Abeautifulsnow d55a708d6a feat(query): add manual transaction controls 2026-07-02 01:30:31 +08:00
miracle 0c91fecf5d feat(editor): add table copy/paste keyboard shortcuts
* feat: add table copy/paste with configurable structure and data options

- Implement Navicat-style table copy/paste functionality
- Support multi-table selection and batch operations
- Configurable paste modes: structure+data (default), structure only, data only
- Backend: add build_copy_table_data_sql API (INSERT INTO ... SELECT)
- TreeItem.vue: copy/paste context menus, paste dialog with mode selection
- ObjectBrowser.vue: batch toolbar buttons, context menu, paste dialog
- Refactor TreeClipboard type to support multi-table entries
- Add i18n keys for all 7 locale files (en, zh-CN, zh-TW, ja, es, it, pt-BR)

* Fix table paste shortcuts

* Fix Kafka MQ sidebar detection

* Restrict table paste scope

* Support data copy for primary SQL databases
2026-07-01 12:49:37 +08:00
t8y2 4c48263793 feat(grid): add database value filter 2026-06-29 03:13:35 +08:00
t8y2 ac3d3a7948 feat(agent): track execution context activity 2026-06-22 23:17:11 +08:00
t8y2 c4c427fb67 fix: sort tables by FK dependency in transfer and export 2026-06-18 00:00:37 +08:00
t8y2 4dbd1c7cc8 fix: convert source to editable form when opening view/procedure editor 2026-06-17 15:20:21 +08:00
t8y2 66e6ca1211 fix(db): refresh stale native pools 2026-06-17 11:14:35 +08:00
t8y2 a81286fed7 feat(build): gate DuckDB behind optional feature, support --no-default-features 2026-06-11 13:58:44 +08:00
Quinlevi 897e6998fd feat(dameng): full DM8 database support
Adds Dameng DM8 explain/autotrace support and user-management SQL support, with backend autotrace safety checks and escaped CREATE USER SQL.
2026-06-08 02:07:00 +08:00
e9ee982843 Preserve ordered SSH and proxy connection layers (#802)
* Preserve ordered SSH and proxy connection layers

Replace separate SSH/proxy connection fields with ordered transport_layers while keeping legacy migration and secret fallback paths intact. The UI now edits SSH tunnel/proxy layers in configured order without a global SSH enable gate.

Constraint: Existing saved SSH tunnels, proxy settings, and secret-store keys must continue to load through migration.
Rejected: Folding proxy fields into SshTunnelConfig | mixes proxy semantics into an SSH-specific structure.
Confidence: high
Scope-risk: moderate
Directive: Keep SSH/proxy structs provider-specific; put cross-layer chaining in transport_layer_tunnel orchestration.
Tested: git diff --check; cargo fmt --check; cargo check --workspace; cargo test -p dbx-core --lib; vue-tsc --noEmit --project apps/desktop/tsconfig.json; tsc -p packages/node-core/tsconfig.json --noEmit; oxlint --vue-plugin apps/desktop/src; tsx --tsconfig apps/desktop/tsconfig.json --test packages/app-tests/*.test.ts; tsx --test packages/node-core/tests/*.test.ts
Not-tested: Live external SSH/proxy/database endpoint integration.

* Keep ordered transport changes CI-format clean

Constraint: CI pnpm check failed only on oxfmt formatting for two desktop TypeScript files
Confidence: high
Scope-risk: narrow
Directive: Keep generated/editor config changes out of this PR fix commit
Tested: PATH="/Volumes/data/code/rust/dbx/node_modules/.bin:/Users/hekx/.codex/tmp/arg0/codex-arg0nuL34n:/Users/hekx/.cargo/bin:/Users/hekx/.local/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/opt/libpq/bin:/Volumes/data/Users/hekx/.opencode/bin:/Users/hekx/.bun/bin:/Volumes/data/sdks/flutter/bin:/Volumes/data/Users/hekx/.cargo/bin:/Users/hekx/.local/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/opt/libpq/bin:/Volumes/data/Users/hekx/.opencode/bin:/Users/hekx/.bun/bin:/Volumes/data/Users/hekx/Library/pnpm:/Volumes/data/sdks/flutter/bin:/Volumes/data/Users/hekx/.cargo/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/pkg/env/global/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/go/bin:/opt/homebrew/bin:/opt/podman/bin:/Applications/Ghostty.app/Contents/MacOS" rtk node scripts/run-check.mjs
Not-tested: GitHub Actions rerun not observed locally

* Keep Rust checks warning-clean

Constraint: cargo clippy --workspace --all-targets --all-features -- -D warnings failed across core, web, and tauri crates
Rejected: Broad workspace-level clippy suppression | kept allows local to long-argument command/API boundaries
Confidence: high
Scope-risk: moderate
Directive: Preserve src-tauri/tauri.conf.json as an unrelated local change outside this commit
Tested: rtk cargo clippy --workspace --all-targets --all-features -- -D warnings
Not-tested: Full GitHub Actions rerun not observed locally

* Reuse existing proxy tunnels on retry

Proxy tunnel startup now mirrors SSH tunnel behavior by returning the existing local port for an active connection id instead of replacing the managed handle. A second map check aborts a just-spawned duplicate handle if a concurrent retry won the race before insertion, preventing orphaned listeners while keeping the change narrow.

Constraint: Reviewer requested proxy tunnel behavior align with SSH local-port reuse

Rejected: Always overwrite and abort the previous handle | less consistent with SSH behavior and churns listeners during retries

Confidence: high

Scope-risk: narrow

Tested: cargo fmt --check --all

Tested: cargo test -p dbx-core db::proxy_tunnel::tests::start_tunnel_reuses_existing_local_port

Tested: cargo clippy -p dbx-core --all-targets -- -D warnings

---------

Co-authored-by: hekx <hekx@momandeMac-mini.local>
Co-authored-by: caisin <caisin@caisins-Mac-mini.local>
2026-06-06 23:22:29 +08:00
t8y2 8d51a5779b fix: cancel DuckDB queries via duckdb_interrupt instead of only cancelling async future
Previously, cancelling a DuckDB query only dropped the tokio CancellationToken,
but the actual DuckDB C call continued running in spawn_blocking. This caused
the UI to show "正在停止..." until timeout silently expired.

Now, RunningQueries stores per-execution interrupt callbacks. For DuckDB and
ExternalTabular branches, an InterruptHandle is registered on query start so
cancel() calls duckdb_interrupt() at the C level, truly stopping the query.
2026-06-04 17:20:13 +08:00
t8y2 293600d9b4 fix: pass connection query timeout to execute_batch so ALTER respects configured timeout
Previously execute_batch always used the hardcoded 30s default timeout,
ignoring the user's query_timeout_secs connection setting. This caused
long-running ALTER TABLE statements on large tables to time out even
when the user configured a longer timeout or disabled it entirely.
2026-06-04 13:54:20 +08:00
t8y2 ac7a5b7576 feat(desktop): drop tree schema objects 2026-06-02 00:33:58 +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 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
t8y2 792c816a17 feat: make query timeout configurable via global settings (default 30s)
Add queryTimeoutSecs to editor settings with UI control in the settings
dialog. 0 means no timeout. Applied to all query execution paths including
sidebar table data loading and EXPLAIN queries.

Closes #441.
2026-05-25 18:30:55 +08:00
t8y2 d326cb0ced fix: scope query connections by client session 2026-05-25 17:23:36 +08:00
t8y2 1f666f99b3 fix(duckdb): support multiple schemas beyond default "main"
DuckDB was not recognized as a schema-aware database, so only the
default "main" schema was shown in the object tree and schema selector.
Added DuckDB to schema-aware type lists, implemented schema listing via
information_schema.schemata, and replaced hardcoded table_schema = 'main'
with parameterized queries.
2026-05-24 10:26:09 +08:00