Releases: typedb/typedb-driver
TypeDB Driver 2.24.15
Documentation: https://typedb.com/docs/clients/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/clients/rust-driver
cargo add typedb-driver@2.24.15Java driver
Available through https://repo.vaticle.com
Documentation: https://typedb.com/docs/clients/java-driver
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>2.24.15</version>
</dependency>
</dependencies>Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/clients/python-driver
Available through https://pypi.org
pip install typedb-driver==2.24.15
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/clients/nodejs-driver
npm install typedb-driver@2.24.15
API changes
Backwards compatible: no
This version uses a new network protocol encoding, version 2.
All drivers:
- Installation and renaming: The 'client' is now universally replaced by 'driver'. Installable packages are now called 'typedb-driver' instead of 'typedb-client'
a. Java driver is now split into two maven artifacts: JNI and Driver libraries - Rename: use new terminology of 'enterprise' instead of 'cluster' throughout driver
- Merged interfaces: The Core and Enterprise interface have been merged. This means
UserManageris now accessible from a Core driver instance, but will throw an exception of the TypeDB server does not support the feature. - Replace Types with Methods: Concepts no longer have 'remote' and 'local' variants: all concepts are 'local'. However, methods that reach over the network for example
setHas()now take a transaction as their first argument:setHas(tx, attribute). All methods that take a transaction as their first argument behave the same "remote" concepts did previously calling the same method. - Replace overloads with arguments: Concept API methods that have 'explicit variants, such as
getSubtypesandgetSubtypesExplicit, now collapse into one method with argument:getSubtypes(tx, Transitivity.EXPLICIT|Transitivity.TRANSITIVE)
Python:
- Replace explicit get/set with properties: Interface for Options now uses properties, as well as taking named arguments in the constructor
- Property instead of Getter: Managers (ConceptManager, QueryManager, LogicManager, UserManager) are now accessible directly instead of using methods: eg.
tx.query.insert(...)instead oftx.query().insert(...)
Node:
- Property instead of Getter: Managers (ConceptManager, QueryManager, LogicManager, UserManager) are now accessible directly instead of using methods: eg.
tx.query.insert(...)instead oftx.query().insert(...)
Java:
- Change return type: All methods that returned 'Future's are now blocking and return after the operation finishes
Architectural Changes
We have centralised all TypeDB Driver libraries into this repository. This will make maintanance and development much simpler across the wide surface area exposed by the drivers.
New Features
-
Rearchitect Rust Driver to support full TypeDB feature set
-
Extend Rust Driver to support FFI
-
Create SWIG rules to generate C compatibility layer & C Driver
-
Create SWIG rules for Python and Java
-
Reimplement Java Driver using JNI over Rust
-
Reimplement Python Driver using FFI over Rust
-
Update TypeDB NodeJS Driver to the latest feature set
Bugs Fixed
-
Set release compilation mode to optimized
We set the Bazel compilation mode for releases to
optto ensure that native-wrapped driver is maximally performant.
Code Refactors
-
Create unified network API for Core and Enterprise
-
Simplify Concept API by parametrizing methods with enum arguments
-
Delete Remote Concept API
Other Improvements
-
Update pest 2.4.0 => 2.7.4
We update to pest and pest-derive v2.7.4, which among other things purports to fix the error where deriving Parser fails on "undeclared crate or module
alloc" (pest-parser/pest#900).Synchronise changes for release into the development branch.
-
Update README.md
-
New issue template: Language Driver Request
We added a new issue template for requesting a language to support.
-
Unpack native libraries into a temporary directory instead of current directory
TypeDB Client Java 2.18.1
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.18.1</version>
</dependency>
</dependencies>New Features
Bugs Fixed
-
Split client construction and connection validation
To prevent null pointer errors during failover tasks being executed, we go back to the previous model of first creating a client, then opening and validating the connection.
Code Refactors
Other Improvements
TypeDB Client Java 2.18.0
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.18.0</version>
</dependency>
</dependencies>New Features
-
Introduce protocol versioning
We use a new protocol API to perform a "connection open". This API does server-side protocol version compatibility checks, and also replaces our previous need to do a generic RPC call to check that the network is available.
The user will receive an error about a protocol version mismatch if they are using a client-server combination that are not using exactly compatible protocols.
- The server will raise an error if the client tries to connect with a mismatching protocol version
- The client will raise an error if it tries to connect to the server and the server does not have that API
Both errors imply a client-server mismatch and the error will suggest this as a fix.
This change depends on typedb/typedb-protocol#185, which means that this client now implements protocol version 1.
-
Introduce Values to support expressions
Introduce the 'Value' type, which is returned as the result of an expression's computation. This change follows from typedb/typeql#260, which outlines the capabilities of the new expression syntax.
Values (representing any of Long, Double, Boolean, String, or DateTime) are returned as part of
ConceptMapanswers and are subtypes ofConceptfor the time being. Their main API is made of the.getValue()method and.getValueType()method, along with all the standard safe downcasting methods to convert aConceptinto aValue, usingConcept.isValue()andConcept.asValue().We also move the import location of
ValueTypefrom being nested inAttributeTypetoConceptand remove some APIs such asisKeyablefrom them. -
Check BDD value equality using native types
In BDD steps implementation we checked the equality of all values through the conversion to
Strings. It might be incorrect when comparingDoubles especially if one of these values is a result of arithmetics.
Now we compareDoubles by their absolute error.
For consistency we compare all values using their native types equality. -
Support generalised annotations and uniqueness
We update the Typedb Protocol and TypeQL to the latest versions, which support the uniqueness annotation and generalised
TypeAPIs. These generalised APIs allow querying by a set of annotations, rather than just boolean =true|false.For example:
AttributeType.getOwners(boolean onlyKey)becomesAttributeType.getOwners(Set<TypeQLToken.Annotation> annotations)all usages of boolean flags to indicate key-ness should be replaced by using
TypeQLToken.Annotation.KEY. The new@uniqueannotation is available as the tokenTypeQLToken.Annotation.UNIQUE. -
Add behaviour test step definition for retrieving the currently connected user
We've added a behaviour test step
get connected userin line with changes made in typedb/typedb-behaviour#247
Bugs Fixed
Code Refactors
Other Improvements
-
Update release notes workflow
We integrate the new release notes tooling. The release notes are now to be written by a person and committed to the repo.
-
Update BDD steps to reflect new annotation clause commas
-
Add build cache to build-dependency job
-
Add remote cache setup to ci tools
-
Use bazel cache for snapshot deployment jobs
-
Increase JSON serialisation test size
-
Enable the bazel cache
TypeDB Client Java 2.17.1
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.17.1</version>
</dependency>
</dependencies>New Features
Bugs Fixed
Code Refactors
Other Improvements
- Update TypeQL to 2.17.0
TypeDB Client Java 2.17.0
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.17.0</version>
</dependency>
</dependencies>New Features
-
TypeDB Cluster Authentication Behaviour Tests
We've added behaviour tests for password policy complexity and expiration to TypeDB Cluster.
Following new methodology which isolates the test runners made in typedb-common, we've increased the Bazel test timeout to 30 minutes. Previously this wasn't necessary as we would re-use the runners between runs following a 'cleaning' step, but not rebooting the runner. Given each boot of TypeDB takes 3-4 seconds, the 97 scenarios in the match behaviour file would take ~339.5 seconds in booting time alone, exhausting the default Bazel test limit of 300 seconds.
Now we take a more comprehensive approach, deleting all of the state stored in TypeDB between runs and allowing runners to be reset. This is more correct, but it takes more time.
-
Add API to retrieve current user
Add an API to be able retrieve the currently authenticated user.
-
Concept map JSON serialization
We implement the JSON serialization of concept maps according to typedb/typedb-behaviour#238.
Bugs Fixed
Code Refactors
-
Define password expiry in terms of seconds
We've redefined the way we expose how long until a password expires in seconds, rather than days as was done previously.
-
JSON serialization fixes
We update the BDD test steps to reflect the changes in typedb-behaviour (typedb/typedb-behaviour#240).
Other Improvements
-
Implement new BDD connection opening syntax
We implement the new BDD connection/user connection syntax set up in typedb/typedb-behaviour#244.
-
Update dependencies for 2.17.0 release
Update all Vaticle dependencies to prepare for the next 2.17.0 release.
TypeDB Client Java 2.16.1
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.16.1</version>
</dependency>
</dependencies>New Features
-
Cluster password policy and user management support
Add functionality relevant to the changes made in typedb/typedb-cluster#456:
- Optional password expiry in days for each user.
- The ability for admins to set passwords of other users
- User password update, which requires old and new password
Bugs Fixed
Code Refactors
Other Improvements
-
Trigger release
-
Update VERSION to 2.16.1 and dependencies
-
Bumped @vaticle_typedb_common
Bumped dependency so that changes made in typedb/typedb-common@b5475e4 could be propagated to typedb-iam.
-
Bump @vaticle_dependencies
TypeDB Client Java 2.14.3
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.14.3</version>
</dependency>
</dependencies>New Features
Bugs Fixed
Code Refactors
-
Use latest typedb artifact
We updated the
typedbartifact to the latest released version2.14.3.
Other Improvements
-
Update VERSION to 2.14.3
-
Implement cluster-capable schema retrieval
-
Add transitive dependency on netty-handler to the connection package
In line with bumping our netty dependencies (typedb/typedb-dependencies#415), we need to include a transitive dependency that has been introduced on netty's side between the version we used to depend on and the version we now depend on.
TypeDB Client Java 2.14.2
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.14.2</version>
</dependency>
</dependencies>New Features
Bugs Fixed
Code Refactors
Other Improvements
-
Bump behaviour repo
-
bump VERSION to 2.14.2
-
Update TypeQL to 2.14.0
TypeDB Client Java 2.14.0
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.14.0</version>
</dependency>
</dependencies>New Features
Bugs Fixed
Code Refactors
Other Improvements
-
Update TypeQL to 2.14.0
-
Bump VERSION to 2.14.0
-
Improve getSchemaExceptions() to return TypeDBException that contains code and message
-
Bump @vaticle_typedb_artifact
-
Add GetSchemaExceptions to ConceptManager API
TypeDB Client Java 2.12.0
Documentation: http://docs.vaticle.com/docs/client-api/java
Distribution
Available through https://repo.vaticle.com
<repositories>
<repository>
<id>repo.vaticle.com</id>
<url>https://repo.vaticle.com/repository/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.vaticle.typedb</groupid>
<artifactid>typedb-client</artifactid>
<version>2.12.0</version>
</dependency>
</dependencies>New Features
Bugs Fixed
-
Serialise queries without pretty printing
To avoid injecting unintended tab characters into user attributes containing new lines, we utilise TypeQL's new unformatted to string conversion for serialising queries to the server.
Code Refactors
-
Clean up maven related statements in WORKSPACE
Group maven related statements together and add
mavento all imported maven artifact aliases in the WORKSPACE file for clarity.
Other Improvements
-
Remove vaticle_typeql_lang hanging dependency
-
Update VERSION to 2.12.0
-
Bump factory-tracing to released version
-
Fix for deploying to GitHub, bump dependencies
We've fixed the job involving deploying to GitHub and bumped dependencies in preparation for a release.
-
Migrate to Factory
We've migrated our continuous integration for this repo to Vaticle Factory from Grabl.
-
Refactored 'isAbstract' to be a local field in Type as opposed to remote method
-
rename .grabl to .factory
-
Bump @vaticle_typedb_artifact
-
Bump @vaticle_typedb_artifact
-
Remove * imports
-
Bump @vaticle_typedb_artifact
-
Bump @vaticle_typedb_artifact
-
Add getPlayerTypesExplicit() to RoleType
-
Bump @vaticle_typedb_artifact (temporarily)
-
*Introduce RoleType.getRelationsInstances() and Explicit()
-
Introduce RoleType.getPlayerInstances() and getPlayerInstancesExplicit(), and rename getPlayers() to getPlayerTypes()
-
Bump @vaticle_typedb_protocol
-
Bump @vaticle_typedb_common
-
Fixed automation.yml to refer to the new typeql repo
-
Fixed TypeDBTransaction.onClose() to take in multiple callbacks
-
Extend license checkstyle tests and update licenses
We introduce a test that ensures that the license text is correct.