Every QQL error carries a stable code, a broad kind, a human-readable message, and an optional zero-based UTF-8 byte span[start, end). The message text is not normative — match on the code, which is fixed by the conformance fixtures. A code already asserted by a v1 invalid fixture cannot change before QQL 2; new codes may only refine previously unspecified cases.
The tables below cover the full set of codes the reference implementation emits. Codes are grouped by the failure family:
The same structured fields are projected differently by each host binding.
Host
Shape
Rust
QqlError { kind, code, message, span: Option<Span { start, end }>, fields, source }; the kind is one of Lex, Parse, Validation, Execution, Transport, Backend
Python
Error attributes code, kind, and span
Node.js
error.code, error.kind, error.span on the thrown error
WebAssembly
AnalysisError { code, message, start, end } (nulls when a span is absent)
The in-process edge backend reports capability limits with a stable QQL-EDGE-UNSUPPORTED-* code instead of a generic failure. These errors usually carry a remediation hint pointing at remote Qdrant.
Code
Meaning
QQL-EDGE-UNSUPPORTED-GROUP-BY
GROUP BY / query groups are not available offline
QQL-EDGE-UNSUPPORTED-SHARD
SHARD routing or collection sharding options are not available offline
QQL-EDGE-UNSUPPORTED-SHARD-KEY
CREATE / DROP SHARD KEY are not available offline
QQL-EDGE-UNSUPPORTED-ALTER
ALTER COLLECTION is not available offline
QQL-EDGE-UNSUPPORTED-COLLECTION-PARAMS
Collection WITH PARAMS is not available offline
QQL-EDGE-UNSUPPORTED-ACORN
PARAMS (acorn = ...) is not available offline
QQL-EDGE-UNSUPPORTED-TIMEOUT
PARAMS (timeout = ...) is not available offline
QQL-EDGE-UNSUPPORTED-CONSISTENCY
PARAMS (consistency = ...) is not available offline
QQL-EDGE-UNSUPPORTED-RECOMMEND-STRATEGY
RECOMMEND STRATEGY average_vector; offline supports best_score and sum_scores only
QQL-EDGE-UNSUPPORTED-POINT-REF
Point-ID query inputs need materialized vectors offline
QQL-EDGE-UNSUPPORTED-FIELD-TYPE
The index field type is not available offline
QQL-EDGE-UNSUPPORTED-ROUTE
The planned operation has no edge route implementation (defensive fallback)
QQL-EDGE-INVALID-POINT-ID
Offline point IDs accept unsigned integers or UUIDs only
Edge also emits QQL-EDGE-* runtime failures for storage and configuration problems: collection lifecycle (QQL-EDGE-COLLECTION-EXISTS, QQL-EDGE-COLLECTION-NOT-FOUND, QQL-EDGE-DELETE-COLLECTION, QQL-EDGE-DELETE-COLLECTION-CLOSE, QQL-EDGE-CLOSE), storage I/O (QQL-EDGE-CREATE-DIR, QQL-EDGE-READ-DIR, QQL-EDGE-DIR-ENTRY, QQL-EDGE-LIB, QQL-EDGE-SPAWN, QQL-EDGE-CONFIG), vector handling (QQL-EDGE-VECTOR, QQL-EDGE-VECTOR-NAME-MISSING, QQL-EDGE-MISSING-VECTOR, QQL-EDGE-MULTI-VECTOR-NAMES, QQL-EDGE-FIELD-NAME), filters (QQL-EDGE-FILTER-CONVERT, QQL-EDGE-FILTER-SERIALIZE, QQL-EDGE-FILTER-DESERIALIZE), query conversion (QQL-EDGE-QUERY), embedding (QQL-EDGE-EMBED), and mutations that require a target (QQL-EDGE-DELETE-REQUIRES-TARGET, QQL-EDGE-CLEAR-PAYLOAD-REQUIRES-TARGET, QQL-EDGE-DELETE-PAYLOAD-REQUIRES-TARGET, QQL-EDGE-DELETE-VECTORS-REQUIRES-TARGET, QQL-EDGE-SET-PAYLOAD-REQUIRES-TARGET).
The Backend compatibility matrix covers which features are available on each backend.
The full set of codes emitted by the reference implementation, generated from rg -o 'QQL-[A-Z0-9-]+' crates/qql-core/src crates/qql-plan/src crates/qql-edge/src:
QQL-BACKEND
QQL-EDGE-CLEAR-PAYLOAD-REQUIRES-TARGET
QQL-EDGE-CLOSE
QQL-EDGE-COLLECTION-EXISTS
QQL-EDGE-COLLECTION-NOT-FOUND
QQL-EDGE-CONFIG
QQL-EDGE-CREATE-DIR
QQL-EDGE-DELETE-COLLECTION
QQL-EDGE-DELETE-COLLECTION-CLOSE
QQL-EDGE-DELETE-PAYLOAD-REQUIRES-TARGET
QQL-EDGE-DELETE-REQUIRES-TARGET
QQL-EDGE-DELETE-VECTORS-REQUIRES-TARGET
QQL-EDGE-DIR-ENTRY
QQL-EDGE-EMBED
QQL-EDGE-FIELD-NAME
QQL-EDGE-FILTER-CONVERT
QQL-EDGE-FILTER-DESERIALIZE
QQL-EDGE-FILTER-SERIALIZE
QQL-EDGE-INVALID-POINT-ID
QQL-EDGE-LIB
QQL-EDGE-MISSING-VECTOR
QQL-EDGE-MULTI-VECTOR-NAMES
QQL-EDGE-QUERY
QQL-EDGE-READ-DIR
QQL-EDGE-SET-PAYLOAD-REQUIRES-TARGET
QQL-EDGE-SPAWN
QQL-EDGE-UNSUPPORTED-ACORN
QQL-EDGE-UNSUPPORTED-ALTER
QQL-EDGE-UNSUPPORTED-COLLECTION-PARAMS
QQL-EDGE-UNSUPPORTED-CONSISTENCY
QQL-EDGE-UNSUPPORTED-FIELD-TYPE
QQL-EDGE-UNSUPPORTED-GROUP-BY
QQL-EDGE-UNSUPPORTED-POINT-REF
QQL-EDGE-UNSUPPORTED-RECOMMEND-STRATEGY
QQL-EDGE-UNSUPPORTED-ROUTE
QQL-EDGE-UNSUPPORTED-SHARD
QQL-EDGE-UNSUPPORTED-SHARD-KEY
QQL-EDGE-UNSUPPORTED-TIMEOUT
QQL-EDGE-VECTOR
QQL-EDGE-VECTOR-NAME-MISSING
QQL-JSON-NONFINITE
QQL-JSON-NUMBER
QQL-LEX-CHAR
QQL-LEX-STRING
QQL-PARSE-CLAUSE-ORDER
QQL-PARSE-COMPARISON
QQL-PARSE-CONTEXT
QQL-PARSE-CROSS-RERANK
QQL-PARSE-DUPLICATE-CTE
QQL-PARSE-DUPLICATE-KEY
QQL-PARSE-EMBED
QQL-PARSE-EMBEDDING
QQL-PARSE-EMPTY-STATEMENT
QQL-PARSE-ESCAPE
QQL-PARSE-EXPECTED
QQL-PARSE-FIELD
QQL-PARSE-FILTER
QQL-PARSE-FLOAT
QQL-PARSE-IDENTIFIER
QQL-PARSE-IN
QQL-PARSE-INDEX-TYPE
QQL-PARSE-INTEGER
QQL-PARSE-LITERAL
QQL-PARSE-MATCH-ANY
QQL-PARSE-NONNEGATIVE-INTEGER
QQL-PARSE-NUMBER
QQL-PARSE-OBJECT-KEY
QQL-PARSE-PAYLOAD-SELECTOR
QQL-PARSE-POINT-ID
QQL-PARSE-POINT-IDS
QQL-PARSE-POSITIVE-INTEGER
QQL-PARSE-PREFETCH
QQL-PARSE-QUERY-INPUT
QQL-PARSE-SAMPLE
QQL-PARSE-SELECTOR
QQL-PARSE-SEPARATOR
QQL-PARSE-STATEMENT
QQL-PARSE-STATEMENT-LIMIT
QQL-PARSE-SYNTAX
QQL-PARSE-TRAILING
QQL-PARSE-UPDATE
QQL-PARSE-VALUE
QQL-PARSE-VECTOR-KIND
QQL-PLAN-COLLECTION
QQL-PLAN-CROSS-RERANK-CANDIDATE
QQL-PLAN-CROSS-RERANK-CTE
QQL-PLAN-CROSS-RERANK-MODEL
QQL-PLAN-CROSS-RERANK-PREFETCH
QQL-PLAN-CROSS-RERANK-QUERY
QQL-PLAN-FUSION-PREFETCH
QQL-PLAN-PREFETCH-CTE
QQL-PLAN-PREFETCH-GROUP
QQL-PLAN-RERANK-PREFETCH
QQL-PLAN-RERANK-USING
QQL-PLAN-RRF-PARAMS
QQL-PLAN-RRF-WEIGHTS
QQL-PLAN-UNSUPPORTED-PREFETCH
QQL-PLAN-VECTOR-KIND
QQL-REST-CLIENT-SIDE
QQL-VALIDATION-ACORN-SELECTIVITY
QQL-VALIDATION-CONFIG
QQL-VALIDATION-CONSISTENCY
QQL-VALIDATION-CREATE-MODEL
QQL-VALIDATION-CROSS-RERANK-PREFETCH
QQL-VALIDATION-FEEDBACK-STRATEGY
QQL-VALIDATION-FILTER-INJECT
QQL-VALIDATION-FROM
QQL-VALIDATION-FUSION
QQL-VALIDATION-FUSION-PREFETCH
QQL-VALIDATION-GEO
QQL-VALIDATION-HYBRID
QQL-VALIDATION-ID-PREDICATE
QQL-VALIDATION-LIMIT-OVERFLOW
QQL-VALIDATION-MMR
QQL-VALIDATION-POINT-ID
QQL-VALIDATION-POINTS-CLAUSE
QQL-VALIDATION-PREFETCH
QQL-VALIDATION-PREFETCH-CTE
QQL-VALIDATION-RECOMMEND-STRATEGY
QQL-VALIDATION-RERANK-PREFETCH
QQL-VALIDATION-RERANK-USING
QQL-VALIDATION-SCORE
QQL-VALIDATION-SEARCH-PARAM
QQL-VALIDATION-UPSERT-ID
QQL-VALIDATION-USING
QQL-VALIDATION-VECTOR
The QQL-EDGE-UNSUPPORTED- prefix is the family marker used by the edge backend to classify capability rejections; individual codes always carry the full suffix. New codes may be introduced in a v1 minor release (see language/v1/spec/versioning.md), so treat this list as a snapshot of the current reference implementation.