pola-rs/polars · error · DeltaProtocolError
The table has set these reader features: {missing_features}
Error message
The table has set these reader features: {missing_features} but these are not yet supported by the polars delta scanner. What it means
Raised as DeltaProtocolError when the table declares min_reader_version >= 3 with reader_features that polars' delta scanner does not support (features outside SUPPORTED_READER_FEATURES). Even if the protocol version is acceptable, individual table features (e.g. column mapping, DV-related features) must each be recognised.
Source
Thrown at py-polars/src/polars/io/delta/_dataset.py:301
if (
table_protocol.min_reader_version > MAX_SUPPORTED_READER_VERSION
or table_protocol.min_reader_version == NOT_SUPPORTED_READER_VERSION
):
msg = (
f"The table's minimum reader version is {table_protocol.min_reader_version} "
f"but polars delta scanner only supports version 1 or {MAX_SUPPORTED_READER_VERSION} with these reader features: {SUPPORTED_READER_FEATURES}"
)
raise DeltaProtocolError(msg)
if (
table_protocol.min_reader_version >= 3
and table_protocol.reader_features is not None
):
missing_features = {*table_protocol.reader_features}.difference(
SUPPORTED_READER_FEATURES
)
if len(missing_features) > 0:
msg = f"The table has set these reader features: {missing_features} but these are not yet supported by the polars delta scanner."
raise DeltaProtocolError(msg)
self.table_.set(table)
return self.table_.get() # type: ignore[return-value]
def __getstate__(self) -> dict[str, Any]:
self.table_uri()
return self.__dict__
def __setstate__(self, state: dict[str, Any]) -> None:
self.__dict__ = state
def _extract_delta_deletion_vectors(
requested_paths: pl.DataFrame,
delta_deletion_vectors: pl.DataFrame,
) -> pl.DataFrame:
"""View on GitHub (pinned to df599052da)
Solutions
- Upgrade polars and deltalake to a release that supports the listed feature
- Rewrite the table with the feature disabled (e.g. drop column mapping by rewriting physical names) into a fresh table
- Fall back to the deltalake library for reading and convert the result to polars
Example fix
# before
pl.scan_delta("s3://bucket/table") # DeltaProtocolError: unsupported reader features
# after
from deltalake import DeltaTable
df = pl.from_arrow(DeltaTable("s3://bucket/table").to_pyarrow_table()) Defensive patterns
Strategy: try-catch
Validate before calling
from deltalake import DeltaTable
proto = DeltaTable(path).protocol()
if proto.min_reader_version >= 3 and proto.reader_features:
unsupported = set(proto.reader_features) - SUPPORTED_FEATURES
assert not unsupported, f"unsupported delta features: {unsupported}" Try / catch
try:
df = pl.scan_delta(path).collect()
except DeltaProtocolError as e:
if "not yet supported" in str(e):
from deltalake import DeltaTable
df = pl.from_arrow(DeltaTable(path).to_pyarrow_table())
else:
raise Prevention
- Disable optional table features (e.g. column mapping) on tables destined for polars readers
- Check reader_features during data-contract validation with producers
- Upgrade polars when adopting new delta features upstream
When it happens
Trigger: pl.scan_delta()/read_delta() on a v3+ table whose reader_features set contains unsupported entries such as columnMapping; the missing set is computed as the difference between the table's features and the supported ones and included in the message.
Common situations: Databricks-managed tables with column mapping or domain metadata enabled; tables created by newer delta-rs writers using recent features; testing against fixtures produced on newer stacks.
Related errors
- The table's minimum reader version is {table_protocol.min_re
- cannot {operation}: no data_source_format found
- reading delta deletion vectors requires deltalake >= {'.'.jo
- deltalake is not installed Please run: pip install deltalak
- dataframe contains unsupported data types: {overlap!r}
AI-assisted analysis of pola-rs/polars@df599052da (2026-08-16).
Data as JSON: /api/errors/e5883289b57a4b74.
Report an issue: GitHub.