How can an agent resolve this problem? LanceDBVectorStore delete/delete_nodes/get_nodes fail on lancedb>=0.38 because double-quoted IDs now parse as identifiers
Finding: In an external report on run-llama/llama_index issue 23086, llama-index-vector-stores-lancedb 0.6.0 (also reported on main) builds delete and filter predicates with double-quoted IDs, and with lancedb 0.38.0 or later these fail with a schema error beginning "ValueError: Invalid input, Schema error: No field named item1." (the message continues with a list of valid fields in the source; this is a prefix) (https://github.com/run-llama/llama_index/issues/23086). This is an external report and was not reproduced by KFA.
Provenance: the reporter discloses that the bug was found and verified with AI assistance (Claude). The reporter says the failure was reproduced against a raw lancedb table with no LlamaIndex, and that bumping this package's lockfile and running its existing tests reproduced it. These are self-reported and not verified by KFA.
Affected calls, per the reporter: delete(), delete_nodes(), and get_nodes() when node_ids is passed; delete_ref_doc() is said to fail for every input. Cause (hypothesis, from the reporter's AI-assisted tracing of git/PR history, not confirmed by a maintainer or verified by KFA): lancedb PR #3825, reportedly merged 2026-08-26, changed SQL parsing so double quotes denote identifiers and single quotes denote string literals, so doc_id = "item1" would refer to a nonexistent column. The reporter says lancedb 0.38.0 is the first release with this behavior. The package declares lancedb>=0.21.1 with no upper bound, while its committed uv.lock reportedly pins 0.37.1; the reporter attributes the existing tests not catching it to this (unverified). The reporter says bumping the lockfile alone makes test_delete, test_delete_nodes and test_get_nodes fail (https://github.com/run-llama/llama_index/issues/23086).
A repro without LlamaIndex is given: create a lancedb table with a doc_id column and call delete with a double-quoted predicate (same issue URL).
Proposed fix (not confirmed as merged or released): the issue body (https://github.com/run-llama/llama_index/issues/23086) suggests rendering IDs as single-quoted SQL literals with embedded single quotes doubled and says a fix is in PR #23087; it does not describe the PR's contents beyond that. A later comment (https://github.com/run-llama/llama_index/issues/23086#issuecomment-6075715311) says the PR now keeps SQL strings with single-quoted, doubled-quote literals. PR authorship is not stated in the supplied sources. That comment reports that the lancedb.expr approach was dropped because it does not work across the declared floor: lancedb.expr is missing in 0.21.1 to 0.30.1, and in 0.30.2 to 0.33.x Table.delete(Expr) raises TypeError and Expr.isin does not exist. The comment says the SQL-string version passes the full suite on 0.21.1, 0.30.2, 0.33.0, 0.34.0, 0.38.0 and 0.40.0. These results are self-reported and not independently verified.
Status: the issue is open. No maintainer confirmation of cause, no merge of #23087, and no released fix appear in the supplied content, and comment coverage may omit middle comments. The same comment says metadata filter escaping in _to_lance_filter is a separate problem not part of that change. No workaround is documented in the supplied sources.
Problem details
- Observed symptom
- Predicates of the form doc_id = "item1" are read as comparing to a column named item1, so the call raises a schema error instead of matching rows. Reporter says delete_ref_doc fails for every input.
- Context
- LanceDBVectorStore delete(), delete_nodes(), get_nodes(node_ids) in llama_index/vector_stores/lancedb/base.py; llama-index-vector-stores-lancedb 0.6.0 (reported also on main); lancedb 0.38.0 reported as first release with the new parsing. External report with AI-assisted verification disclosed; no KFA reproduction. PR #23087 content was not supplied. Test results across lancedb versions are self-reported. No maintainer confirmation, merge, or released fix shown. Metadata filter escaping (_to_lance_filter) is stated to be a separate problem. Comment coverage may be incomplete.
- Environment
- State
- partial
- Text
- llama-index-vector-stores-lancedb 0.6.0 (reported also on main); lancedb 0.38.0 reported as first release with the new parsing; package declares lancedb>=0.21.1; source-reported environment only
- Symptom signature
- Tool product
- llama-index-vector-stores-lancedb
- Component
- LanceDBVectorStore delete(), delete_nodes(), get_nodes(node_ids) in llama_index/vector_stores/lancedb/base.py
- Operation
- delete_ref_doc, delete, delete_nodes, and get_nodes with node_ids
- Literal error text
- ValueError: Invalid input, Schema error: No field named item1.
- Version info
- llama-index-vector-stores-lancedb 0.6.0 (reported also on main); lancedb 0.38.0 reported as first release with the new parsing; package declares lancedb>=0.21.1
- Literal source
- contributor_supplied
- Expected behavior
- Not supplied
Known approaches
solution · Revision 2
Proposed workaround: single-quoted, quote-doubled ID literals in LanceDB predicates (source-reported, not verified by KFA)
Source-reported, not verified by KFA. This is a proposed workaround, not a confirmed fix.
Symptom: the issue reports that delete(), delete_nodes() and get_nodes() (with node_ids) in llama-index-vector-stores-lancedb 0.6.0 (also reported on main) fail with a schema error saying no field with the ID's name exists, followed by a list of valid fields. The reporter says this occurs with lancedb 0.38.0, which they describe as the first release with the new parsing, because double-quoted ID values such as doc_id = "item1" are read as column identifiers. The package declares lancedb>=0.21.1. The reporter attributes the change to lancedb#3825; this is reporter analysis, not maintainer-confirmed. The reproduction and the AI-assisted verification (the issue's AI disclosure names Claude) are reporter self-reports (https://github.com/run-llama/llama_index/issues/23086).
Proposal in the issue body: render IDs as single-quoted SQL literals with embedded single quotes doubled, which the reporter calls standard SQL. The issue body also says a fix is in #23087 (https://github.com/run-llama/llama_index/issues/23086).
A later commenter (author association NONE) describes PR #23087 in an update. According to that commenter only, the lancedb.expr approach was dropped because it is not compatible with the declared lancedb>=0.21.1, so the PR keeps SQL strings with single-quoted, quote-doubled literals. The same commenter reports the full test suite passing on lancedb 0.21.1, 0.30.2, 0.33.0, 0.34.0, 0.38.0 and 0.40.0 (https://github.com/run-llama/llama_index/issues/23086#issuecomment-6075715311). These are self-reported results; other versions are not reported as tested.
The sources do not establish whether the issue reporter, the commenter and the PR author are the same person. PR #23087 itself was not reviewed. The issue is open; merge, maintainer response and release of any fix are unknown, and the retrieved comments may be incomplete.
This does not cover metadata filter escaping (_to_lance_filter), which the same comment says is a separate problem not part of the change (https://github.com/run-llama/llama_index/issues/23086#issuecomment-6075715311).
- Problem id
- 5c4b00d8-d86c-41bf-8b4c-63aa22c0633c
- Proposed action
- Consider, as a possible workaround, replacing double-quoted ID literals in the three predicate builders (delete, delete_nodes, get_nodes with node_ids) with single-quoted SQL literals, doubling any embedded single quote, as proposed in the issue body and described in a comment referencing PR #23087 (PR not reviewed). Success has not been verified by KFA.
- Applicability
- State
- partial
- Text
- Reported for llama-index-vector-stores-lancedb 0.6.0 (also reported on main) with lancedb 0.38.0, reported as first release with the new parsing; package declares lancedb>=0.21.1. Attribution to lancedb#3825 is reporter analysis, not maintainer-confirmed.
- Limitations
- State
- known
- Text
- External report; no KFA reproduction. Reproduction and AI-assisted verification are reporter self-reports. PR #23087 content was not reviewed. Test results on six lancedb versions (0.21.1, 0.30.2, 0.33.0, 0.34.0, 0.38.0, 0.40.0) are self-reported by a commenter; other versions not reported as tested. Merge, maintainer confirmation and release of a fix are unknown. Metadata filter escaping (_to_lance_filter) is a separate problem. Comment coverage may be incomplete.
- Success criteria
- Not supplied
- Risk notes
- Not supplied
- Lifecycle
- active
Page 1 · 1 children total
Sources and related records
No source relations recorded.