Repository navigation
v0.3.5
rudbman 0.3.5 — a searchable history of the statements each connection ran, execution plans read without running the statement, a WHERE filter in the data tab, and query tabs saved to SQL files.
- Each connection keeps a searchable history of the statements it ran. Every statement a query tab runs is recorded per connection profile with when it ran, how long it took, and the rows it returned, the rows it changed or the error it stopped at; a sort's re-run, a grid apply, a plan and a write the profile refused are not. Query history… (Ctrl/Cmd+Shift+H, the ☰ menu or a connection tab's right-click menu) lists them newest first under a search field, Enter or a double-click opens the statement in a new query tab without running it, and Copy SQL, Delete and Clear history… sit beside the list. The history is plain JSON in
history/<profile-id>.jsonunder the configuration directory, up to 1,000 statements and 4 MiB of SQL per profile, and Keep a history of the statements query tabs run in Settings turns recording off. - Explain plan shows a statement's plan without running it. Explain plan (Ctrl/Cmd+Shift+E, the editor's right-click menu, the toolbar or the ☰ menu) shows the plan of the selection, or of the statement under the caret, as a read-only "Plan" grid, and the log says the statement was not run. PostgreSQL, MySQL, MariaDB and H2 are asked with
EXPLAIN, SQLite withEXPLAIN QUERY PLAN, Oracle withEXPLAIN PLAN FORandDBMS_XPLAN.DISPLAY(), and SQL Server withSET SHOWPLAN_TEXT ON; Db2 needs explain tables of its own and is not asked. A plan is not a write, so a read-only connection and Ask before running a write statement let it through, but Oracle writes the plan into the session'sPLAN_TABLE, which under manual commit joins the open transaction. - The data tab filters a table's rows with a WHERE condition. A
WHEREstrip under the data tab's toolbar takes a condition such asstatus = 'open': Enter or Filter reads the rows again under it in the grid's sort order, Esc or Clear brings every row back, and Ctrl/Cmd+F puts the keyboard in the field. "Filtered" beside the row count says the rows are not all of them, editing and Apply work as usual, and the filter is kept with the workspace and copied by a split. A leadingWHEREand a trailing;are taken off, a second statement after the condition is refused, and a condition the database rejects stays in the field to be corrected. - Query tabs save to SQL files. Ctrl/Cmd+S writes a query tab's SQL to its file and asks where only for a tab that has none, and Save SQL file as… (Ctrl+Shift+S; no chord on macOS, where Cmd+Shift+S splits the pane) always asks; both are in the in-app and macOS menus. A tab opened from a UTF-8 file or saved to one is titled with the file name, a dot behind the title marks text the file does not hold, and the binding is kept across a restart. A save in place leaves alone a file written since by another program, a split copy or the same script open on another connection, and asks where to save instead.
- The explorer opens onto the connected database and schema. When a connection opens, its root is expanded and the tree walks down to the catalog and schema the session landed in, opening each level as it arrives and selecting it so it is in view. A node the user picks while the levels load stays selected.
- Every close asks before it loses work. Closing a tab, a pane (Alt+W, Cmd+W on macOS, or the strip's menu) or a connection tab refuses over staged edits and brings the tab forward, asks Save / Don't save / Cancel for a file-bound query tab with unsaved changes, and asks once before closing a connection with an uncommitted transaction or a running statement. Quit, the caption's close button, Alt+F4, the platform's title bar and the restart after an update list everything that would be lost — staged edits, unsaved files, running statements, uncommitted transactions and running jobs — and offer Save all for file-bound tabs; the update button now reads Update and restart. Ctrl+W closes the tab on top on Linux and Windows, and Ctrl/Cmd+Shift+T reopens the last of up to ten closed query or builder tabs with its text, name, file binding and unsaved mark.
- A connection tab that did not open says why and reconnects in place. Its work area shows a card: the name and Cancel while connecting; once failed or ended, the full message, the hint the dialog's Test gives, Reconnect, Edit connection… and Copy message, and Trust the key and reconnect for an unknown host key. Reconnect, also in the tab's menu, tries again in the same tab with the profile read afresh, and the status cell carries its full text as a tooltip. A Connection timeout setting (default 30 s, 0 for the driver's own) is passed to the driver unless the profile sets one, so an unreachable host no longer keeps the tab connecting until the OS gives up.
- The connection dialog keeps what was typed and can forget a password. Closing a form with unsaved edits asks Save / Discard / Keep editing, and inside the dialog Ctrl/Cmd+N adds a profile and Ctrl/Cmd+S saves it. A new profile starts with no driver, a driver with no JAR but a Maven coordinate offers Download under the picker, and Drivers… opens on the form's driver. Turning off Remember password in the system keychain (on by default) deletes the stored password and asks for it when connecting; a keychain that refuses a write no longer stops Connect, and the welcome list's menu offers Connect, Edit…, Duplicate… and Delete….
- A failed script is logged, and an open transaction shows. A failure in a run of several statements is a log row in the danger color — statement k of N, its SQL, and the error with SQLSTATE and hint — while earlier results stay viewable and the failed statement is selected in the editor; log rows and the error view copy their message. An open transaction shows in the status bar and as a dot on the connection tab and lights Commit and Rollback, and the refusals of grid applies, structure changes and transfers name the tab that wrote. Esc stops a running statement, F11 commits and F12 rolls back (Ctrl+Cmd+C and Ctrl+Cmd+R on macOS, where F11 is Show Desktop), the row count reads "N+ rows" while more remain, and a run of writes reports the rows affected.
- The data grid edits from the keyboard. In the data tab and editable query results, Delete (and Backspace on macOS) marks the selected rows for deletion or unmarks them, F2 or a typed character opens the cell with that character in it (the value viewer for LOB and multiline cells), and Ctrl/Cmd+V pastes tab-separated clipboard text from the cursor on, or one value into every selected cell. Ctrl+0 or Shift+Delete sets NULL, Alt+Insert adds a row, Ctrl+S or Ctrl+Enter raises the apply preview and F5 reads the rows again (Cmd on macOS), and the menu rows and toolbar tooltips show the chords.
- Tabs, connections, regions and menus are reachable from the keyboard. Ctrl+PgDn/PgUp and Ctrl+Tab/Ctrl+Shift+Tab walk the active pane's tabs, Ctrl+1–8 pick a tab and Ctrl+9 the last (Cmd+Alt+→/← and Cmd+1–9 on macOS), Ctrl+Alt+PgDn/PgUp walk the connection tabs, F6/Shift+F6 move between the explorer, the active tab and a query tab's result grid, and Alt+]/[ (Cmd on macOS) take the keyboard to the pane they frame. F10 opens the ☰ menu off macOS and Shift+F10 or the Menu key opens the menu of the explorer, the SQL editor, a grid or a saved connection on the welcome screen; the ☰ menu is grouped and gains Close tab, Reopen closed tab, Split right/below, Close pane and Next/Previous pane with their chords, and the macOS View menu gains the pane rows. Dialogs give the keyboard back where they took it, the structure form's fields are in the tab order and Add column puts the caret in the new column's name, Escape in the LOB viewer closes its find bar before the viewer, and an empty query pane names the chords that run a statement and the script.
- Pane notices stay off the grid, and toasts say why a command did nothing. The query, data and structure panes draw a notice as a band between the toolbar and the rows with a close button, a failure in the danger color; a report goes after six seconds, and a refusal or a failure stays until it is closed or replaced. Ctrl+T, Ctrl+O, Ctrl+Shift+T and a new builder over no connection, or over a connection tab that is still connecting, failed or ended, say so in a toast, as do a .sql file that cannot be read, a builder table whose columns cannot be read and a keychain unavailable at start-up.
- ERD and data loads show progress and can be canceled. The ERD panel counts the tables whose keys have been read out of the total and offers Cancel, after which it says the load was canceled and offers Reload. A data tab's load or sort of a big table can be canceled too.
- The query builder explains its gestures and adds joins from a form. The empty canvas names both ways in — dragging a table from the explorer, or its "Add to query builder" row — and a line says a click on a column adds it to the select list. Once two tables are on the canvas, the Joins section shows a form (a column, "=", a column of another table, Add join) that makes the same INNER join a drag does.
- A running job and an open dialog keep their keys. A running extraction, transfer or backup is no longer canceled by a click on its backdrop, by Escape or by a command that opens another dialog; Escape asks Keep running / Stop. Window chords pressed inside a dialog or a pane sheet no longer act on the window behind it, so Ctrl+N no longer reopens the connection dialog over the first profile, Ctrl+S no longer saves the query tab behind the settings and Alt+W no longer closes the pane underneath. The write confirmation, the apply previews and the discard question open with Cancel focused and take Escape as no, so an Enter meant for the editor behind them no longer reaches it; Enter in a connection dialog field is Connect, and in a job dialog it starts a complete form or closes a finished job.
- A transfer no longer copies a table into itself. The target connection defaults to the first open connection that is not the source's, Transfer is disabled with the reason under the form while the target names the source table, and "Empty the target table first" asks before the job starts, naming the target and, once a count answers, how many rows will go. The dialog starts on the last transfer's target, write mode and error policy (never the emptying), and the save dialogs of extractions, backups, ERD and LOB exports open in the folder the last one went to.
- The chrome follows Interface size and the language on screen. Interface size now scales the app's text, the toolbar, the status bar, pane toolbars, log and completion rows, the app's own icons and the fixed sizes around text, in the live preview too, while the ERD and builder canvases keep their own zoom; at the default 14 nothing moves. The connection, driver, settings, extraction, transfer and backup forms fit their label column to the language on screen, so a long translated label is no longer broken mid-word in a fixed 96 px column, and long checkbox and switch labels and dialog titles wrap instead of running past their containers.
- Shared libraries are updated to rugpui 0.1.14. UI dependencies and framework patches are pinned to its published release commit, bringing the close guard, toasts, menus that work from the keyboard, dialog focus and Enter handling, the grid's edit keys, the UI scale, fitted form label columns, dialogs that stay inside the window, and Cmd+G / Cmd+Shift+G for Find Next and Find Previous in the macOS editor.
Requirements
- Linux: glibc 2.35 or newer: Ubuntu 22.04, Debian 12 and later, or a distribution built on them, MX Linux 23 among them.
What's Changed
Full Changelog: v0.3.4...v0.3.5