4 Commits
Author SHA1 Message Date
Matt L 63c3abd7db Fix zero-element reads on virtual dsets with r-trees (#6083)
Fix zero-element read failure in H5D__virtual_read() and H5D__virtual_write() in H5Dvirtual.c by skipping H5S_SELECT_BOUNDS if nelmts is 0.

Add test_vds_empty_slice() in rtree.c to verify zero-element read behavior on virtual datasets with r-trees.
2025-12-12 09:24:09 -06:00
Matt L f981c9c9be Make rtree test VFD-compatible (#5933)
Implement the special filename handling that makes the rtree test compatible with the family VFD (and any other VFD that changes how filenames are treated).

Make rtree.c test VFD-compatible by implementing dynamic filename handling and updating function signatures for file access property lists.
2025-10-22 22:01:38 -05:00
Matt L ac169ed3e8 Optimize VDS operations with r-tree (#5843)
Optimize VDS operations using R-tree spatial index, adding new API functions and tests for improved performance.

Behavior:
Introduces R-tree spatial index for optimizing VDS operations in H5Dvirtual.c.
Adds H5Pset_dset_use_spatial_tree() and H5Pget_dset_use_spatial_tree() to control R-tree usage.
Default behavior uses R-tree for VDS with more than 1000 mappings.
Implementation:
Adds H5RT.c, H5RTprivate.h, and H5RTpkg.h for R-tree implementation.
Updates H5Pdapl.c and H5Pdcpl.c to include R-tree properties.
Modifies H5Dvirtual.c to integrate R-tree in VDS I/O operations.
Testing:
Adds rtree.c for testing R-tree creation, search, and copy operations.
Tests R-tree integration with VDS in test/dsets.c.
Verifies R-tree behavior with different dataset access property list settings.
2025-10-07 12:13:28 -05:00
Matt L ac5d52536d Add internal spatial tree (#5800)
Implement an r-tree data structure in a new module. It has three exposed methods:  H5RT_create(), H5RT_search(), and H5RT_free().

The STR algorithm used during creation is based on the one described here.

Updates CMakeLists.txt to include H5RT.c and related headers.

Adds rtree.c test file to validate R-tree creation and search functionalities.
2025-10-02 06:49:52 -05:00