-- pg_turbovec v1.13.0 -- out-of-core IVF query / >RAM serving (Phase B-1/B-2). -- -- This file is a *reference mirror*. The authoritative install -- script is generated by `cargo pgrx schema`. -- -- v1.13.0 lets an IVF index (built WITH (lists = N)) larger than RAM -- be QUERIED. The scan previously loaded the whole index into a -- per-backend cache (O(n) resident). Now it can serve cell-scoped: -- cache only bounded metadata (coarse centroids, cell directory, -- rotation, codebook, per-slot scales/ids) plus a MAP_PRIVATE mmap -- of the relfile, and copy only the probed cells' contiguous code -- ranges off the mmap per query. Resident set drops to -- O(probes * cell_size + faulted pages); hot cells stay in the OS -- page cache, cold cells fault on demand. -- -- New GUC: turbovec.out_of_core (enum off | auto | on, default -- auto). auto goes cell-scoped only when the index codes exceed -- 0.5 * turbovec.cache_size_mb, so an in-RAM index loads whole (no -- per-query reblock cost) and only a genuinely large index pays the -- bounded-memory-for-CPU tradeoff. Pairs with the v1.12.0 -- out-of-core BUILD to make IVF usable end-to-end above RAM. -- -- This is a SCAN-PATH change only. The on-disk relfile format is -- UNCHANGED (MetaPageData::version stays 4); results are identical -- to the whole-load path (probes >= lists still reduces to the -- exact flat scan; tombstones masked; soft-assign deduped). There -- is no DDL, no on-disk migration, and NO REINDEX. `ALTER EXTENSION -- pg_turbovec UPDATE TO '1.13.0';` resolves against this -- intentionally-empty file.