12 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.
Upcoming
This release overhauls sq
's config mechanism.
Added
sq config get
prints config. DOCSsq config location
prints the location of the config dir.--config
flag is now honored globally.
Changed
- Envar
SQ_CONFIG
replacesSQ_CONFIGDIR
.
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.