-----------
Released 2020-07-13
* Work to reduce the likelihood of "database is locked" errors during updates
(:issue:`175`):
* Prepare entries to be added to the search index
(:meth:`~Reader.update_search`) outside transactions.
* Fix bug causing duplicate rows in the search index
when an entry changes while updating the search index.
* Update the search index only when the indexed values change (details below).
* Use SQLite WAL (details below).
* Update the search index only when the indexed values change.
Previously, any change on a feed would result in all its entries being
re-indexed, even if the feed title or the entry content didn't change.
This should reduce the :meth:`~Reader.update_search` run time significantly.
* Use SQLite's `write-ahead logging`_ to increase concurrency.
At the moment there is no way to disable WAL.
This change may be reverted in the future.
(:issue:`169`)
* Require at least click 7.0 for the ``cli`` extra.
* Do not fail for feeds with incorrectly-declared media types,
if feedparser can parse the feed;
this is similar to the current behavior for incorrectly-declared encodings.
(:issue:`171`)
* Raise :exc:`ParseError` during update for feeds feedparser can't detect
the type of, instead of silently returning an empty feed. (:issue:`171`)
* Add ``sort`` argument to :meth:`~Reader.search_entries`.
Allow sorting search results by recency in addition to relevance
(the default). (:issue:`176`)
* In the web application, display a nice error message for invalid search
queries instead of returning an HTTP 500 Internal Server Error.
* Other minor web application improvements.
* Minor CLI logging improvements.
.. _write-ahead logging: https://www.sqlite.org/wal.html