# SingleStore vector search needs the query vector as a runtime constant

## TL;DR

If your SingleStore vector search errors or plans badly when the query vector comes from application code, make it a runtime constant first. Do SET @query_vec = JSON_ARRAY_PACK('[0.44, 0.554, 0.34, 0.62]'); then SELECT EUCLIDEAN_DISTANCE(vec, @query_vec) AS score FROM vectors_b ORDER BY score ASC LIMIT 10. Pack the constant once per session, not per row or per query execution.

Use this when you see this exact error.

**When not to use this skill:** a different error message. The steps below target this specific failure.

## Compatibility

The steps above apply to the commands named in them. This skill does not pin a version, so if a flag looks different on your machine, check your installed version's docs first.

## Details

Also set vector_type_project_format = JSON when you want vector columns to print readably in results instead of binary.

Context: Official docs (SingleStore EUCLIDEAN_DISTANCE reference): documents a query-shape gotcha that trips agents building parameterized search. The query vector in a vector search (@query_vector) must be a runtime constant. The documented pattern is SET @query_vec = JSON_ARRAY_PACK('[...]') once, then SELECT ... WHERE ... ORDER BY score LIMIT k against that variable. Inline JSON constants in the SELECT work for one-off queries, but for repeated queries SingleStore recommends casting the JSON string to a VECTOR once and reusing it.
