QueryBench

Docs / Data grid and staged changes

Data grid and staged changes

Browsing, filtering, selection, inline editing and the pending-changes review flow.

Browsing

The grid is virtualized and paginated on the server. Pages hold 100 to 1,000 rows; QueryBench never loads a whole table just to display a page. Row stripes are computed from the absolute row index, so scrolling never changes an existing row's color.

  • Apply multiple AND filters: equality, ranges, substring and prefix matches, and null checks. Values are parameterized; identifiers are quoted and validated.
  • Sorting and pagination happen in Go. Table browsing orders by primary key, or by the selected sort plus primary-key tie breakers.
  • Hide columns, inspect a row in the detail sidebar and copy individual fields.
  • Empty results show the headers and a blank grid.

Selection and keyboard

  • and move row selection and focus together. Hold to select a range.
  • Copy selected rows as plain text, JSON, HTML, Markdown, CSV or INSERT statements.
  • ⌘ ⌫ stages deletion of the selected rows.
  • ⌘ Z undoes staged changes, up to 100 steps. The SQL editor keeps its own undo history.
  • ⌘ S finishes the active cell edit and commits staged changes.

Editing

Double-click a cell, or press Enter on a focused editable cell, to edit it. Text and JSON editors are available for large values. Edits are staged, not executed:

  • Edited rows and cells stay yellow, deleted rows red, new rows green. Selected rows are blue regardless of staged operation.
  • Table names with pending changes stay yellow in the sidebar.
  • Drafts survive table, page and connection switches during the session. Closing the desktop app with drafts prompts before discarding them.

Review and commit

The three title-bar controls Discard, View SQL and Commit manage the pending queue. The review shows one compact row per change with an operation label, table name and truncated SQL. Expand a row for the full statement and bound values. Execution stays parameterized.

  • PostgreSQL, MySQL, SQLite and DuckDB commit visual changes atomically.
  • Updates check original values and reject stale edits. Deletes match the original primary key, including composite keys, falling back to all original columns when there is no key.
  • Ambiguous matches roll back the batch. Nontransactional adapters report completed keys so a retry does not repeat successful changes.
  • MySQL staged changes require InnoDB tables for rollback support.

Context menus

Right-click a table for persistent tabs, structure, overview, foreign-key diagrams, pinning, scripts, imports, cloning, truncation, deletion and exports. Right-click a cell for editing, paste, add, duplicate or delete rows, NULL and empty values, quick filters, copy-column values and row copying. Destructive operations open reviewable statements and respect No-Edit.