Skip to content

0.9.1

Latest

Choose a tag to compare

@cevian cevian released this 04 Sep 12:19

What's Changed

Security hardening (#280)

This release hardens DiskANN against type confusion and malformed vector datums. Previously, the operator-class SQL referenced pgvector's vector type and operators unqualified, so a type pre-created in the extension's target schema could capture the binding, and the native code trusted the typmod, the persisted metapage dimensions, and the datum layout without validation. Together these could let attacker-controlled bytes reach native DiskANN code paths and cause a backend crash, memory disclosure, or out-of-bounds write.

  • Operator classes now bind explicitly to pgvector's extension schema, with quoted, schema-qualified type and operator references, and the extension script search_path is preserved.
  • Vector type, signed typmod, persisted metapage dimensions, and detoasted datum size and dimension are validated before any slice is constructed.
  • amvalidate is implemented for the vector DiskANN operator classes.
  • Direct upgrade scripts to 0.9.1 are shipped from every prior release.

Upgrading: run ALTER EXTENSION vectorscale UPDATE TO '0.9.1'. The upgrade verifies that existing vector operator classes are bound to pgvector's type and operators and aborts if one is not. If that happens, drop the affected operator class and recreate the extension objects.

Behavior changes to be aware of:

  • Columns without a valid vector(N) typmod can no longer be indexed with DiskANN.
  • Pre-existing indexes whose persisted dimensions are invalid (for example, built by an older version on a column without a vector(N) typmod) now raise an actionable error on scan, insert, and vacuum. These indexes were silently reading out of bounds before. They must be dropped and recreated; REINDEX cannot repair them.

Other changes

  • Qualify pg_catalog schema references in extension SQL (#271)
  • Bump lru to 0.16.3 to clear GHSA-rhfx-m35p-ff5j (the affected IterMut path was not used by pgvectorscale)
  • Fix upgrade-test version guards so the upgrade tests run on PG17 and PG18
  • Update name to Tiger Data and copyright year (#262)

Full Changelog: 0.9.0...0.9.1