QueryBench

QueryBench vs TablePlus

TablePlus set the bar for simple, native database clients, and QueryBench borrows its taste. These are the places where we made different choices, and why.

  • Undo after commit

    QueryBench

    Stash captures the original rows inside the same transaction as your update or delete, then hands you recovery SQL to review and run.

    TablePlus

    Code review and Safe mode confirm statements before they run.

  • Complete backups

    QueryBench

    Native pg_dump, mysqldump, VACUUM INTO or EXPORT DATABASE into a local gzip archive, with optional upload to S3 or any compatible endpoint.

    TablePlus

    SQL dump export and import.

  • Mobile

    QueryBench

    A phone is part of every license: iOS or Android, running the same Go adapters locally.

    TablePlus

    iOS app, free for license owners.

  • AI agents

    QueryBench

    Built-in MCP server: loopback only, token protected, and bound by the connection's No-Edit rules.

    TablePlus

    JavaScript plugins, in beta.

  • Updates

    QueryBench

    Every update included. The license never expires.

    TablePlus

    One year of updates with a license; renew to keep updating.

  • License

    QueryBench

    $99.99 once, perpetual, one active device per key.

    TablePlus

    $99 once for one device, or $129 for two; iOS app free for license owners.

  • Teams

    QueryBench

    Same license, one per person, any quantity in one checkout. Invoices, purchase orders and wire transfer on request.

    TablePlus

    $79 per seat once, starting at three seats, with one year of updates.

  • Reviewing changes

    QueryBench

    Staged edits and DDL become a list of parameterized statements with bound values, committed atomically where the engine allows.

    TablePlus

    Code review shows the statements before they are sent.

  • Exports

    QueryBench

    CSV, JSON, SQL and Excel with no row cap, streamed to disk with progress and cancellation.

    TablePlus

    Export to CSV, JSON, SQL and other formats.

  • Engines

    QueryBench

    Seven: PostgreSQL, MySQL, SQLite, DuckDB, ClickHouse, MongoDB and Redis.

    TablePlus

    Fourteen, including SQL Server, Oracle, Cassandra and BigQuery.

TablePlus details taken from tableplus.com on September 8, 2026. TablePlus is a trademark of its owner; QueryBench is not affiliated with it.

Difference one

Roll back after you commit

Every client asks “are you sure?” before an UPDATE. Stash is for the moment after you said yes. Here is exactly what happens.

  1. 1

    You commit an update or delete

    From the grid, a staged batch, or a plain UPDATE or DELETE in the SQL editor.

  2. 2

    QueryBench captures the real rows first

    Inside the same transaction, it reads the rows the statement is about to touch from the database, not the copy on screen. On PostgreSQL and MySQL the rows are locked while this happens. If capture fails, the write is aborted.

  3. 3

    The originals wait in Stash

    Each entry keeps a timestamp, row count, status and expiry. Retention defaults to 15 minutes and can be set from 1 minute to 24 hours. Everything stays in memory; nothing is written to disk.

  4. 4

    You review, then roll back

    Stash generates INSERT statements for deleted rows and UPDATE statements for changed ones. Copy them or open them in a query tab. QueryBench never runs recovery on its own.

Recovery SQL, as Stash writes it
-- Stash · main.customers · 2 rows
-- committed 3 min ago · expires in 12 min
UPDATE "main"."customers"
SET "status" = 'active', "plan" = 'Pro'
WHERE "id" = 42;

INSERT INTO "main"."customers"
  ("id", "name", "email", "status",
   "plan", "country", "created_at", "revenue")
VALUES
  (57, 'Kate Morrison', 'customer.57@example.com',
   'trial', 'Starter', 'Canada',
   '2026-03-02 10:14:00', 0);

Why this is rare

Most clients protect you before a statement runs: a confirmation dialog, a preview of the SQL. That helps until the moment you confirm the wrong thing. Stash works after the commit. Because the original values are read from the database inside the same transaction, the recovery SQL is exact, including NULLs, JSON, binary values and large integers. Generated columns are left out so the statements run cleanly.

What it will not do

  • Rollback is a new write. If someone else changed the row after you, restoring the old values overwrites their change too, which is why you review first.
  • Triggers and cascades that fired with the original statement are not reversed.
  • Capture adapters today: PostgreSQL, MySQL, SQLite and DuckDB. Other engines refuse writes while Stash is on rather than pretending.
  • Manual SQL is covered for single-table UPDATE and DELETE with literal values and a WHERE clause of AND-joined comparisons. Anything QueryBench cannot prove safe is rejected before it runs.
  • Stash is opt-in in Settings and is not a backup. For that, use complete backups.
Settings panel with Enable stash and a retention field in minutes
Stash panel with copy statements, open recovery SQL and clear stash actions

Left: turn Stash on in Settings and pick a retention window. Right: the Stash panel with recovery SQL ready to copy or open in a query tab.

Difference two

Complete backups, straight to S3

A table export is not a backup. QueryBench runs the engine's own backup tool, keeps the archive on disk, and can ship it to S3 or any compatible store without a separate script.

  1. 1

    Native tools, real backups

    PostgreSQL uses pg_dump, MySQL uses mysqldump with routines, triggers and events, SQLite takes a consistent VACUUM INTO snapshot, DuckDB runs EXPORT DATABASE. Restores work with the engine's own tools.

  2. 2

    One gzip archive, finished before anything uploads

    The backup streams into a single local file, is synced to disk, and only then is eligible for upload. Partial files never leave your machine and are removed if a backup is cancelled or fails.

  3. 3

    Optional S3 upload, retry without redoing the dump

    Point it at a bucket, region and prefix, or any S3-compatible endpoint over HTTPS. Uploads use signed multipart requests with bounded concurrency. If the upload fails, retry from the completed local archive.

  4. 4

    Credentials stay in the keychain

    Access keys and session tokens are saved per connection in the operating-system credential store. They are never returned to the interface, written to JSON, or included in connection archives.

Back up database panel with Local file only selected and a local backup folder
Back up database panel with Local file and S3 upload selected, showing bucket, region and credentials fields
EngineBackup methodArchive
PostgreSQLpg_dump plain SQL for the selected database.sql.gz
MySQLmysqldump with routines, triggers and events.sql.gz
SQLiteConsistent VACUUM INTO snapshot.sqlite.gz
DuckDBNative EXPORT DATABASE with schema and data.tar.gz

MongoDB, Redis and ClickHouse do not claim complete backup support yet. QueryBench never labels a table export as a backup.

The smaller differences

Android and iOS, included

Both phone apps run the real Go database adapters on the device and keep passwords in the platform keychain. Every license covers one active device per key, and you can move that license between your computer and phone.

An MCP server, not a plugin API

Turn it on and any MCP-capable agent can list databases, describe tables and run paginated queries. It binds to loopback, needs a per-session token, and cannot unlock a No-Edit connection.

Updates that do not expire

Every QueryBench license is a one-time purchase that keeps receiving updates. Teams buy the same license, one per person, and never pay again for the people they already covered.

Coming from TablePlus?

QueryBench imports TablePlus connection archives, including the encrypted ones, so your saved connections come with you.