OQ — E00 · Data exports
Every result leaves as numbered Parquet parts or an Arrow IPC stream, with a manifest recording the schema, the physical tables read, the catalog hash, the row count and a SHA-256 per part. You can check the number, not just believe it.
- Transports
- 2
- Checksum
- SHA-256
- Flight port
- 8091
- Result expiry
- 24h
Each part lands as a .partial file, is verified against its size and checksum, and only then gets its final name. Rerun against the same directory and matching parts are reused rather than fetched again.
query attach 8f31c2 --output ./results # The manifest is written last, so its presence means the download finished.shasum -a 256 ./results/part-00000.parquetjq -r '.parts[0].sha256' ./results/manifest.jsonParquet
Numbered columnar parts written straight from the query. Load them into DuckDB, pandas, Polars, Spark, or anything else that reads Parquet.
Arrow Flight
Arrow IPC stream parts plus a signed Flight ticket in the manifest. Pass the decoded ticket to GetFlightInfo and pull batches with DoGet on port 8091.
What happens after 24 hours?
The server-side result expires and can no longer be attached — you resubmit the SQL. Files you already downloaded are untouched; OnchainQueries never deletes anything on your disk.
Can I upload data through Arrow Flight?
No. Flight upload and exchange methods are disabled because the platform is read-only. There is nothing to upload into.
How do I know which tables a result read?
The manifest's source_coverage.tables field lists the physical tables, alongside the catalog hash and high-watermark slot used to plan the query.
What is the most efficient export shape?
A single-table projection with no CTE, join, distinct, grouping, ordering, limit, offset, window or set operation, that includes ts in the output. That shape can be split into independent daily tasks; anything else runs as one query.
Checksums, source coverage and a catalog hash on every export.