github vaticle/typedb 2.14.0
TypeDB 2.14.0

latest releases: 2.28.0, 2.28.0-rc0, 2.27.0...
17 months ago

Install & Run: http://docs.vaticle.com/docs/running-typedb/install-and-run

New Features

  • Parallelise rule validation

    We parallelise the rule re-validation that occurs on schema commit, and can yield a 2-5x speedup of commits of schemas with many rules.

  • Disjunctions in rules
    Add support for disjunctions in the rule conditions.

Bugs Fixed

  • Simplify isolation manager

    We discover that a ConcurrentSkipListMap does not implement locking/atomic compute operations. This behaviour was relied on to implement Isolation Manager's cleanup of transaction state, and errors could manifest as concurrent modification exceptions. To fix this, we refactor the IsolationManager with a simpler state model to optimally allow both isolation validation and deletion.

  • Prevent planning deadlocks while planning disconnected subqueries

    We fix an intermittent deadlock that occurs when running disjoint queries (e.g. match $x isa person; $y isa company;).

Code Refactors

  • Planning and statistics are logged on TRACE

    To reduce the verbosity of the debug level, the query planner status and the TypeDB/Rocks statistics are logged on TRACE instead. This should help tests, which are run in DEBUG, be much more readable.

  • Apply naming conventions to docker deployment targets

    We apply the existing naming conventions for deployment rules and deployment repositories for docker container targets.

Other Improvements

  • Optimise traversal over non-retrieved variables

    Query plans which retrieve a tail sequence of vertices to visit, which are not in the user's query filter, can short-circuit their backtracking after a full answer is found. This means only permutations of vertices up to the last retrieved vertex are generated. This can dramatically speed up large queries in which only a few variables are retrieved. This also noticably speeds up rule validation, where only a few variables of the when need to be retrieved.

  • Avoid division by zero in reasoner planner
    Correctly handle code-paths with division so the case where the divisor may be zero.

  • Unset overridden when replacing pre-existing type edges

    We introduce a new API that allows removing the overridden types on a Type edge. This is used to fix a class of bugs that expected edge "overwrite" behaviour in the type graph to unset overridden types on edges, but actually encounter "put" behaviour, meaning the overridden type is never replaced if the edge pre-existed.

  • Fix the overwriting of owns edges

    We fix the overwriting of owns edges in the type graph by explicitly deleting pre-existing owns edges from the type vertex. In addition, we fix the conceptual model of type-edge equality functions by removing the actual java type from the equality function definitions, allowing persisted and buffered edges to be treated as equal.

Don't miss a new typedb release

NewReleases is sending notifications on new releases.