Filter processor is very abstract thing that takes the filter and returns the SQL predicate.
What happens with it depends on the context implementing the processor.
There are two typical usages:
* Processors in the context of a query (or subquery).
These typically determine what other processor should be used in the next step.
The logic starts in
ObjectFilterProcessor.process(ObjectFilter)
and determines
whether to resolve logical operations or delegate to other specialized filter.
*Complex path resolution* is typically here (which may add JOINs), but value evaluation is not.
*
ItemFilterProcessor
s for a single Prism item (not necessarily one SQL column).
These *process only single/final path component and use the value of the filter*.
While JOINs are typically only used here it is possible that multi-value attributes stored
in detail tables can generate another JOIN in this step too.