Added
- 🐥 #444: New driver for rqlite, the lightweight distributed database built on SQLite.
- #441: Revamped secrets handling. Source credentials no longer need to live as plaintext in
sq.yml: source locations accept${scheme:path}placeholders that are resolved at connect time, and secrets are consistently redacted in output unless you opt in to disclosure.- #714: Supported placeholder resolvers:
- OS keychain:
${keyring:3d28xd3jcr} - Environment variables:
${env:DB_PASSWORD} - File contents:
${file:/run/secrets/db_pw} - 1Password:
${op://Private/sakila/dsn}
- OS keychain:
- #717, #729: New global flags:
- #716:
sq config exportdumps the active config to YAML, primarily for backups. With--expand, placeholders are resolved in-line, making the export a self-contained (but plaintext) snapshot.
- #714: Supported placeholder resolvers:
- #660:
sq inspectgainedsvg-erdandpng-erdoutput formats that render the schema ERD directly to.svgor.pngimage files.- Uses an embedded Graphviz engine (via goccy/go-graphviz): the generated images are not the prettiest, but it's a start.
- #846: New
format.decimaloption and--format.decimalflag (string|number) controlling whether decimal values render as quoted strings or bare numbers in JSON and YAML output.
Changed
- #851: In colored output, structural punctuation is now rendered muted rather than bold, so values stand out.
- #846: YAML now renders decimal values as quoted strings by default, matching JSON. Set
format.decimal=numberto restore bare numbers. - ☢️ #594:
avg()now returns a consistentfloaton every SQL driver. Breaking for Postgres and MySQL, which previously returned a lossless decimal. - ☢️ #839, #853:
sum()over an integer or decimal column now returns a consistentdecimalon every SQL driver, rendered in JSON as a quoted string (e.g."20100"). - #610: The DuckDB driver now opens sources read-only for non-writing commands, and
sq sqlgained a--readonly(alias--ro) flag. - ☢️ #728, #782: The
redactconfig option is renamed tosecrets.revealwith inverted polarity; existing configs are migrated automatically (after a backup). - #692:
sq inspect -f mermaid-erdnow syntax-colors itserDiagramsource when writing to a terminal. - #758: For SQLite (and rqlite) sources,
sq tbl copynow copies the source table's indexes and triggers to the destination.
Fixed
- #851: Two fixes to
yamloutput: a numeric value from an untyped column is now colorized, and aBLOBvalue is now encoded as base64. - #844: On Oracle, a query whose result is a computed
NUMBERwith a fractional value no longer fails with a scan error; such numbers are now typed asdecimal. - #594: On SQL Server,
avg()over an integer column no longer performs integer division and truncates the result. - #741, #743:
sq addshell completion now supports ClickHouse and Oracle. - #699:
sq inspecton SQLite sources no longer executes pragmas that write to the database or scan the whole file, which could make each inspect painfully slow. - #720: Fixed SQLite driver path handling for source locations with connection params (e.g.
sqlite3:///path/to/db?mode=ro). - #750, #752, #757, #759: A batch of fixes to the
CREATE TABLEDDL rewriting that backs table copy and column-kind alteration on the sqlite3 driver. - #783:
sq db dump clusterno longer writes the database password to the sq log file. - #783:
sq cache clear @srcnow clears every cache dir belonging to the source, including stale dirs left over from a changed location, schema, or ingest options. - #783:
sq addandsq mvno longer permit a source handle nested below an existing source's handle. - #821: On the SQLite and rqlite drivers, renaming a table, adding a column, or truncating it no longer fails when a table or column name contains a double quote.
- #834: On the ClickHouse driver, a result-column name containing a dot is no longer truncated to the segment after the last dot.
Full Changelog: v0.53.0...v0.54.0