2.2.4 - 2022-02-22
- The
:db/ident
and:id
attributes may now use compound keys.
- Fixed a problem where resolving a pattern on disk will lead to an error if the resolution is empty.
2.2.3 - 2021-11-10
- The
asami.core/entity
function now accepts Connections as well as Databases. This will select the latest database from the connection.
- The third argument to the
asami.storage.Database/entity
function is now required. This change should not affect most users, as this is an internal function and should be accessed withasami.core/entity
, which has not changed.
- Using an entity
:id
will now correctly select and update entities in transactions.
2.2.2 - 2021-10-19
- Added a new
:input-limit
option to transact. When included, the transaction will attempt to keep at or below this number of triples.
2.2.1 - 2021-10-16
- Accepting java.time.Instant objects on the
since
andas-of
database functions.
2.2.0 - 2021-10-10
transact-async
has been added. On the JVM this will return a future that has not yet been completed. There is currently no difference betweentransact
andtransact-async
for ClojureScript.
- Transaction results now includes datoms that reflect the changes to the database, and not the changes requested of the database.
- Calling
delete-database
on an in-memory database URL will clear any open connections of data. If data is transacted into the connection, it will be reattached to the database registry as if it had been freshly opened.
2.1.3 - 2021-09-10
- OR expressions no longer require the same variable bindings for each sub-expression
2.1.2 - 2021-08-18
- Queries now test that projected variables in the
:find
clause appear in the:where
clause. - In memory graphs now how transaction IDs (not yet exposed in public APIs).
- User plans now using the correct return type, so complex queries don't cause errors while testing.
- Multiple bindings in the
:in
clause will now combine correctly during testing.
2.1.1 - 2021-06-28
- Added
asami.core/export-str
. This is a shortcut to convert a data export to a string, suitable forclojure.core/spit
, since the default will write this as a LazySeq label. asami.core/import-data
now accepts anopts
argument, the same way thatedn
readers do. This is used when reading fromedn
text.
- Single-end bindings on transitive constraints applied to memory graphs are now using the unbound form internally to gain log(n) complexity.
- Cleanups to internal code.
- In memory transitive attribute constraints have been fixed for the case of an unbound constraint for a given attribute.
- Boolean values saved to disk no longer create errors when reading back
false
.
2.1.0 - 2021-06-22
- Transactions include resource usage, so resources (files) can be cleaned up after failure.
- Recursive entities now correctly cut the recursion when extracting entities from the graph.
- Shutdown now releases connections. This truncates files to used space only.
- Nodes now serialized using vector notation and without a redundant space. Previous node deserialization still supported.
- Serializing numbers is now smaller.
- Arrays and maps can now be serialized as values. This will show up in the API soon.
- Indexes now share file resources. This has removed 4 files.
2.0.6 - 2021-06-10
- A new CLI for loading data and executing queries. This builds natively with GraalVM.
- Exposing
now
andinstant?
fromasami.core
- Serialization of arrays and maps. This will enable upcoming features.
- An
:id
attribute can now be used as a synonym for:db/ident
. These values are not removed from entities, unlike the:db
attributes.
- Aggregates correctly group even when selections are not sensible.
- Integrating entity code fully into Asami. This is no longer imported from Zuko.
- Minor efficiency improvements to in-memory updates and reads.
- Booleans are now encoded into IDs and no longer serialized.
2.0.5 - 2021-05-27
- Entity conversion to statements is no longer recursive on arrays. This allows for larger arrays.
2.0.4 - 2021-05-07
- Fixed missing functions on read-only trees
2.0.3 - 2021-05-06
- Fixed problem where the internal node IDs were not initializing from saved transactions.
- Imports now update the node ID generator to allocate IDs after imported data.
2.0.2 - 2021-04-28
- Removed multiple extensions for filenames.
- Fixed grouping for some aggregate queries.
2.0.1 - 2021-04-20
- Entity references to top-level entities no longer delete the referenced entity when the reference changes.
- Expanded handling of graph conversion for query objects, including getting the latest database from a connection.
- Updated to Zuko 0.6.4.
- Top level entities now include
:tg/owns
edges to all sub structures that they own.
2.0.0 - 2021-04-08
- Updated to Zuko 0.6.2, core.cache 1.0.207, and ClojureScript 1.10.844.
2.0.0-alpha9 - 2021-04-02
- Locking the transaction file during writes to prevent multiple processes from trying to modify it concurrently.
- Opening files no longer allows variations on paths using . and ..
2.0.0-alpha8 - 2021-03-30
- Addressed concurrency bugs found in the JVM, for both memory-based and durable storage.
- Updated to Zuko 0.6.0. This introduces new portable i/o operations.
2.0.0-alpha7 - 2021-03-20
- Updated to Zuko 0.5.1. This allows arbitrary keytypes for entities.
2.0.0-alpha6 - 2021-03-19
- Updated to Zuko 0.5.0. This means that entities without a temporary ID do not map their new IDs back to themselves in the
:tempids
of transactions. - Zuko no longer brings in the unneeded Cheshire and JacksonXML dependencies.
- Cleaned up reflection in the durable layer, with a 35% speed improvement.
2.0.0-alpha5 - 2021-03-18
count-triple
implemented to scan index tree with reduced block access.
2.0.0-alpha4 - 2021-03-17
- Supporting lookup refs in transactions (thanks to @mk)
- Supporting transitive attributes for durable graphs.
- Fixed some transitive attribute operations that did not handle zero-steps correctly.
- Updated to Zuko 0.4.6. This adds lookup refs to entities in transactions.
2.0.0-alpha3 - 2021-03-10
- Fixed bug that ignored :db/retract statements.
2.0.0-alpha2 - 2021-03-09
- Internal node type. This avoids the need for interning keywords as nodes.
- Added the
asami.Peer
class. This is very early access.
- Updated to Zuko 0.4.4. This shifts the function whitelist into Zuko, and reduces the number of functions referenced in ClojureScript.
- Added functions for
and
andor
.
- Functions from
clojure.string
can now be accessed in Clojure.
2.0.0-alpha - 2021-03-05
- Durable storage provisioned on mapped files.
- Projection styles now work on aggregates
count
,count-distinct
andsample
can work on wildcards.
count
now de-duplicates, andcount-distinct
introduced.
1.2.15 - 2021-02-19
- Bugfix for multigraph entities
1.2.14 - 2021-02-18
- Removed Clojurescript from the dependency tree of the generated artifacts.
1.2.13 - 2021-02-03
- Some Trace and Debug level logging for transactions and queries.
- Moved to Zuko 0.4.0.
1.2.12 - 2021-01-19
- Bindings and Filters are now restricted by default. Introduced
asami.query/*override-restrictions*
flag to avoid restrictions. - Can now filter by operations that are retrieved or calculated per row.
- Added internal API for Connections to expose their transaction ID.
- Added extra API schema in the Connection sources
1.2.11 - 2021-01-12
- Updated schema definition of
core/transact
. This only affected code with schema validation.
1.2.10 - 2021-01-11
- New update-fn argument accepted in
asami.core/transact
to allow direct graph update operations.
1.2.9 - 2021-01-07
- Auto generated connection URIs were malformed, and have been fixed.
1.2.8 - 2020-12-14
- Updated to Zuko 0.3.3 for performance improvement in loading entities.
1.2.7 - 2020-12-03
- Added support for variables to be used as functions in filters. Previously this was only possible in bindings.
1.2.6 - 2020-11-09
- Added
nested?
flag to theentity
function.
1.2.5 - 2020-09-08
- Removed references to dead library code in tests.
1.2.4 - 2020-09-04
- Allowing naga.store/Storage to be used in a query.
- Added support for nil entries, via Zuko.
- Changing to Zuko 0.3.1 for bugfix.
1.2.3 - 2020-09-03
- Supporting empty arrays in entities (via Zuko update)
- Change to internal APIs for improved transactions
1.2.2 - 2020-08-27
- Fixed use of macro as a value in CLJS
delete-database
function.
- Refactored Connections and Databases to sit behind a protocol for abstraction.
1.2.1 - 2020-08-21
- Fixed problem that duplicated optional constraints during query planning.
- Fixed zero steps for transitive paths between nodes.
1.2.0 - 2020-08-19
- User planning can now be selected with query options. Add
:planner :user
to the end of the query arguments. optional
operator, as per the SPARQL OPTIONAL operation.- Added
show-plan
function to observe how a query will be performed.
- Selecting variables as transitive attributes returns a path vector for that column.
- Fixed issue with filter arguments sometimes failing.
- Transitive querying. Now handles unbound path elements better, planning is improved, and zero-steps are properly handled.
- Tuple selector in the
:find
clause now work for single elements, and with empty results. - Single graph element in the
:in
clause now works.
- Attributes can be modified on entities by using the
'
annotation (see Replacement Annotation doc for details) - Arrays in entities can be appended to by using the
+
annotation on attributes (see Append Annotation doc for details) - Queries now accept
_
symbols as wildcards, and accept shortened constraints (not just triples) - Introduce new
:find
clause syntaxes (see Find Clause Description doc for details) - Created documentation for the API, data structures, querying, and creating transactions.
- Entities now represent multi-arity attributes as a set of values. If more than one of an attribute is found, then a set of those values is returned in the entity. Similarly, providing a set will result in using the attribute multiple times in the graph.
- Entity arrays are now returned as vectors and not lists.
- New Datomic-style API
- Implemented Datom object for transaction reporting
- Entity API provided via Zuko
- Introduced Update Annotations