Skip to content

v0.19.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 16:31
· 55 commits to main since this release

Added

  • Database context for MySQL and ClickHouse connections, which browse a whole
    server rather than one database. The editor breadcrumb reads
    connection / database / table, where the database is a picker showing what an
    unqualified FROM users resolves against; browsing a table from the tree moves
    the tab into that table's database. The target is per tab, so a split view can
    compare two databases over one connection.
  • Right-click menu in the schema tree: browse a table, open a query bound to a
    namespace, set the active database, and copy a plain or qualified name.
  • Connections can be marked Local, Dev, Staging, or Prod, and the write guards
    follow the marker. Local asks about nothing short of destroying an object, so a
    scratch database stays out of your way; Prod confirms from the first risky
    statement, makes every confirmation typed rather than clicked, and offers no
    "Don't ask again" at all. Unmarked connections behave exactly as before. The
    marker shows as a coloured badge on the connection card and beside the
    connection name, and the connection form guesses one from the host and name.
  • Optional second opinion from your AI agent on a statement a confirmation has
    stopped, for the mistakes a keyword check cannot see: an inverted filter, a
    value that reads wrong against the schema, a join that fans out. Off by
    default, since enabling it sends the statement and a schema summary to the
    configured provider. It is advice and nothing more: it runs nothing, reads no
    rows, and can never unlock or shorten a confirmation, so a slow or mistaken
    model costs you a line of text rather than a table. Settings → Query → Safety.
  • The confirmation for a destructive statement now asks the database how much it
    will touch: "This affects 8,412 rows", or "orders holds 8,412 rows" before a
    DROP TABLE. The count runs over the same table and WHERE clause the
    statement uses, so a predicate that matches more than you expected shows up
    before the run rather than after. It never holds up the dialog: it fills in a
    moment later, gives up after two seconds, and says plainly when it can't tell.

Changed

  • Statements are graded before they run, and the confirmation matches how
    dangerous they actually are. A filtered UPDATE ... WHERE id = 42 or an
    ALTER TABLE ... ADD COLUMN runs uninterrupted; an UPDATE or DELETE with
    no WHERE, a privilege change, or a MERGE stops and says what it noticed
    ("No WHERE clause: this removes every row in orders"); a DROP TABLE or
    TRUNCATE asks you to type the object's name before the run button enables.
    GRANT/REVOKE, CREATE USER, stored-procedure calls,
    ALTER TABLE ... DROP COLUMN, and a WITH query whose CTE writes are now
    caught too, where they used to run unasked.
  • "Don't ask again" now silences only the kind of statement in front of you, so
    hiding the routine prompts no longer hides the one before a DROP DATABASE.
    The query.confirm_destructive setting is replaced by query.confirm_from,
    which takes write, risky, critical, or never and is migrated on first
    launch; confirm_destructive = false becomes critical rather than never,
    since it used to be the only way to stop being asked about ordinary writes.

Fixed

  • A multi-statement script run from the editor (a CREATE TABLE followed by its
    indexes and seed rows, say) executed only its first statement and reported
    success on SQLite, and failed with a bare engine error elsewhere. The whole
    script now runs as one transaction, and the toast reports how many statements
    committed.
  • An unqualified query on a MySQL connection that named no database reported the
    server's bare "No database selected" with no way to act on it. The results pane
    now explains what happened and lists the databases on the server, so picking
    one sets the target and re-runs the query.
  • ClickHouse connections that named no database silently resolved unqualified
    queries against default, even while browsing another database, which could
    return a same-named table's rows rather than an error. The database is now
    explicit and selectable.