Class OrgFilterOrOptimizer
java.lang.Object
com.evolveum.midpoint.repo.sqale.filtering.OrgFilterOrOptimizer
- All Implemented Interfaces:
FilterProcessor<OrFilter>
Partially collapses ORs produced by orgRelation authorization.
The generic OR processor would turn every subtree
OrgFilter into its own correlated
EXISTS. This optimizer groups compatible subtree org branches by target relation and replaces
multi-org groups with one semijoin-style EXISTS using ancestor_oid in (...). Branches
outside the optimized groups are preserved and processed through the normal sqale path.
Example: an OR like
isChildOf(orgA) OR id(orgA) OR isChildOf(orgB) OR id(orgB)
is rewritten to one subtree check using ancestor_oid IN (orgA, orgB)
plus one object OID check using oid IN (orgA, orgB). Non-compatible
branches remain in the OR and are processed normally.-
Constructor Details
-
OrgFilterOrOptimizer
-
-
Method Details
-
process
@Nullable public @Nullable com.querydsl.core.types.Predicate process(OrFilter filter) throws RepositoryException - Specified by:
processin interfaceFilterProcessor<OrFilter>- Throws:
RepositoryException
-