Releases: typedb/typedb-driver
TypeDB Driver 3.4.0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.4.0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.4.0
New Features
-
Introduce file-based database export and import
Introduce interfaces to export databases into schema definition and data files and to import databases using these files. Database import supports files exported from both TypeDB 2.x and TypeDB 3.x.Both operations are blocking and may take a significant amount of time to execute for large databases. Use parallel connections to continue operating with the server and its other databases.
Usage examples in Rust:
// export let db = driver.databases().get(db_name).await.unwrap(); db.export_to_file(schema_file_path, data_file_path).await.unwrap(); // import let schema = read_to_string(schema_file_path).unwrap(); driver.databases().import_from_file(db_name2, schema, data_file_path).await.unwrap();
Usage examples in Python:
# export database = driver.databases.get(db_name) database.export_to_file(schema_file_path, data_file_path) # import with open(schema_file_path, 'r', encoding='utf-8') as f: schema = f.read() driver.databases.import_from_file(db_name2, schema, data_file_path)
Usage examples in Java:
// export Database database = driver.databases().get(dbName); database.exportToFile(schemaFilePath, dataFilePath); // import String schema = Files.readString(Path.of(schemaFilePath)); driver.databases().importFromFile(dbName2, schema, dataFilePath);
Bugs Fixed
-
Handle "Unexpected response type for remote procedure call: Close" on query stream opening
Fix a rareInternalError
returned by mistake when a client sends a query request while the transaction is being closed. Now, an expected "The transaction is closed and no further operation is allowed." error is returned instead.Additionally, wait for specific transaction responses in
rollback
,commit
, andquery
to solidify the protocol and ensure that the server acts as expected.
Code Refactors
Other Improvements
- Update zlib dependency
Support build on Apple Clang 17+ by updating dependencies (details: typedb/typedb-dependencies#577).
TypeDB Driver 3.4.0-rc0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.4.0-rc0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.4.0rc0
New Features
-
Introduce file-based database export and import
Introduce interfaces to export databases into schema definition and data files and to import databases using these files. Database import supports files exported from both TypeDB 2.x and TypeDB 3.x.Both operations are blocking and may take a significant amount of time to execute for large databases. Use parallel connections to continue operating with the server and its other databases.
Usage examples in Rust:
// export let db = driver.databases().get(db_name).await.unwrap(); db.export_to_file(schema_file_path, data_file_path).await.unwrap(); // import let schema = read_to_string(schema_file_path).unwrap(); driver.databases().import_from_file(db_name2, schema, data_file_path).await.unwrap();
Usage examples in Python:
# export database = driver.databases.get(db_name) database.export_to_file(schema_file_path, data_file_path) # import with open(schema_file_path, 'r', encoding='utf-8') as f: schema = f.read() driver.databases.import_from_file(db_name2, schema, data_file_path)
Usage examples in Java:
// export Database database = driver.databases().get(dbName); database.exportToFile(schemaFilePath, dataFilePath); // import String schema = Files.readString(Path.of(schemaFilePath)); driver.databases().importFromFile(dbName2, schema, dataFilePath);
Bugs Fixed
-
Handle "Unexpected response type for remote procedure call: Close" on query stream opening
Fix a rareInternalError
returned by mistake when a client sends a query request while the transaction is being closed. Now, an expected "The transaction is closed and no further operation is allowed." error is returned instead.Additionally, wait for specific transaction responses in
rollback
,commit
, andquery
to solidify the protocol and ensure that the server acts as expected.
Code Refactors
Other Improvements
TypeDB Driver 3.2.0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.2.0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.2.0
New Features
-
Introduce transaction and query options
Introduce transaction options:transaction_timeout
: If set, specifies a timeout for killing transactions automatically, preventing memory leaks in unclosed transactions,schema_lock_acquire_timeout
: If set, specifies how long the driver should wait if opening a transaction is blocked by an exclusive schema write lock.
Rust examples:
let options = TransactionOptions::new().transaction_timeout(Duration::from_secs(10)); let transaction = driver.transaction_with_options(database.name(), TransactionType::Schema, options).await.unwrap();
Python example:
options = TransactionOptions(transaction_timeout_millis=10_000) tx = driver.transaction(database.name, TransactionType.SCHEMA, options)
Java example:
TransactionOptions transactionOptions = new TransactionOptions().transactionTimeoutMillis(10_000); Transaction transaction = driver.transaction(database.name(), Transaction.Type.SCHEMA, transactionOptions);
Introduce query options:
include_instance_types
: If set, specifies if types should be included in instance structs returned in ConceptRow answers,prefetch_size
: If set, specifies the number of extra query responses sent before the client side has to re-request more responses. Increasing this may increase performance for queries with a huge number of answers, as it can reduce the number of network round-trips at the cost of more resources on the server side.
Rust examples:
let options = QueryOptions::new().include_instance_types(true); let answer = transaction.query_with_options("match $x isa person;", options).await.unwrap();
Python example:
options = QueryOptions(include_instance_types=True) answer = tx.query("match $x isa person;").resolve()
Java example:
QueryOptions queryOptions = new QueryOptions().includeInstanceTypes(true); QueryAnswer matchAnswer = transaction.query("match $x isa person;", queryOptions).resolve();
-
Introduce Rust driver token-based authentication
We update the protocol version and introduce token-based authentication for all the available drivers. Now, instead of sending usernames and passwords for authentication purposes, authorization tokens are implicitly added to every network request to a TypeDB server. It enhances the authentication speed and security.These tokens are acquired as a result of driver instantiation and are renewed automatically. This feature does not require any user-side changes.
Additionally, as a part of the HTTP client introduction work, we rename Concept Documents key style from snake_case to camelCase, which is a common convention for JSONs (it affects only value types:
value_type
->valueType
).
Bugs Fixed
-
Fix incorrect resource ownership transmission in schema retrieval C functions
Fix a crash caused by an incorrect database's ownership acquisition in the C layer of theschema
andtype_schema
functions, affecting Python and Java drivers.Add respective BDD steps implementations for these functions in Rust, Python, and Java.
Code Refactors
Other Improvements
-
Update dependencies
After a recent update of the crates, rustls added aws-lc-rs as a default dependency. This caused runtime issues during loading of the shared library where the dynamic linker could not find some symbols from aws-lc:ImportError: dlopen(.../native_driver_python.so, 0x0002): symbol not found in flat namespace '_aws_lc_0_28_0_EVP_aead_aes_128_gcm'
We decided to force the use of ring as the cryptographic provider for rustls instead.
TypeDB Driver 3.2.0-rc2
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.2.0-rc2</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.2.0rc2
New Features
-
Introduce transaction and query options
Introduce transaction options:transaction_timeout
: If set, specifies a timeout for killing transactions automatically, preventing memory leaks in unclosed transactions,schema_lock_acquire_timeout
: If set, specifies how long the driver should wait if opening a transaction is blocked by an exclusive schema write lock.
Rust examples:
let options = TransactionOptions::new().transaction_timeout(Duration::from_secs(10)); let transaction = driver.transaction_with_options(database.name(), TransactionType::Schema, options).await.unwrap();
Python example:
options = TransactionOptions(transaction_timeout_millis=10_000) tx = driver.transaction(database.name, TransactionType.SCHEMA, options)
Java example:
TransactionOptions transactionOptions = new TransactionOptions().transactionTimeoutMillis(10_000); Transaction transaction = driver.transaction(database.name(), Transaction.Type.SCHEMA, transactionOptions);
Introduce query options:
include_instance_types
: If set, specifies if types should be included in instance structs returned in ConceptRow answers,prefetch_size
: If set, specifies the number of extra query responses sent before the client side has to re-request more responses. Increasing this may increase performance for queries with a huge number of answers, as it can reduce the number of network round-trips at the cost of more resources on the server side.
Rust examples:
let options = QueryOptions::new().include_instance_types(true); let answer = transaction.query_with_options("match $x isa person;", options).await.unwrap();
Python example:
options = QueryOptions(include_instance_types=True) answer = tx.query("match $x isa person;").resolve()
Java example:
QueryOptions queryOptions = new QueryOptions().includeInstanceTypes(true); QueryAnswer matchAnswer = transaction.query("match $x isa person;", queryOptions).resolve();
Bugs Fixed
Code Refactors
Other Improvements
TypeDB Driver 3.2.0-rc0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.2.0-rc0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.2.0rc0
New Features
-
Introduce Rust driver token-based authentication
We update the protocol version and introduce token-based authentication for all the available drivers. Now, instead of sending usernames and passwords for authentication purposes, authorization tokens are implicitly added to every network request to a TypeDB server. It enhances the authentication speed and security.These tokens are acquired as a result of driver instantiation and are renewed automatically. This feature does not require any user-side changes.
Additionally, as a part of the HTTP client introduction work, we rename Concept Documents key style from snake_case to camelCase, which is a common convention for JSONs (it affects only value types:
value_type
->valueType
).
Bugs Fixed
Code Refactors
Other Improvements
-
Update dependencies
After a recent update of the crates, rustls added aws-lc-rs as a default dependency. This caused runtime issues during loading of the shared library where the dynamic linker could not find some symbols from aws-lc:ImportError: dlopen(.../native_driver_python.so, 0x0002): symbol not found in flat namespace '_aws_lc_0_28_0_EVP_aead_aes_128_gcm'
We decided to force the use of ring as the cryptographic provider for rustls instead.
TypeDB Driver 3.1.0
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.1.0</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.1.0
New Features
-
Add Python 3.13 release jobs
TypeDB Driver for Python 3.13 is now officially published. -
Introduce a single driver creation endpoint for all editions of TypeDB
Introduce a single driver creation endpoint for all editions of TypeDB: allnew_core
,new_cloud
,TypeDB.core
,TypeDB.cloud
, and other alternatives in TypeDB drivers now have a singlenew
/driver
method that accepts a single string as an address.Use it for any edition of TypeDB 3.x (Community Edition, Cloud, Enterprise) the following way (check out
README
or driver documentation for full usage examples):
Rust:let driver = TypeDBDriver::new( TypeDBDriver::DEFAULT_ADDRESS, Credentials::new("admin", "password"), DriverOptions::new(false, None).unwrap(), ) .await .unwrap();
Python:
driver = TypeDB.driver(TypeDB.DEFAULT_ADDRESS, Credentials("admin", "password"), DriverOptions())
Java:
Driver driver = TypeDB.driver(TypeDB.DEFAULT_ADDRESS, new Credentials("admin", "password"), new DriverOptions(false, null));
Currently, TypeDB 3.x supports only a single server address, so the list-based method overloading is unnecessary. We plan to preserve the same simplified API after introducing multi-node servers, extending the accepted formats of the input address string instead. Stay tuned for details!
Bugs Fixed
Code Refactors
Other Improvements
-
Fix python example build
-
Update dependencies for the 3.0.1 release
Update dependencies. -
RustFmt
-
Clean up Driver field, update core artifact to 3.0.6
-
Fix checkstyle
-
Check in Cargo.toml files
-
Update Rust version to 1.81.0
TypeDB Driver 3.1.0-rc1
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.1.0-rc1</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.1.0rc1
New Features
-
Add Python 3.13 release jobs
TypeDB Driver for Python 3.13 is now officially published. -
Introduce a single driver creation endpoint for all editions of TypeDB
Introduce a single driver creation endpoint for all editions of TypeDB: allnew_core
,new_cloud
,TypeDB.core
,TypeDB.cloud
, and other alternatives in TypeDB drivers now have a singlenew
/driver
method that accepts a single string as an address.Use it for any edition of TypeDB 3.x (Community Edition, Cloud, Enterprise) the following way (check out
README
or driver documentation for full usage examples):
Rust:let driver = TypeDBDriver::new( TypeDBDriver::DEFAULT_ADDRESS, Credentials::new("admin", "password"), DriverOptions::new(false, None).unwrap(), ) .await .unwrap();
Python:
driver = TypeDB.driver(TypeDB.DEFAULT_ADDRESS, Credentials("admin", "password"), DriverOptions())
Java:
Driver driver = TypeDB.driver(TypeDB.DEFAULT_ADDRESS, new Credentials("admin", "password"), new DriverOptions(false, null));
Currently, TypeDB 3.x supports only a single server address, so the list-based method overloading is unnecessary. We plan to preserve the same simplified API after introducing multi-node servers, extending the accepted formats of the input address string instead. Stay tuned for details!
Bugs Fixed
Code Refactors
Other Improvements
-
Fix python example build
-
Update dependencies for the 3.0.1 release
Update dependencies. -
RustFmt
-
Clean up Driver field, update core artifact to 3.0.6
-
Fix checkstyle
-
Check in Cargo.toml files
-
Update Rust version to 1.81.0
TypeDB Driver 3.0.5
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.0.5</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.0.5
New Features
-
Introduce optional concepts to Concept Rows
get()
andget_index()
interfaces of Concept Rows always return optional Concepts (previously, the Java and Python drivers used to return non-optionalConcept
instances). If the requested variable name or index exists in the column names of a row, but the actual value for this variable is empty, an empty optional value is returned. This is a natural behavior for optionals (coming to TypeDB soon!) and is already useful for queries like (where the variable$empty
won't have values):match not {$empty isa user;}; insert $u isa user, has username "Hi";
If the requested variable name or index does not exist in the column names of a row, an error is returned.
Bugs Fixed
-
Mark query answer accessors as allocating for SWIG to prevent memory leaks in the Python driver
We mark
query_answer_into_rows
andquery_answer_into_documents
as creating a new allocation that needs to be freed by SWIG. Previously, the iterators extracted from theQueryAnswer
would have been ignored by SWIG and not deallocated when the wrapper is freed.
Code Refactors
-
Cleanup driver errors
Query errors are dissolved in the Java and Python drivers.
All the arguments passed to the external interfaces are validated to be non-null and of the correct format (e.g., non-negative forconcept_row.get_index(column_index)
).
Other Improvements
-
Automate README examples updates
Cloud driver usage examples are added to all the available READMEs. Additionally, these examples are officially available in the repo as separate files.
The process of README examples updating is automated by unifying all language updates in a single script. A new CI job is introduced to verify that the README examples are up to date.
TypeDB Driver 3.0.4
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.0.4</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.0.4
NodeJS driver
NPM package: https://www.npmjs.com/package/typedb-driver
Documentation: https://typedb.com/docs/drivers/nodejs/overview
npm install [email protected]
C# driver
NuGet package: https://www.nuget.org/packages/TypeDB.Driver
Documentation: https://typedb.com/docs/drivers/csharp/overview
<ItemGroup>
<PackageReference Include="TypeDB.Driver" Version="3.0.4" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-x64" Version="3.0.4" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-x64" Version="3.0.4" />
<PackageReference Include="TypeDB.Driver.Pinvoke.win-x64" Version="3.0.4" />
<PackageReference Include="TypeDB.Driver.Pinvoke.osx-arm64" Version="3.0.4" />
<PackageReference Include="TypeDB.Driver.Pinvoke.linux-arm64" Version="3.0.4" />
</ItemGroup>
C++ driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-cpp+version:3.0.4
Documentation: https://typedb.com/docs/drivers/cpp/overview
C driver
Compiled distributions comprising headers and shared libraries available at: https://cloudsmith.io/~typedb/repos/public-release/packages/?q=name:^typedb-driver-clib+version:3.0.4
Code Refactors
- Add 'dec' suffix to notation of 'Decimal' type
Add 'dec' suffix to notation of 'Decimal' type
Other Improvements
- Update 3.0 drivers api references
TypeDB Driver 3.0.2
Documentation: https://typedb.com/docs/drivers/overview
Distribution
Rust driver
Available from https://crates.io/crates/typedb-driver
Documentation: https://typedb.com/docs/drivers/rust/overview
cargo add [email protected]
Java driver
Available through https://repo.typedb.com
Documentation: https://typedb.com/docs/drivers/java/overview
<repositories>
<repository>
<id>repo.typedb.com</id>
<url>https://repo.typedb.com/public/public-release/maven/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupid>com.typedb</groupid>
<artifactid>typedb-driver</artifactid>
<version>3.0.2</version>
</dependency>
</dependencies>
Python driver
PyPI package: https://pypi.org/project/typedb-driver
Documentation: https://typedb.com/docs/drivers/python/overview
Available through https://pypi.org
pip install typedb-driver==3.0.2
New Features
Bugs Fixed
-
Introduce 3.0 cloud driver tests
We fix cloud drivers creation interfaces and introduce integration and behavior tests to cover these public methods. -
Remove extra argument in call to internal _Driver.cloud
Code Refactors
-
Add version filter for maven packages for Java release notes
Add version filter for maven packages for Java release notes. -
Update Java APIs with marker throwing runtime TypeDBDriverExceptions
Other Improvements
-
Regenerate docs
-
Fix rust format
-
Update logback to a non-vulnerable version
-
Remove debug println
-
Update typedb behavior dependency and typedb server artifact to test the unblocked server features
Update typedb behavior dependency and typedb server artifact to test the unblocked server features of rollback and write query fetches. -
Remove transaction pop from java tests on rollback
-
Update examples to fix their build