pola-rs/polars · error · ImportError
reading delta deletion vectors requires deltalake >= {'.'.jo
Error message
reading delta deletion vectors requires deltalake >= {'.'.join(str(v) for v in dv_min_version)}, found {installed}. What it means
Raised by the delta scan path when the table has deletion vectors and the installed deltalake package is older than 1.4.2. Interpreting deletion vectors (row-level deletes layered on Parquet files) requires deltalake >= 1.4.2, so polars refuses the read instead of returning rows that should have been deleted.
Source
Thrown at py-polars/src/polars/io/delta/_dataset.py:195
reader_features = table.protocol().reader_features
has_deletion_vectors = (
reader_features is not None and "deletionVectors" in reader_features
)
deletion_files: DeletionFiles | None = None
if has_deletion_vectors:
import deltalake
dv_min_version = (1, 4, 2)
installed = parse_version(deltalake.__version__)
if installed < dv_min_version:
msg = (
f"reading delta deletion vectors requires "
f"deltalake >= {'.'.join(str(v) for v in dv_min_version)}, "
f"found {installed}."
)
raise ImportError(msg)
def _deletion_vector_callback(
requested_paths: pl.DataFrame,
) -> pl.DataFrame:
delta_deletion_vectors = _fetch_deletion_vectors(table)
if delta_deletion_vectors is None:
return pl.DataFrame(
{"selection_vector": [None] * len(requested_paths)},
schema={"selection_vector": pl.List(pl.Boolean)},
)
return _extract_delta_deletion_vectors(
requested_paths, delta_deletion_vectors
)
deletion_files = (
"delta-deletion-vector",
_deletion_vector_callback,
)View on GitHub (pinned to df599052da)
Solutions
- Upgrade: pip install -U 'deltalake>=1.4.2'
- Pin deltalake>=1.4.2 in the project requirements so DV-enabled tables always read correctly
- If upgrading is blocked, rewrite the table without deletion vectors (VACUUM/OPTIMIZE or re-write from the writer side) before reading
Example fix
# before: deltalake 1.3, table has deletion vectors
pl.scan_delta("s3://bucket/table").collect()
# after
pip install -U 'deltalake>=1.4.2' Defensive patterns
Strategy: validation
Validate before calling
from importlib.metadata import version
from packaging.version import parse
assert parse(version("deltalake")) >= (1, 4, 2), "deltalake>=1.4.2 required for deletion vectors" Prevention
- Pin deltalake>=1.4.2 in any project reading externally-written delta tables
- Check table metadata for deletion vectors when onboarding new data sources
- Add dependency version checks to CI for delta-based pipelines
When it happens
Trigger: pl.scan_delta()/read_delta() on a table containing deletion vectors with deltalake < 1.4.2 installed (the has_deletion_vectors path is taken).
Common situations: Reading tables written by newer writers (Databricks, Spark with DVs, newer delta-rs) from an environment with an older deltalake wheel; long-lived environments after upstream writers enable deletion vectors.
Related errors
- The table's minimum reader version is {table_protocol.min_re
- cannot {operation}: no data_source_format found
- altair>=5.4.0 is required for `.plot`
- `read_database` queries require at least {module_name} versi
- 'pre_execution_query' is only supported in connectorx versio
AI-assisted analysis of pola-rs/polars@df599052da (2026-08-16).
Data as JSON: /api/errors/bcf522e4451eeecf.
Report an issue: GitHub.