Release v0.4.0
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).