- Added string type support: ASCII, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4 (PR #415)
- Added
TILEDB_ANYdatatype (PR #446) - Added parallelized VFS read operations, enabled by default (PR #499)
- Added parallel S3 writes, enabled by default.
- Minor S3 optimizations and error message fixes (PR #462)
- Changed S3 default config so that AWS S3 just works (PR #455)
- Got rid of special S3 "directory objects"
- Refactored sparse reads, making them simpler and more amenable to parallelization.
- Memory overflow error handling (moved from constructors to init functions)
- Memory leaks with realloc in case of error
- Handle non-existent config param in C++ API.
- Fixed bugs with reads/writes of variable-sized attributes.
- Added
tiledb_query_finalizefunction. - Added
tiledb_vfs_get_configfunction. - Added
vfs.max_parallel_opsandvfs.min_parallel_sizeconfig parameters. - Added
vfs.s3.multipart_part_sizeconfig parameter.
- Support for trivially copyable objects, such as a custom data struct, was added. They will be backed by an
sizeof(T)sizedcharattribute. Attribute::create<T>can now be used with compoundT, such asstd::stringandstd::vector<T>, and other objects such as a simple data struct.- Added a
Dimension::createfactory function that does not take tile extent, which sets the tile extent toNULL.
tiledb_query_finalizemust always be called beforetiledb_query_free.- Removed
tiledb_vfs_moveand addedtiledb_vfs_move_fileandtiledb_vfs_move_dirinstead. - Removed
forceargument fromtiledb_vfs_move_*andtiledb_object_move. - Removed
vfs.s3.file_buffer_sizeconfig parameter.
- Fixes with
Array::max_buffer_elementsandQuery::result_buffer_elementsto comply with the API docs.pair.firstis the number of elements of the offsets buffer. Ifpair.firstis 0, it is a fixed-sized attribute or coordinates. std::array<T, N>is backed by achartiledb attribute since the size is not guaranteed.Attribute::set_cell_val_num()is deprecated. This is now deduced from the Attribute type.- Headers have the
tiledb_cpp_api_prefix removed. For example, the include is now#include <tiledb/attribute.h> - Removed
VFS::moveand addedVFS::move_fileandVFS::move_dirinstead. - Removed
forceargument fromVFS::move_*andObject::move. - Removed
vfs.s3.file_buffer_sizeconfig parameter.
- Fixed TileDB header includes for all examples (#409)
- Fixed TileDB library dynamic linking problem for C++ API (#412)
- Fixed VS2015 build errors (#424)
- Bug fix in the sparse case (#434)
- Bug fix for 1D vector query layout (#438)
- Added documentation to API and examples (#410, #414)
- Migrated docs to Readthedocs (#418, #420, #422, #423, #425)
- Added dimension domain/tile extent checks (#429)
The 1.2.0 release of TileDB includes many new features, improvements in stability and performance, and two new language interfaces (Python and C++). There are also several breaking changes in the C API and on-disk format, documented below.
Important Note: due to several improvements and changes in the underlying array storage mechanism, you will need to recreate any existing arrays in order to use them with TileDB v1.2.0.
- Windows support. TileDB is now fully supported on Windows systems (64-bit Windows 7 and newer).
- Python API. We are very excited to announce the initial release of a Python API for TileDB. The Python API makes TileDB accessible to a much broader audience, allowing seamless integration with existing Python libraries such as NumPy, Pandas and the scientific Python ecosystem.
- C++ API. We've included a C++ API, which allows TileDB to integrate into modern C++ applications without having to write code towards the C API. The C++ API is more concise and provides additional compile time type safety.
- S3 object store support. You can now easily store, query, and manipulate your TileDB arrays on S3 API compatibile object stores, including Amazon's AWS S3 service.
- Virtual filesystem interface. The TileDB API now exposes a virtual filesystem (or VFS) interface, allowing you to perform tasks such as file creation, deletion, reads, and appends without worrying about whether your files are stored on S3, HDFS, a POSIX or Windows filesystem, etc.
- Key-value store. TileDB now provides a key-value (meta) data storage abstraction. Its implementation is built upon TileDB's sparse arrays and inherits all the properties of TileDB sparse arrays.
- Homebrew formula added for easier installation on macOS. Homebrew is now the perferred method for installing TileDB and its dependencies on macOS.
- Docker images updated to include stable/unstable/dev options, and easy configuration of additional components (e.g. S3 support).
- Tile cache implemented, which will greatly speed up repeated queries on overlapping regions of the same array.
- Ability to pass runtime configuration arguments to TileDB/VFS backends.
- Unnamed (or "anonymous") dimensions are now supported; having a single anonymous attribute is also supported.
- Concurrency bugfixes for several compressors.
- Correctness issue fixed in double-delta compressor for some datatypes.
- Better build behavior on systems with older GCC or CMake versions.
- Several memory leaks and overruns fixed with help of sanitizers.
- Many improved error condition checks and messages for easier debugging.
- Many other small bugs and API inconsistencies fixed.
tiledb_config_*: Types and functions related to the new configuration object and functionality.tiledb_config_iter_*: Iteration functionality for retieving parameters/values from the new configuration object.tiledb_ctx_get_config(): Function to get a configuration from a context.tiledb_filesystem_t: Filesystem type enum.tiledb_ctx_is_supported_fs(): Function to check for support for a given filesystem backend.tiledb_error_t,tiledb_error_message()andtiledb_error_free(): Type and functions for TileDB error messages.tiledb_ctx_get_last_error(): Function to get last error from context.tiledb_domain_get_rank(): Function to retrieve number of dimensions in a domain.tiledb_domain_get_dimension_from_index()andtiledb_domain_get_dimension_from_name(): Replaces dimension iterators.tiledb_dimension_{create,free,get_name,get_type,get_domain,get_tile_extent}(): Functions related to creation and manipulation oftiledb_dimension_tobjects.tiledb_array_schema_set_coords_compressor(): Function to set the coordinates compressor.tiledb_array_schema_set_offsets_compressor(): Function to set the offsets compressor.tiledb_array_schema_get_attribute_{num,from_index,from_name}(): Replaces attribute iterators.tiledb_query_create(): Replaced many arguments with newtiledb_query_set_*()setter functions.tiledb_array_get_non_empty_domain(): Function to retrieve the non-empty domain from an array.tiledb_array_compute_max_read_buffer_sizes(): Function to compute an upper bound on the buffer sizes required for a read query.tiledb_object_ls(): Function to visit the children of a path.tiledb_uri_to_path(): Function to convert a file:// URI to a platform-native path.TILEDB_MAX_PATHandtiledb_max_path(): The maximum length for tiledb resource paths.tiledb_kv_*: Types and functions related to the new key-value store functionality.tiledb_vfs_*: Types and functions related to the new virtual filesystem (VFS) functionality.
- Rename
tiledb_array_metadata_t->tiledb_array_schema_t, and associatedtiledb_array_metadata_*functions totiledb_array_schema_*. - Remove
tiledb_attribute_iter_t. - Remove
tiledb_dimension_iter_t. - Rename
tiledb_delete(),tiledb_move(),tiledb_walk()totiledb_object_{delete,move,walk}(). tiledb_ctx_create: Config argument added.tiledb_domain_create: Datatype argument removed.tiledb_domain_add_dimension: Name, domain and tile extent arguments replaced with singletiledb_dimension_targument.tiledb_query_create(): Replaced many arguments with newtiledb_query_set_*()setter functions.tiledb_array_create(): Added array URI argument.tiledb_*_free(): All free functions now take a pointer to the object pointer instead of simply object pointer.- The include files are now installed into a
tiledbfolder. The correct path is now#include <tiledb/tiledb.h>(or#include <tiledb/tiledb>for the C++ API).
- Support for moving resources across previous VFS backends (local fs <-> HDFS) has been removed. A more generic implementation for this functionality with improved performance is planned for the next version of TileDB.