Class AvoidJoinAboveUnionPlanner
- java.lang.Object
-
- it.unibz.inf.ontop.iq.planner.impl.AvoidJoinAboveUnionPlanner
-
- All Implemented Interfaces:
IQOptimizer,QueryPlanner
@Singleton public class AvoidJoinAboveUnionPlanner extends Object implements QueryPlanner
When an UNION appears as a child of an inner join, looks for other siblings that could be "pushed under the union".Criteria for selecting siblings: must be leaf and must naturally join (i.e. share a variable) with the union. Example:
JOIN T1(x,y) UNION(x,z) T2(x,z) T3(x,z) T4(w)becomesJOIN UNION(x,z) JOIN T2(x,z) T1(x,y) JOIN T3(x,z) T1(x,y) T4(w)TODO: shall we consider also the joining condition for pushing more siblings?
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAvoidJoinAboveUnionPlanner.AvoidJoinAboveUnionTransformer
-
Constructor Summary
Constructors Modifier Constructor Description protectedAvoidJoinAboveUnionPlanner(GeneralStructuralAndSemanticIQOptimizer generalOptimizer, AvoidJoinAboveUnionPlanner.AvoidJoinAboveUnionTransformer transformer, IntermediateQueryFactory iqFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected IQlift(IQ query)IQoptimize(IQ query)Tries to push down some inner joins under some unions.
-
-
-
Constructor Detail
-
AvoidJoinAboveUnionPlanner
@Inject protected AvoidJoinAboveUnionPlanner(GeneralStructuralAndSemanticIQOptimizer generalOptimizer, AvoidJoinAboveUnionPlanner.AvoidJoinAboveUnionTransformer transformer, IntermediateQueryFactory iqFactory)
-
-