Class ParquetFilterPushdownSupport
java.lang.Object
org.elasticsearch.xpack.esql.datasource.parquet.ParquetFilterPushdownSupport
- All Implemented Interfaces:
FilterPushdownSupport
Parquet-specific filter pushdown support that validates ESQL filter expressions
for pushdown eligibility and collects them into a
ParquetPushedExpressions
wrapper for deferred translation at read time.
Translation to Parquet FilterPredicate
is deferred because DATETIME columns can have different physical representations
across files (INT32 DATE, INT64 TIMESTAMP_MILLIS/MICROS/NANOS, INT96). The actual
file schema is needed for correct value conversion.
When set on ParquetReadOptions, parquet-java automatically
applies four levels of filtering:
- Statistics (min/max) — skips row groups where value is outside range
- Dictionary — skips row groups where dictionary-encoded column doesn't contain value
- Bloom filter — skips row groups where bloom filter says value definitely absent
- Page index (ColumnIndex/OffsetIndex) — skips individual pages within row groups using
per-page min/max statistics (active by default via
useColumnIndexFilter=truesince parquet-mr 1.12.0)
All pushed filters use FilterPushdownSupport.Pushability.RECHECK semantics: the original filter remains
in FilterExec for per-row correctness since predicate pushdown is a conservative approximation.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.elasticsearch.xpack.esql.datasources.spi.FilterPushdownSupport
FilterPushdownSupport.Pushability, FilterPushdownSupport.PushdownResult -
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
ParquetFilterPushdownSupport
public ParquetFilterPushdownSupport()
-
-
Method Details
-
pushFilters
- Specified by:
pushFiltersin interfaceFilterPushdownSupport
-
canPush
- Specified by:
canPushin interfaceFilterPushdownSupport
-