risingwavelabs/risingwave · error

no index found for BatchVectorSearchLookupJoin

Error message

no index found for BatchVectorSearchLookupJoin

What it means

Raised in LogicalVectorSearchLookupJoin::to_batch when to_vector_index_lookup_join returns None, i.e. no vector index matching the query's vector column and distance type exists on the lookup table, so the batch vector search plan cannot be constructed.

Solutions

  1. Create a vector index covering the queried vector column and distance function before issuing the batch vector search lookup join.
  2. Check that the query's ORDER BY ... <-> / distance expression matches the index definition.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/frontend/src/optimizer/plan_node/logical_vector_search_lookup_join.rs:378 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/78d4bbc650fd93fe. Report an issue: GitHub.

Appendix: source

Thrown at src/frontend/src/optimizer/plan_node/logical_vector_search_lookup_join.rs:378

                include_distance: self.core.include_distance,
                as_of,
                vector_column_idx: self.core.input_vector_col_idx,
                hnsw_ef_search,
                ctx: self.core.ctx(),
            };
            return Ok(Some(core));
        }
        Ok(None)
    }
}

impl ToBatch for LogicalVectorSearchLookupJoin {
    fn to_batch(&self) -> Result<BatchPlanRef> {
        if let Some(core) = self.to_vector_index_lookup_join(|plan| plan.to_batch())? {
            return Ok(BatchVectorSearch::with_core(core).into());
        }

        bail!("no index found for BatchVectorSearchLookupJoin")
    }
}

View on GitHub (pinned to 6469eb736d)