Read a split
Read one split of a planned scan as an Arrow IPC stream, in stored order. Every batch ends with two dictionary columns that arrive even with a batch of no rows: scandal.next_row, the stored row of the split's file to resume from, and scandal.metrics, the read's counters as JSON on the split's last batch when the scan collects them. With an emit, the batches hold the split's partial results, which are complete only at the end of the stream, and scandal.next_row is the split's end. A failure after the stream starts ends it without the Arrow end-of-stream marker.
bearerAuthAuthorizationBearer <token>application/json- body
scan*A read of one Table version, sent whole with every plan and read request. columns selects top-level columns, or all of them when absent; projection computes the output columns instead. A filter clause that the service cannot enforce exactly fails the scan before any rows are read. limit caps the rows each split returns, in stored order. An emit returns a top-k or aggregates of the output rows instead of the rows themselves. rowRange selects half-open stored positions in this exact version, before filtering and deletion removal, concatenating fragments in stored order. Positions are not stable across rewrites. Empty ranges return no rows; reversed ranges are invalid. rowIdColumn adds a last output column of that name holding each row's row ID: the Table's stable identity of the row, a uint64 that survives rewrites and compaction and is never reused. rowIds keeps only rows whose row IDs fall in its ranges: planning prunes files whose row IDs cannot match, and reads enforce it exactly. A top-k can return and order by the row ID column. Aggregates take no rowIdColumn.
split*Stored rows of one file of the scanned version. Stored rows include rows that a later version deleted; a read skips them. Resume a split by raising rows.start to the last row a read reported, and share one between readers by dividing rows.
storage?|nullSuccess
response?fileapplication/vnd.apache.arrow.streambinarycurl -X POST 'https://scandal.spiraldb.dev/scans/read' \ -H 'Content-Type: application/json' \ -d '{ "scan": { "table": { "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6", "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7" } }, "split": { "fragment": "string", "rows": { "end": "string", "start": "string" } }}'"string"