Add a new "Export Database" feature accessible from the sidebar
right-click menu on database/schema nodes. Generates a .sql file
containing CREATE TABLE DDL, batched INSERT statements, and
view/procedure/function source code.
Backend (database_export.rs):
- Stream-writes SQL to file with configurable batch size
- Supports all SQL database types via existing DDL/INSERT generators
- Progress events with cancellation support
- Graceful error handling (continues on per-table failures)
Frontend (DatabaseExportDialog.vue):
- Connection/database/schema selector
- Checkboxes: structure, data, objects
- Real-time progress with current table and row count
- Cancel button
Wired up through Tauri commands, Web SSE routes, and API layer.
Schema Compare:
- Add checkbox per diff item for selective sync (with select-all)
- SQL preview now reactively updates based on checked items
- Add swap button to exchange source↔target
- Execute sync now runs statement-by-statement with progress indicator
- Show detailed error report for failed statements
Data Compare:
- Add swap button to exchange source↔target
- Execute sync now runs statement-by-statement with progress indicator
- Show error summary and per-statement failures
When multiple rows are selected, copyRowAsInsert now generates an
INSERT statement for each selected row instead of only the
right-clicked row.
Closes#166
The previous fix (8032c63) only persisted whereInput when the user
triggered reload/paginate/sort. Typing a condition and switching tabs
without executing still lost it because the local ref was destroyed
on component unmount.
Emit update:whereInput on every change so ContentArea writes the
value to activeTab.whereInput immediately.
Fixes#232
Exact and prefix matches now rank above substring and fuzzy matches
so searching for e.g. "core_flow" puts the exact table at the top
instead of burying it behind partial hits.
Add a shadcn-vue Tooltip to tree nodes that only activates when the
label text is truncated. Enable horizontal scrolling on the sidebar
tree container for deeply nested long names.
Expose Schema Diff and Data Compare dialogs from the top toolbar
so they can be opened without pre-selecting a connection in the
sidebar. Connections are chosen inside the dialog.
- Highlight the row containing the selected cell with a subtle
primary-color tint so the active row is easy to spot.
- Add first-page (« ) and last-page (») pagination buttons.
Last-page runs a COUNT(*) query to calculate the final page offset.
Add « and » buttons to the pagination bar. First-page jumps to page 1.
Last-page runs a COUNT(*) query to calculate total pages, then jumps
to the final page.
Parse host:port from JDBC URLs and rewrite them when an SSH or proxy
tunnel is active, so the Java plugin connects through the local
forwarded port. Enable the SSH/Proxy tabs in the connection dialog
for JDBC.
Sidebar tree now groups database objects into Tables, Views, Procedures,
and Functions folders instead of a flat list. Empty groups are hidden
and each group shows its item count.
Object Browser rows now have right-click context menus with actions
like View Data, New Query, View Source, and Drop.
The reload event did not carry limit/offset, so buildTableSelectSql
always fell back to its default LIMIT 100, resetting 1000-row pages
back to 100 after every commit.
Add buffer, skip-hover, will-change, and CSS contain properties to all
RecycleScroller instances (DataGrid, ConnectionTree, ObjectBrowser,
RedisKeyBrowser). Disable pointer-events during scroll in DataGrid to
reduce repaint overhead.
When a database has more than 15 tables, only the first 15 are shown
in the tree with an "object browser" entry for the rest. The sidebar
search could not find tables beyond the first 15.
Store hidden table nodes on the object-browser TreeNode and search
through them in filterTree when a query is active.
- 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
Add four new filter options to the right-click context menu in table
data view: contains (LIKE), does not contain (NOT LIKE), less than (<),
and greater than (>). Includes en/zh-CN/es translations.
Replace the single-click locale cycle button with a dropdown menu
showing all available languages with their country flag emoji.
Locale switching logic moved from App.vue into AppToolbar.vue.
whereFilterInput was a component-local ref that got lost when switching
tabs because DataGrid is destroyed and recreated via :key binding.
Store whereInput in the QueryTab state and pass it as initialWhereInput
prop so it survives tab switches.