TileDB v2.11.0 Release Notes

  • Disk Format

    • โฌ†๏ธ Bump format version and remove config option for consolidation with timestamps #3267

    ๐Ÿ’ฅ Breaking C API changes

    • tiledb_filter_alloc no longer returns TILEDB_OK when passed a nullptr as the third argument. #3222

    ๐Ÿ’ฅ Breaking behavior

    • Enforce version upper bound for reads, #3248. TileDB will no longer attempt to read an array written with a newer library version. This has never been officially supported, and in practice it usually leads to confusing errors due to format changes. Backward read-compatibility is unaffected, and is tested for each release.

    Potential change

    • If you have a use-case with tiles larger than 64 MB (in-memory), please get in touch. In order to facilitate improved memory usage and i/o processing performance, we are considering a default upper-bound on tile size in a future version.

    ๐Ÿ†• New features

    • Floating point scaling filter (#3243, #3083)
      • API Note: input parameters and compatibility with input data are currently unvalidated. This filter requires care in the selection of scale and offset factors compatible with the input data range.
    • ๐Ÿ‘Œ Support for overlapping ranges in QueryCondition. #3264
    • ๐Ÿ“œ Enable query condition on dimensions for sparse arrays. #3302

    ๐Ÿ‘Œ Improvements

    ๐ŸŽ Performance

    • ๐Ÿšš AWS/GCS: parallelize remove_dir. #3338
    • Optimize compute_results_count_sparse_string. #3263
    • ๐Ÿ“œ Use sparse global ordered reader for unordered queries with no dups. #3207
    • compute_results_count_sparse_string: using cached ranges properly. #3314
    • ๐Ÿšš GCS/AWS: remove unnecessary classA operations. #3323
    • โฌ‡๏ธ Reduce the number of requests in dir_size #3382

    Internal

    • โž• Add DataBlocks, port finite state machine, and other DAG infrastructure #3328
    • Storage manager: exposing methods to load/store generic tile. #3325
    • ๐Ÿ”’ Replace unnecessary uses of std::unique_lock and std::scope_lock with std::lock_guard. #3340
    • โœ‚ Deletes: implement negate for query condition. #3299
    • โœ‚ Deletes: adding configuration parameter for purging deleted cells. #3334

    ๐Ÿšš Defects removed

    • ๐Ÿ”จ Sparse refactored readers, mark empty fragments as fully loaded early. #3394
    • ๐Ÿ›  Fix printing of TILEDB_BOOL attributes in Attribute::Dump. #3251
    • Store compression filter's version as uint32. #3341
    • ๐Ÿ“œ Sparse global order reader: consider qc results after deduplication. #3350
    • Serialization: using same functions to choose strategy as in query. #3352
    • Fix error reporting in tiledb_subarray_alloc. #3220
    • ๐Ÿ›  Fix printing of TILEDB_BLOB attributes in Attribute::Dump. #3250
    • โž• Add missing filters to switch case for Filter serialization. #3256
    • Fix timestamp_now_ms() on 32-bit Windows. #3292
    • Avoid incorrect use of deflateEnd on init errors. #3007
    • Datatype for domain must be serialized for backwards client compatibility. #3343
    • ๐Ÿ›  Fix issue with sparse unordered without duplicates query deserialization to use Indexed Reader. #3347
    • ๐Ÿ› Bug Fix: Wrong results when using OR condition with nullable attributes. #3308
    • ๐Ÿ›  Fix SC-19287: segfault due to deref nonexistent filestore key. #3359

    API additions

    C API

    • New (experimental): tiledb_fragment_info_get_total_cell_num #3234
    • New (experimental): tiledb_query_get_relevant_fragment_num #3413
    • โœ‚ Remove incorrect noexcept annotations from C API implementations in filestore API. #3273

    โœ… Test only changes

    • โž• Adding tests to count VFS calls on array open. #3358
    • Print seed in unit_thread_pool on failure. #3355

    ๐Ÿ‘ท Build system changes

    • Produce a TileDBConfigVersion.cmake file. #3240
    • โž• Add nlohmann/json.hpp to superbuild. #3279
    • โšก๏ธ Update pkg-config private requirements on Windows only. #3330

    Full Changelog: