Skip to content

Release v0.4.0

Compare
Choose a tag to compare
@Stebalien Stebalien released this 11 Feb 00:55
· 85 commits to master since this release
b72ac7e

This is a major release only because it includes some breaking changes to previously unspecified behavior in the query logic to align it with expectations.

Prefixes

Prefixes in queries will now be cleaned (you may need to update your datastores for this).

Additionally, querying with a prefix /foo will now:

  • Match anything under /foo (including /foo/bar, etc.).
  • Not match /foo.
  • Not match /foobar.

This is what users want 90% of the time. Previously, one had to use the prefix /foo/ to mean "anything strictly under /foo. However, due to how key cleaning works, turning /foo/ into a datastore key would result in /foo (which included /foo and /foobar).

Mounts

Put: Given mounts at /foo and / in a mounted datastore, puts to /foo will now go in the / datastore, not /foo. Previously, puts to /foo would been written to / in the child datastore which isn't a valid key in many datastores.

Query: Previously, querying for the prefix /foo/ on a datastore with mounts /foo and / would search both datastores. However, keys starting with /foo living in / shouldn't be visible when another datastore is mounted at /foo.

Documentation

The behavior and edge cases of datastores is now better documented (and tested).