You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.