Repository navigation
Releases: mag1cfrog/delta-arrow-reader
Release list
v0.7.0
Python
- Read Delta tables as PyArrow batches or query them with SQL. Includes column
selection, filters, snapshot refresh, and streaming results.
Quickstart and
API reference. - Python wheels include the native
delta-arrow-readercommand and support
CPython 3.10+ on Linux x86_64, Windows x86_64, and macOS arm64.
Platform requirements.
Command line
- Use
dar inspectto view a table's schema and version, anddar scanto stream
selected rows and columns as Arrow IPC. Supports filters and configurable
resource limits. CLI quickstart. - Run
darfrom standalone Linux amd64 or arm64 archives or container images.
Installation.
Selective reads
- Filtered S3 queries can now download selected values within Parquet pages.
Automatic selection is enabled by default and uses the file layout and measured
network conditions to choose when smaller reads are likely to be faster. - Supports fixed-width numeric and decimal values, plus strings and binary
values in supported file encodings.
Supported layouts and benchmarks.
Upgrading from 0.6
- Opening supported S3 tables now includes network sampling with a five-second
budget, separate from metadata loading. UseWarmupMode::Noneor
WarmupMode::QueryPlanningto skip sampling and partial-page reads.
Configuration. WarmupModeincludes aNetworkvariant with configuration and no longer
supports integer casts such asmode as u8. Code that stores modes as numbers
must use an explicit mapping.
CLI v0.7.0
The CLI binaries and both container platforms passed download verification.
- Version:
0.7.0 - Tested source:
e0c7f9730a6b79b91d5ba46f20b4864bdce68199 - Release commit:
03dc6afc11448de57b6900e411b1bfc1105cc9c9 - Validation: run 38734446398, record artifact
11974462066
Linux amd64 and arm64 require glibc 2.36 or newer, libgcc, and CA certificates. The archives were tested on Debian 12, Ubuntu 24.04, and Fedora 44. Alpine/musl and other platforms are not supported.
| File | SHA256 |
|---|---|
| dar-v0.7.0-linux-amd64-gnu.tar.gz | 5083bbe6eebffa117ff7c704449b72c440a031ec95a2b68ad606f353790dc930 |
| dar-v0.7.0-linux-arm64-gnu.tar.gz | 7079a3b15052732ccebfd5202b15ddc440ade4943f04b25912e770d1c01cd0e1 |
| cli-artifacts.json | 2d0568abc1ab671f9bbb73f7e36fd2603b17053d1718dd70537d77cb59485817 |
| SHA256SUMS | 633523980f744238beb9900fa3d1c5c362e6a84fd5db5a312ab8b530bb0b0181 |
Container: ghcr.io/mag1cfrog/delta-arrow-reader:v0.7.0
Index digest: sha256:9c99e32c0749b9ef61c5157396231b1cfad996245626bbeec647de40d898547f
| Platform | Manifest digest |
|---|---|
| linux/amd64 | sha256:62c30dedb6cd1c0bac6b3865f5d1b127f2abcfd08030d0c10d06f96dbc8b9144 |
| linux/arm64 | sha256:3a3dc906a72e8ade2ec155f39599eff1dad6b926303206175063339629dd8938 |
Use a version or digest when running the image or copying dar into a Go service image. See installation and checksum verification and the Go consumer.
v0.6.2
Added
- simplify reading Delta batches (#409)
- show timing quartiles in benchmark reports (#390)
- replace Daft with Spark in the formal benchmark roster (#377)
- aggregate audited staged Q2/Q4 reports (#371)
- support staged production DV pairs (#361)
- add Parquet page byte controls for selective reads (#359)
- validate staged Q2/Q4 Delta workload pairs (#358)
- store benchmark references in compressed Parquet (#351)
- add paired wide file-organization benchmarks (#349)
- add large-workload query and reuse contracts (#348)
- add bounded selective-read scale ladders (#347)
Documentation
- correct benchmark archive publication status (#414)
- make the documentation site user-facing (#411)
- add a short README quickstart (#408)
- simplify README and add selective-read results draft (#406)
- explain float row-group pruning without NaN counts (#385)
- qualify historical README performance claims (#382)
- define large-workload benchmark calibration (#346)
- expand selective-read benchmarks to five readers (#331)
- freeze public selective-read benchmark protocol (#325)
- record verified upstream Parquet resolution
- record closure of stopped Spark issue backlog
- freeze Spark experiment and unblock core Python bindings
Fixed
- normalize cloud table paths and clarify benchmark context (#398)
- collect benchmark diagnostics during exact validation (#396)
- reuse checksums across benchmark staging and execution (#394)
- reuse benchmark gates and validated metadata bindings (#392)
- combine selective-read diagnostics without extra storage reads (#389)
- reuse unchanged benchmark validation inputs (#387)
- validate data-file identity in both backends (#383)
- stage verified benchmark snapshots within the data budget (#369)
- bind formal execution conditions to archived fixtures (#367)
- allow staged formal production workloads (#365)
- count shared Q2 fixture bytes once (#360)
Maintenance
- publish portable selective-read benchmark evidence (#412)
Performance
- account for reclaimable cgroup file cache (#384)
Selective-read benchmark evidence (2026-10-07)
Evidence for the published selective-read comparison: eight TPC-H-derived cases, five readers, 80 reader/profile entries and 400 independent timing invocations.
The archive contains frozen sources, build records and locks, fixture metadata, reference and reader outputs, exact-value certificates, native plans, request captures, raw observations, and reports. It excludes bulk Delta/source tables and installed engines.
Download the four assets together. Verify SHA256SUMS, then follow REPRODUCE.md. The archive has its own per-file checksum manifest and an offline audit command.
Verified from a fresh extraction:
- Original report, all three CSVs and provenance reproduced byte for byte.
- All 120 retained query exports matched their independent reference values.
- A corrupted CSV was rejected before replay began.
- Fresh SF0.01 fixtures and 20 native open/reuse checks passed across all five readers, including real deletion vectors, using the recorded hash-verified engine builds.
verification.json records the exact scope. Packaging did not rerun the full SF10 timing campaign or rebuild the engines. Original publication-status fields remain unchanged in the historical evidence.
This is a benchmark evidence release. It does not publish a crate version or replace the latest crate release.
v0.6.1
Documentation
- pin the compatible DataFusion installation major (#242)
- add Search Console verification and benchmark metadata
- add Databricks server timings to selective S3 benchmark
- label Lakehouse RT benchmark comparisons as Beta
- clarify evidence and Beta context for selective S3 benchmark
- highlight selective S3 performance in the README
- refresh Delta reader benchmarks with auditable results
- publish an anonymized four-engine selective S3 case study
Fixed
- honor Linux cgroup memory in automatic partition targets (#239)
- offload DataFusion scan planning to blocking pool (#228)
- validate execution capacities against Tokio limits (#227)
- report nested schema violations without panicking (#224)
- read legacy Parquet lists without panicking (#221)
- expose a valid execution partition for empty DataFusion scans (#218)
- separate streaming partition predicates from row filters (#215)
- prevent ordered scans from deadlocking under file-read limits (#210)
- preserve row counts for empty DV projections (#201)
- validate data-file URLs before Parquet reads (#199)
- preserve NaN matches in row-group pruning (#198)
- preserve INT96 timestamps across the full microsecond range (#196)
- preserve rows when Parquet statistics need type conversion (#193)
Maintenance
- use rustls for Kernel HTTPS access (#248)
Performance
v0.6.0
Added
- refresh loaded Delta tables and DataFusion providers without mutating active scans
Changed
- [breaking] remove table-wide Parquet metadata warmup after production evaluation
- [breaking] configure table metadata warmup through one builder API
Fixed
- let adaptive Parquet planning choose exact ranges after estimation
Performance
- benchmark incremental Delta metadata refresh strategies
v0.5.3
Added
- add opt-in Parquet metadata preparation for faster repeated queries
Fixed
- prevent tiny Parquet reads from distorting adaptive range planning
v0.5.2
Added
- add debug diagnostics for automatic Parquet range-plan decisions
v0.5.1
Fixed
- preserve adaptive Parquet range learning across DataFusion scans
v0.5.0
Fixed
- keep scan metric snapshots extensible
- stabilize Parquet range benchmark tests on Windows
Performance
- validate adaptive Parquet range reads across transport conditions
- adapt Parquet range reads to observed transport costs
- preserve native Parquet multi-range reads (#65)
v0.4.2
Performance
- quantify Parquet page-index range-read savings
- reduce Parquet I/O by reading only pages selected by row filters
- quantify Parquet row-filter savings from predicate-only decoding
- speed up Parquet row filtering by limiting filter reads to predicate columns