A where names a column that does not exist, or one the writer did not
build an attribute index for. This reader queries indices; it never falls
back to a scan.
A non-2xx status, a missing or malformed Content-Range, or a body
shorter than the range that was granted.
The header's size prefix exceeds the 512 MB cap, or runs past EOF.
A caller argument failed validation before any I/O.
An attribute value could not be decoded, or could not be emitted under
the requested Int64Policy.
A size prefix or table is structurally impossible -- e.g. a feature whose declared length is 0 or above the 256 MB cap.
Any transport-level failure, and the catch-all for a truncated or misframed file: a short read, an offset past EOF, a use-after-close, or an aborted read.
Part of the shared taxonomy; this port never raises it.
The first 8 bytes are not the FlatCityBuf magic: not an .fcb file.
A field the .fbs schema marks required is absent from the table -- e.g.
a GeometryInstance with no boundaries, or a point of contact with no
email address.
Part of the shared taxonomy; this port never raises it.
A spatial query was run against a file that carries no R-tree.
The query itself is ill-formed or the index cannot answer it -- an empty
where, a degenerate bbox, an inconsistent index node.
A cross-origin 206 whose Content-Range is not exposed by CORS.
The server answered a Range request with 200 and a whole body.
A column type this reader cannot query or decode -- notably Json and
Binary, whose index is a truncated blob and whose hits would be
near-meaningless.
e.g. nearest combined with where.
Error categories. The first thirteen mirror fcb::ErrorCode (src/cpp/include/fcb/error.hpp) so the implementations report the same failures under the same names; the rest exist only in this port.