cocoindex-io/cocoindex · error
build_relationship_index_drop requires at least one field
Error message
build_relationship_index_drop requires at least one field
What it means
Input guard in the FalkorDB Cypher builder mirroring its create counterpart: DROP INDEX requires at least one indexed property, and an empty fields list would yield invalid Cypher. Fired when the connector tears down or rebuilds a relationship index but the stored/declared field list is empty. Provide at least one field when declaring the relationship index.
Source
Thrown at python/cocoindex/connectors/falkordb/_cypher.py:169
"""``DROP INDEX FOR (e:`Label`) ON (e.`f1`, ...)``."""
if not fields:
raise ValueError("build_node_index_drop requires at least one field")
field_list = ", ".join(f"e.{_quote(f)}" for f in fields)
return f"DROP INDEX FOR (e:{_quote(label)}) ON ({field_list})"
def build_relationship_index_create(rel_type: str, fields: Sequence[str]) -> str:
"""``CREATE INDEX FOR ()-[e:`RelType`]-() ON (e.`f1`, ...)``."""
if not fields:
raise ValueError("build_relationship_index_create requires at least one field")
field_list = ", ".join(f"e.{_quote(f)}" for f in fields)
return f"CREATE INDEX FOR ()-[e:{_quote(rel_type)}]-() ON ({field_list})"
def build_relationship_index_drop(rel_type: str, fields: Sequence[str]) -> str:
"""``DROP INDEX FOR ()-[e:`RelType`]-() ON (e.`f1`, ...)``."""
if not fields:
raise ValueError("build_relationship_index_drop requires at least one field")
field_list = ", ".join(f"e.{_quote(f)}" for f in fields)
return f"DROP INDEX FOR ()-[e:{_quote(rel_type)}]-() ON ({field_list})"
def build_vector_index_create(
label: str,
field: str,
dimension: int,
metric: str,
) -> str:
"""``CREATE VECTOR INDEX FOR (e:`Label`) ON (e.`field`) OPTIONS {...}``.
``metric`` is the FalkorDB-side ``similarityFunction`` value
(e.g. ``"cosine"``, ``"euclidean"``). Caller is responsible for translating
user-facing names into the FalkorDB vocabulary before invoking.
"""
if dimension <= 0:
raise ValueError(f"Invalid vector dimension: {dimension}")View on GitHub (pinned to e84aa99b32)
Solutions
- Pass exactly the fields the relationship index was created with.
- Guard the drop call: only issue it when recorded fields are non-empty.
- Fix the metadata source so relationship index fields survive across runs.
Example fix
// before build_relationship_index_drop(rel_type="WORKS_AT", fields=[]) // after build_relationship_index_drop(rel_type="WORKS_AT", fields=["since"])
Defensive patterns
Strategy: validation
Validate before calling
if fields:
cypher = build_relationship_index_drop(rel_type, fields)
# else: nothing to drop Type guard
def droppable(fields: object) -> bool:
return isinstance(fields, (list, tuple)) and len(fields) > 0 Try / catch
try:
cypher = build_relationship_index_drop(rel_type, fields)
except ValueError as e:
logger.warning('no fields recorded for relationship index %s; skipping drop: %s', rel_type, e)
cypher = None Prevention
- Store relationship index fields with the index spec and reuse them for drops.
- Skip drop calls when no fields are recorded instead of passing an empty list.
- Keep create and drop field lists derived from the same source of truth.
When it happens
Trigger: Calling build_relationship_index_drop(rel_type, fields=[]) — dropping a relationship index whose field list is empty or lost.
Common situations: Teardown/cleanup passing empty fields; index metadata not persisted so the drop spec is empty; mismatch between create and drop field lists.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- build_relationship_index_create requires at least one field
- build_relationship_upsert requires PK fields for from, to, a
- build_relationship_delete requires at least one primary key
- build_node_index_create requires at least one field
- build_node_index_drop requires at least one field
AI-assisted analysis of cocoindex-io/cocoindex@e84aa99b32 (2026-09-08).
Data as JSON: /api/errors/82abfcceb8b50535.
Report an issue: GitHub.