[
https://issues.apache.org/jira/browse/FLINK-40399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gabor Somogyi resolved FLINK-40399.
-----------------------------------
Fix Version/s: 2.4.0
Resolution: Fixed
> Separate the SavepointKeyFilter runtime contract from push-down planning
> ------------------------------------------------------------------------
>
> Key: FLINK-40399
> URL: https://issues.apache.org/jira/browse/FLINK-40399
> Project: Flink
> Issue Type: Improvement
> Components: API / State Processor
> Affects Versions: 2.4.0
> Reporter: Ilya Soin
> Assignee: Ilya Soin
> Priority: Minor
> Labels: pull-request-available
> Fix For: 2.4.0
>
>
> _SavepointKeyFilter_ currently carries two unrelated responsibilities: the
> runtime contract required by savepoint scans ({_}test{_}, {_}getExactKeys{_})
> and planning algebra used only while
> combining predicates during filter push-down ({_}isEmpty{_},
> {_}getLowerBound{_}, {_}getUpperBound{_}, {_}intersect{_}, {_}filterKeys{_},
> {_}empty{_}, and {_}BoundInfo{_}). The latter is exposed through the public
> _@Experimental_ API despite being irrelevant to DataStream API
> implementations.
> This task separates those responsibilities.
> _org.apache.flink.state.api.filter.SavepointKeyFilter_ retains its runtime
> contract and
> _exact/range_ factories. Planning-only range bounds and
> predicate-combination logic are kept in a private _KeyFilterPlan_ inside
> {_}SavepointFilterTranslator{_}, which tracks predicate
> state during translation and constructs the resulting existing runtime
> filter implementation afterward.
> The planning-only methods, {_}BoundInfo{_}, and _EmptyKeyFilter_ are
> removed.
> The task also adds coverage for previously untested runtime filters and
> push-down paths—most importantly, ensuring predicates that cannot be pushed
> down are returned in
> _remaining()_ and therefore still evaluated by the runtime.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)