Download Latest Version v0.23.1 source code.tar.gz (471.4 kB)
Email in envelope

Get an email when there's a new version of River SQL

Home / v0.23.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2025-06-04 4.6 kB
v0.23.0 source code.tar.gz 2025-06-04 471.0 kB
v0.23.0 source code.zip 2025-06-04 654.9 kB
Totals: 3 Items   1.1 MB 1

⚠️ Internal APIs used for communication between River and River Pro have changed. If using River Pro, make sure to update River and River Pro to latest at the same time to get compatible versions. River v0.23.0 is compatible with River Pro v0.15.0.

Terminal UI: @almottier wrote a very cool terminal UI for River featuring real-time job monitoring with automatic refresh, job filtering, a job details view providing detailed information (plus look up by ID in the UI or by command line argument), and job actions like retry and cancellation. And as good as all that might sound, go take a look because it's even better in person.

Added

  • Preliminary River driver for SQLite (riverdriver/riversqlite). This driver seems to produce good results as judged by the test suite, but so far has minimal real world vetting. Try it and let us know how it works out. PR [#870].
  • CLI river migrate-get now takes a --schema option to inject a custom schema into dumped migrations and schema comments are hidden if --schema option isn't provided. PR [#903].
  • Added riverlog.NewMiddlewareCustomContext that makes the use of riverlog job-persisted logging possible with non-slog loggers. PR [#919].
  • Added RequireInsertedOpts.Schema, allowing an explicit schema to be set when asserting on job inserts with rivertest. PR [#926].
  • When using a driver that doesn't support listen/notify, producers within same process are notified immediately of new job inserts and queue changes (e.g. pause/resume) without having to poll when non-transactional variants are used (i.e. Insert instead of InsertTx). PR [#928].
  • Added JobListParams.Where, which provides an escape hatch for job listing that runs arbitrary SQL with named parameters. PR [#933].

Changed

  • Optimized the job completer's query JobSetStateIfRunningMany, resulting in an approximately 15% reduction in its duration when completing 2000 jobs, and around a 15-20% increase in riverbench throughput. PR [#904].
  • TimeStub has been removed from the rivertest package. Its original inclusion was entirely accidentally and it should be considered entirely an internal API. PR [#912].
  • When storing job-persisted logging with riverlog, if a work run's logging was completely empty, no metadata value is stored at all (previously, an empty value was stored). PR [#919].
  • Changed the internal integration APIs for River Pro. River Pro users must upgrade both libraries as part of this update. PR [#929].

Fixed

  • Resuming an already unpaused queue is now fully an no-op, and won't touch the row's updated_at like it (unintentionally) did before. PR [#870].
  • Suppress an error log line from the producer that may occur on normal shutdown when operating in poll-only mode. PR [#896].
  • Added missing help documentation for CLI command river migrate-list. PR [#903].
  • Correct handling an explicit schema in the reindexer maintenance service. PR [#916].
  • Return specific explanatory error when attempting to use JobListParams.Metadata with JobListTx on SQLite. PR [#924].
  • The reindexer now skips work if artifacts from a failed reindex are present under the assumption that if they are, a new reindex build is likely to fail again. Context cancel timeout is increased from 15 seconds to 1 minute, allowing more time for reindexes to finish. Timeout becomes configurable with Config.ReindexerTimeout. PR [#935].
  • Accessing Client.PeriodicJobs() on an insert-only client now panics with a more helpful explanatory error message rather than an unhelpful nil pointer panic. PR [#938].
  • Return an error when adding a new queue at runtime via the QueueBundle if that queue was already added. PR [#929].
Source: README.md, updated 2025-06-04