Blazebit / blaze-expression

Apache License 2.0
5 stars 6 forks source link

Implement a predicate push-down engine #43

Open beikov opened 2 years ago

beikov commented 2 years ago

The idea is to make the usecase of object filtering like https://github.com/Blazebit/blaze-expression/issues/42 more efficient by implementing an engine that can split a predicate into parts that can be pushed down to act as filters for specific attributes.

A filter like root.name = 'abc' can be split into {"root": "name = 'abc'"}.

A filter like root.collection1.name = 'abc' could be split into {"root": "root.collection1 is not empty", "root.collection1": "name = 'abc'"}.

Maybe it makes sense to also allow empty collections i.e. apply left join semantics to such filters.