The result grid
Browsing, filtering, inspecting, and editing rows.
The result grid is where RED spends most of its care. It is windowed over the full result set with keyset pagination, so a multi-million-row table costs the same to open as a small one - nothing is ever materialized whole.
The cell cursor lives in absolute row ordinals. Moving off the visible window re-centers it through the same paging machinery the scrollbar uses, so it follows without stutter.
Moving around
| Key | Action |
|---|---|
↑ ↓ ← → | Move the cell cursor |
⇧Shift + arrows | Extend the selection |
⌘←Ctrl+← / ⌘→Ctrl+→ | Row start / end |
⌘↑Ctrl+↑ / ⌘↓Ctrl+↓ | First / last row |
PgUp / PgDn | Page up / down |
⌘ACtrl+A | Select all |
⌃GCtrl+G | Go to row… |
An optional vim keymap adds hjkl, g / G, 0 / $, and
Ctrl-d / Ctrl-u alongside the arrows. Off by default; applies live.
Finding and filtering
⌘FCtrl+F- find in the loaded rows.⌘⇧FCtrl+Shift+F- filter the result to aWHEREclause without rewriting the query. Build it as a plain expression, a contains term, or column chips; the footer readsn of N. The filter is keyset-safe, so it narrows the whole result rather than the loaded page, and it belongs to its tab.
Columns
Columns size themselves to their contents. From the header:
- Drag the edge to resize; double-click it to fit.
- The header menu fits one column, fits all, or resets every width.
- Hide and reorder columns; the arrangement is per result and never re-runs the query. The footer reads "12 of 17 columns" while any are hidden.
- "Pin <column> left" freezes a column (or several) against the left edge while the rest scroll under it. Frozen columns keep their own order, survive hiding and reordering, and can't take more than half the grid. "Unpin" and "Unpin all columns" release them.
A column summary bar shows per-column statistics, pushed down to the engine rather than computed over loaded rows.
The row-number gutter holds the left edge instead of scrolling away with the columns, so a row stays identifiable however far right you scroll.
Pinned rows
⌥⌘PCtrl+Alt+P (or "Pin row" in the cell menu) holds a row under the header
while you scroll the rest of the result away. A pinned row appears above the
grid only once it scrolls out of view, so it is never on screen twice; while
it is in view its ordinal carries a pin in the gutter, which releases it on
click.
Up to six rows can be pinned. They keep their place when you sort, filter or re-run the query, show staged edits and deletions exactly as the grid does, and stay copyable when the row itself is far off screen.
Inspecting
⌘ICtrl+I opens the detail inspector for the focused cell or row - a
resizable panel that renders the full value with a format lens (JSON, hex,
timestamp, and more), and can be pinned open.
Foreign keys are click-through: follow a value to the referencing row, or
open the read-only relation tree. The reference columns panel
(⌘⇧CCtrl+Shift+C) expands a foreign key inline, pulling the related table's
columns into the grid through a recursive LEFT JOIN.
Copying
⌘CCtrl+C copies the selection as TSV. The cell menu's "Copy as" offers
more shapes:
- TSV with headers
- CSV
- JSON
- a Markdown table
- an
IN (…)list - one
INSERTper row (on a table browse)
For whole result sets, see Exporting data.
Editing
Edits are staged: make a batch of changes, then review and submit them together, or revert. Nothing reaches the database until you submit.
| Key | Action |
|---|---|
↵ / F2 | Edit the focused cell |
⌘↵Ctrl+↵ | Submit the staged changes |
⌥⌘ZCtrl+Alt+Z | Revert the staged changes |
⌘⌫Ctrl+⌫ | Mark row(s) for deletion |
⌥⌘NCtrl+Alt+N | Add a new row |
⌥⌘0Ctrl+Alt+0 | Set the cell to NULL |
Foreign-key and enum columns get searchable pickers rather than a free-text box. A table the engine cannot modify shows a one-line reason instead of edit controls, and computed columns are never offered for editing.
Editing works on PostgreSQL, MySQL / MariaDB and SQLite (including tables with a
composite primary key) and on ClickHouse under a best-effort contract: there
each change is preflight-counted and reported for itself, since ALTER … UPDATE
has no transaction to roll back. A Mutations panel lists ClickHouse
background work still applying after a submit.
Submitting runs through the same confirmation guards a hand-written statement does - see Safety and guards.