Skip to content

ruvector-postgres:2.0.1 Docker image ships ruvector extension 0.3.0, not 2.0.0 #271

@stuinfla

Description

@stuinfla

Bug Report

Image: ruvnet/ruvector-postgres:2.0.1 (Docker Hub)
Platform: Fly.io (iad region), PostgreSQL 17.7

Problem

The Docker image ruvnet/ruvector-postgres:2.0.1 installs the ruvector extension at version 0.3.0, not 2.0.0 or 2.0.1 as the image tag suggests.

postgres=# SELECT extversion FROM pg_extension WHERE extname='ruvector';
 0.3.0

postgres=# SELECT * FROM pg_available_extension_versions WHERE name = 'ruvector';
 ruvector | 0.1.0 | f
 ruvector | 0.3.0 | t   -- installed
 ruvector | 2.0.0 | f   -- available but no update path from 0.3.0

Impact

1. HNSW indexes break non-vector queries

In ruvector 0.3.0, HNSW indexes interfere with the query planner for non-vector operations. Simple COUNT(*) queries on tables with HNSW indexes fail with:

ERROR: HNSW: Could not extract query vector from parameter.

This makes diagnostic queries, health checks, and any aggregation queries fail on tables that have HNSW indexes. The workaround is to drop all HNSW indexes, which removes O(log n) search capability.

2. No upgrade path from 0.3.0 to 2.0.0

ALTER EXTENSION ruvector UPDATE TO '2.0.0' returns:

ERROR: extension "ruvector" has no update path from version "0.3.0" to version "2.0.0"

The only way to upgrade is DROP EXTENSION ruvector CASCADE which destroys ALL columns of type ruvector across ALL schemas — a destructive operation that requires full re-embedding.

3. The latest image has the same problem

ruvnet/ruvector-postgres:latest (updated 2026-03-03) ships the same 0.3.0 extension .so file. Even after deploying latest, the shared library at /usr/lib/postgresql/17/lib/ruvector.so has 0.3.0 internals. Attempting to create the extension at version 2.0.0 with this .so results in missing functions:

ERROR: could not find function "ruvector_embed_wrapper" in file "/usr/lib/postgresql/17/lib/ruvector.so"

Expected Behavior

  • ruvnet/ruvector-postgres:2.0.1 should ship ruvector extension 2.0.x
  • ruvnet/ruvector-postgres:latest should ship the latest stable ruvector extension
  • There should be an upgrade path from 0.3.0 to 2.0.0 (or clear migration documentation)
  • HNSW indexes should not interfere with non-vector queries

Requested Fix

  1. Rebuild Docker images with the correct ruvector .so matching the image tag version
  2. Add an update path SQL script (0.3.0 → 2.0.0) or document the migration procedure
  3. Fix the HNSW planner interference bug in the extension

Environment

  • Docker image: ruvnet/ruvector-postgres:2.0.1 and :latest
  • PostgreSQL: 17.7 (Debian 17.7-3.pgdg12+1)
  • Host: Fly.io (iad region, 256MB RAM)
  • Local comparison: ruvector 2.0.0 extension on local Docker (same image tag 2.0.1) works correctly — suggesting the images on Docker Hub may have been built at different times with different .so files

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions