Discussion Forum

TypeDB 2.3.0 is Released

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

New Features

  • Fast relation traversals for rule materialisation
    We dramatically improve the performance of a rule materialisation by implementing a new traversal type and traversal algorithm for relation lookups (when all role players and roles are known)
  • Reasoner Correctness Verification
    We introduce an internal framework for verifying the soundness and completeness of reasoning by comparing with a naive forward-chaining reasoner.

Bugs Fixed

  • Fix TypeQL parser error messages being duplicated
    Previously, when parsing a query failed with an error, on converting the resulting error object to a string, the string would contain two copies of the error message - e.g:
[GQL03] TypeQL Error: There is a syntax error at line 1:
match $x sb thing;
no viable alternative at input 'match $x sb'
[GQL03] TypeQL Error: There is a syntax error at line 1:
match $x sb thing;
no viable alternative at input 'match $x sb'

This is now fixed and error messages are no longer duplicated.
Also, for ease of reading, two newlines now separate “Please check server logs for the stack trace” from the actual error when any error is thrown.

  • Set/unset abstract checks if already abstract
    To make loading a schema that contains abstract idempotent, we first check whether a type is already abstract before trying to set it abstract, and the opposite for unsetting abstractness.
  • Implement scalable import and correct export functionality
    We fix some stability issues in the import and export process that were indicated by #6310. Imports are now also multi-threaded, multi-transactional, and can scales to huge imports without OOM.

Code Refactors

  • Overridable logger
    We’ve made logger instances of classes that are meant for extension overridable.
  • Assert graph planner objective exists
    Assert that a query plan must have an objective function after updating the objective exists – this should help catch a bug in grabl.
  • Use a poller to store answer sources for the reasoner cache
    Within the cache we had a source of new answers as an iterator. We want to poll this store of answers in case more have been added. For this we introduce pollers that can be linked together as new answer sources are found.