11 KiB
CHANGELOG
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v0.33.0 - 2023-04-15
The headline feature is source groups.
This is the biggest change to the sq
CLI in some time, and should
make working with lots of sources much easier.
Added
- #192:
sq
now has a mechanism to group sources. A source handle can now be scoped. For example, instead of@sakila_prod
,@sakila_staging
, etc, you can use@prod/sakila
,@staging/sakila
. Usesq group prod
to set the active group (whichsq ls
respects). See docs. sq group GROUP
sets the active group toGROUP
.sq group
returns the active group (default is/
, the root group).sq ls GROUP
lists the sources inGROUP
.sq ls --group
(orsq ls -g
) lists all groups.sq mv
moves/renames sources and groups.
Changed
sq ls
now shows the active item in a distinct color. It no longer adds an asterisk to the active item.sq ls
now sorts alphabetically when using--table
format.sq ls
now shows the sources in the active group only. But note that the default active group is/
(the root group), so the default behavior ofsq ls
is the same as before.sq add hello.csv
will now generate the handle@hello
instead of@hello_csv
. On a second invocation, it will return@hello1
instead of@hello_csv_1
. Why this change? Well, with the availability of the source group mechanism, the_
character in the handle somehow looked ugly. And more importantly,_
is a relative pain to type.sq ping
has changed to support groups. Instead ofsq ping --all
, you can dosq ping GROUP
, e.g.sq ping /
.
v0.32.0 - 2023-04-09
Added
-
#187: For
csv
sources,sq
will now try to auto-detect if the CSV file has a header row or not. Previously, this needed to be explicitly specified via an awkward syntax:$ sq add ./actor.csv --opts=header=true
This change makes working with CSV files significantly lower friction. A command like the below now almost always works as expected:
$ cat ./actor.csv | sq .data
Support for Excel/XLSX header detection is in #191.
Fixed
-
sq
is now better at detecting the (data) kind of CSV fields. It now more accurately distinguishes betweenDecimal
andInt
, and knows how to handleDatetime
. -
#189:
sq
now treats CSV empty fields asNULL
.
v0.31.0 - 2023-03-08
Added
- #173: Predefined variables via
--arg
flag (docs):$ sq --arg first TOM '.actor | .first_name == $first'
Changes
- Use
--md
instead of--markdown
for outputting Markdown.
Fixed
- #185:
sq inspect
now better handles "too many connections" situations. go.mod
: Moved tojackc/pgx
v5
.- Refactor: switched to
slog
logging library.
v0.30.0 - 2023-03-27
Added
- #164: Implemented
unique
function (docs):
This is equivalent to:$ sq '.actor | .first_name | unique'
SELECT DISTINCT first_name FROM actor
- Implemented
count_unique
function (docs).$ sq '.actor | count_unique(.first_name)'
Changed
- The
count
function has been changed (docs)- Added no-args version:
.actor | count
equivalent toSELECT COUNT(*) AS "count" FROM "actor"
. - BREAKING CHANGE: The "star" version (
.actor | count(*)
) is no longer supported; use the naked version instead.
- Added no-args version:
- Function columns are now named according to the
sq
token, not the SQL token.# previous behavior $ sq '.actor | max(.actor_id)' max("actor_id") 200 # now $ sq '.actor | max(.actor_id)' max(.actor_id) 200
v0.29.0 - 2023-03-26
Added
- #162:
group_by
now accepts function arguments.
Changed
- Renamed
groupby
togroup_by
to match jq. - Renamed
orderby
toorder_by
to match jq.
v0.28.0 - 2023-03-26
Added
- #160: Use
groupby()
to group results. See query guide.
v0.27.0 - 2023-03-25
Added
- #158: Use
orderby()
to order results. See query guide.
v0.26.0 - 2023-03-22
Added
- #98: Whitespace is now allowed in SLQ selector names. You can
do
@sakila | ."film actor" | ."actor id"
.
Fixed
- #155:
sq inspect
now populatesschema
field in JSON for MySQL, SQLite, and SQL Server (Postgres already worked).
v0.25.1 - 2023-03-19
Fixed
- #153: Improved formatting of text table with long lines.
v0.25.0 - 2023-03-19
Added
- #15: Column Aliases. You can now change specify an alias for a column (or column expression
such as a function). For example:
sq '.actor | .first_name:given_name
, orsq .actor | count(*):quantity
. - #151:
sq add
now has a--active
flag, which immediately sets the new source as the active source.
v0.24.4 - 2023-03-15
Fixed
- Fixed typos in
sq sql
command help.
v0.24.3 - 2023-03-14
Added
- When a CSV source has explicit column names (via
--opts cols=A,B,C
),sq
now verifies that the CSV data record field count matches the number of explicit columns.
v0.24.2 - 2023-03-13
Fixed
- #142: Improved error handling when Postgres
current_schema()
is unavailable.
v0.24.1 - 2023-03-11
Fixed
- #144: Handle corrupted config active source.
v0.24.0 - 2022-12-31
Added
sq ping
now respects--json
flag.
Fixed
- Improved handling of file paths on Windows.
v0.23.0 - 2022-12-31
Added
sq ls
now respects--json
flag.sq rm
now respects--json
flag.sq add
now respects--json
flag.`- CI pipeline now verifies install packages after publish.
Changed
sq rm
can delete multiple sources.sq rm
doesn't print output unless--verbose
.- Redacted snipped is now
xxxxx
instead of****
, to match stdliburl.URL.Redacted()
.
Fixed
- Fixed crash on Fedora systems (needed
--tags=netgo
).
v0.21.3 - 2022-12-30
Added
sq version
respects--json
flag.sq version
respects--verbose
flag.sq version
showslatest_version
info when--verbose
and there's a newer version available.
Changed
sq version
shows less info when--verbose
is not set.
v0.20.0 - 2022-12-29
Added
sq
now generates manpages (and installs them).
v0.19.0 - 2022-12-29
Added
- Installer for Arch Linux, via Arch User Repository.
v0.18.2 - 2022-12-25
Added
- The build pipeline now produces
.apk
packages for Alpine Linux, andinstall.sh
has been updated accordingly. However, the.apk
files are not yet published to a repository, so it's necessary to runapk
against the downloaded.apk
file (install.sh
does this for you).
v0.18.0 - 2022-12-24
Added
- #95:
sq add
now has a--password
(-p
) flag that prompts the user for the data source password, instead of putting it in the location string. It will also read from stdin if there's input there.
v0.17.0 - 2022-12-23
Changed
- More or less every
go.mod
dependency has been updated to latest. This includes drivers forsqlite
andsqlserver
. The driver updates led to some broken things, which have been fixed.
v0.16.1 - 2022-12-23
Fixed
- #123: Shell completion is better behaved when a source is offline.
v0.16.0 - 2022-12-16
Added
--verbose
flag is now globalinstall.sh
install script.
Changed
- Improved GH workflow
sq inspect
shows less output by default (use-v
to restore previous behavior)
Fixed
sq inspect
can now deal with Postgres sources that have null values for constraint fields
v0.15.11 - 2022-11-06
Changed
- Yet more changes to GitHub workflow.
v0.15.4 - 2021-09-18
Changed
- Bug fixes
v0.15.3 - 2021-03-13
Changed
- #91: MySQL driver options no longer stripped
v0.15.2 - 2021-03-08
Changed
- #89: Bug with SQL generated for joins.