Commit Graph
61 Commits
Author SHA1 Message Date
amwps290 a6a072294a feat(spatial): add SRID-aware geometry previews 2026-07-31 22:31:51 +08:00
t8y2 2f24a4c6f6 fix(transfer): skip MySQL generated columns in inserts 2026-07-31 00:02:15 +08:00
t8y2 b3774a0ed5 fix(sqlserver): export bit values as numeric literals 2026-07-30 22:59:58 +08:00
如梦技术 adb6d86b53 feat(database): support Doris and StarRocks catalogs 2026-07-30 16:03:32 +08:00
Freedom a4352d6560 fix(export): show progress while preparing database export 2026-07-29 14:43:07 +08:00
t8y2 634f604cd6 fix(postgres): preserve exported and imported values 2026-07-25 22:57:41 +08:00
wbean 98d1ab3ab3 feat(sidebar): add persistent table filters 2026-07-25 08:46:12 +08:00
二丫讲梵 9cfee7f497 feat(export): support database setup and batch SQL scripts 2026-07-24 23:52:10 +08:00
zipg 6b2f55e4de fix(postgresql): show trigger source details 2026-07-23 21:16:43 +08:00
amwps290 52499f4c9f feat(postgres): add extension management 2026-07-22 15:08:51 +08:00
t8y2 6152422ef9 fix(export): count only requested database objects 2026-07-22 11:43:29 +08:00
soddygo 19e5b25f71 feat(export): add MySQL auto increment export option 2026-07-21 21:43:11 +08:00
zipg 61f442f9b9 fix(dameng): preserve NUL characters in string exports 2026-07-21 18:39:22 +08:00
zipg a12f8d09b7 fix(mysql): handle export terminators and escaped quotes 2026-07-21 17:13:50 +08:00
zipg bec6514fee fix(export): add MySQL object drop-if-exists statements 2026-07-20 10:51:20 +08:00
t8y2 17e54bd5eb fix(postgres): include extensions in database exports 2026-07-19 12:48:15 +08:00
CSXFanMeng 7abac0959f feat(backup): support table filters and MySQL compatibility 2026-07-19 10:32:33 +08:00
vrustx 81f787e8d1 feat(export): prefetch table metadata during database export 2026-07-19 08:50:27 +08:00
CSXFanMeng f08a0b7f7f feat(backup): add scheduled database backups 2026-07-16 18:49:15 +08:00
zipg 96b5a71fb3 fix(dameng): export bit values as numeric literals 2026-07-16 15:21:44 +08:00
t8y2 002dbbf602 fix(oceanbase): use rowid for keyless Oracle rows 2026-07-15 13:00:38 +08:00
t8y2 1e7a33bd99 fix(oracle): omit synthetic rowid from table exports 2026-07-15 11:54:19 +08:00
t8y2 a3f3cadb39 fix(postgres): distinguish overloaded routines 2026-07-13 00:26:04 +08:00
miracle 16e879e40e perf(query): optimize result loading and connection reuse 2026-07-12 11:18:52 +08:00
zipg ce8cb2b509 fix(oracle): preserve DATE time in display and export 2026-07-09 15:04:34 +08:00
t8y2 5b3694623a fix(postgres): preserve pgvector export literals 2026-07-09 13:31:35 +08:00
zipg d50f1761d6 fix(sql): handle database drag and routine export 2026-07-07 15:54:48 +08:00
t8y2 ab186c30a5 fix(export): preserve PostgreSQL JSON escapes 2026-07-07 12:49:14 +08:00
t8y2 dd8d1d3556 fix(export): preserve MySQL typed literals 2026-07-06 13:48:36 +08:00
t8y2 3160c02b4e feat(export): escape MySQL export control characters 2026-07-05 12:32:24 +08:00
t8y2 e74782f651 feat(metadata): optimize agent metadata loading 2026-07-05 12:09:24 +08:00
c8efe06ddc fix(core): Oracle 复制 INSERT 按行生成语句
* fix(core): emit oracle copy inserts per row

* refactor(core): extract single-row insert dialect check into sql_dialect

---------

Co-authored-by: zero <zero@zeroMacmini.local>
Co-authored-by: t8y2 <1156263951@qq.com>
2026-07-03 19:33:18 +08:00
zipgandstaff 30f1c58e9d Fix:修复SQL INSERT导出时间格式
Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-07-01 19:42:42 +08:00
t8y2 796b0ce5b7 fix(dameng): restore exports with identity columns 2026-06-26 21:25:39 +08:00
ptma 484d20922a fix(postgres): handle PostgreSQL views 2026-06-25 10:54:38 +08:00
t8y2 df94a7c1bf fix(postgres): export sequences with database dump 2026-06-22 16:47:10 +08:00
t8y2 ad0a9075b5 fix(core): include table when dropping IRIS index 2026-06-18 11:00:19 +08:00
t8y2 c4c427fb67 fix: sort tables by FK dependency in transfer and export 2026-06-18 00:00:37 +08:00
t8y2 22b8ba17bb fix(schema): handle view DDL object types 2026-06-17 19:29:24 +08:00
t8y2 e0d481cc2e fix(postgres): handle tsvector columns 2026-06-15 16:59:01 +08:00
t8y2 30afcb8e69 fix(sidebar): page large table groups 2026-06-13 13:40:36 +08:00
polempandSam ef5ed05ae7 feat(schema-diff): professional DDL diff view with deployment-aware colors and custom themes (#1112)
Co-authored-by: Sam <14344444@@qq.com>
2026-06-12 17:14:05 +08:00
t8y2 8f92eeb638 fix(core): guard BIT literal formatting behind MySQL-compatible db_type 2026-06-10 21:54:10 +08:00
echocde 4389de386d fix(core): properly format MySQL BIT type values as binary literals in export/transfer
Thanks for the fix!
2026-06-10 21:53:02 +08:00
t8y2 7bd8d29a79 feat(sidebar): lazily load database object groups 2026-06-07 23:44:40 +08:00
t8y2 3b457f7803 fix(core): use ClickHouse array syntax [...] instead of PostgreSQL {...} for array literals
ClickHouse and Databend expect square-bracket array literals (unquoted),
while PostgreSQL/DuckDB/etc. use curly-brace quoted format.  Previously
all array values were unconditionally rendered with `'{...}'` syntax,
which produced wrong INSERT/UPDATE statements for ClickHouse columns
of nested array types like `Array(Array(Point))`.
2026-06-07 22:45:11 +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 b226b445d6 fix(export): preserve MySQL bit literals in SQL export 2026-06-06 19:03:21 +08:00
t8y2 e02b6f0d7a test: update stale test expectations 2026-06-06 01:06:03 +08:00
bea3b45fd8 perf(export): 优化导出ui体验和性能
* docs(getting-started): set brew upgrade to use official homebrew cask

* fix(mysql): make admin show handling dialect aware

* fix(data-compare): create missing target tables during sync

* feat(sql): suggest join conditions from foreign keys

* fix(sidebar): use filtered order for range selection

* fix(tabs): close connection tabs on disconnect

* fix(sqlserver): execute cte queries without wrapping

* fix(opengauss): open table structure editor

* perf(export): 优化导出ui体验和性能

* perf(export): 优化导出ui体验和性能

* fix(export): normalize status casing and fix web route issues

- Add missing table export web routes (POST /export/table, SSE progress, cancel)
- Fix tauri table export Promise to wait for terminal events
- Change cancel to return Ok(()) so it doesn't get overwritten as Error
- Unify ExportStatus to PascalCase across all frontend components
- Fix http.ts table export POST body wrapping
- Fix duplicate pub mod in dbx-web routes

* fix(export): return export file for browser download in web mode

Write table export output to temp dir, register a download endpoint,
and trigger browser download from the frontend when export completes.

* fix(export): avoid table export progress races

---------

Co-authored-by: Francesco Lucarelli <francesco06lucarelli@gmail.com>
Co-authored-by: t8y2 <1156263951@qq.com>
Co-authored-by: dqn <someonegdeng@qq.com>
2026-06-03 10:39:11 +08:00