From 39b0c0a9d1c8178a8f3d640733227c55db0e7672 Mon Sep 17 00:00:00 2001 From: Marius Ciepluch <11855163+norandom@users.noreply.github.com> Date: Fri, 2 Oct 2026 10:16:32 +0200 Subject: [PATCH] docs(memory): the fixed queryable-field schema is in place, not in progress Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo --- docs/memory.md | 12 ++++++------ docs/rustfs.md | 7 +++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/memory.md b/docs/memory.md index 7a7a7f1..c1a6b77 100644 --- a/docs/memory.md +++ b/docs/memory.md @@ -121,11 +121,11 @@ the store does not start. There is no local or fetch-and-filter fallback: a filt S3 Select cannot answer raises a `MemoryStoreError` instead of returning "no rows". The exact messages are listed on [RustFS setup](rustfs.md#what-the-store-verifies-at-startup). -### Queryable fields per kind (in progress) +### Queryable fields per kind RustFS's Select infers an object's JSON schema from its leading rows, so a `where` field missing -there fails with `EvaluatorBindingDoesNotExist` even when a later row has it (measured -2026-10-02; `memory.py`, `S3Store._select`). On main today the store turns that failure into a -`MemoryStoreError` naming the field, never into an empty answer. A fixed set of queryable fields -per row kind, so that every filtered field is present in every row of its kind, is in progress -and not on main as of this page. +there fails with `EvaluatorBindingDoesNotExist` even when a later row has it, and a column that is +null in the first 1000 rows breaks Select on the whole object (measured 2026-10-02; `memory.py`, +`S3Store._select`). The store therefore writes every row with its kind's full set of queryable +fields (`QUERY_FIELDS`), using `""` where a field does not apply, and refuses a `where` on an +undeclared field. Existing rows are rewritten once with `ousast plane memory-normalise`. diff --git a/docs/rustfs.md b/docs/rustfs.md index 88e3936..1c1d6d8 100644 --- a/docs/rustfs.md +++ b/docs/rustfs.md @@ -179,10 +179,9 @@ drop matches; it raises: memory s3://sast-memory: S3 Select on failed (EvaluatorBindingDoesNotExist: ...) (a field of [] is absent from the object's leading rows, which the server reads as its schema); the store has no local fallback ``` -The rule that follows: a field the store filters on must be present in every row of its kind -from the first row on, i.e. each row kind has a fixed set of queryable fields. Enforcing that set -per kind in the store is in progress and not on main as of this page (see -[Memory](memory.md#queryable-fields-per-kind-in-progress)). +The rule that follows: a field the store filters on is present in every row of its kind from +the first row on, as `""` where it does not apply; each row kind has a fixed set of queryable +fields, enforced at write time (see [Memory](memory.md#queryable-fields-per-kind)). ## Checks against the real server