Skip to content

Releases: mag1cfrog/delta-arrow-reader

v0.7.0

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 15 Oct 12:55

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-reader command and support
    CPython 3.10+ on Linux x86_64, Windows x86_64, and macOS arm64.
    Platform requirements.

Command line

  • Use dar inspect to view a table's schema and version, and dar scan to stream
    selected rows and columns as Arrow IPC. Supports filters and configurable
    resource limits. CLI quickstart.
  • Run dar from 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. Use WarmupMode::None or
    WarmupMode::QueryPlanning to skip sampling and partial-page reads.
    Configuration.
  • WarmupMode includes a Network variant with configuration and no longer
    supports integer casts such as mode as u8. Code that stores modes as numbers
    must use an explicit mapping.

All changes since 0.6.2.

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

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 07 Oct 20:39
5078e2e

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)

Choose a tag to compare

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.

Related work: #323 and #324.

v0.6.1

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 25 Sep 19:15
4250403

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

  • build deletion-vector Arrow masks directly (#249)
  • compact dense deletion vector coordinates (#236)

v0.6.0

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 30 Aug 04:47
6b0397e

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

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 29 Aug 21:22
709c207

Added

  • add opt-in Parquet metadata preparation for faster repeated queries

Fixed

  • prevent tiny Parquet reads from distorting adaptive range planning

v0.5.2

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 29 Aug 19:23
1fdeae1

Added

  • add debug diagnostics for automatic Parquet range-plan decisions

v0.5.1

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 29 Aug 18:15
0fcbdab

Fixed

  • preserve adaptive Parquet range learning across DataFusion scans

v0.5.0

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 29 Aug 17:09
9c6611e

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

Choose a tag to compare

@release-plz-bot-mag1cfrog release-plz-bot-mag1cfrog released this 29 Aug 05:19
84e610c

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