{"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/3.22", "id": 56875206, "node_id": "RE_kwDOCGYnMM4DY9jG", "tag_name": "3.22", "target_commitish": "main", "name": "3.22", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2022-01-11T23:44:48Z", "published_at": "2022-01-11T23:49:28Z", "body": "- New [CLI reference](https://sqlite-utils.datasette.io/en/stable/cli-reference.html#cli-reference) documentation page, listing the output of `--help` for every one of the CLI commands. ([#383](https://github.com/simonw/sqlite-utils/issues/383))\r\n- `sqlite-utils rows` now has `--limit` and `--offset` options for paginating through data. ([#381](https://github.com/simonw/sqlite-utils/issues/381))\r\n- `sqlite-utils rows` now has `--where` and `-p` options for filtering the table using a `WHERE` query, see [Returning all rows in a table](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-rows). ([#382](https://github.com/simonw/sqlite-utils/issues/382))", "repo": {"value": 140912432, "label": "sqlite-utils"}, "reactions": null} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/3.21", "id": 56788942, "node_id": "RE_kwDOCGYnMM4DYofO", "tag_name": "3.21", "target_commitish": "main", "name": "3.21", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2022-01-11T02:34:21Z", "published_at": "2022-01-11T02:35:02Z", "body": "CLI and Python library improvements to help run [ANALYZE](https://www.sqlite.org/lang_analyze.html) after creating indexes or inserting rows, to gain better performance from the SQLite query planner when it runs against indexes.\r\n\r\nThree new CLI commands: `create-database`, `analyze` and `bulk`.\r\n\r\nMore details and examples can be found in the [annotated release notes](https://simonwillison.net/2022/Jan/11/sqlite-utils/).\r\n\r\n- New `sqlite-utils create-database` command for creating new empty database files. ([#348](https://github.com/simonw/sqlite-utils/issues/348))\r\n- New Python methods for running `ANALYZE` against a database, table or index: `db.analyze()` and `table.analyze()`, see [Optimizing index usage with ANALYZE](https://sqlite-utils.datasette.io/en/stable/python-api.html#python-api-analyze). ([#366](https://github.com/simonw/sqlite-utils/issues/366))\r\n- New [sqlite-utils analyze command](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-analyze) for running `ANALYZE` using the CLI. ([#379](https://github.com/simonw/sqlite-utils/issues/379))\r\n- The `create-index`, `insert` and `upsert` commands now have a new `--analyze` option for running `ANALYZE` after the command has completed. ([#379](https://github.com/simonw/sqlite-utils/issues/379))\r\n- New [sqlite-utils bulk command](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-bulk) which can import records in the same way as `sqlite-utils insert` (from JSON, CSV or TSV) and use them to bulk execute a parametrized SQL query. ([#375](https://github.com/simonw/sqlite-utils/issues/375))\r\n- The CLI tool can now also be run using `python -m sqlite_utils`. ([#368](https://github.com/simonw/sqlite-utils/issues/368))\r\n- Using `--fmt` now implies `--table`, so you don't need to pass both options. ([#374](https://github.com/simonw/sqlite-utils/issues/374))\r\n- The `--convert` function applied to rows can now modify the row in place. ([#371](https://github.com/simonw/sqlite-utils/issues/371))\r\n- The [insert-files command](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-insert-files) supports two new columns: `stem` and `suffix`. ([#372](https://github.com/simonw/sqlite-utils/issues/372))\r\n- The `--nl` import option now ignores blank lines in the input. ([#376](https://github.com/simonw/sqlite-utils/issues/376))\r\n- Fixed bug where streaming input to the `insert` command with `--batch-size 1` would appear to only commit after several rows had been ingested, due to unnecessary input buffering. ([#364](https://github.com/simonw/sqlite-utils/issues/364))", "repo": {"value": 140912432, "label": "sqlite-utils"}, "reactions": null}