RVF SDK: deleteByFilter omits required native filter fields
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 78/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- node.js, rust, typescript, wasm
Research direction
Start in npm/packages/rvf with the public deleteByFilter implementation and the existing filterToNativeJson helper used for query filtering. Run the focused regression covering equality, conjunction, negation, set membership, and a half-open range. Done means all five cases pass with the expected surviving IDs and no further deletions, and the tracked SDK output is rebuilt.
Written by the indexing model from the issue text.
Description
Describe the bug
NodeBackend.deleteByFilter serializes the public filter expression directly. Unlike query filters, it omits required native valueType fields and recursive native child keys, so valid public filters fail native parsing.
To reproduce
On current main 5a93328f2fceb0307c25929ed38cd7a0911fdf00, build npm/packages/rvf, use a fresh scratch store path and run with its compiled exports (RvfDatabase from dist/index.js; for the filter fixture, NodeBackend from dist/backend.js; fs from node:fs):
const backend = new NodeBackend();
await backend.create('/tmp/rvf-delete-filter.rvf', { dimensions: 2 });
// Actual native fixture setup: the SDK intentionally rejects metadata ingestion.
backend.handle.ingestBatch(new Float32Array([1, 0, 0, 1]), [1, 2], [
{ fieldId: 0, valueType: 'string', value: 'red' },
{ fieldId: 0, valueType: 'string', value: 'blue' },
]);
const db = RvfDatabase.fromBackend(backend);
console.log(await db.deleteByFilter({ op: 'eq', fieldId: 0, value: 'red' }));
await db.close();
Observed: The public deletion fails with a native parse error about missing valueType. Calling the real native handle with the corresponding typed filter deletes exactly one row.
Expected behavior
Reuse the existing filterToNativeJson helper used for query filtering. Keep the public filter contract and native parser unchanged; rebuild the tracked SDK output.
Reproduction evidence
Baseline: all 5 filter cases fail. Patched: 5 passing cases covering equality, conjunction, negation, set membership and a half-open range; each checks the exact surviving ID and zero further deletions. A focused regression and bounded patch are prepared.
Local environment: macOS arm64, Node 22.19.0, TypeScript 5.9.3. The tests use the repository-bundled actual native addon (wrapper 0.2.3, darwin-arm64 artifact package 0.1.7) and actual WASM package 0.1.9. Neither binary was rebuilt from current Rust source. This verifies the current TypeScript adapter against those concrete bundled artifacts, not a fresh Rust build.
Metadata is seeded through an initialized actual native handle only for fixture setup because arbitrary SDK metadata ingestion remains unsupported. The operation under test is the public RvfDatabase.deleteByFilter facade and real native parser/runtime; WASM filter support is unchanged.
- Dominant language
- Rust
- Stars
- 4.6k
- Forks
- 610
- Avg merge
- 22h 8m
- Merged PRs (30d)
- 57
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ruvnet/RuVector
-
ruvllm: cargo check --no-default-features fails (claude_flow imports tokio without async-runtime)Possibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 71/100
ruvnet/RuVector#1179 · 1 comment ·
Maintainers usually reply within 1 day
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
RVF SDK: WASM queries override the configured metric with L2Possibly taken @rudycelekli claimed this 12 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
`rvf-manifest` pulls in `std` transitively via `crc32c`Possibly taken @rudycelekli claimed this 14 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
Similar issues
-
Add MimirOpen
Difficulty 1/5 Under an hour Newbie friendliness 78/100
slavakurilyak/awesome-ai-agents#759 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
compiler-explorer/compiler-explorer#9272 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 63/100
pop-os/cosmic-files#2117 ·
Maintainers usually reply within 2 days
-
L: java:gradle L: java:maven L: ruby:bundler T: bug 🐞
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
dependabot/dependabot-core#16547 ·
Maintainers usually reply within 1 day
-
bug status:ready-for-test
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
UniClipboard/UniClipboard#1985 · 1 comment ·
Maintainers usually reply within 1 day