* Explicitly use C memory representation for Gridstore value pointers
* Inline pure function
* Grow tracker file to be next multiple of two
* In debug builds, panic if getting out of bound point from Gridstore
* Also represent region gaps as C struct
* Remove debug assertion
* Adjust file size test
* Add Gridstore backend for mutable geo payload index
* Add mutable geo payload index builder for Gridstore
* Add tests
* Define type for raw geo point
* Rework geo point loading in Gridstore, load per point ID
* Bump Gridstore options
* Fix panic when storing empty list of geo points in Gridstore
* Review remarks
* Implement clear cache for immutable text index
* Add Gridstore backend for mutable full text payload index
* Add mutable full text payload index builder for Gridstore
* Fix compilation error
* Add tests
* Extract mutable inverted index builder to standalone type
* Return generic error in Gridstore iterator
* Remove intermediate buffer from Gridstore load, load index directly
* Minor fixes
* Remove TODO, no good solution
* Fix review remarks
* Serialize vector of ecow strings using cbor
* Adjust trait bounds for Gridstore support in map index
* Add Gridstore backend to mutable map index
* Add Gridstore builder
* Enable new map index in index selector
* Add tests
* Use different Gridstore block size depending on map data type
* Fix review remarks
* Extend Gridstore blob trait, support basic primitives and vector of them
* Implement mutable numeric index on top of Gridstore
* Wrap Gridstore in rwlock, flush asynchronously
* Set custom Gridstore options tuned to numeric index
* Fix compilation errors
* Destruct RocksDB selector everywhere
* Add Gridstore payload index selector, build numeric, fallback others
* Add feature flag to Gridstore mutable payload index
* Don't store empty values in gridstore, it's not supported
* Reformat
* Initialize Gridstore during init of index builder
* Use owned and referenced paths correctly around Gridstore
* Change Gridstore page size in numeric index as suggested
* Make Gridstore block size dependent on size of numeric type
* Add tests
* Add separate fixed size blob trait for vec, prevent footgun
* Improve page size calculation
Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
* Simplify Blob requirement for numeric payload index
* Add missing test cases
* Replace ref mut with &mut
* Use correct hardware counter
* Implement clear cache for numeric payload index on Gridstore
* The block size is dynamic
* Error if trying to load index from storage that doesn't match backend
* fix counter
* Add comment on why we change page size
---------
Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
* Gridstore config can be Copy
* Add test asserting wipe behavior
* Add clear function to Gridstore
* Make wipe take ownership, use new clear function everywhere
* Add comment to emphasize wipe behavior
* Propagate errors
* Make gridstore Advise::Random and add function for sequential read
* Reduce duplicate code in gridstore
* use sequential implementation in iterator
* actually use the sequential read
---------
Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
* Add bench for mmap_bitslice_buffered_update_wrapper
* Use ahash in buffered mmap/RocksDB types and in payload storage
* Function is used in testing only
* wip: implement explicit populate and clear_cache functions for all components
* fmt
* implement clear and populate for vector storages
* fmt
* implement clear and populate for payload storage
* wip: implement explicit populate and clear_cache functions payload indexes
* implement explicit populate and clear_cache functions payload indexes
* fix clippy on CI
* only compile posix_fadvise on linux
* only compile posix_fadvise on linux
* implement explicit populate and clear_cache functions for quantized vectors
* fmt
* remove post-load prefault
* fix typo
* implement is-on-disk for payload indexes, implement clear on drop for segment, implement clear after segment build
* fmt
* also evict quantized vectors after optimization
* re-use and replace advise_dontneed
* Bump Rust edition to 2024
* gen is a reserved keyword now
* Remove ref mut on references
* Mark extern C as unsafe
* Wrap unsafe function bodies in unsafe block
* Geo hash implements Copy, don't reference but pass by value instead
* Replace secluded self import with parent
* Update execute_cluster_read_operation with new match semantics
* Fix lifetime issue
* Replace map_or with is_none_or
* set_var is unsafe now
* Reformat